KiResumeClockTimer

INT64 __stdcall KiResumeClockTimer(){
  char v0; 
  int v1; 
  INT64 result; 
  __int64 v3; 
  INT64 v4; 
  INT64 v5; 
  __int64 a2; 
  __int64 v7; 
  INT64 CurrentQpc; 
  v7 = 0i64;
  v0 = 0;
  v1 = KiClockState;
  a2 = 0i64;
  result = (unsigned int)KiClockTimerOwner;
  if( *((_DWORD *)KeGetCurrentPrcb() + 9) == (_DWORD)KiClockTimerOwner )
  {
    v0 = 1;
  }
  else if( !KiClockTimerPerCpu )
  {
    return result;
  }
  off_140C00880[0]();
  LOBYTE(v3) = v0;
  result = ((__int64(__fastcall *)(__int64))off_140C00878[0])(v3);
  if( v0 )
  {
    ++dword_140C31344;
    *((_BYTE *)KeGetCurrentPrcb() + 33) = 1;
    LODWORD(v4) = RtlGetInterruptTimePrecise(&CurrentQpc);
    v5 = v4;
    KiRestoreClockTickRate(v4, &a2);
    if( v1 == 2 )
      _InterlockedExchange(&KiClockState, 0);
    KiEventClockStateChange();
    result = v5 + (unsigned int)KeTimeIncrement;
    KiClockTimerNextTickTime = result;
  }
  return result;
}

Referenced by:

KeResumeClockTimer
KeResumeClockTimerSafe