MiQueryMemoryListInformation
unsigned __int64 __fastcall MiQueryMemoryListInformation(_QWORD *a1, unsigned __int64 *a2){
unsigned int *v2;
unsigned __int64 v3;
unsigned __int64 *v4;
__int64 v5;
unsigned __int64 v6;
unsigned __int64 *v7;
unsigned __int64 v8;
unsigned __int64 v9;
unsigned __int64 v10;
unsigned __int64 v11;
unsigned __int64 v12;
unsigned __int64 v13;
unsigned __int64 v14;
unsigned __int64 v15;
unsigned __int64 v16;
unsigned __int64 v17;
unsigned __int64 v18;
unsigned __int64 v19;
unsigned __int64 v20;
__int64 v21;
unsigned __int64 *v22;
unsigned __int64 result;
v2 = (unsigned int *)(a1 + 535);
v3 = a1[866];
v4 = a2 + 13;
*a2 = a1[280];
v5 = 8i64;
a2[1] = a1[288];
a2[2] = a1[936];
a2[3] = a1[944];
a2[4] = a1[512];
v6 = a1[950];
v7 = a1 + 304;
a2[21] = v6;
do
{
v8 = *v7;
v7 += 5;
*(v4 - 8) = v8;
v9 = *v2++;
*v4++ = v9;
--v5;
}
while( v5 );
v10 = a2[1];
v11 = a2[2];
v12 = a2[3];
v13 = a2[4];
if( *a2 > v3 )
{
*a2 = v3;
v14 = 0i64;
}
else
{
v14 = v3 - *a2;
}
if( v10 > v14 )
{
a2[1] = v14;
v15 = 0i64;
}
else
{
v15 = v14 - v10;
}
v16 = v15;
if( v11 > v15 )
{
a2[2] = v15;
v17 = 0i64;
}
else
{
v17 = v15 - v11;
v16 = v11;
}
if( v12 > v17 )
{
a2[3] = v17;
v18 = 0i64;
}
else
{
v18 = v17 - v12;
}
if( v13 > v18 )
{
a2[4] = v18;
v19 = 0i64;
}
else
{
v19 = v18 - v13;
}
v20 = a2[21];
if( v20 >= v16 )
v20 = v16;
v21 = 8i64;
a2[21] = v20;
v22 = a2 + 5;
do
{
result = *v22;
if( *v22 > v19 )
{
*v22 = v19;
v19 = 0i64;
}
else
{
v19 -= result;
}
++v22;
--v21;
}
while( v21 );
return result;
}Referenced by:
MmManagePartitionMemoryInformation