HalpHvWatchdogDiscover

NTSTATUS __stdcall HalpHvWatchdogDiscover(){
  __int64 v1; 
  _TIMER_INITIALIZATION_BLOCK NewTimer; 
  __int128 v3; 

  if( !byte_140C4A329 )
  {
    if( HalpIsMicrosoftCompatibleHvLoaded() )
    {
      if( (qword_140C4A120 & 0x20) == 0 )
      {
        v1 = __cpuid(1073741827, 0);
        v3 = __PAIR64__(EBX(v1), EAX(v1));
        if( (EDX(v1) & 0x400000) != 0 && (v3 & 0x100000000008i64) == 0x100000000008i64 )
        {
          memset(&NewTimer, 0i64, sizeof(NewTimer));
          NewTimer.InternalData = 0i64;
          NewTimer.InternalDataSize = 0;
          NewTimer.FunctionTable.Initialize = (PLONG)HalpHvWatchdogInitialize;
          NewTimer.Header.TableVersion = 1;
          NewTimer.FunctionTable.ArmTimer = (PLONG)HalpHvWatchdogArm;
          NewTimer.FunctionTable.Stop = HalpHvWatchdogStop;
          NewTimer.Header.TableSize = 144;
          NewTimer.CounterBitWidth = 64;
          NewTimer.CounterFrequency = 10000000i64;
          NewTimer.KnownType = TimerHypervisor;
          NewTimer.Capabilities = 163872;
          HalpTimerRegister(&NewTimer, 0i64);
        }
      }
    }
  }
  return 0;
}

Referenced by:

HalpTimerRegisterBuiltinPlugins