; LLVM IR from ERGO-Code/HiGHS :: src/simplex/HEkkDualRHS.ll (ZN11HEkkDualRHS17chooseMultiGlobalEPiS0_i)

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector.71" = type { %"struct.std::_Vector_base.72" }
%"struct.std::_Vector_base.72" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type <{ double, i32, [4 x i8] }>
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.HEkkDualRHS = type { ptr, double, i32, %"class.std::vector", %"class.std::vector.0", %"class.std::vector.5", i32, i32, i32, i32, i32, %"class.std::vector.0", ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.5" = type { %"struct.std::_Vector_base.6" }
%"struct.std::_Vector_base.6" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.0" = type { %"struct.std::_Vector_base.1" }
%"struct.std::_Vector_base.1" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HEkk = type { ptr, ptr, ptr, %class.HighsSimplexAnalysis, %class.HighsLp, %"class.std::__cxx11::basic_string", %struct.HighsSimplexStatus, [3 x i8], %struct.HighsSimplexInfo, i32, %struct.SimplexBasis, %class.HighsHashTable, %class.HighsRandom, %"class.std::vector.5", %"class.std::vector.5", i8, %class.HighsSparseMatrix, %class.HighsSparseMatrix, %class.HSimplexNla, %struct.HotStart, double, double, double, i32, i32, i32, i32, i8, i8, i32, i32, i32, %"class.std::vector.0", %"class.std::vector.5", %struct.HighsRayRecord, %struct.HighsRayRecord, i32, i32, i32, double, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", double, double, double, i32, i32, i8, i32, i8, i8, i8, i8, double, %"class.std::vector.66", %"class.std::vector.5", %struct.HighsSimplexStats }
%class.HighsSimplexAnalysis = type { ptr, %"class.std::vector.10", %"class.std::vector.10", ptr, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %struct.HighsLogOptions, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, double, double, i32, double, double, i32, double, double, double, double, double, double, double, double, double, double, i32, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x i8], %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, i32, i32, i32, i32, double, double, i32, i32, i32, i32, i32, double, double, i32, double, double, i32, i32, double, double, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.15", %"class.std::unique_ptr", i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, double, i32, i32, double, double, double, i8, double, double, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, double, double, i32, i32, [10 x %"struct.HighsSimplexAnalysis::AnIterOpRec"], i32, i32, [22 x %"struct.HighsSimplexAnalysis::AnIterTraceRec"], [12 x i32], [3 x i32], [4 x i8], %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution, %struct.HighsValueDistribution }
%"class.std::vector.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = type { %"struct.std::_Vector_base<HighsTimerClock, std::allocator<HighsTimerClock>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsTimerClock, std::allocator<HighsTimerClock>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsTimerClock, std::allocator<HighsTimerClock>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsTimerClock, std::allocator<HighsTimerClock>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsLogOptions = type <{ ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::function", ptr, i8, [7 x i8] }>
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<TranStageAnalysis, std::allocator<TranStageAnalysis>>::_Vector_impl" }
%"struct.std::_Vector_base<TranStageAnalysis, std::allocator<TranStageAnalysis>>::_Vector_impl" = type { %"struct.std::_Vector_base<TranStageAnalysis, std::allocator<TranStageAnalysis>>::_Vector_impl_data" }
%"struct.std::_Vector_base<TranStageAnalysis, std::allocator<TranStageAnalysis>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.21" }
%"struct.std::_Head_base.21" = type { ptr }
%"struct.HighsSimplexAnalysis::AnIterOpRec" = type { double, double, i32, i32, i32, i32, double, i32, %"class.std::__cxx11::basic_string", %struct.HighsValueDistribution }
%"struct.HighsSimplexAnalysis::AnIterTraceRec" = type { double, double, [10 x double], double, i32, i32, i32 }
%struct.HighsValueDistribution = type <{ %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, i32, [4 x i8], double, double, %"class.std::vector.5", %"class.std::vector.0", i32, [4 x i8] }>
%class.HighsLp = type { i32, i32, %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %class.HighsSparseMatrix, i32, double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.22", %"class.std::vector.22", %"class.std::vector.27", %struct.HighsNameHash, %struct.HighsNameHash, i32, i32, %struct.HighsScale, i8, i8, i32, i8, %struct.HighsLpMods }
%"class.std::vector.22" = type { %"struct.std::_Vector_base.23" }
%"struct.std::_Vector_base.23" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = type { %"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsVarType, std::allocator<HighsVarType>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsNameHash = type { %"class.std::unordered_map" }
%"class.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%struct.HighsScale = type { i32, i8, i32, i32, double, %"class.std::vector.5", %"class.std::vector.5" }
%struct.HighsLpMods = type { %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.27", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%struct.HighsSimplexStatus = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
%struct.HighsSimplexInfo = type <{ %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", i32, i32, i8, i8, [6 x i8], %struct.SimplexBasis, i32, i32, i32, [4 x i8], %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.5", i32, i32, i32, i32, double, double, double, double, i32, i32, double, double, double, double, double, double, double, double, double, double, i8, [7 x i8], double, double, i32, [4 x i8], double, double, double, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, [4 x i8], double, double, i32, [4 x i8], double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, i32, [4 x i8] }>
%struct.SimplexBasis = type { %"class.std::vector.0", %"class.std::vector.37", %"class.std::vector.37", i64, i32, i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector.37" = type { %"struct.std::_Vector_base.38" }
%"struct.std::_Vector_base.38" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl" = type { %"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<signed char, std::allocator<signed char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsHashTable = type { %"class.std::unique_ptr.42", %"class.std::unique_ptr.50", i64, i64, i64 }
%"class.std::unique_ptr.42" = type { %"struct.std::__uniq_ptr_data.43" }
%"struct.std::__uniq_ptr_data.43" = type { %"class.std::__uniq_ptr_impl.44" }
%"class.std::__uniq_ptr_impl.44" = type { %"class.std::tuple.45" }
%"class.std::tuple.45" = type { %"struct.std::_Tuple_impl.46" }
%"struct.std::_Tuple_impl.46" = type { %"struct.std::_Head_base.49" }
%"struct.std::_Head_base.49" = type { ptr }
%"class.std::unique_ptr.50" = type { %"struct.std::__uniq_ptr_data.51" }
%"struct.std::__uniq_ptr_data.51" = type { %"class.std::__uniq_ptr_impl.52" }
%"class.std::__uniq_ptr_impl.52" = type { %"class.std::tuple.53" }
%"class.std::tuple.53" = type { %"struct.std::_Tuple_impl.54" }
%"struct.std::_Tuple_impl.54" = type { %"struct.std::_Head_base.57" }
%"struct.std::_Head_base.57" = type { ptr }
%class.HighsRandom = type { i64 }
%class.HighsSparseMatrix = type { i32, i32, i32, %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5" }
%class.HSimplexNla = type { ptr, ptr, ptr, ptr, ptr, ptr, %class.HFactor, i8, double, %struct.ProductFormUpdate, %struct.SimplexIterate }
%class.HFactor = type { double, double, i32, %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %struct.RefactorInfo, i32, i32, i32, i32, i32, i32, i32, double, i8, ptr, ptr, ptr, ptr, double, double, i32, double, %"class.std::unique_ptr.58", %struct.HighsLogOptions, i8, i8, i32, i32, ptr, i32, %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", i32, i32, %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %class.HVectorBase }
%struct.RefactorInfo = type { i8, %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.37", double }
%"class.std::unique_ptr.58" = type { %"struct.std::__uniq_ptr_data.59" }
%"struct.std::__uniq_ptr_data.59" = type { %"class.std::__uniq_ptr_impl.60" }
%"class.std::__uniq_ptr_impl.60" = type { %"class.std::tuple.61" }
%"class.std::tuple.61" = type { %"struct.std::_Tuple_impl.62" }
%"struct.std::_Tuple_impl.62" = type { %"struct.std::_Head_base.65" }
%"struct.std::_Head_base.65" = type { ptr }
%class.HVectorBase = type { i32, i32, %"class.std::vector.0", %"class.std::vector.5", double, %"class.std::vector", %"class.std::vector.0", ptr, i8, i32, %"class.std::vector.0", %"class.std::vector.5" }
%struct.ProductFormUpdate = type { i8, i32, i32, %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5" }
%struct.SimplexIterate = type { i8, %struct.SimplexBasis, %struct.InvertibleRepresentation, %"class.std::vector.5" }
%struct.InvertibleRepresentation = type { %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.0", %"class.std::vector.5", %"class.std::vector.0", %"class.std::vector.5" }
%struct.HotStart = type { i8, %struct.RefactorInfo, %"class.std::vector.37" }
%struct.HighsRayRecord = type { i32, i32, %"class.std::vector.5" }
%"class.std::vector.66" = type { %"struct.std::_Vector_base.67" }
%"struct.std::_Vector_base.67" = type { %"struct.std::_Vector_base<HighsSimplexBadBasisChangeRecord, std::allocator<HighsSimplexBadBasisChangeRecord>>::_Vector_impl" }
%"struct.std::_Vector_base<HighsSimplexBadBasisChangeRecord, std::allocator<HighsSimplexBadBasisChangeRecord>>::_Vector_impl" = type { %"struct.std::_Vector_base<HighsSimplexBadBasisChangeRecord, std::allocator<HighsSimplexBadBasisChangeRecord>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HighsSimplexBadBasisChangeRecord, std::allocator<HighsSimplexBadBasisChangeRecord>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%struct.HighsSimplexStats = type { i8, i32, i32, i32, i32, double, double, double, double }

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @_ZN20HighsSimplexAnalysis17simplexTimerStartEii(ptr noundef nonnull align 8 dereferenceable(8576), i32 noundef, i32 noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11HighsRandom7integerEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

declare void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576), i32 noundef, i32 noundef) #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11HEkkDualRHS17chooseMultiGlobalEPiS0_i(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr noundef %1, ptr noundef %2, i32 noundef %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"class.std::vector.71", align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca double, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca %"struct.std::pair", align 8
  %26 = alloca double, align 8
  %27 = alloca { double, i32 }, align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca i32, align 4
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca %"struct.std::pair", align 8
  %40 = alloca double, align 8
  %41 = alloca { double, i32 }, align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %46 = alloca i32, align 4
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  store i32 %3, ptr %8, align 4, !tbaa !9
  %47 = load ptr, ptr %5, align 8
  %48 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 12
  %49 = load ptr, ptr %48, align 8, !tbaa !11
  call void @_ZN20HighsSimplexAnalysis17simplexTimerStartEii(ptr noundef nonnull align 8 dereferenceable(8576) %49, i32 noundef 38, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 4, ptr %9) #6
  store i32 0, ptr %9, align 4, !tbaa !9
  br label %50

50:                                               ; preds = %60, %4
  %51 = load i32, ptr %9, align 4, !tbaa !9
  %52 = load i32, ptr %8, align 4, !tbaa !9
  %53 = icmp slt i32 %51, %52
  br i1 %53, label %55, label %54

54:                                               ; preds = %50
  call void @llvm.lifetime.end.p0(i64 4, ptr %9) #6
  br label %63

55:                                               ; preds = %50
  %56 = load ptr, ptr %6, align 8, !tbaa !5
  %57 = load i32, ptr %9, align 4, !tbaa !9
  %58 = sext i32 %57 to i64
  %59 = getelementptr inbounds i32, ptr %56, i64 %58
  store i32 -1, ptr %59, align 4, !tbaa !9
  br label %60

60:                                               ; preds = %55
  %61 = load i32, ptr %9, align 4, !tbaa !9
  %62 = add nsw i32 %61, 1
  store i32 %62, ptr %9, align 4, !tbaa !9
  br label %50, !llvm.loop !26

63:                                               ; preds = %54
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #6
  %64 = load i32, ptr %8, align 4, !tbaa !9
  %65 = mul nsw i32 %64, 2
  store i32 %65, ptr %10, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %11) #6
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %66 = load i32, ptr %10, align 4, !tbaa !9
  %67 = zext i32 %66 to i64
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %67)
          to label %68 unwind label %89

68:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %69 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 0
  %70 = load ptr, ptr %69, align 8, !tbaa !28
  %71 = getelementptr inbounds %class.HEkk, ptr %70, i32 0, i32 13
  store ptr %71, ptr %14, align 8, !tbaa !5
  %72 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 2
  %73 = load i32, ptr %72, align 8, !tbaa !29
  %74 = icmp slt i32 %73, 0
  br i1 %74, label %75, label %192

75:                                               ; preds = %68
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  %76 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 2
  %77 = load i32, ptr %76, align 8, !tbaa !29
  %78 = sub nsw i32 0, %77
  store i32 %78, ptr %15, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %79 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 0
  %80 = load ptr, ptr %79, align 8, !tbaa !28
  %81 = getelementptr inbounds %class.HEkk, ptr %80, i32 0, i32 12
  %82 = load i32, ptr %15, align 4, !tbaa !9
  %83 = invoke noundef i32 @_ZN11HighsRandom7integerEi(ptr noundef nonnull align 8 dereferenceable(8) %81, i32 noundef %82)
          to label %84 unwind label %93

84:                                               ; preds = %75
  store i32 %83, ptr %16, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #6
  store double 0.000000e+00, ptr %17, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #6
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %85

85:                                               ; preds = %187, %84
  %86 = load i32, ptr %18, align 4, !tbaa !9
  %87 = icmp slt i32 %86, 2
  br i1 %87, label %97, label %88

88:                                               ; preds = %85
  store i32 5, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  br label %190

89:                                               ; preds = %63
  %90 = landingpad { ptr, i32 }
          cleanup
  %91 = extractvalue { ptr, i32 } %90, 0
  store ptr %91, ptr %12, align 8
  %92 = extractvalue { ptr, i32 } %90, 1
  store i32 %92, ptr %13, align 4
  br label %365

93:                                               ; preds = %75
  %94 = landingpad { ptr, i32 }
          cleanup
  %95 = extractvalue { ptr, i32 } %94, 0
  store ptr %95, ptr %12, align 8
  %96 = extractvalue { ptr, i32 } %94, 1
  store i32 %96, ptr %13, align 4
  br label %191

97:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #6
  %98 = load i32, ptr %18, align 4, !tbaa !9
  %99 = icmp eq i32 %98, 0
  br i1 %99, label %100, label %102

100:                                              ; preds = %97
  %101 = load i32, ptr %16, align 4, !tbaa !9
  br label %103

102:                                              ; preds = %97
  br label %103

103:                                              ; preds = %102, %100
  %104 = phi i32 [ %101, %100 ], [ 0, %102 ]
  store i32 %104, ptr %20, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #6
  %105 = load i32, ptr %18, align 4, !tbaa !9
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %109

107:                                              ; preds = %103
  %108 = load i32, ptr %15, align 4, !tbaa !9
  br label %111

109:                                              ; preds = %103
  %110 = load i32, ptr %16, align 4, !tbaa !9
  br label %111

111:                                              ; preds = %109, %107
  %112 = phi i32 [ %108, %107 ], [ %110, %109 ]
  store i32 %112, ptr %21, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #6
  %113 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %113, ptr %22, align 4, !tbaa !9
  br label %114

114:                                              ; preds = %183, %111
  %115 = load i32, ptr %22, align 4, !tbaa !9
  %116 = load i32, ptr %21, align 4, !tbaa !9
  %117 = icmp slt i32 %115, %116
  br i1 %117, label %119, label %118

118:                                              ; preds = %114
  store i32 8, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  br label %186

119:                                              ; preds = %114
  %120 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 5
  %121 = load i32, ptr %22, align 4, !tbaa !9
  %122 = sext i32 %121 to i64
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %120, i64 noundef %122) #6
  %124 = load double, ptr %123, align 8, !tbaa !30
  %125 = fcmp ogt double %124, 1.000000e-50
  br i1 %125, label %126, label %182

126:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #6
  %127 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 5
  %128 = load i32, ptr %22, align 4, !tbaa !9
  %129 = sext i32 %128 to i64
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %127, i64 noundef %129) #6
  %131 = load double, ptr %130, align 8, !tbaa !30
  store double %131, ptr %23, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #6
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  %133 = load i32, ptr %22, align 4, !tbaa !9
  %134 = sext i32 %133 to i64
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %132, i64 noundef %134) #6
  %136 = load double, ptr %135, align 8, !tbaa !30
  store double %136, ptr %24, align 8, !tbaa !30
  %137 = load double, ptr %17, align 8, !tbaa !30
  %138 = load double, ptr %24, align 8, !tbaa !30
  %139 = fmul double %137, %138
  %140 = load double, ptr %23, align 8, !tbaa !30
  %141 = fcmp olt double %139, %140
  br i1 %141, label %142, label %180

142:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #6
  %143 = load double, ptr %23, align 8, !tbaa !30
  %144 = fneg double %143
  %145 = load double, ptr %24, align 8, !tbaa !30
  %146 = fdiv double %144, %145
  store double %146, ptr %26, align 8, !tbaa !30
  %147 = invoke { double, i32 } @_ZSt9make_pairIdRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %148 unwind label %171

148:                                              ; preds = %142
  store { double, i32 } %147, ptr %27, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %25, ptr align 8 %27, i64 12, i1 false)
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(12) %25)
          to label %149 unwind label %171

149:                                              ; preds = %148
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  %150 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %151 = load i32, ptr %10, align 4, !tbaa !9
  %152 = zext i32 %151 to i64
  %153 = icmp uge i64 %150, %152
  br i1 %153, label %154, label %179

154:                                              ; preds = %149
  %155 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %156 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %28, i32 0, i32 0
  store ptr %155, ptr %156, align 8
  %157 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %158 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %29, i32 0, i32 0
  store ptr %157, ptr %158, align 8
  %159 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %28, i32 0, i32 0
  %160 = load ptr, ptr %159, align 8
  %161 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %29, i32 0, i32 0
  %162 = load ptr, ptr %161, align 8
  invoke void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %160, ptr %162)
          to label %163 unwind label %175

163:                                              ; preds = %154
  %164 = load i32, ptr %8, align 4, !tbaa !9
  %165 = sext i32 %164 to i64
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %165)
          to label %166 unwind label %175

166:                                              ; preds = %163
  %167 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %168 = getelementptr inbounds %"struct.std::pair", ptr %167, i32 0, i32 0
  %169 = load double, ptr %168, align 8, !tbaa !31
  %170 = fneg double %169
  store double %170, ptr %17, align 8, !tbaa !30
  br label %179

171:                                              ; preds = %148, %142
  %172 = landingpad { ptr, i32 }
          cleanup
  %173 = extractvalue { ptr, i32 } %172, 0
  store ptr %173, ptr %12, align 8
  %174 = extractvalue { ptr, i32 } %172, 1
  store i32 %174, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  br label %181

175:                                              ; preds = %163, %154
  %176 = landingpad { ptr, i32 }
          cleanup
  %177 = extractvalue { ptr, i32 } %176, 0
  store ptr %177, ptr %12, align 8
  %178 = extractvalue { ptr, i32 } %176, 1
  store i32 %178, ptr %13, align 4
  br label %181

179:                                              ; preds = %166, %149
  br label %180

180:                                              ; preds = %179, %126
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  br label %182

181:                                              ; preds = %175, %171
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  br label %191

182:                                              ; preds = %180, %119
  br label %183

183:                                              ; preds = %182
  %184 = load i32, ptr %22, align 4, !tbaa !9
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %22, align 4, !tbaa !9
  br label %114, !llvm.loop !33

186:                                              ; preds = %118
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #6
  br label %187

187:                                              ; preds = %186
  %188 = load i32, ptr %18, align 4, !tbaa !9
  %189 = add nsw i32 %188, 1
  store i32 %189, ptr %18, align 4, !tbaa !9
  br label %85, !llvm.loop !34

190:                                              ; preds = %88
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %315

191:                                              ; preds = %181, %93
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %364

192:                                              ; preds = %68
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #6
  %193 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 2
  %194 = load i32, ptr %193, align 8, !tbaa !29
  %195 = icmp ne i32 %194, 0
  br i1 %195, label %196, label %208

196:                                              ; preds = %192
  %197 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 0
  %198 = load ptr, ptr %197, align 8, !tbaa !28
  %199 = getelementptr inbounds %class.HEkk, ptr %198, i32 0, i32 12
  %200 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 2
  %201 = load i32, ptr %200, align 8, !tbaa !29
  %202 = invoke noundef i32 @_ZN11HighsRandom7integerEi(ptr noundef nonnull align 8 dereferenceable(8) %199, i32 noundef %201)
          to label %203 unwind label %204

203:                                              ; preds = %196
  store i32 %202, ptr %30, align 4, !tbaa !9
  br label %209

204:                                              ; preds = %196
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %12, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %13, align 4
  br label %314

208:                                              ; preds = %192
  store i32 0, ptr %30, align 4, !tbaa !9
  br label %209

209:                                              ; preds = %208, %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  store double 0.000000e+00, ptr %31, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #6
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %310, %209
  %211 = load i32, ptr %32, align 4, !tbaa !9
  %212 = icmp slt i32 %211, 2
  br i1 %212, label %214, label %213

213:                                              ; preds = %210
  store i32 11, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  br label %313

214:                                              ; preds = %210
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #6
  %215 = load i32, ptr %32, align 4, !tbaa !9
  %216 = icmp eq i32 %215, 0
  br i1 %216, label %217, label %219

217:                                              ; preds = %214
  %218 = load i32, ptr %30, align 4, !tbaa !9
  br label %220

219:                                              ; preds = %214
  br label %220

220:                                              ; preds = %219, %217
  %221 = phi i32 [ %218, %217 ], [ 0, %219 ]
  store i32 %221, ptr %33, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #6
  %222 = load i32, ptr %32, align 4, !tbaa !9
  %223 = icmp eq i32 %222, 0
  br i1 %223, label %224, label %227

224:                                              ; preds = %220
  %225 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 2
  %226 = load i32, ptr %225, align 8, !tbaa !29
  br label %229

227:                                              ; preds = %220
  %228 = load i32, ptr %30, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %227, %224
  %230 = phi i32 [ %226, %224 ], [ %228, %227 ]
  store i32 %230, ptr %34, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #6
  %231 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %231, ptr %35, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %306, %229
  %233 = load i32, ptr %35, align 4, !tbaa !9
  %234 = load i32, ptr %34, align 4, !tbaa !9
  %235 = icmp slt i32 %233, %234
  br i1 %235, label %237, label %236

236:                                              ; preds = %232
  store i32 14, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  br label %309

237:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #6
  %238 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 4
  %239 = load i32, ptr %35, align 4, !tbaa !9
  %240 = sext i32 %239 to i64
  %241 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %238, i64 noundef %240) #6
  %242 = load i32, ptr %241, align 4, !tbaa !9
  store i32 %242, ptr %36, align 4, !tbaa !9
  %243 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 5
  %244 = load i32, ptr %36, align 4, !tbaa !9
  %245 = sext i32 %244 to i64
  %246 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %243, i64 noundef %245) #6
  %247 = load double, ptr %246, align 8, !tbaa !30
  %248 = fcmp ogt double %247, 1.000000e-50
  br i1 %248, label %249, label %305

249:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  %250 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 5
  %251 = load i32, ptr %36, align 4, !tbaa !9
  %252 = sext i32 %251 to i64
  %253 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %250, i64 noundef %252) #6
  %254 = load double, ptr %253, align 8, !tbaa !30
  store double %254, ptr %37, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  %255 = load ptr, ptr %14, align 8, !tbaa !5
  %256 = load i32, ptr %36, align 4, !tbaa !9
  %257 = sext i32 %256 to i64
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %255, i64 noundef %257) #6
  %259 = load double, ptr %258, align 8, !tbaa !30
  store double %259, ptr %38, align 8, !tbaa !30
  %260 = load double, ptr %31, align 8, !tbaa !30
  %261 = load double, ptr %38, align 8, !tbaa !30
  %262 = fmul double %260, %261
  %263 = load double, ptr %37, align 8, !tbaa !30
  %264 = fcmp olt double %262, %263
  br i1 %264, label %265, label %303

265:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  %266 = load double, ptr %37, align 8, !tbaa !30
  %267 = fneg double %266
  %268 = load double, ptr %38, align 8, !tbaa !30
  %269 = fdiv double %267, %268
  store double %269, ptr %40, align 8, !tbaa !30
  %270 = invoke { double, i32 } @_ZSt9make_pairIdRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 4 dereferenceable(4) %36)
          to label %271 unwind label %294

271:                                              ; preds = %265
  store { double, i32 } %270, ptr %41, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %39, ptr align 8 %41, i64 12, i1 false)
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(12) %39)
          to label %272 unwind label %294

272:                                              ; preds = %271
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  %273 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %274 = load i32, ptr %10, align 4, !tbaa !9
  %275 = zext i32 %274 to i64
  %276 = icmp uge i64 %273, %275
  br i1 %276, label %277, label %302

277:                                              ; preds = %272
  %278 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %279 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %42, i32 0, i32 0
  store ptr %278, ptr %279, align 8
  %280 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %281 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %43, i32 0, i32 0
  store ptr %280, ptr %281, align 8
  %282 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %42, i32 0, i32 0
  %283 = load ptr, ptr %282, align 8
  %284 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %43, i32 0, i32 0
  %285 = load ptr, ptr %284, align 8
  invoke void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %283, ptr %285)
          to label %286 unwind label %298

286:                                              ; preds = %277
  %287 = load i32, ptr %8, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %288)
          to label %289 unwind label %298

289:                                              ; preds = %286
  %290 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %291 = getelementptr inbounds %"struct.std::pair", ptr %290, i32 0, i32 0
  %292 = load double, ptr %291, align 8, !tbaa !31
  %293 = fneg double %292
  store double %293, ptr %31, align 8, !tbaa !30
  br label %302

294:                                              ; preds = %271, %265
  %295 = landingpad { ptr, i32 }
          cleanup
  %296 = extractvalue { ptr, i32 } %295, 0
  store ptr %296, ptr %12, align 8
  %297 = extractvalue { ptr, i32 } %295, 1
  store i32 %297, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  br label %304

298:                                              ; preds = %286, %277
  %299 = landingpad { ptr, i32 }
          cleanup
  %300 = extractvalue { ptr, i32 } %299, 0
  store ptr %300, ptr %12, align 8
  %301 = extractvalue { ptr, i32 } %299, 1
  store i32 %301, ptr %13, align 4
  br label %304

302:                                              ; preds = %289, %272
  br label %303

303:                                              ; preds = %302, %249
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  br label %305

304:                                              ; preds = %298, %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  br label %314

305:                                              ; preds = %303, %237
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #6
  br label %306

306:                                              ; preds = %305
  %307 = load i32, ptr %35, align 4, !tbaa !9
  %308 = add nsw i32 %307, 1
  store i32 %308, ptr %35, align 4, !tbaa !9
  br label %232, !llvm.loop !35

309:                                              ; preds = %236
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #6
  br label %310

310:                                              ; preds = %309
  %311 = load i32, ptr %32, align 4, !tbaa !9
  %312 = add nsw i32 %311, 1
  store i32 %312, ptr %32, align 4, !tbaa !9
  br label %210, !llvm.loop !36

313:                                              ; preds = %213
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %315

314:                                              ; preds = %304, %204
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #6
  br label %364

315:                                              ; preds = %313, %190
  %316 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %317 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %44, i32 0, i32 0
  store ptr %316, ptr %317, align 8
  %318 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %319 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %45, i32 0, i32 0
  store ptr %318, ptr %319, align 8
  %320 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %44, i32 0, i32 0
  %321 = load ptr, ptr %320, align 8
  %322 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %45, i32 0, i32 0
  %323 = load ptr, ptr %322, align 8
  invoke void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %321, ptr %323)
          to label %324 unwind label %333

324:                                              ; preds = %315
  %325 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %326 = trunc i64 %325 to i32
  %327 = load i32, ptr %8, align 4, !tbaa !9
  %328 = icmp sgt i32 %326, %327
  br i1 %328, label %329, label %337

329:                                              ; preds = %324
  %330 = load i32, ptr %8, align 4, !tbaa !9
  %331 = sext i32 %330 to i64
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %331)
          to label %332 unwind label %333

332:                                              ; preds = %329
  br label %337

333:                                              ; preds = %360, %329, %315
  %334 = landingpad { ptr, i32 }
          cleanup
  %335 = extractvalue { ptr, i32 } %334, 0
  store ptr %335, ptr %12, align 8
  %336 = extractvalue { ptr, i32 } %334, 1
  store i32 %336, ptr %13, align 4
  br label %364

337:                                              ; preds = %332, %324
  %338 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %339 = trunc i64 %338 to i32
  %340 = load ptr, ptr %7, align 8, !tbaa !5
  store i32 %339, ptr %340, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #6
  store i32 0, ptr %46, align 4, !tbaa !9
  br label %341

341:                                              ; preds = %357, %337
  %342 = load i32, ptr %46, align 4, !tbaa !9
  %343 = zext i32 %342 to i64
  %344 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  %345 = icmp ult i64 %343, %344
  br i1 %345, label %347, label %346

346:                                              ; preds = %341
  store i32 17, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #6
  br label %360

347:                                              ; preds = %341
  %348 = load i32, ptr %46, align 4, !tbaa !9
  %349 = zext i32 %348 to i64
  %350 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %11, i64 noundef %349) #6
  %351 = getelementptr inbounds %"struct.std::pair", ptr %350, i32 0, i32 1
  %352 = load i32, ptr %351, align 8, !tbaa !37
  %353 = load ptr, ptr %6, align 8, !tbaa !5
  %354 = load i32, ptr %46, align 4, !tbaa !9
  %355 = zext i32 %354 to i64
  %356 = getelementptr inbounds i32, ptr %353, i64 %355
  store i32 %352, ptr %356, align 4, !tbaa !9
  br label %357

357:                                              ; preds = %347
  %358 = load i32, ptr %46, align 4, !tbaa !9
  %359 = add i32 %358, 1
  store i32 %359, ptr %46, align 4, !tbaa !9
  br label %341, !llvm.loop !38

360:                                              ; preds = %346
  %361 = getelementptr inbounds %class.HEkkDualRHS, ptr %47, i32 0, i32 12
  %362 = load ptr, ptr %361, align 8, !tbaa !11
  invoke void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576) %362, i32 noundef 38, i32 noundef 0)
          to label %363 unwind label %333

363:                                              ; preds = %360
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  ret void

364:                                              ; preds = %333, %314, %191
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  br label %365

365:                                              ; preds = %364, %89
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %11) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr %11) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #6
  br label %366

366:                                              ; preds = %365
  %367 = load ptr, ptr %12, align 8
  %368 = load i32, ptr %13, align 4
  %369 = insertvalue { ptr, i32 } poison, ptr %367, 0
  %370 = insertvalue { ptr, i32 } %369, i32 %368, 1
  resume { ptr, i32 } %370
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(12)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { double, i32 } @_ZSt9make_pairIdRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 144}
!12 = !{!"_ZTS11HEkkDualRHS", !6, i64 0, !13, i64 8, !10, i64 16, !14, i64 24, !18, i64 48, !22, i64 72, !10, i64 96, !10, i64 100, !10, i64 104, !10, i64 108, !10, i64 112, !18, i64 120, !6, i64 144}
!13 = !{!"double", !7, i64 0}
!14 = !{!"_ZTSSt6vectorIcSaIcEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSSt6vectorIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = distinct !{!26, !27}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!12, !6, i64 0}
!29 = !{!12, !10, i64 16}
!30 = !{!13, !13, i64 0}
!31 = !{!32, !13, i64 0}
!32 = !{!"_ZTSSt4pairIdiE", !13, i64 0, !10, i64 8}
!33 = distinct !{!33, !27}
!34 = distinct !{!34, !27}
!35 = distinct !{!35, !27}
!36 = distinct !{!36, !27}
!37 = !{!32, !10, i64 8}
!38 = distinct !{!38, !27}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector.71" = type { %"struct.std::_Vector_base.72" }
%"struct.std::_Vector_base.72" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<double, int>, std::allocator<std::pair<double, int>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair" = type <{ double, i32, [4 x i8] }>

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0

declare i32 @__gxx_personality_v0(...)

; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0

declare void @_ZN20HighsSimplexAnalysis17simplexTimerStartEii(ptr noundef nonnull align 8 dereferenceable(8576), i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZN11HighsRandom7integerEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

declare void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576), i32 noundef, i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN11HEkkDualRHS17chooseMultiGlobalEPiS0_i(ptr noundef nonnull align 8 dereferenceable(152) %0, ptr nocapture noundef writeonly %1, ptr nocapture noundef writeonly %2, i32 noundef %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"class.std::vector.71", align 8
  %6 = alloca i32, align 4
  %7 = alloca %"struct.std::pair", align 8
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca %"struct.std::pair", align 8
  %11 = alloca double, align 8
  %12 = getelementptr inbounds i8, ptr %0, i64 144
  %13 = load ptr, ptr %12, align 8, !tbaa !5
  tail call void @_ZN20HighsSimplexAnalysis17simplexTimerStartEii(ptr noundef nonnull align 8 dereferenceable(8576) %13, i32 noundef 38, i32 noundef 0)
  %14 = icmp sgt i32 %3, 0
  br i1 %14, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %4
  %15 = zext nneg i32 %3 to i64
  %16 = shl nuw nsw i64 %15, 2
  tail call void @llvm.memset.p0.i64(ptr align 4 %1, i8 -1, i64 %16, i1 false), !tbaa !24
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.preheader, %4
  %17 = shl nsw i32 %3, 1
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #6
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %18 = zext i32 %17 to i64
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %18)
          to label %19 unwind label %32

19:                                               ; preds = %._crit_edge
  %20 = load ptr, ptr %0, align 8, !tbaa !25
  %21 = getelementptr inbounds i8, ptr %20, i64 10784
  %22 = getelementptr inbounds i8, ptr %0, i64 16
  %23 = load i32, ptr %22, align 8
  %24 = icmp slt i32 %23, 0
  br i1 %24, label %25, label %107

25:                                               ; preds = %19
  %26 = sub nsw i32 0, %23
  %27 = getelementptr inbounds i8, ptr %20, i64 10776
  %28 = invoke noundef i32 @_ZN11HighsRandom7integerEi(ptr noundef nonnull align 8 dereferenceable(8) %27, i32 noundef %26)
          to label %.preheader unwind label %34

.preheader:                                       ; preds = %25
  %29 = getelementptr inbounds i8, ptr %0, i64 72
  %.sroa.228.0..sroa_idx = getelementptr inbounds i8, ptr %7, i64 8
  %30 = sext i32 %3 to i64
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  store i32 %28, ptr %6, align 4, !tbaa !24
  %31 = icmp slt i32 %28, %26
  br i1 %31, label %.lr.ph116, label %._crit_edge117.thread

._crit_edge117.thread:                            ; preds = %.preheader
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  store i32 0, ptr %6, align 4, !tbaa !24
  br label %.lr.ph116.1.preheader

32:                                               ; preds = %._crit_edge
  %33 = landingpad { ptr, i32 }
          cleanup
  br label %213

34:                                               ; preds = %25
  %35 = landingpad { ptr, i32 }
          cleanup
  br label %213

._crit_edge117:                                   ; preds = %103
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  store i32 0, ptr %6, align 4, !tbaa !24
  %36 = icmp sgt i32 %28, 0
  br i1 %36, label %.lr.ph116.1.preheader, label %._crit_edge117.1

.lr.ph116.1.preheader:                            ; preds = %._crit_edge117.thread, %._crit_edge117
  %.173114.1.ph = phi double [ %.375, %._crit_edge117 ], [ 0.000000e+00, %._crit_edge117.thread ]
  br label %.lr.ph116.1

.lr.ph116.1:                                      ; preds = %.lr.ph116.1.preheader, %67
  %.173114.1 = phi double [ %.375.1, %67 ], [ %.173114.1.ph, %.lr.ph116.1.preheader ]
  %storemerge113.1 = phi i32 [ %69, %67 ], [ 0, %.lr.ph116.1.preheader ]
  %37 = sext i32 %storemerge113.1 to i64
  %38 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %37) #6
  %39 = load double, ptr %38, align 8, !tbaa !26
  %40 = fcmp ogt double %39, 1.000000e-50
  br i1 %40, label %41, label %67

41:                                               ; preds = %.lr.ph116.1
  %42 = load i32, ptr %6, align 4, !tbaa !24
  %43 = sext i32 %42 to i64
  %44 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %43) #6
  %45 = load double, ptr %44, align 8, !tbaa !26
  %46 = load i32, ptr %6, align 4, !tbaa !24
  %47 = sext i32 %46 to i64
  %48 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %47) #6
  %49 = load double, ptr %48, align 8, !tbaa !26
  %50 = fmul double %.173114.1, %49
  %51 = fcmp olt double %50, %45
  br i1 %51, label %52, label %67

52:                                               ; preds = %41
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  %53 = fneg double %45
  %54 = fdiv double %53, %49
  store double %54, ptr %8, align 8, !tbaa !26
  %55 = invoke { double, i32 } @_ZSt9make_pairIdRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %56 unwind label %.loopexit.split-lp136

56:                                               ; preds = %52
  %.fca.0.extract25.1 = extractvalue { double, i32 } %55, 0
  %.fca.1.extract26.1 = extractvalue { double, i32 } %55, 1
  store double %.fca.0.extract25.1, ptr %7, align 8
  store i32 %.fca.1.extract26.1, ptr %.sroa.228.0..sroa_idx, align 8
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(12) %7)
          to label %57 unwind label %.loopexit.split-lp136

57:                                               ; preds = %56
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  %58 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %.not94.1 = icmp ult i64 %58, %18
  br i1 %.not94.1, label %67, label %59

59:                                               ; preds = %57
  %60 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %61 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  invoke void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %60, ptr %61)
          to label %62 unwind label %.loopexit.split-lp141

62:                                               ; preds = %59
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %30)
          to label %63 unwind label %.loopexit.split-lp141

63:                                               ; preds = %62
  %64 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %65 = load double, ptr %64, align 8, !tbaa !27
  %66 = fneg double %65
  br label %67

67:                                               ; preds = %63, %57, %41, %.lr.ph116.1
  %.375.1 = phi double [ %.173114.1, %.lr.ph116.1 ], [ %66, %63 ], [ %.173114.1, %57 ], [ %.173114.1, %41 ]
  %68 = load i32, ptr %6, align 4, !tbaa !24
  %69 = add nsw i32 %68, 1
  store i32 %69, ptr %6, align 4, !tbaa !24
  %70 = icmp slt i32 %69, %28
  br i1 %70, label %.lr.ph116.1, label %._crit_edge117.1, !llvm.loop !29

._crit_edge117.1:                                 ; preds = %67, %._crit_edge117
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  br label %.loopexit

.lr.ph116:                                        ; preds = %.preheader, %103
  %.173114 = phi double [ %.375, %103 ], [ 0.000000e+00, %.preheader ]
  %storemerge113 = phi i32 [ %105, %103 ], [ %28, %.preheader ]
  %71 = sext i32 %storemerge113 to i64
  %72 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %71) #6
  %73 = load double, ptr %72, align 8, !tbaa !26
  %74 = fcmp ogt double %73, 1.000000e-50
  br i1 %74, label %75, label %103

75:                                               ; preds = %.lr.ph116
  %76 = load i32, ptr %6, align 4, !tbaa !24
  %77 = sext i32 %76 to i64
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %29, i64 noundef %77) #6
  %79 = load double, ptr %78, align 8, !tbaa !26
  %80 = load i32, ptr %6, align 4, !tbaa !24
  %81 = sext i32 %80 to i64
  %82 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %81) #6
  %83 = load double, ptr %82, align 8, !tbaa !26
  %84 = fmul double %.173114, %83
  %85 = fcmp olt double %84, %79
  br i1 %85, label %86, label %103

86:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  %87 = fneg double %79
  %88 = fdiv double %87, %83
  store double %88, ptr %8, align 8, !tbaa !26
  %89 = invoke { double, i32 } @_ZSt9make_pairIdRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 4 dereferenceable(4) %6)
          to label %90 unwind label %.loopexit135

90:                                               ; preds = %86
  %.fca.0.extract25 = extractvalue { double, i32 } %89, 0
  %.fca.1.extract26 = extractvalue { double, i32 } %89, 1
  store double %.fca.0.extract25, ptr %7, align 8
  store i32 %.fca.1.extract26, ptr %.sroa.228.0..sroa_idx, align 8
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(12) %7)
          to label %91 unwind label %.loopexit135

91:                                               ; preds = %90
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  %92 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %.not94 = icmp ult i64 %92, %18
  br i1 %.not94, label %103, label %93

93:                                               ; preds = %91
  %94 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %95 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  invoke void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %94, ptr %95)
          to label %96 unwind label %.loopexit140

96:                                               ; preds = %93
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %30)
          to label %97 unwind label %.loopexit140

97:                                               ; preds = %96
  %98 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %99 = load double, ptr %98, align 8, !tbaa !27
  %100 = fneg double %99
  br label %103

.loopexit135:                                     ; preds = %86, %90
  %lpad.loopexit137 = landingpad { ptr, i32 }
          cleanup
  br label %101

.loopexit.split-lp136:                            ; preds = %52, %56
  %lpad.loopexit.split-lp138 = landingpad { ptr, i32 }
          cleanup
  br label %101

101:                                              ; preds = %.loopexit.split-lp136, %.loopexit135
  %lpad.phi139 = phi { ptr, i32 } [ %lpad.loopexit137, %.loopexit135 ], [ %lpad.loopexit.split-lp138, %.loopexit.split-lp136 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #6
  br label %102

.loopexit140:                                     ; preds = %93, %96
  %lpad.loopexit142 = landingpad { ptr, i32 }
          cleanup
  br label %102

.loopexit.split-lp141:                            ; preds = %59, %62
  %lpad.loopexit.split-lp143 = landingpad { ptr, i32 }
          cleanup
  br label %102

102:                                              ; preds = %.loopexit140, %.loopexit.split-lp141, %101
  %.pn95 = phi { ptr, i32 } [ %lpad.phi139, %101 ], [ %lpad.loopexit142, %.loopexit140 ], [ %lpad.loopexit.split-lp143, %.loopexit.split-lp141 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  br label %213

103:                                              ; preds = %75, %97, %91, %.lr.ph116
  %.375 = phi double [ %.173114, %.lr.ph116 ], [ %100, %97 ], [ %.173114, %91 ], [ %.173114, %75 ]
  %104 = load i32, ptr %6, align 4, !tbaa !24
  %105 = add nsw i32 %104, 1
  store i32 %105, ptr %6, align 4, !tbaa !24
  %106 = icmp slt i32 %105, %26
  br i1 %106, label %.lr.ph116, label %._crit_edge117, !llvm.loop !29

107:                                              ; preds = %19
  %.not = icmp eq i32 %23, 0
  br i1 %.not, label %.loopexit, label %108

108:                                              ; preds = %107
  %109 = getelementptr inbounds i8, ptr %20, i64 10776
  %110 = invoke noundef i32 @_ZN11HighsRandom7integerEi(ptr noundef nonnull align 8 dereferenceable(8) %109, i32 noundef %23)
          to label %113 unwind label %111

111:                                              ; preds = %108
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %213

113:                                              ; preds = %108
  %.pre = load i32, ptr %22, align 8
  %114 = getelementptr inbounds i8, ptr %0, i64 48
  %115 = getelementptr inbounds i8, ptr %0, i64 72
  %.sroa.2.0..sroa_idx = getelementptr inbounds i8, ptr %10, i64 8
  %116 = sext i32 %3 to i64
  %117 = icmp slt i32 %110, %.pre
  br i1 %117, label %.lr.ph109.preheader, label %._crit_edge110

.lr.ph109.preheader:                              ; preds = %113
  %118 = sext i32 %110 to i64
  br label %.lr.ph109

._crit_edge110:                                   ; preds = %187, %113
  %.179.lcssa = phi double [ 0.000000e+00, %113 ], [ %.381, %187 ]
  %119 = icmp sgt i32 %110, 0
  br i1 %119, label %.lr.ph109.preheader.1, label %.loopexit

.lr.ph109.preheader.1:                            ; preds = %._crit_edge110
  %zext = zext nneg i32 %110 to i64
  br label %.lr.ph109.1

.lr.ph109.1:                                      ; preds = %152, %.lr.ph109.preheader.1
  %indvars.iv.1 = phi i64 [ 0, %.lr.ph109.preheader.1 ], [ %indvars.iv.next.1, %152 ]
  %.179107.1 = phi double [ %.179.lcssa, %.lr.ph109.preheader.1 ], [ %.381.1, %152 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  %120 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %114, i64 noundef %indvars.iv.1) #6
  %121 = load i32, ptr %120, align 4, !tbaa !24
  store i32 %121, ptr %9, align 4, !tbaa !24
  %122 = sext i32 %121 to i64
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %122) #6
  %124 = load double, ptr %123, align 8, !tbaa !26
  %125 = fcmp ogt double %124, 1.000000e-50
  br i1 %125, label %126, label %152

126:                                              ; preds = %.lr.ph109.1
  %127 = load i32, ptr %9, align 4, !tbaa !24
  %128 = sext i32 %127 to i64
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %128) #6
  %130 = load double, ptr %129, align 8, !tbaa !26
  %131 = load i32, ptr %9, align 4, !tbaa !24
  %132 = sext i32 %131 to i64
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %132) #6
  %134 = load double, ptr %133, align 8, !tbaa !26
  %135 = fmul double %.179107.1, %134
  %136 = fcmp olt double %135, %130
  br i1 %136, label %137, label %152

137:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %138 = fneg double %130
  %139 = fdiv double %138, %134
  store double %139, ptr %11, align 8, !tbaa !26
  %140 = invoke { double, i32 } @_ZSt9make_pairIdRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %141 unwind label %.loopexit.split-lp

141:                                              ; preds = %137
  %.fca.0.extract.1 = extractvalue { double, i32 } %140, 0
  %.fca.1.extract.1 = extractvalue { double, i32 } %140, 1
  store double %.fca.0.extract.1, ptr %10, align 8
  store i32 %.fca.1.extract.1, ptr %.sroa.2.0..sroa_idx, align 8
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(12) %10)
          to label %142 unwind label %.loopexit.split-lp

142:                                              ; preds = %141
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  %143 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %.not91.1 = icmp ult i64 %143, %18
  br i1 %.not91.1, label %152, label %144

144:                                              ; preds = %142
  %145 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %146 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  invoke void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %145, ptr %146)
          to label %147 unwind label %.loopexit.split-lp131

147:                                              ; preds = %144
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %116)
          to label %148 unwind label %.loopexit.split-lp131

148:                                              ; preds = %147
  %149 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %150 = load double, ptr %149, align 8, !tbaa !27
  %151 = fneg double %150
  br label %152

152:                                              ; preds = %148, %142, %126, %.lr.ph109.1
  %.381.1 = phi double [ %.179107.1, %.lr.ph109.1 ], [ %151, %148 ], [ %.179107.1, %142 ], [ %.179107.1, %126 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv.1, 1
  %.not146 = icmp eq i64 %indvars.iv.next.1, %zext
  br i1 %.not146, label %.loopexit, label %.lr.ph109.1, !llvm.loop !31

.lr.ph109:                                        ; preds = %.lr.ph109.preheader, %187
  %indvars.iv = phi i64 [ %118, %.lr.ph109.preheader ], [ %indvars.iv.next, %187 ]
  %.179107 = phi double [ 0.000000e+00, %.lr.ph109.preheader ], [ %.381, %187 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #6
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %114, i64 noundef %indvars.iv) #6
  %154 = load i32, ptr %153, align 4, !tbaa !24
  store i32 %154, ptr %9, align 4, !tbaa !24
  %155 = sext i32 %154 to i64
  %156 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %155) #6
  %157 = load double, ptr %156, align 8, !tbaa !26
  %158 = fcmp ogt double %157, 1.000000e-50
  br i1 %158, label %159, label %187

159:                                              ; preds = %.lr.ph109
  %160 = load i32, ptr %9, align 4, !tbaa !24
  %161 = sext i32 %160 to i64
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %115, i64 noundef %161) #6
  %163 = load double, ptr %162, align 8, !tbaa !26
  %164 = load i32, ptr %9, align 4, !tbaa !24
  %165 = sext i32 %164 to i64
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %165) #6
  %167 = load double, ptr %166, align 8, !tbaa !26
  %168 = fmul double %.179107, %167
  %169 = fcmp olt double %168, %163
  br i1 %169, label %170, label %187

170:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  %171 = fneg double %163
  %172 = fdiv double %171, %167
  store double %172, ptr %11, align 8, !tbaa !26
  %173 = invoke { double, i32 } @_ZSt9make_pairIdRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %174 unwind label %.loopexit129

174:                                              ; preds = %170
  %.fca.0.extract = extractvalue { double, i32 } %173, 0
  %.fca.1.extract = extractvalue { double, i32 } %173, 1
  store double %.fca.0.extract, ptr %10, align 8
  store i32 %.fca.1.extract, ptr %.sroa.2.0..sroa_idx, align 8
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %5, ptr noundef nonnull align 8 dereferenceable(12) %10)
          to label %175 unwind label %.loopexit129

175:                                              ; preds = %174
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  %176 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %.not91 = icmp ult i64 %176, %18
  br i1 %.not91, label %187, label %177

177:                                              ; preds = %175
  %178 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %179 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  invoke void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %178, ptr %179)
          to label %180 unwind label %.loopexit130

180:                                              ; preds = %177
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %116)
          to label %181 unwind label %.loopexit130

181:                                              ; preds = %180
  %182 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %183 = load double, ptr %182, align 8, !tbaa !27
  %184 = fneg double %183
  br label %187

.loopexit129:                                     ; preds = %170, %174
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %185

.loopexit.split-lp:                               ; preds = %137, %141
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %185

185:                                              ; preds = %.loopexit.split-lp, %.loopexit129
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit129 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #6
  br label %186

.loopexit130:                                     ; preds = %177, %180
  %lpad.loopexit132 = landingpad { ptr, i32 }
          cleanup
  br label %186

.loopexit.split-lp131:                            ; preds = %144, %147
  %lpad.loopexit.split-lp133 = landingpad { ptr, i32 }
          cleanup
  br label %186

186:                                              ; preds = %.loopexit130, %.loopexit.split-lp131, %185
  %.pn = phi { ptr, i32 } [ %lpad.phi, %185 ], [ %lpad.loopexit132, %.loopexit130 ], [ %lpad.loopexit.split-lp133, %.loopexit.split-lp131 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  br label %213

187:                                              ; preds = %159, %181, %175, %.lr.ph109
  %.381 = phi double [ %.179107, %.lr.ph109 ], [ %184, %181 ], [ %.179107, %175 ], [ %.179107, %159 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #6
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond.not = icmp eq i32 %.pre, %lftr.wideiv
  br i1 %exitcond.not, label %._crit_edge110, label %.lr.ph109, !llvm.loop !31

.loopexit:                                        ; preds = %152, %107, %._crit_edge110, %._crit_edge117.1
  %188 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %189 = call ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  invoke void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr %188, ptr %189)
          to label %190 unwind label %196

190:                                              ; preds = %.loopexit
  %191 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %192 = trunc i64 %191 to i32
  %193 = icmp sgt i32 %192, %3
  br i1 %193, label %194, label %198

194:                                              ; preds = %190
  %195 = sext i32 %3 to i64
  invoke void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %195)
          to label %198 unwind label %196

196:                                              ; preds = %._crit_edge124, %194, %.loopexit
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %213

198:                                              ; preds = %194, %190
  %199 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %200 = trunc i64 %199 to i32
  store i32 %200, ptr %2, align 4, !tbaa !24
  %201 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %.not125 = icmp eq i64 %201, 0
  br i1 %.not125, label %._crit_edge124, label %.lr.ph123

._crit_edge124:                                   ; preds = %.lr.ph123, %198
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576) %202, i32 noundef 38, i32 noundef 0)
          to label %212 unwind label %196

.lr.ph123:                                        ; preds = %198, %.lr.ph123
  %203 = phi i64 [ %209, %.lr.ph123 ], [ 0, %198 ]
  %.0121 = phi i32 [ %208, %.lr.ph123 ], [ 0, %198 ]
  %204 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %203) #6
  %205 = getelementptr inbounds i8, ptr %204, i64 8
  %206 = load i32, ptr %205, align 8, !tbaa !32
  %207 = getelementptr inbounds i32, ptr %1, i64 %203
  store i32 %206, ptr %207, align 4, !tbaa !24
  %208 = add i32 %.0121, 1
  %209 = zext i32 %208 to i64
  %210 = call noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  %211 = icmp ugt i64 %210, %209
  br i1 %211, label %.lr.ph123, label %._crit_edge124, !llvm.loop !33

212:                                              ; preds = %._crit_edge124
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #6
  ret void

213:                                              ; preds = %196, %102, %34, %186, %111, %32
  %.pn95.pn.pn.pn = phi { ptr, i32 } [ %33, %32 ], [ %197, %196 ], [ %.pn95, %102 ], [ %35, %34 ], [ %.pn, %186 ], [ %112, %111 ]
  call void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #6
  resume { ptr, i32 } %.pn95.pn.pn.pn
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { double, i32 } @_ZSt9make_pairIdRiESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS2_INS3_IT0_E4typeEE6__typeEEOS4_OS9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorISt4pairIdiESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPSt4pairIdiESt6vectorIS3_SaIS3_EEEEEvT_S9_(ptr, ptr) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNSt6vectorISt4pairIdiESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorISt4pairIdiESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 align 2

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

!llvm.module.flags = !{!0, !1, !2, !3}
!llvm.ident = !{!4}

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 144}
!6 = !{!"_ZTS11HEkkDualRHS", !7, i64 0, !10, i64 8, !11, i64 16, !12, i64 24, !16, i64 48, !20, i64 72, !11, i64 96, !11, i64 100, !11, i64 104, !11, i64 108, !11, i64 112, !16, i64 120, !7, i64 144}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"double", !8, i64 0}
!11 = !{!"int", !8, i64 0}
!12 = !{!"_ZTSSt6vectorIcSaIcEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!16 = !{!"_ZTSSt6vectorIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!24 = !{!11, !11, i64 0}
!25 = !{!6, !7, i64 0}
!26 = !{!10, !10, i64 0}
!27 = !{!28, !10, i64 0}
!28 = !{!"_ZTSSt4pairIdiE", !10, i64 0, !11, i64 8}
!29 = distinct !{!29, !30}
!30 = !{!"llvm.loop.mustprogress"}
!31 = distinct !{!31, !30}
!32 = !{!28, !11, i64 8}
!33 = distinct !{!33, !30}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,SROAPass,SimplifyCFGPass,TailCallElimPass