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.