HalpInitializeProfiling
VOID __stdcall HalpInitializeProfiling(INT64 Number){
int v1;
__int64 v2;
__int32 v3;
__int32 v4;
__int64 v5;
CHAR first[16];
INT32 v7[4];
v1 = Number;
*(_OWORD *)first = 0i64;
*(_OWORD *)v7 = 0i64;
if( (dword_140C4A10C & 1) == 0 )
goto LABEL_17;
if( !(_DWORD)Number )
{
v2 = __cpuid(0, 0);
*(_DWORD *)&first[4] = EBX(v2);
*(_DWORD *)&first[8] = EDX(v2);
*(_DWORD *)&first[12] = ECX(v2);
*(_DWORD *)first = EAX(v2);
if( !strncmp(&first[4], (INT8 *)"AuthenticAMD", 0xCui64) )
{
HalpProfileInterface[0] = (__int64(__fastcall *)())Amd64ProfileInterface;
}
else if( *(_DWORD *)first >= 0xAu && !strncmp(&first[4], (INT8 *)"GenuineIntel", 0xCui64) )
{
v5 = __cpuid(10, 0);
v3 = EAX(v5);
v4 = EBX(v5);
*(_DWORD *)&first[8] = ECX(v5);
*(_DWORD *)&first[4] = v4;
*(_DWORD *)&first[12] = EDX(v5);
if( (_BYTE)v3 )
{
if( (v3 & 0xFF000000) != 0 && (v4 & 1) == 0 )
{
HalpProfileInterface[0] = (__int64(__fastcall *)())&EmonProfileInterface;
if( (unsigned __int8)v3 >= 4u )
dword_140C4AD00 |= 1u;
}
}
}
qword_140C50708 = 0i64;
if( !HalpIsMicrosoftCompatibleHvLoaded() || (HalpHvCpuid(1073741827i64, v7), (v7[3] & 4) != 0) )
{
LABEL_13:
HalpLbrInitialize();
goto LABEL_3;
}
HalpProfileInterface[0] = (__int64(__fastcall *)())DefaultProfileInterface;
LABEL_17:
if( v1 )
goto LABEL_3;
goto LABEL_13;
}
LABEL_3:
(*(void(**)(void))HalpProfileInterface[0])();
}Referenced by:
HalpHwPerfCntInitSystem