RtlShiftLeftBitMap

NTSTATUS __stdcall RtlShiftLeftBitMap(PRTL_BITMAP BitMapHeader, ULONG NumberToClear){
  NTSTATUS result; 
  unsigned int SizeOfBitMap; 
  int v4; 

  if( NumberToClear )
  {
    SizeOfBitMap = BitMapHeader->SizeOfBitMap;
    v4 = 0;
    if( NumberToClear < BitMapHeader->SizeOfBitMap )
    {
      RtlExtractBitMap(
        (INT64)BitMapHeader,
        (UINT64 *)&BitMapHeader->SizeOfBitMap,
        NumberToClear,
        SizeOfBitMap - NumberToClear);
      return(unsigned int)RtlClearBits(BitMapHeader, BitMapHeader->SizeOfBitMap - NumberToClear, NumberToClear);
    }
    else
    {
      LOBYTE(v4) = (SizeOfBitMap & 0x1F) != 0;
      return(unsigned int)memset(BitMapHeader->Buffer, 0i64, 4 * ((SizeOfBitMap >> 5) + v4));
    }
  }
  return result;
}

Referenced by:

No references.