KiUpdateTotalCyclesCurrentThread

UINT64 __stdcall KiUpdateTotalCyclesCurrentThread(_KPRCB *Prcb, _ETHREAD *Thread, UINT64 *TimeStamp){
  unsigned __int64 v6; 
  UINT64 v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  bool v10; 

  Prcb->NestingLevel = 1;
  v6 = __rdtsc();
  v7 = v6 - Prcb->StartCycles;
  v8 = v7 + Thread->Tcb.CycleTime;
  v9 = v7 + Thread->Tcb.CurrentRunTime;
  Thread->Tcb.CycleTime = v8;
  if( v9 > 0xFFFFFFFF )
    LODWORD(v9) = -1;
  Prcb->StartCycles = v6;
  v10 = (Thread->Tcb.gap0[2] & 0x3E) == 0;
  Thread->Tcb.CurrentRunTime = v9;
  if( !v10 )
    KiEndThreadAccountingPeriod(Prcb, &Thread->Tcb, v7);
  if( TimeStamp )
    *TimeStamp = v6;
  KiStartThreadCycleAccumulation(Prcb, &Thread->Tcb, 0);
  return v8;
}

Referenced by:

KeBoostPriorityThread
KeDelayExecutionThread
KeRemovePriQueue
KeSetActualBasePriorityThread
KeSetBasePriorityThread
KeSetPriorityAndQuantumProcess
KeSetPriorityThread
KeSetThreadChargeOnlySchedulingGroup
KeUpdateTotalCyclesCurrentThread
KeYieldExecution
KiCompleteDirectSwitchThread
KiReduceByEffectiveIdleSmtSet
KiRemoveThreadFromSchedulingGroup
KiStartDebugAccumulation
PspRevertContainerImpersonation