KiCheckAndRearmForceIdle

INT64 __stdcall KiCheckAndRearmForceIdle(){
  INT64 result; 
  INT64 v1; 
  EVENT_DESCRIPTOR *v2; 
  __int64 v3; 
  UINT64 SpinCount; 
  INT64 CurrentQpc; 
  CurrentQpc = 0i64;
  if( !KiForceIdleDisabled )
  {
    _disable();
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)&KiForceIdleLock, 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( KiForceIdleLock );
    }
    result = (unsigned int)KiForceIdleState;
    if( (_DWORD)KiForceIdleState == 1 )
    {
      KeRemoveQueueDpcEx((_KDPC *)&KiForceIdleStartDpc, 0);
      KiSetForceIdleState(2i64, v1, v2);
    }
    else if( (_DWORD)KiForceIdleState != 2 )
    {
LABEL_6:
      _InterlockedAnd64(&KiForceIdleLock, 0i64);
      _enable();
      return result;
    }
    LODWORD(v3) = RtlGetInterruptTimePrecise(&CurrentQpc);
    result = 10000000i64 * (unsigned int)KiForceIdleGracePeriodInSec + v3;
    KiForceIdleStartTime = result;
    goto LABEL_6;
  }
  return result;
}

Referenced by:

KiCallInterruptServiceRoutine
KiTimer2Expiration