MiLockLowestValidPageTable
_MMPTE *__stdcall MiLockLowestValidPageTable(INT64 a1, INT64 *a2, INT64 **a3){
_MMPTE *PteBase;
_MMPTE *PxeSelfRef;
INT64 v8;
__int64 i;
INT64 *v10;
INT64 v11;
UINT64 v13;
unsigned __int64 v14;
unsigned __int64 v15;
__int64 v16;
*a3 = 0i64;
PteBase = MmGetPteBase();
v13 = (UINT64)PteBase + (((unsigned __int64)a2 >> 9) & 0x7FFFFFFFF8i64);
v14 = (unsigned __int64)PteBase + ((v13 >> 9) & 0x7FFFFFFFF8i64);
v15 = (unsigned __int64)PteBase + ((v14 >> 9) & 0x7FFFFFFFF8i64);
v16 = (__int64)PteBase + ((v15 >> 9) & 0x7FFFFFFFF8i64);
PxeSelfRef = MmGetPxeSelfRef();
MiLockPageTableInternal(a1, (UINT64)PxeSelfRef, 0i64);
for( i = 2i64; ; --i )
{
v10 = (INT64 *)*(&v13 + i);
v11 = *v10;
if( (*v10 & 1) == 0 || (v11 & 0x80u) != 0i64 )
break;
if( (v11 & 0x20) == 0 )
MiPerformSafePdeWrite(v8, (INT64 *)*(&v13 + i), v11, 1);
if( v10 != (INT64 *)PxeSelfRef )
{
MiLockPageTableInternal(a1, (UINT64)v10, 0i64);
MiUnlockPageTableInternal(a1, (UINT64)PxeSelfRef);
PxeSelfRef = (_MMPTE *)v10;
}
if( !i )
{
*a3 = a2;
return PxeSelfRef;
}
}
*a3 = v10;
return PxeSelfRef;
}Referenced by:
MiCommitExistingVad
MiConvertAndFlushWsleVas
MiDeleteSystemPagableVm
MiDeprioritizeVirtualAddresses
MiGetWorkingSetInfoList
MiLockPoolCommitPageTable
MiMakeSystemAddressValid
MiProtectAweRegion
MiReacquireWalkLocks
MiRelockFaultState
MiScrubLargeMappedPage
MiSetGraphicsPtes
MiSetPagesModified
MiSetProtectionOnSection
MiSharePages
MiSplitReducedCommitClonePage
MiSynchronizeSystemVa
MiTranslatePageForCopy
MiTrimSharedPageFromViews
MiWalkPageTablesRecursively
MmUpdateUserShadowStackValue
NtUnlockVirtualMemory