HalpAllocateCR3Root

NTSTATUS __stdcall HalpAllocateCR3Root(INT64 a1){
  __int64 v1; 
  VOID *ContiguousNodeMemory; 
  UINT64 Protect; 
  UINT64 PreferredNode; 

  v1 = (unsigned int)a1;
  if( (unsigned int)a1 >= (unsigned int)HalpQueryMaximumRegisteredProcessorCount() )
    return -1073741811;
  if( *(_QWORD *)(*(&CmpDummyThreadEvent + 865) + 8 * v1) )
    return 0;
  LODWORD(PreferredNode) = 0x80000000;
  LODWORD(Protect) = 4;
  ContiguousNodeMemory = MmAllocateContiguousNodeMemory(
                           0x1000ui64,
                           0i64,
                           (_LARGE_INTEGER)0xFFFFFFFFi64,
                           0i64,
                           Protect,
                           PreferredNode);
  if( ContiguousNodeMemory )
  {
    *(_QWORD *)(*(&CmpDummyThreadEvent + 865) + 8 * v1) = ContiguousNodeMemory;
    return 0;
  }
  return -1073741670;
}

Referenced by:

HalpDispatchPnp
HalpMmBuildTiledMemoryMap