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