HalpTimerWatchdogStart

INT64 __fastcall HalpTimerWatchdogStart(){
  void *v0; 
  void *v1; 
  void *v2; 
  void(__fastcall **v3)(_QWORD); 
  INT64 result; 
  __int64 v5; 
  unsigned __int64 v6; 
  v3 = (void(__fastcall **)(_QWORD))HalpWatchdogTimer;
  if( HalpWatchdogTimer )
  {
    if( HalpTimerWatchdogStopCount < 0
      || (result = (unsigned int)(HalpTimerWatchdogStopCount - 1), HalpTimerWatchdogStopCount = result, (int)result < 0) )
    {
      HalpTimerGetInternalData((KDPC *)HalpWatchdogTimer, v0, v1, v2);
      v3[13](v5);
      HalpTimerWatchdogLastReset = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
      result = HalpSetTimer((__int64)v3, 3u, HalpTimerWatchdogTimeout, 1, &v6);
      if( (int)result >= 0 )
      {
        HalpTimerWatchdogArmed = 1;
        HalpTimerWatchdogWakeSetDueTime();
      }
    }
  }
  return result;
}

Referenced by:

HalpTimerInitializeSystemWatchdog