MiAssignTopLevelRanges
UINT64 __stdcall MiAssignTopLevelRanges(UINT64 HINTDelta){
_QWORD *v1;
_QWORD *v2;
__int64 v3;
int i;
__int64 v5;
__int64 v6;
char *v7;
__int64 v8;
__int64 v9;
UINT64 v10;
__int64 v11;
int v12;
int v13;
__int64 v14;
char *v15;
__int64 *v16;
__int64 v17;
unsigned __int64 v18;
UINT64 result;
int *p_Base;
__int64 v21;
__int64 v22;
__int64 v23;
__int64 v24;
int Base;
char v26;
__int64 v27[13];
int v28;
__int64 v29;
int v30;
char v31;
__int64 v32;
WCHAR Dest[2];
unsigned __int64 v34;
int v35;
__int64 v36;
v2 = v1;
memset((INT64)&Base, 0i64);
*v2 = 0i64;
v3 = 0i64;
for( i = 0; i < 4; ++i )
{
v5 = 3 * v3;
v3 = (unsigned int)(v3 + 1);
*(&Base + 2 * v5) = i;
v27[v5] = 0x100000000000i64;
}
v6 = 3 * v3;
*(&Base + 2 * v6) = 4;
v7 = &v26;
v27[v6] = 0x100000000000i64;
v8 = 5i64;
do
{
*(_DWORD *)v7 = ExGenRandom(1i64);
v7 += 24;
--v8;
}
while( v8 );
qsort((WCHAR *)&Base, 5ui64, (const WCHAR *)0x18, MiRegionAssignmentSort);
v28 = 5;
v29 = 0x38000000000i64;
v30 = 6;
v9 = 7i64;
v32 = 0x28000000000i64;
*(_DWORD *)Dest = 7;
v10 = MiHyperSpaceSize();
LODWORD(v11) = 8;
v35 = 8;
v34 = ((v10 + 0x7FFFFFFFFFi64) & 0xFFFFFF8000000000ui64) + 0x8000000000i64;
v12 = 0;
v36 = 0x10000000000i64;
do
{
v11 = (unsigned int)(v11 + 1);
v13 = v12 + 9;
++v12;
v14 = 3 * v11;
*(&Base + 2 * v14) = v13;
v27[v14] = 0x8000000000i64;
}
while( v12 < 4 );
v15 = &v31;
do
{
*(_DWORD *)v15 = ExGenRandom(1i64);
v15 += 24;
--v9;
}
while( v9 );
qsort(Dest, 6ui64, (const WCHAR *)0x18, MiRegionAssignmentSort);
v16 = v27;
v17 = 13i64;
do
{
if( *((_DWORD *)v16 - 4) == 12 )
{
v23 = (_QWORD)MmGetPteBase() << 25;
v24 = 3i64;
result = (((_QWORD)((_QWORD)MmGetPml4eBase() + 8 * ((0x140000000ui64 >> 39) & 0x1FF)) << 25) - v23) >> 16;
do
{
result = (__int64)((result << 25) - v23) >> 16;
--v24;
}
while( v24 );
}
else
{
v18 = (*v16 + 0x7FFFFFFFFFi64) & 0xFFFFFF8000000000ui64;
*v16 = v18;
LODWORD(result) = MiAssignSystemVa(v18 >> 39);
if( !result )
return result;
}
*(v16 - 1) = result;
LODWORD(v9) = v9 + 1;
v16 += 3;
}
while( (unsigned int)v9 < 0xD );
p_Base = &Base;
do
{
v21 = *((_QWORD *)p_Base + 1);
v22 = *p_Base;
p_Base += 6;
v22 *= 2i64;
qword_140C4F808[v22] = v21;
qword_140C4F810[v22] = *((_QWORD *)p_Base - 1);
--v17;
}
while( v17 );
MiAddSubRegionEntropy();
return 1i64;
}Referenced by:
MiInitializeSystemVa