VmpVaMemoryRangeGetNext
_QWORD *__fastcall VmpVaMemoryRangeGetNext(INT64 a1, _QWORD *a2){
_QWORD *v2;
__int64 v3;
_QWORD *v4;
_QWORD *v5;
__int64 i;
v2 = 0i64;
if( a2 )
{
v4 = (_QWORD *)a2[1];
if( v4 )
{
v5 = (_QWORD *)*v4;
if( *v4 )
{
do
{
v4 = v5;
v5 = (_QWORD *)*v5;
}
while( v5 );
}
return v4;
}
else
{
for( i = a2[2]; ; i = v2[2] )
{
v2 = (_QWORD *)(i & 0xFFFFFFFFFFFFFFFCui64);
if( !v2 || (_QWORD *)*v2 == a2 )
break;
a2 = v2;
}
}
}
else
{
v3 = *(_QWORD *)(a1 + 32);
if( (v3 & 1) != 0 )
{
if( v3 != 1 )
return(_QWORD *)(v3 ^ ((a1 + 24) | 1));
}
else
{
return *(_QWORD **)(a1 + 32);
}
}
return v2;
}Referenced by:
VmpConvertPortionVpnRangeToGpnRange