MiCreatePfnDatabase

UINT64 __fastcall MiCreatePfnDatabase(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  int v2; 
  __int64 v3; 
  __int64 v4; 
  __int64 *v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  __int64 v8; 
  _QWORD *v9; 
  __int64 v10; 
  _MMPFN *PfnDb; 
  __int64 *v12; 
  UINT64 result; 
  MiInitializeColors();
  v2 = (unsigned __int16)KeNumberNodes;
  v3 = (unsigned __int16)KeNumberNodes * (unsigned int)(unsigned __int8)MiChannelMaximumPowerOf2 * dword_140C4DC3C;
  qword_140C51340 = 0x30000000000i64;
  v4 = (unsigned int)v3;
  dword_140C4DC3C *= (unsigned __int16)KeNumberNodes * (unsigned __int8)MiChannelMaximumPowerOf2;
  v3 *= 5i64;
  qword_140C51348 = 8 * v3 + 0x30000000000i64;
  v5 = &qword_140C51B28;
  v6 = (qword_140C51348 + 8 * v3 + 15) & 0xFFFFFFFFFFFFFFF0ui64;
  v7 = 16 * v4;
  do
  {
    *v5 = v6;
    v6 += v7;
    ++v5;
  }
  while( (__int64)v5 < (__int64)qword_140C51B38 );
  qword_140C51EA8 = 4544i64 * (unsigned __int16)KeNumberNodes + v6;
  qword_140C522D0 = qword_140C51EA8 + 24i64 * (unsigned int)MiGetPartitionLargePageListCount();
  SListHead = (PSLIST_HEADER)((qword_140C522D0 + 16 * v8 * (unsigned int)dword_140C4DCC0[0] + 23) & 0xFFFFFFFFFFFFFFF0ui64);
  qword_140C4DBD8 = (__int64)SListHead + 176 * v8;
  qword_140C4E828 = (qword_140C4DBD8 + 4i64 * v2 * v2 + 7) & 0xFFFFFFFFFFFFFFF8ui64;
  v10 = 144 * v8 + qword_140C4E828;
  PfnDb = MmGetPfnDb();
  MxPfnAllocation = (unsigned __int64)(v10 + 72 * v8 + 4095) >> 12;
  MmPfnDatabase = (__int64)PfnDb;
  v12 = &qword_140C51340;
  do
    *v12++ += (__int64)PfnDb;
  while( (__int64)v12 < (__int64)qword_140C51350 );
  do
    *v9++ += PfnDb;
  while( (__int64)v9 < (__int64)qword_140C51B38 );
  qword_140C51EA8 += (__int64)PfnDb;
  qword_140C522D0 += (__int64)PfnDb;
  SListHead = (PSLIST_HEADER)((char *)SListHead + (_QWORD)PfnDb);
  qword_140C4DBD8 += (__int64)PfnDb;
  qword_140C4E828 += (__int64)PfnDb;
  qword_140C4E830 = (__int64)PfnDb + v10;
  qword_140C50AD0 = (__int64)PfnDb + v6;
  result = MiCreateSparsePfnDatabase(LoaderBlock);
  if( (_DWORD)result )
  {
    MiInitializePartitions(0i64);
    MiInitializePartition((_MI_PARTITION *)&MiSystemPartition, 0);
    MiInitializeNumaGraph(LoaderBlock);
    return 1i64;
  }
  return result;
}

Referenced by:

MiInitNucleus