HalpAllocateNumaConfigData

VOID __stdcall HalpAllocateNumaConfigData(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  int v1; 
  int v2; 
  unsigned int v3; 
  int v4; 
  __int64 v5; 
  unsigned int v6; 
  __int64 v7; 
  unsigned int v8; 
  unsigned int v9; 
  int v10; 
  signed int v11; 
  UINT64 v12; 
  INT64 v13; 
  __int64 v14; 
  unsigned __int64 v15; 
  unsigned __int64 v16; 
  unsigned __int64 v17; 
  unsigned __int64 v18; 
  unsigned __int64 v19; 
  unsigned __int64 v20; 
  unsigned __int64 v21; 
  __int64 v22; 
  int v23; 
  int v24; 
  v23 = v2;
  v4 = v1;
  v5 = (unsigned int)(4 * v1);
  v6 = v3;
  v7 = (unsigned int)(4 * v2);
  v8 = 2 * v1 * v1;
  v9 = v8
     + ((((((((((v7 + ((v7 + 79) & 0xFFFFFFF8) + 7) & 0xFFFFFFF8) + v7 + 7) & 0xFFFFFFF8) + v5 + 7) & 0xFFFFFFF8)
         + v5
         + 7) & 0xFFFFFFF8)
       + v5
       + 7) & 0xFFFFFFF8);
  if( v3 )
  {
    v6 = v3 + 1;
    v9 = 16 * (v3 + 1) + ((v9 + 7) & 0xFFFFFFF8);
  }
  v10 = v24;
  if( v24 )
  {
    v10 = v24 + 1;
    v9 = 16 * (v24 + 1) + ((v9 + 7) & 0xFFFFFFF8);
  }
  v11 = (v9 + 4095) >> 12;
  v12 = HalpAllocPhysicalMemory(LoaderBlock, 0i64);
  if( v12 )
  {
    v13 = HalpMap((LARGE_INTEGER)v12, (MEMORY_CACHING_TYPE)v11, 1u);
    v14 = v13;
    if( v13 )
    {
      memset(v13, 0i64);
      v15 = (v14 + 79) & 0xFFFFFFFFFFFFFFF8ui64;
      HalpNumaConfig = v14;
      *(_QWORD *)v14 = v15;
      *(_DWORD *)(v14 + 64) = v4;
      v16 = (v15 + v7 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *(_QWORD *)(v14 + 8) = v16;
      v17 = (v16 + v7 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *(_QWORD *)(v14 + 16) = v17;
      v18 = (v17 + v7 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *(_QWORD *)(v14 + 24) = v18;
      v19 = ((unsigned int)v5 + 7i64 + v18) & 0xFFFFFFFFFFFFFFF8ui64;
      *(_QWORD *)(v14 + 32) = v19;
      v20 = (v19 + v5 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *(_QWORD *)(v14 + 40) = v20;
      v21 = (v20 + v5 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *(_QWORD *)(v14 + 48) = v21;
      v22 = v8 + v21;
      *(_DWORD *)(v14 + 68) = v23;
      if( v6 )
      {
        *(_QWORD *)&HalpNumaMemoryRanges = (v22 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
        v22 = 16i64 * v6 + *(_QWORD *)&HalpNumaMemoryRanges;
      }
      if( v10 )
      {
        HalpChannelMemoryRangeCount = v10;
        HalpChannelMemoryRanges = (WCHAR *)((v22 + 7) & 0xFFFFFFFFFFFFFFF8ui64);
      }
    }
  }
}

Referenced by:

HalpInitializeConfigurationFromMadt
HalpNumaInitializeStaticConfiguration