MiDeleteParentDecayNode

VOID __stdcall MiDeleteParentDecayNode(_MMPFN *Pfn1){
  __int64 v1; 
  _MMPFN *v2; 
  union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;} v3; 
  __int64 v4; 
  char v5; 

  v1 = Pfn1->u2._bf_0 & 0xFFFFFFFFFi64;
  v2 = &MmGetPfnDb()[v1];
  LODWORD(v3.Long) = MiMakeTransitionPte(v1, 4);
  v2->OriginalPte.u = (union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;})v3.Long;
  v2->u4._bf_0 = v4 | v2->u4._bf_0 & 0xFFFFFFF000000000ui64;
  MiUnlinkPageFromList(v2, 1ui64);
  MiRemoveDecayClusterTimer(v2);
  v5 = *((_BYTE *)&v2->u3 + 3);
  if( (v5 & 8) != 0 )
    *((_BYTE *)&v2->u3 + 3) = v5 & 0xF7;
  else
    RtlpInterlockedPushEntrySList((PSLIST_HEADER)&stru_140C4DB30 + 188, (PSLIST_ENTRY)v2);
}

Referenced by:

MiRemoveLowestPriorityStandbyPage
MiUnlinkPageFromList