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