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