MiWorkingSetManager

VOID __stdcall MiWorkingSetManager(_MM_WORKING_SET_MANAGER_WAKE_TYPE WakeReason, _MM_WORKING_SET_MANAGER_WAKE_TYPE a2){
  INT64 v3; 
  UINT8 *v4; 
  __int64 v5; 
  int v6; 
  int v7; 
  int v8; 
  __int64 v9; 
  unsigned __int8 AgingPolicy; 
  unsigned __int8 v11; 
  UINT8 v12; 
  unsigned __int64 v13; 
  unsigned __int64 v14; 
  _MMWS_TRIM_CRITERIA TrimCriteria[2]; 

  v3 = *(_QWORD *)&WakeReason;
  memset(TrimCriteria, 0i64, sizeof(TrimCriteria));
  v5 = *(_QWORD *)(v3 + 6848);
  v6 = 0;
  if( !*(_QWORD *)(v5 + 88) )
    *(_QWORD *)(v5 + 88) = KeGetCurrentThread();
  MiWakePageZeroing(v3, 0i64, v4);
  if( (_MI_PARTITION *)v3 == &Irp )
  {
    MiDeleteStaleCacheMaps();
    MiReclaimUnusedUltraMdlMaps();
    MiCheckLogPinDriverAddresses();
  }
  MiEmptyDecayClusterTimers((_MI_PARTITION *)v3);
  if( (*(_DWORD *)(v3 + 4) & 0x18) != 0 )
    MiEnumerateSlabAllocators(
      v3,
      (unsigned int(__fastcall *)(__int64, unsigned __int64, __int64))MiFreeSlabEntries,
      0i64);
  if( ++*(_DWORD *)(v5 + 32) == *(_DWORD *)(v5 + 36) )
  {
    v7 = *(_DWORD *)(v5 + 24);
    *(_DWORD *)(v5 + 32) = 0;
    v8 = ((_BYTE)v7 + 1) & 0xF;
    *(_DWORD *)(v5 + 24) = v8;
    v9 = ((_BYTE)v8 - 8) & 0xF;
    if( *(_QWORD *)(v3 + 40 * v9 + 3456) )
      KeSetEvent((PRKEVENT)(v3 + 8 * (v9 + 2 * v9 + 551)), 0, 0);
  }
  if( (_MI_PARTITION *)v3 == &Irp && a2 == WorkingSetPeriodic )
    KePulseEvent((PRKEVENT)((char *)&stru_140C4DB30 + 4192), 0, 0);
  TrimCriteria[0].AgingPolicy = 1;
  MiProcessWorkingSets((_MI_PARTITION *)v3, TrimCriteria);
  AgingPolicy = TrimCriteria[0].AgingPolicy;
  if( TrimCriteria[0].AgingPolicy != 1 )
  {
    v11 = 1;
    do
    {
      if( v11 == AgingPolicy )
      {
        TrimCriteria[0].AgingPolicy = 1;
        ++*(_DWORD *)(v5 + 2576);
      }
      else
      {
        MiAdjustModifiedPageLoad((_MI_PARTITION *)v3, *(_QWORD *)(v5 + 2336), *(unsigned int *)(v5 + 120));
        ++*(_DWORD *)(v5 + 2572);
        MiScanPagefiles((_MI_PARTITION *)v3);
        v6 = 1;
      }
      v11 = TrimCriteria[0].AgingPolicy;
      MiProcessWorkingSets((_MI_PARTITION *)v3, TrimCriteria);
      AgingPolicy = TrimCriteria[0].AgingPolicy;
    }
    while( TrimCriteria[0].AgingPolicy != 1 );
  }
  if( (_MI_PARTITION *)v3 == &Irp )
  {
    MiAdjustPteBins();
    MiAdjustCachedStacks();
    if( byte_140C4C872 == 1 )
      MiQueueExtentPfnDeletion(0i64, v12);
  }
  if( !v6 )
  {
    MiAdjustModifiedPageLoad((_MI_PARTITION *)v3, *(_QWORD *)(v5 + 2336), *(unsigned int *)(v5 + 120));
    MiScanPagefiles((_MI_PARTITION *)v3);
  }
  MiCheckTrimUnusedPageFileRegions((_MI_PARTITION *)v3);
  v13 = *(_QWORD *)(v3 + 7488);
  v14 = *(_QWORD *)(v3 + 7600);
  if( v13 > v14 && v13 - v14 >= 0x320 )
    KeSetEvent((PRKEVENT)(v3 + 792), 0, 0);
  MiSignalLargePageRebuild((_MI_PARTITION *)v3);
  MiScheduleZeroPageThreads(v3);
}

Referenced by:

KeBalanceSetManager
MiPartitionWorkingSetManager