HalpTscGetAttributes
VOID __stdcall HalpTscGetAttributes(INT64 a1, INT64 a2){
_BYTE *v2;
_BYTE *v4;
INT64 v6;
__int16 v7;
unsigned int v8;
int v9;
__int128 v10;
char v11;
CHAR v12;
int v13;
int v14;
v14 = 0;
v13 = 0;
v8 = 0;
v4 = v2;
*(_BYTE *)a1 = 0;
*(_BYTE *)a2 = 0;
*v2 = 0;
v10 = 0i64;
v11 = 0;
v12 = 0;
if( HalSocRequestApi(a1, 0i64, 2i64, 0x10ui64, &v10) < 0 )
goto LABEL_9;
(*((void(__fastcall **)(__int64, int *, int *, int *, int *))&v10 + 1))(2147483649i64, &v13, &v13, &v13, &v14);
if( (v14 & 0x8000000) != 0 )
*v4 = 1;
if( !((unsigned __int8(__fastcall *)(_QWORD, _QWORD, _QWORD, char *))v10)(0i64, 0i64, 0i64, &v11) )
goto LABEL_9;
(*((void(__fastcall **)(__int64, unsigned int *, int *, int *, int *))&v10 + 1))(
0x80000000i64,
&v8,
&v13,
&v13,
&v13);
if( (unsigned __int8)(v11 - 1) <= 1u )
{
v7 = 0;
v9 = 0;
if( v8 >= 0x80000007 )
{
(*((void(__fastcall **)(__int64, int *, int *, int *, int *))&v10 + 1))(2147483655i64, &v13, &v13, &v13, &v9);
v7 = v9;
}
if( (v7 & 0x100) != 0 )
{
LABEL_9:
*(_BYTE *)a1 = 1;
*(_BYTE *)a2 = 1;
return;
}
HalSocRequestConfigurationData(7i64, v6, &v12);
if( !v12
&& v11 == 2
&& (KeGetCurrentPrcb()->CpuType == 15 && KeGetCurrentPrcb()->CpuModel >= 3u
|| KeGetCurrentPrcb()->CpuType == 6 && KeGetCurrentPrcb()->CpuModel >= 0xEu) )
{
*(_BYTE *)a1 = 1;
*(_BYTE *)a2 = 0;
}
}
}Referenced by:
HalpTscDiscover
HalpTscInitialize