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