KiIsThreadRankNonZero

UINT8 __stdcall KiIsThreadRankNonZero(_ETHREAD *Thread, _KPRCB *Prcb, _KPRCB *a3){
  int v4; 
  unsigned __int8 CurrentIrql; 
  _KPRCB *CurrentPrcb; 
  _KSCHEDULING_GROUP *volatile SchedulingGroup; 
  _KSCB *v8; 
  int v9; 

  if( Thread->Tcb.Priority >= 16 || !Thread->Tcb.SchedulingGroup )
    return 0;
  v4 = 0;
  if( Prcb )
  {
    CurrentIrql = 2;
    CurrentPrcb = Prcb;
  }
  else
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    CurrentPrcb = KeGetCurrentPrcb();
  }
  SchedulingGroup = Thread->Tcb.SchedulingGroup;
  if( SchedulingGroup )
  {
    v8 = (_KSCB *)((char *)SchedulingGroup + CurrentPrcb->ScbOffset);
    if( v8 )
    {
      if( Prcb )
      {
        KiGetThreadEffectiveRankNonZero(Thread, v8, 0i64, 0, 0i64);
        v4 = v9;
      }
      else
      {
        do
        {
          v4 = (*((unsigned __int8 *)v8 + 112) >> 3) & 1;
          if( v4 )
            break;
          v8 = v8->Parent;
        }
        while( v8 );
      }
    }
  }
  if( CurrentIrql < 2u )
    __writecr8(CurrentIrql);
  return v4 != 0;
}

Referenced by:

KeDelayExecutionThread
KeQueryEffectiveBasePriorityThread
KeQueryEffectivePriorityThread
KeSetActualBasePriorityThread
KeTransitionProcessorParkState
KeUpdateThreadSchedulingProperties
KeYieldExecution
KiApplyForegroundBoostThread
KiCheckForEffectivePriorityChange
KiConfigureSchedulingInformation
KiDeferGroupSchedulingPreemption
KiDeferredReadySingleThread
KiDirectSwitchThread
KiGroupSchedulingGenerationEnd
KiGroupSchedulingQuantumEnd
KiQuantumEnd
KiRemoveBoostThread
KiSchedulerApc
KiSearchForNewThread
KiSearchForNewThreadOnProcessor
KiSelectNextThread
KiSetPriorityThread
KiSwapThread
KiTransitionSchedulingGroupGeneration
KiUpdateGlobalCpuSetConfiguration
KiUpdateThreadPriority