HalpTimerRegisterBuiltinPlugins

NTSTATUS __stdcall HalpTimerRegisterBuiltinPlugins(INT64 a1){
  NTSTATUS result; 
  INT64 v2; 
  _MI_PARTITION *v3; 
  _TIMER_INITIALIZATION_BLOCK NewTimer; 
  CHAR v5; 

  if( (_DWORD)a1 )
  {
    if( (_DWORD)a1 == 1 )
    {
      HalpPmTimerDiscover();
      if( result >= 0 )
      {
        HalpRtcDiscover();
        if( result >= 0 )
        {
          result = HalpHpetDiscover();
          if( result >= 0 )
          {
            result = HalpApicTimerDiscover();
            if( result >= 0 )
            {
              result = HalpSfiTimerDiscover();
              if( result >= 0 )
              {
                v5 = 1;
                if( HalSocRequestConfigurationData(2i64, v2, &v5) >= 0 && v5 )
                {
                  memset(&NewTimer, 0i64, sizeof(NewTimer));
                  NewTimer.Interrupt.LegacyIrq = 0;
                  NewTimer.Interrupt.Polarity = InterruptPolarityUnknown;
                  NewTimer.FunctionTable.Initialize = (PLONG)HalSystemVectorDispatchEntry;
                  NewTimer.Header.TableVersion = 1;
                  NewTimer.FunctionTable.ArmTimer = (PLONG)Halp8254TimerArm;
                  NewTimer.FunctionTable.AcknowledgeInterrupt = xHalTimerWatchdogStop;
                  NewTimer.FunctionTable.Stop = xHalTimerWatchdogStop;
                  NewTimer.Header.TableSize = 144;
                  NewTimer.CounterBitWidth = 16;
                  NewTimer.CounterFrequency = 1193182i64;
                  NewTimer.KnownType = Timer8254;
                  NewTimer.Capabilities = 320;
                  HalpTimerRegister(&NewTimer, 0i64);
                }
                result = HalpArtDiscover(v3);
                if( result >= 0 )
                  return HalpHvWatchdogDiscover();
              }
            }
          }
        }
      }
    }
    else
    {
      return 0;
    }
  }
  else
  {
    HalpTscDiscover();
  }
  return result;
}

Referenced by:

HalpTimerRegisterBuiltinPluginsCommon