KiRemoveThreadFromReadyQueue

VOID __stdcall KiRemoveThreadFromReadyQueue(_KPRCB *Prcb, _LIST_ENTRY *ThreadEntry, UINT64 QueueIndex){
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 

  if( ((__int64)ThreadEntry[-6].Flink & 0x400000) != 0 )
    _InterlockedAnd((volatile signed __int32 *)ThreadEntry[47].Flink, 0xFFFBFFFF);
  Flink = ThreadEntry->Flink;
  Blink = ThreadEntry->Blink;
  if( ThreadEntry->Flink->Blink != ThreadEntry || Blink->Flink != ThreadEntry )
    __fastfail(3u);
  Blink->Flink = Flink;
  Flink->Blink = Blink;
  if( Blink == Flink )
    Prcb->ReadySummary ^= 1 << QueueIndex;
  --Prcb->ReadyThreadCount;
  Prcb->ReadyQueueExpectedRunTime -= LODWORD(ThreadEntry[84].Blink);
}

Referenced by:

KiFindReadyThread
KiQuantumEnd
KiRemoveThreadFromAnyReadyQueue
KiSelectReadyThread