HalpHvWatchdogDiscover

INT64 __stdcall HalpHvWatchdogDiscover(){
  __int64 v1; 
  TIMER_INITIALIZATION_BLOCK result; 
  __int128 v3; 
  if( !HalpTimerWatchdogPhysicalOnly )
  {
    if( HalpIsMicrosoftCompatibleHvLoaded() )
    {
      if( (HalpEnlightenment & 0x20) == 0 )
      {
        v1 = __cpuid(1073741827, 0);
        v3 = __PAIR64__(EBX(v1), EAX(v1));
        if( (EDX(v1) & 0x400000) != 0 && (v3 & 0x100000000008i64) == 0x100000000008i64 )
        {
          memset((INT64)&result, 0i64);
          result.InternalData = 0i64;
          result.InternalDataSize = 0;
          result.FunctionTable.Initialize = (PTIMER_INITIALIZE)HalpHvWatchdogInitialize;
          result.Header = (SOC_INITIALIZATION_HEADER)0x9000000001i64;
          result.FunctionTable.ArmTimer = (PTIMER_ARM_TIMER)HalpHvWatchdogArm;
          result.FunctionTable.Stop = (PTIMER_STOP)HalpHvWatchdogStop;
          result.CounterBitWidth = 64;
          result.CounterFrequency = 10000000i64;
          result.KnownType = TimerHypervisor;
          result.Capabilities = 163872;
          HalpTimerRegister(&result, 0i64);
        }
      }
    }
  }
  return 0i64;
}

Referenced by:

HalpTimerRegisterBuiltinPlugins