HalpAllocateNumaConfigData

VOID __stdcall HalpAllocateNumaConfigData(
        _LOADER_PARAMETER_BLOCK *LoaderBlock,
        UINT64 NodeCount,
        UINT64 ProcCount,
        UINT64 MemoryRangeCount,
        UINT64 ChannelCount){
  int v5; 
  __int64 v6; 
  unsigned int v7; 
  __int64 v8; 
  unsigned int v9; 
  int v10; 
  int v11; 
  unsigned int v12; 
  UINT64 v13; 
  _DWORD *v14; 
  _DWORD *v15; 
  unsigned __int64 v16; 
  unsigned __int64 v17; 
  unsigned __int64 v18; 
  unsigned __int64 v19; 
  unsigned __int64 v20; 
  unsigned __int64 v21; 
  unsigned __int64 v22; 
  __int64 v23; 
  UINT64 Protection; 
  int v25; 

  v25 = ProcCount;
  v5 = NodeCount;
  v6 = (unsigned int)(4 * NodeCount);
  v7 = MemoryRangeCount;
  v8 = (unsigned int)(4 * ProcCount);
  v9 = 2 * NodeCount * NodeCount;
  v10 = v9
      + ((((((((((v8 + ((v8 + 79) & 0xFFFFFFF8) + 7) & 0xFFFFFFF8) + v8 + 7) & 0xFFFFFFF8) + v6 + 7) & 0xFFFFFFF8)
          + v6
          + 7) & 0xFFFFFFF8)
        + v6
        + 7) & 0xFFFFFFF8);
  if( (_DWORD)MemoryRangeCount )
  {
    v7 = MemoryRangeCount + 1;
    v10 = 16 * (MemoryRangeCount + 1) + ((v10 + 7) & 0xFFFFFFF8);
  }
  v11 = ChannelCount;
  if( (_DWORD)ChannelCount )
  {
    v11 = ChannelCount + 1;
    v10 = 16 * (ChannelCount + 1) + ((v10 + 7) & 0xFFFFFFF8);
  }
  v12 = (unsigned int)(v10 + 4095) >> 12;
  v13 = HalpAllocPhysicalMemory(LoaderBlock, 0i64, v12, 0i64);
  if( v13 )
  {
    LODWORD(Protection) = 4;
    v14 = (_DWORD *)HalpMap((_LARGE_INTEGER)v13, (_MEMORY_CACHING_TYPE)v12, MmCached, 0, Protection);
    v15 = v14;
    if( v14 )
    {
      memset(v14, 0i64, v12 << 12);
      v16 = ((unsigned __int64)v15 + 79) & 0xFFFFFFFFFFFFFFF8ui64;
      *(&CmpDummyThreadEvent + 876) = v15;
      *(_QWORD *)v15 = v16;
      v15[16] = v5;
      v17 = (v16 + v8 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *((_QWORD *)v15 + 1) = v17;
      v18 = (v17 + v8 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *((_QWORD *)v15 + 2) = v18;
      v19 = (v18 + v8 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *((_QWORD *)v15 + 3) = v19;
      v20 = ((unsigned int)v6 + 7i64 + v19) & 0xFFFFFFFFFFFFFFF8ui64;
      *((_QWORD *)v15 + 4) = v20;
      v21 = (v20 + v6 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *((_QWORD *)v15 + 5) = v21;
      v22 = (v21 + v6 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      *((_QWORD *)v15 + 6) = v22;
      v23 = v9 + v22;
      v15[17] = v25;
      if( v7 )
      {
        *(&CmpDummyThreadEvent + 866) = (v23 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
        v23 = 16i64 * v7 + *(&CmpDummyThreadEvent + 866);
      }
      if( v11 )
      {
        *(&CmpDummyThreadEvent + 1022) = v11;
        *(&CmpDummyThreadEvent + 510) = (v23 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
      }
    }
  }
}

Referenced by:

HalpInitializeConfigurationFromMadt
HalpNumaInitializeStaticConfiguration