MiEmptyDecayClusterTimers

VOID __stdcall MiEmptyDecayClusterTimers(_MI_PARTITION *Partition){
  UINT64 UnbiasedInterruptTime; 
  WORK_QUEUE_TYPE v3; 
  void *v4; 
  char v5; 
  __int64 v6; 
  __int64 v7; 
  _MMPFN *PfnDb; 
  unsigned __int8 CurrentIrql; 
  __int64 v10; 
  ULONG_PTR v11; 
  INT64 v12; 
  unsigned __int64 v13; 
  __int64 v14; 
  char *v15; 
  unsigned int v16; 
  UINT16 v17; 
  _BYTE LockHandle[72]; 
  int v19; 
  memset(LockHandle, 0, 24);
  UnbiasedInterruptTime = KiQueryUnbiasedInterruptTime(1u);
  if( UnbiasedInterruptTime - *((_QWORD *)Partition + 604) >= 0x989680 )
  {
    v5 = *((_DWORD *)Partition + 1206) + 1;
    *((_QWORD *)Partition + 604) = UnbiasedInterruptTime;
    v6 = v5 & 3;
    v19 = v6;
    v7 = (unsigned int)v6;
    if( *((_QWORD *)Partition + v6 + 599) >> 33 != 0x7FFFFFFFi64 )
    {
      PfnDb = MmGetPfnDb();
      while( 1 )
      {
        CurrentIrql = KeGetCurrentIrql();
        __writecr8(2ui64);
        *(_QWORD *)LockHandle = 0i64;
        *(_QWORD *)&LockHandle[8] = (char *)Partition + 2664;
        KxAcquireQueuedSpinLock((PIO_WORKITEM)LockHandle, (PIO_WORKITEM_ROUTINE)((char *)Partition + 2664), v3, v4);
        v10 = *((_QWORD *)Partition + v7 + 599) >> 33;
        if( v10 == 0x7FFFFFFF )
          break;
        v11 = v10 + BasePage;
        v12 = (INT64)PfnDb + 48 * v10 + 48 * BasePage;
        v13 = *(_QWORD *)(v12 + 16);
        if( qword_140C4DC80 && (v13 & 0x10) == 0 )
          v13 &= ~qword_140C4DC80;
        v14 = (v13 >> 12) & 0xFFFFFFFFFi64;
        if( v14 == v11 )
        {
          MiUnlinkPageFromList((_MMPFN *)v12, 1ui64);
          *(_BYTE *)(v12 + 35) &= ~8u;
          MiRemoveDecayClusterTimer(v12);
          KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)LockHandle);
        }
        else
        {
          v15 = (char *)PfnDb + 48 * v14;
          if( _interlockedbittestandset64((volatile signed __int32 *)v15 + 6, 0x3Fui64) )
          {
            KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)LockHandle);
          }
          else
          {
            v16 = v15[35] & 7;
            KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)LockHandle);
            MiRelinkStandbyPage((_MMPFN *)v15, v16, v17);
            _InterlockedAnd64((volatile signed __int64 *)v15 + 3, 0x7FFFFFFFFFFFFFFFui64);
          }
        }
        __writecr8(CurrentIrql);
      }
      KeReleaseInStackQueuedSpinLockFromDpcLevel((_KLOCK_QUEUE_HANDLE *)LockHandle);
      LODWORD(v6) = v19;
      __writecr8(CurrentIrql);
    }
    *((_DWORD *)Partition + 1206) = v6;
  }
}

Referenced by:

MiWorkingSetManager