RtlAreBitsClear

UINT8 __stdcall RtlAreBitsClear(RTL_BITMAP *BitMapHeader, UINT64 StartingIndex, UINT64 a3){
  int v3; 
  UINT8 result; 
  unsigned int *Buffer; 
  char v6; 
  unsigned int *v7; 
  unsigned int v8; 
  unsigned int *v9; 
  unsigned int *v10; 
  v3 = StartingIndex;
  if( (unsigned int)StartingIndex >= BitMapHeader->SizeOfBitMap )
    return 0;
  if( (unsigned int)a3 <= 1 )
  {
    if( (_DWORD)a3 == 1 )
      return !_bittest((const signed __int32 *)BitMapHeader->Buffer, StartingIndex);
    return 0;
  }
  if( BitMapHeader->SizeOfBitMap - (int)StartingIndex < (unsigned int)a3 )
    return 0;
  Buffer = BitMapHeader->Buffer;
  v6 = StartingIndex + a3 - 1;
  v7 = &Buffer[(unsigned __int64)(unsigned int)StartingIndex >> 5];
  v8 = *v7;
  v9 = &Buffer[(unsigned __int64)(unsigned int)(v3 + a3 - 1) >> 5];
  if( v7 == v9 )
    return(v8 & (0xFFFFFFFF >> (32 - a3) << v3)) == 0;
  if( (v8 & (-1 << v3)) != 0 )
    return 0;
  v10 = v7 + 1;
  if( v10 == v9 )
    return((0xFFFFFFFF >> ~v6) & *v10) == 0;
  result = 0;
  while( !*v10 )
  {
    if( ++v10 == v9 )
      return((0xFFFFFFFF >> ~v6) & *v10) == 0;
  }
  return result;
}

Referenced by:

CmpLoadHiveThread
CmpMountPreloadedHives
HalpMmAllocCtxMarkHiberPhase
HvGetHiveLogFileStatus
HvIsRangeDirty