HvlpDiscoverTopologyComplete
VOID __stdcall HvlpDiscoverTopologyComplete(UINT64 a1, UINT64 a2){
size_t v2;
unsigned int v3;
UINT64 *v4;
unsigned int v5;
unsigned int v6;
unsigned int v7;
bool v8;
char v9;
char v10;
UINT64 *v11;
char v12;
v2 = 0;
if( HvlpLogicalProcessorCount )
{
v3 = dword_140CF627C;
v4 = &ApicId;
v5 = dword_140CF6280;
do
{
if( *((_DWORD *)v4 + 4) == -1 )
{
HvlpDiscoverTopologyWorker(*((unsigned int *)v4 - 1), *(unsigned int *)v4, v4 + 1, (UINT64 *)((char *)v4 + 12));
v3 = dword_140CF627C;
v5 = dword_140CF6280;
}
v6 = *((_DWORD *)v4 + 2);
v7 = *((_DWORD *)v4 + 3);
if( v6 > v3 )
v3 = *((_DWORD *)v4 + 2);
dword_140CF627C = v3;
if( v7 > v5 )
v5 = v7;
v8 = *((_BYTE *)v4 + 104) == 0;
dword_140CF6280 = v5;
if( !v8 )
{
v9 = 1;
v10 = 1;
if( &HvlpLogicalProcessorRegions == v4 - 1 )
goto LABEL_19;
v11 = &PackageId;
do
{
if( *((_BYTE *)v11 + 96) )
{
v12 = 0;
if( *(_DWORD *)v11 != v6 )
v12 = v9;
v9 = v12;
if( *((_DWORD *)v11 + 1) == v7 )
v10 = 0;
}
v11 += 15;
}
while( v11 - 2 != v4 - 1 );
if( v9 )
LABEL_19:
++HvlpPackageCount;
if( v10 )
++HvlpCoreCount;
}
++v2;
v4 += 15;
}
while( v2 < HvlpLogicalProcessorCount );
}
}Referenced by:
HvlPhase2Initialize