MiAddPageToHeatRanges
NTSTATUS __stdcall MiAddPageToHeatRanges(INT64 a1, INT64 a2, INT64 a3){
__int64 v3;
NTSTATUS v4;
int v5;
__int64 *v7;
unsigned __int64 v8;
__int64 v9;
INT64 v11;
__int64 v12;
v3 = *(unsigned int *)(a1 + 4);
v4 = 0;
v5 = a3;
if( (_DWORD)v3 )
v7 = (__int64 *)(a1 + 8 * ((unsigned int)(v3 - 1) + 2i64));
else
v7 = 0i64;
if( (_DWORD)a3 == 3 )
{
if( v7 )
{
v8 = *v7;
if( (*v7 & 0xC00) == 0 && (*v7 & 0x3FF) != 1023 )
{
v9 = (*v7 & 0x3FF) + 1;
if( a2 == v9 + (v8 >> 12) )
{
*v7 = v8 ^ (v9 ^ v8) & 0x3FF;
return 0;
}
if( a2 == (v8 >> 12) - 1 )
{
*v7 = v9 & 0x3FF | (a2 << 12);
return 0;
}
}
}
}
v11 = a2 << 12;
*(_QWORD *)(a1 + 8 * v3 + 16) = v11;
if( v5 != 3 )
{
if( v5 == 2 )
{
v12 = v11 | 0xF;
}
else if( v5 == 1 )
{
v12 = v11 | 0x400;
}
else
{
v12 = v11 | 0x800;
}
*(_QWORD *)(a1 + 8 * v3 + 16) = v12;
}
LOBYTE(v4) = ++*(_DWORD *)(a1 + 4) == *(_DWORD *)(a1 + 8);
return v4;
}Referenced by:
MiAddPageToHeatList