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