MiGetWsAndMakePageTablesNx
VOID __stdcall MiGetWsAndMakePageTablesNx(_BYTE *a1){
unsigned __int64 PxeSelfRef;
_MMSUPPORT_FULL *p_Vm;
char *v3;
char v4;
char v5;
INT64 v6;
INT64 v7;
UINT64 v8;
PxeSelfRef = (unsigned __int64)MmGetPxeSelfRef();
p_Vm = &KeGetCurrentThread()->ApcState.Process->Vm;
v3 = (char *)MmGetPteBase() + ((PxeSelfRef >> 9) & 0x7FFFFFFFF8i64);
MiLockWorkingSetShared();
v5 = v4;
MiLockPageTableInternal((INT64)p_Vm, (UINT64)v3, 0i64);
LODWORD(v6) = MI_READ_PTE_LOCK_FREE(PxeSelfRef);
MiPerformSafePdeWrite(v7, (INT64 *)PxeSelfRef, v6, 2);
MiUnlockPageTableInternal((INT64)p_Vm, (UINT64)v3);
LOBYTE(v8) = v5;
MiUnlockWorkingSetShared(&p_Vm->Instance, v8);
KeFlushTb(FlushUser, FlushSubsetProcessors);
}Referenced by:
MmInitializeHandBuiltProcess2