HalpTimerInitializeSystemWatchdog

INT64 __fastcall HalpTimerInitializeSystemWatchdog(){
  _DWORD *v0; 
  unsigned __int64 v1; 
  bool v2; 
  unsigned __int64 v3; 
  unsigned int v4; 
  unsigned int v5; 
  INT64 result; 
  signed __int32 v7[8]; 
  KINTERRUPT_MODE v8; 
  char(__fastcall *v9)(__int64, __int64, void *, void *); 
  __int64 v10; 
  __int64 v11; 
  char v12; 
  int v13; 
  PKINTERRUPT *v14; 
  __int128 v15; 
  int v16; 
  unsigned __int64 v17; 
  __int64 v18; 
  v0 = HalpWatchdogTimer;
  v18 = 0i64;
  v17 = 0i64;
  HalpTimerGetClockRates((__int64)HalpWatchdogTimer, &v17, &v16);
  v1 = v17;
  if( v17 > 0xB2D05E00 )
    v1 = 3000000000i64;
  v17 = v1;
  HalpTimerWatchdogTimeout = v1;
  v2 = (v0[56] & 0x80000) == 0;
  HalpTimerWatchdogResetCount = v1 >> 2;
  if( v2 )
    goto LABEL_7;
  v14 = (PKINTERRUPT *)&v18;
  v3 = 0i64;
  v13 = 5;
  if( KeActiveProcessors.Count )
    v3 = KeActiveProcessors.Bitmap[0];
  v12 = 15;
  v11 = 0i64;
  v10 = 0i64;
  v4 = v0[22];
  v9 = HalpTimerWatchdogPreResetInterrupt;
  v8 = v0[24];
  v5 = v0[23];
  v15 = v3;
  LODWORD(result) = HalpInterruptConnect(
                      (__int64)&v15,
                      v4,
                      0xF0u,
                      0xFu,
                      v5,
                      v8,
                      (unsigned __int64)HalpTimerWatchdogPreResetInterrupt,
                      0i64,
                      0i64,
                      0xFu,
                      v13,
                      v14);
  if( (int)result >= 0 )
  {
LABEL_7:
    _InterlockedOr(v7, 0);
    off_140C008C8[0] = HalpTimerWatchdogStop;
    off_140C008B8[0] = HalpTimerWatchdogStart;
    off_140C008D0[0] = (__int64(__fastcall *)())HalpTimerWatchdogGeneratedLastReset;
    off_140C008D8[0] = (__int64(__fastcall *)())HalpTimerWatchdogTriggerSystemReset;
    off_140C00968[0] = (__int64(__fastcall *)())HalpTimerWatchdogQueryDueTime;
    _InterlockedOr(v7, 0);
    HalpTimerWatchdogStart();
    _InterlockedOr(v7, 0);
    off_140C008C0[0] = (__int64(__fastcall *)())HalpTimerWatchdogResetCountdown;
    return 0i64;
  }
  return result;
}

Referenced by:

No references.