ExInitializeProcessor

NTSTATUS __stdcall ExInitializeProcessor(_KPRCB *Prcb, UINT8 HotAddProcessor){
  _KNODE *ParentNode; 
  _GENERAL_LOOKASIDE *PoolWithTag; 
  __int64 v7; 

  ParentNode = 0i64;
  PoolWithTag = (_GENERAL_LOOKASIDE *)ExAllocatePoolWithTag(0x200ui64, 0x80ui64, 1128888389i64);
  if( PoolWithTag )
  {
    ExInitializeSystemLookasideList(
      (_DWORD)PoolWithTag,
      512,
      1264,
      1128888389,
      32,
      (__int64)&WheapDeferredInternalLogsEventLock + 2896);
    Prcb->PPLookasideList[8].P = PoolWithTag;
  }
  if( HotAddProcessor )
  {
    v7 = Prcb->ParentNode->Affinity.Reserved[0];
    if( (_UNKNOWN *)KeNodeBlock[v7] != (_UNKNOWN *)((char *)&KiNodeInit + 384 * v7) )
      ParentNode = Prcb->ParentNode;
    if( !_InterlockedCompareExchange64(
            (volatile signed __int64 *)&ParentNode[1].IdleCpuSet,
            (signed __int64)ParentNode,
            0i64) )
      ExQueueWorkItem((PWORK_QUEUE_ITEM)&ParentNode[1], DelayedWorkQueue);
    Prcb->ExSaPageArray = *(void **)(*(&WheapDeferredInternalLogsEventLock + 52) + 8i64 * Prcb->Number);
  }
  return 0;
}

Referenced by:

ExpInitSystemPhase1
KiStartDynamicProcessor