MiEliminateStaleExtents

VOID __stdcall MiEliminateStaleExtents(MMPTE *ProtoPtes, UINT64 *FilesystemPages, UINT64 NumberOfFilesystemPages){
  unsigned int v3; 
  __int64 v4; 
  UINT64 v8; 
  _MMPFN *v9; 
  UINT64 v10; 
  _MMPFN *v11; 
  UINT8 PageIrql; 
  if( NumberOfFilesystemPages )
  {
    v3 = 0;
    PageIrql = 17;
    v4 = 0i64;
    do
    {
      while( 1 )
      {
        v9 = MiLockProtoPoolPage(ProtoPtes, &PageIrql);
        if( v9 )
          break;
        MmAccessFault(2ui64, ProtoPtes, 0, 0i64);
      }
      do
      {
        v10 = FilesystemPages[v4];
        if( v10 != 0x8000000000000000ui64 )
        {
          v11 = MiLockLeafPage(ProtoPtes, 0i64);
          if( v11 )
          {
            _InterlockedAnd64((volatile signed __int64 *)v11 + 3, 0x7FFFFFFFFFFFFFFFui64);
            FilesystemPages[v4] = v10 | 0x4000000000000000i64;
          }
        }
        ++v3;
        ProtoPtes = (MMPTE *)((char *)ProtoPtes + 8);
        v4 = v3;
      }
      while( v3 < NumberOfFilesystemPages && ((unsigned __int16)ProtoPtes & 0xFFF) != 0 );
      LOBYTE(v8) = PageIrql;
      MiUnlockProtoPoolPage(v9, v8);
    }
    while( v3 < NumberOfFilesystemPages );
  }
}

Referenced by:

MiAllocateFileExtents