MiMarkPteDirty

VOID __stdcall MiMarkPteDirty(_MMPTE *PointerPte){
  __int16 v2; 
  VOID *v3; 
  _MMSUPPORT_INSTANCE *AnyMultiplexedVm; 
  CHAR *v5; 
  __int64 v6; 
  UINT64 v7; 
  UINT64 WsIrql; 

  LOBYTE(WsIrql) = 0;
  v2 = MI_READ_PTE_LOCK_FREE((INT64)PointerPte);
  if( (v2 & 0x42) == 0 && (v2 & 0x800) != 0 )
  {
    AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypeSystemCache, v3);
    v5 = MiLockWorkingSetOptimal((INT64)AnyMultiplexedVm, (UINT64)PointerPte, &WsIrql);
    LODWORD(v6) = MI_READ_PTE_LOCK_FREE((INT64)PointerPte);
    if( (v6 & 1) != 0 && (v6 & 0x42) == 0 && (v6 & 0x800) != 0 )
      MiWriteValidPteNewProtection((INT64 *)PointerPte, v6 | 0x62);
    MiUnlockPageTableInternal((INT64)AnyMultiplexedVm, (UINT64)v5);
    LOBYTE(v7) = WsIrql;
    MiUnlockWorkingSetShared(AnyMultiplexedVm, v7);
  }
}

Referenced by:

MmCheckCachedPageStates