MiWriteValidPteVolatile
VOID __stdcall MiWriteValidPteVolatile(MMPTE *PointerPte, UINT64 PteFlags){
unsigned __int8 v2;
signed __int64 v3;
__int64 v4;
UINT64 v5;
int v6;
unsigned __int64 v8;
__int64 v9;
__int64 v10;
bool v11;
signed __int64 v12;
v3 = *(_QWORD *)PointerPte;
v4 = (unsigned int)PteFlags & 0x80000000;
v5 = PteFlags & 1;
v6 = PteFlags & 2;
do
{
v8 = v3;
if( v4 )
v8 = v3 ^ (v3 ^ ((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, v3);
v11 = v3 == v12;
v3 = v12;
}
while( !v11 );
}Referenced by:
MiCheckProtoPtePageState
MiCopyOnWrite
MiLockCode
MiLockOwnedProtoPage
MiLockPagedAddress
MiMakePageAvoidRead
MiRemoveWsle
MiResolveProtoPteFault
MiSetReadOnlyOnSectionView
MiTryLockProtoPoolPageAtDpc
MiWriteWsle
MmCheckCachedPageStates