MiCheckWsLimits
INT64 __fastcall MiCheckWsLimits(INT64 a1, UINT64 *a2, UINT64 *a3, CHAR a4, CHAR a5){
UINT64 v5;
unsigned int v6;
unsigned __int64 v7;
__int64 v9;
__int64 v10;
char v11;
INT64 result;
v5 = *a2;
v6 = 0;
v7 = *a3;
if( *a2 > *a3 )
{
if( (a5 & 1) == 0 )
return 3221225548i64;
v7 = *a2;
v6 = 1073741826;
}
if( v7 > 0x7FFFFFFF0i64 )
{
v7 = 0x7FFFFFFF0i64;
v6 = 1073741826;
}
if( v5 > 0x7FFFFFFF0i64 )
{
v5 = 0x7FFFFFFF0i64;
v6 = 1073741826;
}
v9 = 20i64;
if( v5 < 0x14 )
{
v5 = 20i64;
v6 = 1073741826;
if( v7 < 0x14 )
v7 = 20i64;
}
v10 = *(_QWORD *)(a1 + 16);
if( v10 )
v9 = *(_QWORD *)(v10 + 32);
if( v9 + 6 >= v7 )
{
if( (a5 & 1) == 0 )
return 3221225548i64;
v7 = v9 + 7;
v6 = 1073741826;
}
if( (a4 & 4) == 0 )
{
v11 = *(_BYTE *)(a1 + 184);
if( (v11 >= 0 || (a4 & 8) != 0) && (a4 & 1) == 0 && (((a4 & 2) == 0) & ((unsigned __int8)v11 >> 6)) == 0 )
goto LABEL_16;
}
if( v5 + 6 >= v7 )
{
if( (a5 & 1) == 0 )
return 3221225548i64;
v7 = v5 + 7;
v6 = 1073741826;
}
if( (*(_BYTE *)(a1 + 184) & 7u) < 2 || v7 >= 0x1000 )
goto LABEL_16;
if( (a5 & 1) != 0 )
{
v7 = 4096i64;
v6 = 1073741826;
LABEL_16:
*a2 = v5;
result = v6;
*a3 = v7;
return result;
}
return 3221225548i64;
}Referenced by:
MmAdjustWorkingSetSizeEx
MmCreateProcessAddressSpace