MmDbgMarkPfnModifiedWorker
VOID __stdcall MmDbgMarkPfnModifiedWorker(){
__int64 v0;
__int64 *v1;
__int64 v2;
_MMPFN *v3;
unsigned __int64 v4;
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;} v5;
_MMPTE v6;
_MI_PARTITION *v7;
v0 = 0i64;
v1 = (__int64 *)((char *)&stru_140C4DB30 + 2728);
do
{
v2 = *v1;
if( (*v1 & 1) != 0 )
{
_InterlockedAnd64((volatile signed __int64 *)&stru_140C4DB30 + v0 + 341, 0i64);
v3 = (_MMPFN *)(v2 - 1);
v4 = MiLockPageInline(v3);
MiCaptureDirtyBitToPfn();
v6.u.Long = v5.Long;
MiRemoveLockedPageChargeAndDecRef(v3);
v7 = *(_MI_PARTITION **)(*(&stru_140C4DB30 + 267) + 8 * (((unsigned __int64)v3->u4._bf_0 >> 39) & 0x3FF));
_InterlockedAnd64(&v3->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
__writecr8(v4);
if( v6.u.Long )
MiReleasePageFileInfo(v7, v6, 0i64);
}
v0 = (unsigned int)(v0 + 1);
++v1;
}
while( (unsigned int)v0 < 0x20 );
}Referenced by:
ExpDebuggerWorker