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