MI_CLEAR_RESET_PTE

VOID __stdcall MI_CLEAR_RESET_PTE(_MMPTE *PointerPte){
  INT64 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; 
  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;} v4; 
  int v5; 

  LODWORD(v2) = MI_READ_PTE_LOCK_FREE((INT64)PointerPte);
  LODWORD(v3.Long) = MiUpdatePageFileHighInPte(v2, 0i64);
  v4.Long = v3.Long;
  LOBYTE(v5) = MiPteInShadowRange((UINT64)PointerPte);
  if( v5 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v4.Long & 1) != 0 )
    v4.Long |= 0x8000000000000000ui64;
  PointerPte->u.Long = v4.Long;
}

Referenced by:

MiActOnPte
MiRestoreTransitionPte