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.