MiEliminateStaleExtents

VOID __stdcall MiEliminateStaleExtents(VOID *ProtoPtes, UINT64 *FilesystemPages, UINT64 NumberOfFilesystemPages){
  unsigned int v3; 
  __int64 v4; 
  _MMPFN *v8; 
  ULONG_PTR v9; 
  UINT64 v10; 
  _MMPFN *v11; 
  UINT8 PageIrql; 

  if( NumberOfFilesystemPages )
  {
    v3 = 0;
    PageIrql = 17;
    v4 = 0i64;
    do
    {
      while( 1 )
      {
        v8 = MiLockProtoPoolPage((_MMPTE *)ProtoPtes, &PageIrql);
        v9 = (unsigned int)v8;
        if( v8 )
          break;
        MmAccessFault(2ui64, ProtoPtes, 0, 0i64);
      }
      do
      {
        v10 = FilesystemPages[v4];
        if( v10 != 0x8000000000000000ui64 )
        {
          v11 = MiLockLeafPage((_MMPTE *)ProtoPtes, 0i64);
          if( v11 )
          {
            _InterlockedAnd64(&v11->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
            FilesystemPages[v4] = v10 | 0x4000000000000000i64;
          }
        }
        ++v3;
        ProtoPtes = (char *)ProtoPtes + 8;
        v4 = v3;
      }
      while( v3 < NumberOfFilesystemPages && ((unsigned __int16)ProtoPtes & 0xFFF) != 0 );
      MiUnlockProtoPoolPage(v9, PageIrql);
    }
    while( v3 < NumberOfFilesystemPages );
  }
}

Referenced by:

MiAllocateFileExtents