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