MiPurgePartitionStandby

VOID __stdcall MiPurgePartitionStandby(_MI_PARTITION *Partition, UINT64 EndPurgeIndex){
  unsigned int v2; 
  unsigned __int8 CurrentIrql; 
  UINT64 v5; 
  UINT64 v6; 
  _MMPFN *v7; 
  int v8; 
  INT64 v9; 
  UINT64 v10; 
  UINT64 v11; 
  UINT64 v12; 
  UINT64 SpinCount; 

  v2 = EndPurgeIndex;
  while( 1 )
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    LODWORD(v5) = MiRemoveLowestPriorityStandbyPage(Partition, v2, 0x2000ui64);
    v6 = v5;
    if( v5 == -1i64 )
      break;
    v7 = &MmGetPfnDb()[v5];
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)&v7->u2, 0x3Fui64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( v7->u2._bf_0 < 0 );
    }
    v7->u2._bf_0 |= 0x4000000000000000ui64;
    LOBYTE(v8) = MiIsFreeZeroPfnCold((INT64)v7);
    MiInsertPageInFreeOrZeroedList(v6, v8 != 0 ? 1026 : 2, v9, v10, v11, v12);
    _InterlockedAnd64(&v7->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(CurrentIrql);
  }
  __writecr8(CurrentIrql);
}

Referenced by:

MiFinishResume
MiTrimAllSystemPagableMemory
MmPerformMemoryListCommand