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