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