MmInitializeProcessor

__int64 __fastcall MmInitializeProcessor(__int64 a1){
  INT64 v2; 
  _QWORD *v3; 
  void *v4; 
  __int64 v5; 
  __int64 v6; 
  unsigned __int64 v7; 
  if( *(_DWORD *)(a1 + 36) )
    *(_QWORD *)(a1 + 34224) = -1i64;
  v2 = MiReservePtes((INT64)&qword_140C4EC80, 0x40ui64);
  if( v2 )
  {
    *(_QWORD *)(a1 + 33280) = ((v2 << 25) - ((_QWORD)MmGetPteBase() << 25)) >> 16;
    *(_DWORD *)(a1 + 32540) = dword_140C4DC38;
    LODWORD(v3) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
    v4 = v3;
    if( v3 )
    {
      *((_DWORD *)v3 + 3120) = 0;
      *v3 = v3 + 4;
      v3[1] = v3 + 519;
      v3[2] = v3 + 1031;
      *((_DWORD *)v3 + 6) = 512;
      v5 = *(unsigned __int16 *)(*(_QWORD *)(a1 + 192) + 146i64);
      v6 = qword_140C50AD0 + 4544 * v5;
      *(_DWORD *)(a1 + 32532) = *(unsigned __int8 *)(v6 + 4212);
      *(_DWORD *)(a1 + 32536) = *(_DWORD *)(v6 + 4208);
      v7 = __rdtsc();
      if( (unsigned int)MiCreateUltraThreadContext(
                           (INT64)v4 + 12352,
                           ((_DWORD)v5 << byte_140C4DBCC) | (unsigned int)(v7 & (unsigned __int16)((1 << byte_140C4DBCD)
                                                                                                 - 1)),
                           8i64) )
      {
        *(_QWORD *)(a1 + 32760) = v4;
        return 1i64;
      }
      ExFreePoolWithTag(v4, 0);
    }
    MmDeleteProcessor(a1);
  }
  return 0i64;
}

Referenced by:

KeStartAllProcessors
KiStartDynamicProcessor
MiInitNucleus