MmInitializeProcessor

NTSTATUS __stdcall MmInitializeProcessor(_KPRCB *Prcb){
  _MMPTE *v2; 
  char *Pool; 
  void *v4; 
  __int64 v5; 
  __int64 v6; 
  unsigned __int64 v7; 

  if( Prcb->Number )
    Prcb->PteBitCache = -1i64;
  v2 = MiReservePtes((_MI_SYSTEM_PTE_TYPE *)((char *)&stru_140C4DB30 + 4432), 0x40ui64);
  if( v2 )
  {
    Prcb->HyperPte = (void *)((__int64)(((_QWORD)v2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16);
    Prcb->SecondaryColorMask = *(&stru_140C4DB30 + 66);
    Pool = (char *)MiAllocatePool(64i64, 0x30C8ui64, 0x20206D4Dui64);
    v4 = Pool;
    if( Pool )
    {
      *((_DWORD *)Pool + 3120) = 0;
      *(_QWORD *)Pool = Pool + 32;
      *((_QWORD *)Pool + 1) = Pool + 4152;
      *((_QWORD *)Pool + 2) = Pool + 8248;
      *((_DWORD *)Pool + 6) = 512;
      v5 = Prcb->ParentNode->Affinity.Reserved[0];
      v6 = qword_140C50AD0 + 4544 * v5;
      Prcb->NodeColor = *(unsigned __int8 *)(v6 + 4212);
      Prcb->NodeShiftedColor = *(_DWORD *)(v6 + 4208);
      v7 = __rdtsc();
      if( MiCreateUltraThreadContext(
             (INT64)v4 + 12352,
             ((_DWORD)v5 << *(&stru_140C4DB30 + 156)) | (unsigned int)(v7 & (unsigned __int16)((1 << *(&stru_140C4DB30 + 157))
                                                                                             - 1)),
             8i64) )
      {
        Prcb->MmInternal = v4;
        return 1;
      }
      ExFreePoolWithTag(v4, 0);
    }
    MmDeleteProcessor(Prcb);
  }
  return 0;
}

Referenced by:

KeStartAllProcessors
KiStartDynamicProcessor
MiInitNucleus