MiReduceMappedFileReadAhead

NTSTATUS __stdcall MiReduceMappedFileReadAhead(PRTL_BITMAP BitMapHeader, UINT32 StartingIndex){
  unsigned int v2; 
  unsigned int v3; 
  unsigned int SizeOfBitMap; 
  unsigned int v7; 
  unsigned int LastBackwardRunClear; 
  unsigned int v9; 
  UINT64 StartingRunIndex; 

  LODWORD(StartingRunIndex) = 0;
  v3 = v2;
  RtlSetBits(BitMapHeader, *(UINT64 *)&StartingIndex, 1ui64);
  SizeOfBitMap = BitMapHeader->SizeOfBitMap;
  do
  {
    v7 = SizeOfBitMap - 1;
    if( !v7 )
      break;
    LastBackwardRunClear = RtlFindLastBackwardRunClear(BitMapHeader, v7, &StartingRunIndex);
    SizeOfBitMap = StartingRunIndex;
    v9 = LastBackwardRunClear;
    if( LastBackwardRunClear > v3 )
    {
      SizeOfBitMap = LastBackwardRunClear - v3 + StartingRunIndex;
      v9 = v3;
      LODWORD(StartingRunIndex) = SizeOfBitMap;
    }
    RtlSetBits(BitMapHeader, SizeOfBitMap, v9);
    v3 -= v9;
  }
  while( v3 );
  return(unsigned int)RtlClearBits(BitMapHeader, StartingIndex, 1u);
}

Referenced by:

MiBuildMdlForMappedFileFault