HvpViewMapCOWAndUnsealRange
INT64 __fastcall HvpViewMapCOWAndUnsealRange(INT64 a1, INT64 a2, UINT64 a3){
INT64 v3;
INT64 v4;
INT64 v6;
unsigned __int64 v7;
unsigned __int64 v8;
INT64 v9;
INT64 result;
v3 = (unsigned int)(a2 + 4096);
v4 = v3 + (unsigned int)a3;
if( v3 >= (unsigned __int64)v4 )
return 0i64;
v6 = a1 + 40;
while( 1 )
{
v7 = *(_QWORD *)v6;
if( (*(_BYTE *)(v6 + 8) & 1) != 0 && v7 )
v7 ^= v6;
while( v7 )
{
if( v3 >= *(_QWORD *)(v7 + 40) )
{
if( v3 < *(_QWORD *)(v7 + 48) )
break;
v8 = *(_QWORD *)(v7 + 8);
}
else
{
v8 = *(_QWORD *)v7;
}
if( (*(_BYTE *)(v6 + 8) & 1) != 0 && v8 )
v7 ^= v8;
else
v7 = v8;
}
v9 = v4;
if( v4 >= *(_QWORD *)(v7 + 48) )
v9 = *(_QWORD *)(v7 + 48);
result = HvpViewMapMakeViewRangeCOWByCaller(a1, (_QWORD *)v7, v3, v9);
if( (int)result < 0 )
return result;
v3 = v9;
if( v9 >= v4 )
return 0i64;
}
}Referenced by:
HvpAddBin
HvpSetRangeProtection