HalpMmInitSystem

__int64 __fastcall HalpMmInitSystem(int a1, __int64 a2, __int64 a3){
  int inited; 
  int v4; 
  int v5; 
  INT64 v7; 
  __int64 v8; 
  VOID *v9; 
  __int64 v10; 
  inited = 0;
  if( a1 )
  {
    v4 = a1 - 12;
    if( v4 )
    {
      v5 = v4 - 4;
      if( v5 )
      {
        if( v5 == 1 )
        {
          inited = HalpInitMemoryCachingRequirementsTable(a3);
          if( inited >= 0 )
          {
            HalpPteReserveResources(v7);
            HalpMoveMemory = (__int64(__fastcall *)())RtlCopyMemoryNonTemporal;
          }
        }
      }
      else
      {
        HalpMmReservePageTablePages();
        HalpMmLoaderBlock = 0i64;
        HalpMmLeftoverMemory = 0i64;
        HalpMmLeftoverMemorySize = 0;
      }
    }
    else if( HalpMiscDiscardLowMemory )
    {
      HalpConsumeLowMemory(a3);
    }
  }
  else
  {
    v8 = *(_QWORD *)(a3 + 240);
    HalpMmLeftoverMemory = 0i64;
    HalpMmLeftoverMemorySize = 0;
    HalpMmLoaderBlock = (_LOADER_PARAMETER_BLOCK *)a3;
    v9 = *(VOID **)(v8 + 2928);
    v10 = *(_QWORD *)(v8 + 2936);
    HalpHeapStart = v9;
    HalpHeapEnd = (__int64)v9 + v10;
    HalpOriginalHeapEnd = (__int64)v9 + v10 - 1;
    qword_140C00718 = (__int64)HalpAllocateEarlyPages;
    qword_140C00720 = (__int64)HalpMapEarlyPages;
    HalpOriginalHeapStart = v9;
    HalpMmAllocCtxInit(v9, a2);
  }
  return(unsigned int)inited;
}

Referenced by:

No references.