KiCreateCpuSetForProcessor

VOID __fastcall KiCreateCpuSetForProcessor(_KPRCB *Prcb){
  unsigned __int8 CurrentIrql; 
  __int64 v3; 
  int v4; 
  __int64 v5; 
  __int64 v6; 
  __int64 v7; 
  _QWORD *v8; 
  if( KiCpuSetAffinities )
  {
    CurrentIrql = KeGetCurrentIrql();
    __writecr8(2ui64);
    v3 = *((unsigned __int8 *)Prcb + 208);
    KxAcquireSpinLock(&KiCpuSetLock);
    RtlWriteAcquireTickLock(&KiCpuSetSequence);
    v4 = *((unsigned __int8 *)Prcb + 209);
    ++*((_BYTE *)KiCpuSetCount + v3);
    v5 = (unsigned int)v3;
    v6 = *((_QWORD *)Prcb + 25);
    ++KiTotalCpuSetCount;
    v7 = (unsigned int)(v4 + ((_DWORD)v3 << 6));
    *(_QWORD *)&KiCpuSetAffinities[8 * v7] = v6;
    *(_QWORD *)&KiCpuSetAffinitiesShadow[8 * v7] = *((_QWORD *)Prcb + 25);
    KiSystemAllowedCpuSets[2 * (unsigned int)v5] |= 1i64 << v4;
    KiNonParkedCpuSets[v5] |= 1i64 << v4;
    v8 = (_QWORD *)((char *)PsInitialSystemProcess + 2376);
    if( (*((_DWORD *)PsInitialSystemProcess + 543) & 0x80u) != 0 )
      v8 = (_QWORD *)*v8;
    v8[v5] |= 1i64 << v4;
    RtlWriteReleaseTickLock(&KiCpuSetSequence);
    KxReleaseSpinLock(&KiCpuSetLock);
    __writecr8(CurrentIrql);
  }
}

Referenced by:

KiAllocateCpuSetData
KiCompleteKernelInit