KiUpdateThreadCpuSets

_KPRCB *__stdcall KiUpdateThreadCpuSets(_ETHREAD *Thread, _SINGLE_LIST_ENTRY *ReadyList){
  __int32 bf_0; 
  _KPRCB *v3; 
  UINT8 v6; 
  UINT8 v7; 
  int v8; 
  int v9; 
  _KPRCB *v10; 
  _KPRCB *Prcb; 
  _KSHARED_READY_QUEUE *SharedReadyQueue; 

  bf_0 = Thread->Tcb._bf_0;
  v3 = 0i64;
  SharedReadyQueue = 0i64;
  Prcb = 0i64;
  if( (bf_0 & 8) == 0 )
  {
    KiAcquireThreadStateLock(Thread, &Prcb, &SharedReadyQueue);
    v7 = v6;
    KiComputeThreadAffinity(&Thread->Tcb);
    KiRescheduleThreadAfterAffinityChange(Thread, &Thread->Tcb.Affinity, v7, Prcb, SharedReadyQueue, ReadyList);
    v9 = v8;
    KiReleaseThreadStateLock(v10, (_KSHARED_READY_QUEUE *)Prcb);
    return(_KPRCB *)((unsigned __int64)Prcb & -(__int64)(v9 != 0));
  }
  return v3;
}

Referenced by:

KeSetSelectedCpuSetsThread
KiUpdateThreadCpuSetAffinitiesFromDpcLevel