KiExtendProcessAffinity

VOID __stdcall KiExtendProcessAffinity(_EPROCESS *Process, UINT64 GroupNumber){
  __int64 v2; 
  unsigned __int64 v4; 
  unsigned __int64 v5; 

  v2 = (unsigned __int16)GroupNumber;
  v4 = KeActiveProcessors.Bitmap[(unsigned __int16)GroupNumber];
  v5 = Process->Pcb.Affinity.Bitmap[v2];
  if( v5 )
  {
    Process->Pcb.Affinity.Bitmap[v2] = v4 | v5;
  }
  else
  {
    if( Process->Pcb.Affinity.Count <= (unsigned __int16)v2 )
      Process->Pcb.Affinity.Count = v2 + 1;
    Process->Pcb.Affinity.Bitmap[v2] |= v4;
    KiSetIdealNodeProcessByGroup(&Process->Pcb, 0i64, (unsigned __int16)v2);
    Process->Pcb.ActiveGroupsMask |= 1 << v2;
  }
}

Referenced by:

KeSetAffinityThread
KeStartThread