MiCheckWsLimits

NTSTATUS __stdcall MiCheckWsLimits(
        _MMSUPPORT_INSTANCE *WsInfo,
        UINT64 *WorkingSetMinimumInOut,
        UINT64 *WorkingSetMaximumInOut,
        UINT64 AdjustFlags,
        UINT64 VerifyFlags){
  UINT64 v5; 
  NTSTATUS v6; 
  unsigned __int64 v7; 
  __int64 LockedEntries; 
  _MMWSL_INSTANCE *VmWorkingSetList; 
  __int8 bf_0; 
  NTSTATUS result; 

  v5 = *WorkingSetMinimumInOut;
  v6 = 0;
  v7 = *WorkingSetMaximumInOut;
  if( *WorkingSetMinimumInOut > *WorkingSetMaximumInOut )
  {
    if( (VerifyFlags & 1) == 0 )
      return -1073741748;
    v7 = *WorkingSetMinimumInOut;
    v6 = 1073741826;
  }
  if( v7 > 0x7FFFFFFF0i64 )
  {
    v7 = 0x7FFFFFFF0i64;
    v6 = 1073741826;
  }
  if( v5 > 0x7FFFFFFF0i64 )
  {
    v5 = 0x7FFFFFFF0i64;
    v6 = 1073741826;
  }
  LockedEntries = 20i64;
  if( v5 < 0x14 )
  {
    v5 = 20i64;
    v6 = 1073741826;
    if( v7 < 0x14 )
      v7 = 20i64;
  }
  VmWorkingSetList = WsInfo->VmWorkingSetList;
  if( VmWorkingSetList )
    LockedEntries = VmWorkingSetList->LockedEntries;
  if( LockedEntries + 6 >= v7 )
  {
    if( (VerifyFlags & 1) == 0 )
      return -1073741748;
    v7 = LockedEntries + 7;
    v6 = 1073741826;
  }
  if( (AdjustFlags & 4) == 0 )
  {
    bf_0 = WsInfo->Flags._bf_0;
    if( (bf_0 >= 0 || (AdjustFlags & 8) != 0)
      && (AdjustFlags & 1) == 0
      && (((AdjustFlags & 2) == 0) & ((unsigned __int8)bf_0 >> 6)) == 0 )
    {
      goto LABEL_16;
    }
  }
  if( v5 + 6 >= v7 )
  {
    if( (VerifyFlags & 1) == 0 )
      return -1073741748;
    v7 = v5 + 7;
    v6 = 1073741826;
  }
  if( (WsInfo->Flags._bf_0 & 7u) < 2 || v7 >= 0x1000 )
    goto LABEL_16;
  if( (VerifyFlags & 1) != 0 )
  {
    v7 = 4096i64;
    v6 = 1073741826;
LABEL_16:
    *WorkingSetMinimumInOut = v5;
    result = v6;
    *WorkingSetMaximumInOut = v7;
    return result;
  }
  return -1073741748;
}

Referenced by:

MmAdjustWorkingSetSizeEx
MmCreateProcessAddressSpace