MiMarkLargePageRanges
VOID __stdcall MiMarkLargePageRanges(){
unsigned int v0;
_MMPFN *PfnDb;
__int64 v2;
__int64 v3;
unsigned __int64 v4;
unsigned __int64 v5;
__int64 v6;
UINT64 v7;
unsigned __int64 v8;
unsigned __int64 v9;
UINT64 v10;
unsigned __int64 v11;
UINT64 BitsMustBeChanged;
MiMarkLargePageMappings();
v0 = *(_DWORD *)MmPhysicalMemoryBlock;
if( *(_DWORD *)MmPhysicalMemoryBlock )
{
PfnDb = MmGetPfnDb();
v2 = 16i64 * v0;
do
{
v2 -= 16i64;
--v0;
v3 = *(_QWORD *)&MmPhysicalMemoryBlock[v2 + 16];
v4 = (v3 + *(_QWORD *)&MmPhysicalMemoryBlock[v2 + 24]) & 0xFFFFFFFFFFFFFE00ui64;
v5 = (v3 + 511) & 0xFFFFFFFFFFFFFE00ui64;
if( v5 )
{
if( v5 < v4 )
{
v6 = -1i64;
v7 = 0i64;
v8 = (unsigned __int64)PfnDb + 48 * v5;
v9 = v8 + 48 * (v4 - v5);
if( v8 < v9 )
{
do
{
if( (*(_QWORD *)(v8 + 24) & 0x3FFFFFFFFFFFFFFFi64) != 0
&& (*(_BYTE *)(v8 + 34) & 7) == 6
&& (*(_QWORD *)(v8 + 40) & 0xFFFFFFFFFi64) == 0xFFFFFFFFDi64 )
{
if( !v7 )
v6 = (__int64)(v8 - (_QWORD)PfnDb) / 48;
++v7;
}
else
{
if( v7 >= 0x200 )
{
v7 &= 0xFFFFFFFFFFFFFE00ui64;
LODWORD(BitsMustBeChanged) = 1;
MiUpdateLargePageBitMap((UINT64)&MiSystemPartition, v6, v7, 1ui64, BitsMustBeChanged);
PfnDb = MmGetPfnDb();
}
if( !v7 )
v6 = (__int64)(v8 - (_QWORD)PfnDb) / 48;
v10 = v7 + 512;
v7 = 0i64;
v11 = (v6 + v10) & 0xFFFFFFFFFFFFFE00ui64;
if( !v11 )
goto LABEL_16;
v8 = (unsigned __int64)PfnDb + 48 * v11 - 48;
}
v8 += 48i64;
}
while( v8 < v9 );
if( v7 >= 0x200 )
{
LODWORD(BitsMustBeChanged) = 1;
MiUpdateLargePageBitMap(
(UINT64)&MiSystemPartition,
v6,
v7 & 0xFFFFFFFFFFFFFE00ui64,
1ui64,
BitsMustBeChanged);
}
}
}
}
LABEL_16:
PfnDb = MmGetPfnDb();
}
while( v0 );
}
}Referenced by:
MiInitNucleus