HalpFindTimer
INT64 *__fastcall HalpFindTimer(int a1, int a2, int a3, int a4, char a5){
INT64 *v9;
INT64 *v10;
INT64 *v11;
INT64 *v12;
INT64 *v13;
int v14;
int v15;
unsigned __int64 v17;
unsigned __int64 v18;
if( !(_DWORD)HalpRegisteredTimerCount )
return 0i64;
v9 = (INT64 *)HalpRegisteredTimers;
v10 = 0i64;
while( v9 != &HalpRegisteredTimers )
{
v11 = v9;
v12 = v9;
v13 = v9;
v9 = (INT64 *)*v9;
v14 = *((_DWORD *)v11 + 46);
if( ((v14 & 0x100) == 0 || (a5 & 4) == 0)
&& (v14 & 1) == 0
&& ((v14 & 4) == 0 || (a5 & 1) != 0)
&& (!a1 || a1 == *((_DWORD *)v13 + 57)) )
{
v15 = *((_DWORD *)v13 + 56);
if( (a2 & v15) == a2 && (v15 & a3) == 0 && (!a4 || (v15 & a4) != 0) )
{
if( v10 )
{
v17 = v11[24];
v18 = v10[24];
if( (a5 & 2) != 0 )
{
if( v17 >= v18 )
v12 = v10;
v10 = v12;
}
else if( v17 > v18 )
{
v10 = v13;
}
}
else
{
v10 = v13;
}
}
}
}
if( (a5 & 4) != 0 && v10 )
*((_DWORD *)v10 + 46) |= 0x100u;
return v10;
}Referenced by:
HalpInitializeTimers
HalpTimerConfigureQpcBypass
HalpTimerFindBestAlwaysOnTimer
HalpTimerFindIdealClockSource
HalpTimerFindIdealPerformanceCounterSource
HalpTimerFindIdealWatchdog
HalpTimerInitializeEarlyStallSource
HalpTimerInitializeHypervisorTimer
HalpTimerMeasureProcessorsWorker
HalpTimerNoteHpetMaskingBehavior
HalpTimerQueryCycleCounter
HalpTimerSaveProcessorFrequency
HalpTimerSelectRoles
HalpTscAdvSynchLeader
HalpTscSynchronization