HalpTscDiscover

VOID __stdcall HalpTscDiscover(){
  unsigned int v0; 
  INT64 v1; 
  int v2; 
  __int64 v3; 
  unsigned __int64 v4; 
  int v5; 
  __int128 v6; 
  _UNICODE_STRING DestinationString; 
  _TIMER_INITIALIZATION_BLOCK NewTimer; 
  int v9; 

  v9 = 0;
  v6 = 0i64;
  DestinationString = 0i64;
  memset(&NewTimer, 0i64, sizeof(NewTimer));
  NewTimer.CounterFrequency = 0i64;
  NewTimer.InternalData = &v9;
  NewTimer.Header.TableSize = 144;
  v0 = 7;
  NewTimer.Header.TableVersion = 1;
  NewTimer.CounterBitWidth = 64;
  NewTimer.KnownType = TimerProcessor;
  NewTimer.InternalDataSize = 4;
  if( HalSocRequestApi(v1, 0i64, 6i64, 0x10ui64, &v6) >= 0 )
  {
    v3 = ((__int64(*)(void))v6)();
    v4 = 0i64;
    if( v3 )
      v4 = v3;
    NewTimer.CounterFrequency = v4;
  }
  HalpTscGetAttributes((INT64)&CmpDummyThreadEvent + 4280, (INT64)&CmpDummyThreadEvent + 4273);
  if( v2 < 0 )
  {
    v5 = 24583;
LABEL_12:
    NewTimer.Capabilities = v5;
    goto LABEL_6;
  }
  if( !*(&CmpDummyThreadEvent + 4280) )
    v0 = 8199;
  NewTimer.Capabilities = v0;
  if( !*(&CmpDummyThreadEvent + 4273) )
  {
    v5 = v0 | 0x4000;
    goto LABEL_12;
  }
LABEL_6:
  NewTimer.FunctionTable.Initialize = (PLONG)HalpTscInitialize;
  NewTimer.FunctionTable.QueryCounter = (PULONG64)HalpTscQueryCounter;
  RtlInitUnicodeString(&DestinationString, L"VEN_vvvv&DEV_dddd&SUBVEN_ssss&SUBDEV_yyyy&REV_rrrr&INST_iiii&UID_uuuuuuuu");
  HalpTimerRegister(&NewTimer, &DestinationString);
}

Referenced by:

HalpTimerRegisterBuiltinPlugins