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