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