HalpTimerWatchdogPreResetInterrupt

char __fastcall HalpTimerWatchdogPreResetInterrupt(__int64 a1, __int64 a2, void *a3, void *a4){
  __int64 v4; 
  __int64 v5; 
  UINT64 v6; 
  ULONG_PTR v7; 
  ULONG_PTR BugCheckParameter4; 
  ULONG_PTR v9; 
  UINT64 QpcTimeStamp; 
  HalpTimerGetInternalData((KDPC *)HalpWatchdogTimer, HalpWatchdogTimer, a3, a4);
  (*(void(__fastcall **)(__int64))(v4 + 120))(v5);
  if( (unsigned __int64)HalpTimerWatchdogResetCount <= 0xFFFFFFFFFFFFFFFDui64 )
  {
    v7 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - HalpTimerWatchdogLastReset;
    if( *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - HalpTimerWatchdogLastReset < (unsigned __int64)HalpTimerWatchdogResetCount >> 1 )
    {
      BugCheckParameter4 = (unsigned int)KiClockTimerOwner;
      v9 = KeQueryInterruptTimePrecise(&QpcTimeStamp);
      KeBugCheckEx(0x101u, v7, (unsigned __int64)HalpTimerWatchdogResetCount >> 1, v9, BugCheckParameter4);
    }
    HalpTimerWatchdogResetCountdown(v6);
  }
  return 1;
}

Referenced by:

No references.