HvIsRangeDirty

BOOL __fastcall HvIsRangeDirty(INT64 a1, INT64 a2, UINT64 a3){
  BOOL result; 
  unsigned int v4; 
  unsigned int v5; 
  volatile INT64 *v7; 
  UINT8 v8; 
  result = *(_DWORD *)(a1 + 160);
  v4 = a3;
  v5 = a2;
  if( result || (int)a2 < 0 )
  {
    LOBYTE(result) = 1;
  }
  else
  {
    v7 = (volatile INT64 *)(a1 + 80);
    ExAcquirePushLockExclusiveEx(a1 + 80, 0i64);
    v8 = RtlAreBitsClear((RTL_BITMAP *)(a1 + 88), v5 >> 9, v4);
    if( (_InterlockedExchangeAdd64(v7, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
      ExfTryToWakePushLock(v7);
    KeAbPostRelease((PVOID)v7);
    LOBYTE(result) = v8 == 0;
  }
  return result;
}

Referenced by:

HvpRemapAndEnlistHiveBins