KiDynamicProcessorInitialization
VOID __fastcall KiDynamicProcessorInitialization(INT64 a1){
__int64 v1;
INT64 v2;
char v3;
UINT64 v4;
INT64 v5;
INT64 v6;
int Context;
int Context_4;
struct _GROUP_AFFINITY Affinity;
struct _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);
Context_4 = KeQueryActiveProcessorCountEx(0xFFFFu);
Context = Context_4;
KeIpiGenericCall((PKIPI_BROADCAST_WORKER)KeOptimizeSpecCtrlSettings, &Context);
__writecr8((unsigned __int8)v2);
KeRevertToUserGroupAffinityThread(&PreviousAffinity);
}Referenced by:
KiStartDynamicProcessor