KiSelectThreadFromSchedulingGroup

_ETHREAD *__fastcall KiSelectThreadFromSchedulingGroup(_KPRCB *Prcb, _KSCB *a2, INT64 a3){
  _ETHREAD *p_Blink; 
  int v4; 
  unsigned int v5; 
  UINT64 v6; 

  p_Blink = 0i64;
  v4 = a2->ReadySummary >> a3;
  if( v4 )
  {
    _BitScanReverse(&v5, v4);
    v6 = (unsigned int)a3 + v5;
    p_Blink = (_ETHREAD *)&a2->ReadyListHead[(unsigned int)v6].Flink[-14].Blink;
    KiRemoveThreadFromScbQueue(Prcb, a2, p_Blink, v6);
  }
  return p_Blink;
}

Referenced by:

KiChooseLowestRankedThread
KiSearchForNewThread
KiSelectLowestRankedThread
KiSelectThreadFromScbQueue
KiSwapThread