HalpMmInitSystem

NTSTATUS __stdcall HalpMmInitSystem(
        _HALP_ALLOC_CONTEXT *HalPhase,
        _LOADER_PARAMETER_BLOCK *LoaderBlock,
        _LOADER_PARAMETER_BLOCK *a3){
  int inited; 
  int v4; 
  int v5; 
  INT64 v7; 
  _LOADER_PARAMETER_EXTENSION *Extension; 
  VOID *HalVirtualAddress; 
  unsigned __int64 HalNumberOfBytes; 

  inited = 0;
  if( (_DWORD)HalPhase )
  {
    v4 = (_DWORD)HalPhase - 12;
    if( v4 )
    {
      v5 = v4 - 4;
      if( v5 )
      {
        if( v5 == 1 )
        {
          inited = HalpInitMemoryCachingRequirementsTable((INT64)a3);
          if( inited >= 0 )
          {
            HalpPteReserveResources(v7);
            HalpMoveMemory = (__int64(__fastcall *)())RtlCopyMemoryNonTemporal;
          }
        }
      }
      else
      {
        HalpMmReservePageTablePages();
        ::LoaderBlock = 0i64;
        qword_140C50678 = 0i64;
        dword_140C50680 = 0;
      }
    }
    else if( byte_140C49C49 )
    {
      HalpConsumeLowMemory((INT64)a3);
    }
  }
  else
  {
    Extension = a3->Extension;
    qword_140C50678 = 0i64;
    dword_140C50680 = 0;
    ::LoaderBlock = a3;
    HalVirtualAddress = Extension->HalVirtualAddress;
    HalNumberOfBytes = Extension->HalNumberOfBytes;
    qword_140C50660 = HalVirtualAddress;
    qword_140C50658 = (__int64)HalVirtualAddress + HalNumberOfBytes;
    qword_140C50668 = (__int64)HalVirtualAddress + HalNumberOfBytes - 1;
    qword_140C00718 = (__int64)HalpAllocateEarlyPages;
    qword_140C00720 = (__int64)HalpMapEarlyPages;
    VirtualAddress = HalVirtualAddress;
    HalpMmAllocCtxInit();
  }
  return inited;
}

Referenced by:

No references.