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