HalpRtcDiscover

VOID __stdcall HalpRtcDiscover(){
  _LARGE_INTEGER *AcpiTable; 
  INT64 v1; 
  INT64 v2; 
  _TIMER_INITIALIZATION_BLOCK NewTimer; 
  __int128 v4; 

  AcpiTable = HalSocGetAcpiTable(0x50434146ui64);
  if( AcpiTable
    && (LOBYTE(AcpiTable[1].anonymous_0.LowPart) < 5u || (AcpiTable[13].QuadPart & 0x200000000000i64) == 0)
    && HalSocRequestApi(v1, 0i64, 1i64, 0x10ui64, (char *)&stru_140CF2E80 + 4704) >= 0
    && HalSocRequestApi(v2, 0i64, 7i64, 0x10ui64, (char *)&stru_140CF2E80 + 4688) >= 0 )
  {
    v4 = 0i64;
    memset(&NewTimer, 0i64, sizeof(NewTimer));
    NewTimer.Interrupt.Polarity = InterruptPolarityUnknown;
    NewTimer.InternalData = &v4;
    NewTimer.Header.TableVersion = 1;
    NewTimer.FunctionTable.Initialize = (PLONG)HalpRtcInitialize;
    NewTimer.Header.TableSize = 144;
    NewTimer.FunctionTable.AcknowledgeInterrupt = HalpRtcAcknowledgeInterrupt;
    NewTimer.FunctionTable.ArmTimer = (PLONG)HalpRtcArmTimer;
    NewTimer.FunctionTable.FixedStall = (PULONG64)HalpRtcFixedStall;
    NewTimer.FunctionTable.Stop = HalpRtcStop;
    NewTimer.CounterBitWidth = 64;
    NewTimer.CounterFrequency = 2048i64;
    NewTimer.InternalDataSize = 16;
    NewTimer.Capabilities = 2097456;
    NewTimer.KnownType = TimerCmosRtc;
    NewTimer.Interrupt.LegacyIrq = 8;
    HalpTimerRegister(&NewTimer, 0i64);
  }
}

Referenced by:

HalpTimerRegisterBuiltinPlugins