HalpTimerClockIpiRoutine

char __fastcall HalpTimerClockIpiRoutine(__int64 a1){
  INT64 v1; 
  INT64 CurrentPrcb; 
  _QWORD *v3; 
  KeClockInterruptNotify(*(_KTRAP_FRAME **)(a1 + 136), *(_BYTE *)(*(_QWORD *)(a1 + 136) + 41i64));
  CurrentPrcb = (INT64)KeGetCurrentPrcb();
  if( *(_BYTE *)(CurrentPrcb + 33) && HalpWatchdogTimer )
  {
    CurrentPrcb = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - HalpTimerWatchdogLastReset;
    if( *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - HalpTimerWatchdogLastReset > (unsigned __int64)HalpTimerWatchdogResetCount )
      CurrentPrcb = off_140C008C0[0]();
    if( HalpTimerWatchdogResetCount == -1 )
      CurrentPrcb = HalpTimerWatchdogTriggerSystemReset(0, v1);
  }
  LODWORD(CurrentPrcb) = *((_DWORD *)KeGetPcr() + 105);
  v3 = (_QWORD *)(HalpCounterSetInfo + 24 * CurrentPrcb);
  if( (_QWORD *)*v3 != v3 && *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - v3[2] >= 0x4C4B40ui64 )
  {
    ((void(__fastcall *)(_QWORD, _QWORD))off_140C007D8[0])(0i64, 0i64);
    v3[2] = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart;
  }
  return 1;
}

Referenced by:

No references.