MiWriteValidPteVolatile
VOID __stdcall MiWriteValidPteVolatile(_MMPTE *PointerPte, UINT64 PteFlags){
unsigned __int8 v2;
signed __int64 Long;
__int64 v4;
UINT64 v5;
int v6;
unsigned __int64 v8;
__int64 v9;
__int64 v10;
bool v11;
signed __int64 v12;
Long = PointerPte->u.Long;
v4 = (unsigned int)PteFlags & 0x80000000;
v5 = PteFlags & 1;
v6 = PteFlags & 2;
do
{
v8 = Long;
if( v4 )
v8 = Long ^ (Long ^ ((unsigned __int64)v2 << 56)) & 0x7F00000000000000i64;
v9 = v8 | 0x20;
if( !v5 )
v9 = v8;
v10 = v9 | 0x42;
if( !v6 )
v10 = v9;
v12 = _InterlockedCompareExchange64((volatile signed __int64 *)PointerPte, v10, Long);
v11 = Long == v12;
Long = v12;
}
while( !v11 );
}Referenced by:
MiCheckProtoPtePageState
MiCopyOnWrite
MiLockCode
MiLockOwnedProtoPage
MiLockPagedAddress
MiMakePageAvoidRead
MiRemoveWsle
MiResolveProtoPteFault
MiSetReadOnlyOnSectionView
MiTryLockProtoPoolPageAtDpc
MiWriteWsle
MmCheckCachedPageStates