HvlDmaUnmapDeviceLogicalRange
NTSTATUS __stdcall HvlDmaUnmapDeviceLogicalRange(INT64 a1, INT64 a2, UINT64 *a3){
UINT64 v6;
int v7;
UINT64 v8;
unsigned int v9;
int v10;
unsigned __int64 v11;
__int64 v12;
__int64 v13;
__int64 v14[2];
int v15;
int v16;
INT64 v17;
if( *(_BYTE *)(a1 + 4) )
return -1073741637;
v14[0] = -1i64;
v6 = *a3;
v7 = 0;
v15 = 0;
v14[1] = 0i64;
v8 = 0i64;
LODWORD(v13) = 65716;
v9 = 4095;
v16 = *(_DWORD *)a1;
if( v6 )
{
v10 = 0;
do
{
v17 = a2;
if( v9 > v6 )
v9 = *(_DWORD *)a3;
v10 ^= (v9 ^ v10) & 0xFFF;
HIDWORD(v13) = v10;
v11 = HvcallFastExtended(v13, v14, 0x20u, 0i64, 0);
v12 = HIDWORD(v11) & 0xFFF;
v8 += v12;
a2 += (unsigned __int16)(WORD2(v11) & 0xFFF) << 12;
*a3 -= v12;
v7 = HvlpHvToNtStatus(v11);
}
while( v7 >= 0 && v6 );
}
*a3 = v8;
return v7;
}Referenced by:
No references.