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