KiConfigureCpuSetSchedulingInformation

__int64 __fastcall KiConfigureCpuSetSchedulingInformation(__int64 a1){
  unsigned __int8 CurrentIrql; 
  unsigned __int64 *v3; 
  _BYTE *v4; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  __int64 result; 
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  KxAcquireSpinLock(&KiCpuSetLock);
  RtlWriteAcquireTickLock(&KiCpuSetSequence);
  v3 = (unsigned __int64 *)(a1 + 33904);
  v4 = (_BYTE *)(KiCpuSetData
               + 16 * (*(unsigned __int8 *)(a1 + 209) + ((unsigned __int64)*(unsigned __int8 *)(a1 + 208) << 6)));
  *v4 = *(_BYTE *)(a1 + 208);
  v4[1] = *(_BYTE *)(a1 + 209);
  _BitScanForward64(&v5, *(_QWORD *)(a1 + 33880));
  v4[2] = v5;
  v6 = 0i64;
  v7 = 5i64;
  do
  {
    v8 = *v3++;
    if( !v8 )
      v8 = v6;
    v6 = v8;
    --v7;
  }
  while( v7 );
  if( v8 )
  {
    _BitScanForward64(&v8, v8);
    v4[3] = v8;
  }
  _BitScanForward64(&v9, *(_QWORD *)(*(_QWORD *)(a1 + 192) + 136i64));
  v4[4] = v9;
  v4[5] = *(_BYTE *)(a1 + 33208);
  v4[6] = *(_BYTE *)(a1 + 33209);
  ++KiCpuSetSequence;
  KxReleaseSpinLock(&KiCpuSetLock);
  result = CurrentIrql;
  __writecr8(CurrentIrql);
  return result;
}

Referenced by:

KeConfigureHeteroProcessors
KiConfigureSchedulingInformation