MiDrainZeroLookasides

VOID __fastcall MiDrainZeroLookasides(_MI_PARTITION *Partition, _MMPFN *DesiredPfn, UINT64 NumberOfPages, UINT64 Color){
  unsigned int v4; 
  unsigned int v6; 
  unsigned int v7; 
  _QWORD *v8; 
  __int64 v9; 
  __int64 v10; 
  unsigned int v11; 
  _WORD *v12; 
  PSLIST_ENTRY v13; 
  __int64 v14; 
  unsigned int v15; 
  __int64 v16; 
  _QWORD *v17; 
  __int64 v18; 
  struct _SLIST_ENTRY *v19; 
  struct _SLIST_ENTRY *Next; 
  unsigned __int8 v21; 
  unsigned int v22; 
  v4 = dword_140C4DC3C;
  if( DesiredPfn )
    v4 = Color + 1;
  v22 = v4;
  v6 = 513;
  v7 = DesiredPfn != 0i64 ? Color : 0;
  v15 = v7;
  v19 = (struct _SLIST_ENTRY *)((char *)DesiredPfn + 48 * NumberOfPages);
  v8 = (_QWORD *)((char *)Partition + 4200);
  v9 = 2i64;
  v17 = v8;
  v18 = 2i64;
  do
  {
    v10 = *v8;
    v11 = v7;
    v16 = *v8;
    if( v7 < v4 )
    {
      v12 = (_WORD *)(v10 + 16i64 * v7);
      do
      {
        if( *v12 )
        {
          v13 = RtlpInterlockedFlushSList((PSLIST_HEADER)(v10 + 16i64 * v11));
          if( v13 )
          {
            do
            {
              Next = v13->Next;
              v14 = ((char *)v13 - (char *)MmGetPfnDb()) / 48;
              if( DesiredPfn && (v13 < (PSLIST_ENTRY)DesiredPfn || v13 >= v19) )
                v6 &= ~0x40u;
              else
                v6 |= 0x40u;
              v13[1].Next = (_SLIST_ENTRY *)MiUpdatePageFileHighInPte((INT64)v13[1].Next, 0i64);
              v21 = MiLockPageInline((INT64)v13);
              MiInsertPageInFreeOrZeroedList(v14, v6);
              _InterlockedAnd64((volatile signed __int64 *)&v13[1].Next + 1, 0x7FFFFFFFFFFFFFFFui64);
              __writecr8(v21);
              v13 = Next;
            }
            while( Next );
            v4 = v22;
          }
          v10 = v16;
        }
        ++v11;
        v12 += 8;
      }
      while( v11 < v4 );
      v7 = v15;
      v8 = v17;
      v9 = v18;
    }
    ++v8;
    v6 = v6 & 0xFFFFFFFC | 2;
    v17 = v8;
    v18 = --v9;
  }
  while( v9 );
}

Referenced by:

MiProcessWorkingSets
MiReturnPartitionPagesToParent
MiTradePage
MiTransferPartitionPageRun