KiDynamicProcessorInitialization
VOID __stdcall KiDynamicProcessorInitialization(INT64 a1){
__int64 v1;
INT64 v2;
char v3;
UINT64 v4;
INT64 v5;
INT64 v6;
ULONG_PTR Context;
ULONG_PTR ActiveProcessorCount;
_GROUP_AFFINITY Affinity;
_GROUP_AFFINITY PreviousAffinity;
v1 = *(unsigned int *)(a1 + 36);
v2 = a1;
Affinity = 0i64;
v3 = KiProcessorIndexToNumberMappingTable[v1] & 0x3F;
Affinity.Group = (unsigned int)KiProcessorIndexToNumberMappingTable[v1] >> 6;
*(_DWORD *)Affinity.Reserved = 0;
Affinity.Reserved[2] = 0;
Affinity.Mask = 1i64 << v3;
PreviousAffinity = 0i64;
KeSetSystemGroupAffinityThread(&Affinity, &PreviousAffinity);
KeWriteProtectProcessorState(v2 - 384, v4, v5, v6);
LOBYTE(v2) = KeGetCurrentIrql();
__writecr8(0xCui64);
ActiveProcessorCount = KeQueryActiveProcessorCountEx(0xFFFFu);
Context = ActiveProcessorCount;
KeIpiGenericCall((PKIPI_BROADCAST_WORKER)KeOptimizeSpecCtrlSettings, (ULONG_PTR)&Context);
__writecr8((unsigned __int8)v2);
KeRevertToUserGroupAffinityThread(&PreviousAffinity);
}Referenced by:
KiStartDynamicProcessor