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