HalStartDynamicProcessor
NTSTATUS __fastcall HalStartDynamicProcessor(INT8 *a1, UINT64 a2, UINT64 a3, UINT16 a4){
unsigned int v5;
unsigned int v6;
INT64 v8;
INT64 v9;
char v10;
NTSTATUS v11;
NTSTATUS v12;
v5 = a3;
v6 = a2;
if( *(&stru_140CF2E80 + 1859) && (unsigned int)HalpInterruptProcessorsStarted >= *(&stru_140CF2E80 + 1859) )
return 2;
if( (unsigned int)a2 >= (unsigned int)HalpQueryMaximumRegisteredProcessorCount()
|| !*(&CmpDummyThreadEvent + 7160) && !*(&stru_140CF2E80 + 6616) && v6 >= HalpInterruptLogicalFlatLimit )
{
return 2;
}
if( !byte_140C4A108 )
{
MmLockPagableSectionByHandle(qword_140C4A100);
HalpMcUpdateLock(v9, v8);
HalpCheckNumaConfiguration((PVOID)v5);
if( !v10 )
return 2;
}
LOBYTE(v11) = HalpInterruptStartProcessor(v6, v5, 1ui64, (_KPROCESSOR_STATE *)a1);
v12 = v11;
if( v11 != 4 && !byte_140C4A108 )
HalpUpdateNumaConfiguration(v5, a4);
return v12;
}Referenced by:
HalpInterruptReinitialize
KiStartDynamicProcessor