KiResumeClockTimer

VOID __stdcall KiResumeClockTimer(){
  char v0; 
  _KI_CLOCK_STATE v1; 
  __int64 v2; 
  INT64 v3; 
  INT64 v4; 
  UINT64 RequestedIncrement; 
  UINT64 DeliveredIncrement; 
  INT64 CurrentQpc; 

  DeliveredIncrement = 0i64;
  v0 = 0;
  v1 = KiClockState;
  RequestedIncrement = 0i64;
  if( KeGetCurrentPrcb()->Number == (_DWORD)KiClockTimerOwner )
  {
    v0 = 1;
  }
  else if( !KiClockTimerPerCpu )
  {
    return;
  }
  off_140C00880[0]();
  LOBYTE(v2) = v0;
  ((void(__fastcall *)(__int64))off_140C00878[0])(v2);
  if( v0 )
  {
    ++dword_140C31344;
    KeGetCurrentPrcb()->ClockOwner = 1;
    LODWORD(v3) = RtlGetInterruptTimePrecise(&CurrentQpc);
    v4 = v3;
    KiRestoreClockTickRate(v3, &RequestedIncrement);
    if( v1 == ClockStatePendingPeriodic )
      v1 = _InterlockedExchange((volatile __int32 *)&KiClockState, 0);
    KiEventClockStateChange(ClockStatePeriodic, v1, &DeliveredIncrement, &RequestedIncrement);
    KiClockTimerNextTickTime = v4 + (unsigned int)KeTimeIncrement;
  }
}

Referenced by:

KeResumeClockTimer
KeResumeClockTimerSafe