KeUpdateThreadSchedulingProperties

VOID __stdcall KeUpdateThreadSchedulingProperties(_ETHREAD *Thread, UINT8 ThreadState, _KPRCB *Prcb){
  _KPRCB *v5; 
  char v6; 
  char Priority; 
  UINT8 IsThreadRankNonZero; 
  INT64 v9; 

  KiUpdateSharedReadyQueueAffinityThread(0i64, &Thread->Tcb);
  if( v6 == 2 && !Prcb->NextThread || v6 == 3 )
  {
    if( (Thread->Tcb.gap0[2] & 4) == 0
      || (IsThreadRankNonZero = KiIsThreadRankNonZero(&Thread->Tcb, Prcb, v5), Priority = 1, !IsThreadRankNonZero) )
    {
      Priority = Thread->Tcb.Priority;
    }
    *Prcb->PriorityState = Priority;
    if( Prcb->SchedulerAssist )
    {
      v9 = (unsigned int)KiVpThreadSystemWorkPriority;
      if( Thread != Prcb->IdleThread )
        v9 = (unsigned int)Priority;
      KiSetSchedulerAssistPriority((INT32 *)Prcb->SchedulerAssist, v9, 0);
    }
  }
}

Referenced by:

KiRemoveThreadFromSchedulingGroup
KiSetThreadSchedulingGroup