MiPurgePartitionStandby

VOID __stdcall MiPurgePartitionStandby(_MI_PARTITION *Partition, UINT64 EndPurgeIndex){
  unsigned int v2; 
  unsigned __int8 CurrentIrql; 
  UINT64 v5; 
  UINT64 v6; 
  char *v7; 
  BOOL IsFreeZeroPfnCold; 
  UINT64 SpinCount; 
  v2 = EndPurgeIndex;
  while( 1 )
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    v5 = MiRemoveLowestPriorityStandbyPage(Partition, v2, 0x2000ui64);
    v6 = v5;
    if( v5 == -1i64 )
      break;
    v7 = (char *)MmGetPfnDb() + 48 * v5;
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)v7 + 6, 0x3Fui64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( *((__int64 *)v7 + 3) < 0 );
    }
    *((_QWORD *)v7 + 3) |= 0x4000000000000000ui64;
    IsFreeZeroPfnCold = MiIsFreeZeroPfnCold((INT64)v7);
    MiInsertPageInFreeOrZeroedList(v6, IsFreeZeroPfnCold ? 1026 : 2);
    _InterlockedAnd64((volatile signed __int64 *)v7 + 3, 0x7FFFFFFFFFFFFFFFui64);
    __writecr8(CurrentIrql);
  }
  __writecr8(CurrentIrql);
}

Referenced by:

MiFinishResume
MiTrimAllSystemPagableMemory
MmPerformMemoryListCommand