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