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

; 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.HEkkPrimal = type { ptr, ptr, i32, i32, i32, i32, i32, double, double, double, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", i32, i32, %"class.std::vector.8", i32, %class.HSet, i8, i8, i8, i32, i32, %"class.std::vector.8", %"class.std::vector.3", %class.HSet, double, double, i32, i8, %class.HVectorBase, %class.HVectorBase, %class.HVectorBase, %class.HVectorBase, %class.HVectorBase, %class.HVectorBase, %class.HighsRandom, double, double, double, i32, i32, double, i32, i32 }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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 }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = 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.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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.HSet = type { i32, %"class.std::vector.8", i8, i8, i8, i8, ptr, i32, %"class.std::vector.8" }
%class.HVectorBase = type { i32, i32, %"class.std::vector.8", %"class.std::vector.3", double, %"class.std::vector.13", %"class.std::vector.8", ptr, i8, i32, %"class.std::vector.8", %"class.std::vector.3" }
%"class.std::vector.13" = type { %"struct.std::_Vector_base.14" }
%"struct.std::_Vector_base.14" = 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.HighsRandom = type { i64 }
%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.3", %"class.std::vector.3", i8, %class.HighsSparseMatrix, %class.HighsSparseMatrix, %class.HSimplexNla, %struct.HotStart, double, double, double, i32, i32, i32, i32, i8, i8, i32, i32, i32, %"class.std::vector.8", %"class.std::vector.3", %struct.HighsRayRecord, %struct.HighsRayRecord, i32, i32, i32, double, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", double, double, double, i32, i32, i8, i32, i8, i8, i8, i8, double, %"class.std::vector.71", %"class.std::vector.3", %struct.HighsSimplexStats }
%class.HighsSimplexAnalysis = type { ptr, %"class.std::vector.15", %"class.std::vector.15", 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.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.20", %"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.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = 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.20" = type { %"struct.std::_Vector_base.21" }
%"struct.std::_Vector_base.21" = 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.26" }
%"struct.std::_Head_base.26" = 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.3", %"class.std::vector.8", i32, [4 x i8] }>
%class.HighsLp = type { i32, i32, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %class.HighsSparseMatrix, i32, double, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i32, i32, %"class.std::vector.27", %"class.std::vector.27", %"class.std::vector.32", %struct.HighsNameHash, %struct.HighsNameHash, i32, i32, %struct.HighsScale, i8, i8, i32, i8, %struct.HighsLpMods }
%"class.std::vector.27" = type { %"struct.std::_Vector_base.28" }
%"struct.std::_Vector_base.28" = 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.32" = type { %"struct.std::_Vector_base.33" }
%"struct.std::_Vector_base.33" = 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.3", %"class.std::vector.3" }
%struct.HighsLpMods = type { %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.32", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3" }
%"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.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", i32, i32, i8, i8, [6 x i8], %struct.SimplexBasis, i32, i32, i32, [4 x i8], %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.3", 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.8", %"class.std::vector.42", %"class.std::vector.42", i64, i32, i32, %"class.std::__cxx11::basic_string" }
%"class.std::vector.42" = type { %"struct.std::_Vector_base.43" }
%"struct.std::_Vector_base.43" = 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.47", %"class.std::unique_ptr.55", i64, i64, i64 }
%"class.std::unique_ptr.47" = type { %"struct.std::__uniq_ptr_data.48" }
%"struct.std::__uniq_ptr_data.48" = type { %"class.std::__uniq_ptr_impl.49" }
%"class.std::__uniq_ptr_impl.49" = type { %"class.std::tuple.50" }
%"class.std::tuple.50" = type { %"struct.std::_Tuple_impl.51" }
%"struct.std::_Tuple_impl.51" = type { %"struct.std::_Head_base.54" }
%"struct.std::_Head_base.54" = type { ptr }
%"class.std::unique_ptr.55" = type { %"struct.std::__uniq_ptr_data.56" }
%"struct.std::__uniq_ptr_data.56" = type { %"class.std::__uniq_ptr_impl.57" }
%"class.std::__uniq_ptr_impl.57" = type { %"class.std::tuple.58" }
%"class.std::tuple.58" = type { %"struct.std::_Tuple_impl.59" }
%"struct.std::_Tuple_impl.59" = type { %"struct.std::_Head_base.62" }
%"struct.std::_Head_base.62" = type { ptr }
%class.HighsSparseMatrix = type { i32, i32, i32, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3" }
%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.8", %"class.std::vector.8", %"class.std::vector.8", %struct.RefactorInfo, i32, i32, i32, i32, i32, i32, i32, double, i8, ptr, ptr, ptr, ptr, double, double, i32, double, %"class.std::unique_ptr.63", %struct.HighsLogOptions, i8, i8, i32, i32, ptr, i32, %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.13", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", i32, i32, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %class.HVectorBase }
%struct.RefactorInfo = type { i8, %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.42", double }
%"class.std::unique_ptr.63" = type { %"struct.std::__uniq_ptr_data.64" }
%"struct.std::__uniq_ptr_data.64" = type { %"class.std::__uniq_ptr_impl.65" }
%"class.std::__uniq_ptr_impl.65" = type { %"class.std::tuple.66" }
%"class.std::tuple.66" = type { %"struct.std::_Tuple_impl.67" }
%"struct.std::_Tuple_impl.67" = type { %"struct.std::_Head_base.70" }
%"struct.std::_Head_base.70" = type { ptr }
%struct.ProductFormUpdate = type { i8, i32, i32, %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3" }
%struct.SimplexIterate = type { i8, %struct.SimplexBasis, %struct.InvertibleRepresentation, %"class.std::vector.3" }
%struct.InvertibleRepresentation = type { %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.3" }
%struct.HotStart = type { i8, %struct.RefactorInfo, %"class.std::vector.42" }
%struct.HighsRayRecord = type { i32, i32, %"class.std::vector.3" }
%"class.std::vector.71" = type { %"struct.std::_Vector_base.72" }
%"struct.std::_Vector_base.72" = 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 }

@.str.53 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [20 x i8], align 1
@__PRETTY_FUNCTION__._ZN10HEkkPrimal17hyperChooseColumnEv = external hidden unnamed_addr constant [37 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [38 x i8], align 1

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #1

declare i32 @printf(ptr noundef, ...) #2

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

declare void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576), i32 noundef, i32 noundef) #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: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #4

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10HEkkPrimal17hyperChooseColumnEv(ptr noundef nonnull align 8 dereferenceable(1616) %0) #5 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca ptr, align 8
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca double, align 8
  %7 = alloca i8, align 1
  %8 = alloca i32, align 4
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca double, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %12 = load ptr, ptr %2, align 8
  %13 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 31
  %14 = load i8, ptr %13, align 8, !tbaa !9, !range !35, !noundef !36
  %15 = trunc i8 %14 to i1
  br i1 %15, label %17, label %16

16:                                               ; preds = %1
  br label %232

17:                                               ; preds = %1
  %18 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 32
  %19 = load i8, ptr %18, align 1, !tbaa !37, !range !35, !noundef !36
  %20 = trunc i8 %19 to i1
  br i1 %20, label %21, label %22

21:                                               ; preds = %17
  br label %232

22:                                               ; preds = %17
  %23 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 1
  %24 = load ptr, ptr %23, align 8, !tbaa !38
  call void @_ZN20HighsSimplexAnalysis17simplexTimerStartEii(ptr noundef nonnull align 8 dereferenceable(8576) %24, i32 noundef 45, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #7
  %25 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 0
  %26 = load ptr, ptr %25, align 8, !tbaa !39
  %27 = getelementptr inbounds %class.HEkk, ptr %26, i32 0, i32 10
  %28 = getelementptr inbounds %struct.SimplexBasis, ptr %27, i32 0, i32 2
  store ptr %28, ptr %3, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %4) #7
  %29 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 0
  %30 = load ptr, ptr %29, align 8, !tbaa !39
  %31 = getelementptr inbounds %class.HEkk, ptr %30, i32 0, i32 10
  %32 = getelementptr inbounds %struct.SimplexBasis, ptr %31, i32 0, i32 1
  store ptr %32, ptr %4, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %5) #7
  %33 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 0
  %34 = load ptr, ptr %33, align 8, !tbaa !39
  %35 = getelementptr inbounds %class.HEkk, ptr %34, i32 0, i32 8
  %36 = getelementptr inbounds %struct.HighsSimplexInfo, ptr %35, i32 0, i32 1
  store ptr %36, ptr %5, align 8, !tbaa !5
  %37 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 42
  %38 = load i8, ptr %37, align 4, !tbaa !40, !range !35, !noundef !36
  %39 = trunc i8 %38 to i1
  br i1 %39, label %40, label %46

40:                                               ; preds = %22
  %41 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 40
  %42 = load double, ptr %41, align 8, !tbaa !41
  %43 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 41
  %44 = load i32, ptr %43, align 8, !tbaa !42
  %45 = call i32 (ptr, ...) @printf(ptr noundef @.str.119, double noundef %42, i32 noundef %44)
  br label %46

46:                                               ; preds = %40, %22
  call void @llvm.lifetime.start.p0(i64 8, ptr %6) #7
  %47 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 40
  %48 = load double, ptr %47, align 8, !tbaa !41
  store double %48, ptr %6, align 8, !tbaa !43
  %49 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 11
  store i32 -1, ptr %49, align 4, !tbaa !44
  %50 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 41
  %51 = load i32, ptr %50, align 8, !tbaa !42
  %52 = icmp sge i32 %51, 0
  br i1 %52, label %53, label %66

53:                                               ; preds = %46
  %54 = load ptr, ptr %5, align 8, !tbaa !5
  %55 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 41
  %56 = load i32, ptr %55, align 8, !tbaa !42
  %57 = sext i32 %56 to i64
  %58 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %54, i64 noundef %57) #7
  %59 = load double, ptr %58, align 8, !tbaa !43
  %60 = fcmp une double %59, 0.000000e+00
  br i1 %60, label %61, label %65

61:                                               ; preds = %53
  %62 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 41
  %63 = load i32, ptr %62, align 8, !tbaa !42
  %64 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 11
  store i32 %63, ptr %64, align 4, !tbaa !44
  br label %65

65:                                               ; preds = %61, %53
  br label %66

66:                                               ; preds = %65, %46
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #7
  %67 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 30
  %68 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK4HSet5countEv(ptr noundef nonnull align 8 dereferenceable(80) %67)
  %69 = load i32, ptr %68, align 4, !tbaa !45
  %70 = icmp ne i32 %69, 0
  %71 = zext i1 %70 to i8
  store i8 %71, ptr %7, align 1, !tbaa !46
  %72 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 35
  %73 = load i32, ptr %72, align 8, !tbaa !47
  %74 = icmp ne i32 %73, 0
  br i1 %74, label %75, label %174

75:                                               ; preds = %66
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  store i32 1, ptr %8, align 4, !tbaa !45
  br label %76

76:                                               ; preds = %170, %75
  %77 = load i32, ptr %8, align 4, !tbaa !45
  %78 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 35
  %79 = load i32, ptr %78, align 8, !tbaa !47
  %80 = icmp sle i32 %77, %79
  br i1 %80, label %82, label %81

81:                                               ; preds = %76
  store i32 2, ptr %9, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  br label %173

82:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  %83 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 36
  %84 = load i32, ptr %8, align 4, !tbaa !45
  %85 = sext i32 %84 to i64
  %86 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef %85) #7
  %87 = load i32, ptr %86, align 4, !tbaa !45
  store i32 %87, ptr %10, align 4, !tbaa !45
  %88 = load ptr, ptr %4, align 8, !tbaa !5
  %89 = load i32, ptr %10, align 4, !tbaa !45
  %90 = sext i32 %89 to i64
  %91 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %88, i64 noundef %90) #7
  %92 = load i8, ptr %91, align 1, !tbaa !48
  %93 = sext i8 %92 to i32
  %94 = icmp eq i32 %93, 0
  br i1 %94, label %95, label %107

95:                                               ; preds = %82
  %96 = load ptr, ptr %3, align 8, !tbaa !5
  %97 = load i32, ptr %10, align 4, !tbaa !45
  %98 = sext i32 %97 to i64
  %99 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %96, i64 noundef %98) #7
  %100 = load i8, ptr %99, align 1, !tbaa !48
  %101 = icmp ne i8 %100, 0
  %102 = xor i1 %101, true
  br i1 %102, label %103, label %104

103:                                              ; preds = %95
  br label %106

104:                                              ; preds = %95
  call void @__assert_fail(ptr noundef @.str.120, ptr noundef @.str.53, i32 noundef 1576, ptr noundef @__PRETTY_FUNCTION__._ZN10HEkkPrimal17hyperChooseColumnEv) #8
  unreachable

105:                                              ; No predecessors!
  br label %106

106:                                              ; preds = %105, %103
  store i32 4, ptr %9, align 4
  br label %167

107:                                              ; preds = %82
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %108 = load ptr, ptr %3, align 8, !tbaa !5
  %109 = load i32, ptr %10, align 4, !tbaa !45
  %110 = sext i32 %109 to i64
  %111 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %108, i64 noundef %110) #7
  %112 = load i8, ptr %111, align 1, !tbaa !48
  %113 = sext i8 %112 to i32
  %114 = sub nsw i32 0, %113
  %115 = sitofp i32 %114 to double
  %116 = load ptr, ptr %5, align 8, !tbaa !5
  %117 = load i32, ptr %10, align 4, !tbaa !45
  %118 = sext i32 %117 to i64
  %119 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %116, i64 noundef %118) #7
  %120 = load double, ptr %119, align 8, !tbaa !43
  %121 = fmul double %115, %120
  store double %121, ptr %11, align 8, !tbaa !43
  %122 = load i8, ptr %7, align 1, !tbaa !46, !range !35, !noundef !36
  %123 = trunc i8 %122 to i1
  br i1 %123, label %124, label %136

124:                                              ; preds = %107
  %125 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 30
  %126 = load i32, ptr %10, align 4, !tbaa !45
  %127 = call noundef zeroext i1 @_ZNK4HSet2inEi(ptr noundef nonnull align 8 dereferenceable(80) %125, i32 noundef %126)
  br i1 %127, label %128, label %135

128:                                              ; preds = %124
  %129 = load ptr, ptr %5, align 8, !tbaa !5
  %130 = load i32, ptr %10, align 4, !tbaa !45
  %131 = sext i32 %130 to i64
  %132 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef %131) #7
  %133 = load double, ptr %132, align 8, !tbaa !43
  %134 = call double @llvm.fabs.f64(double %133)
  store double %134, ptr %11, align 8, !tbaa !43
  br label %135

135:                                              ; preds = %128, %124
  br label %136

136:                                              ; preds = %135, %107
  %137 = load double, ptr %11, align 8, !tbaa !43
  %138 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 8
  %139 = load double, ptr %138, align 8, !tbaa !49
  %140 = fcmp ogt double %137, %139
  br i1 %140, label %141, label %166

141:                                              ; preds = %136
  %142 = load double, ptr %11, align 8, !tbaa !43
  %143 = load double, ptr %11, align 8, !tbaa !43
  %144 = fmul double %142, %143
  %145 = load double, ptr %6, align 8, !tbaa !43
  %146 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 25
  %147 = load i32, ptr %10, align 4, !tbaa !45
  %148 = sext i32 %147 to i64
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %146, i64 noundef %148) #7
  %150 = load double, ptr %149, align 8, !tbaa !43
  %151 = fmul double %145, %150
  %152 = fcmp ogt double %144, %151
  br i1 %152, label %153, label %165

153:                                              ; preds = %141
  %154 = load double, ptr %11, align 8, !tbaa !43
  %155 = load double, ptr %11, align 8, !tbaa !43
  %156 = fmul double %154, %155
  %157 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 25
  %158 = load i32, ptr %10, align 4, !tbaa !45
  %159 = sext i32 %158 to i64
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %157, i64 noundef %159) #7
  %161 = load double, ptr %160, align 8, !tbaa !43
  %162 = fdiv double %156, %161
  store double %162, ptr %6, align 8, !tbaa !43
  %163 = load i32, ptr %10, align 4, !tbaa !45
  %164 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 11
  store i32 %163, ptr %164, align 4, !tbaa !44
  br label %165

165:                                              ; preds = %153, %141
  br label %166

166:                                              ; preds = %165, %136
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  store i32 0, ptr %9, align 4
  br label %167

167:                                              ; preds = %166, %106
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  %168 = load i32, ptr %9, align 4
  switch i32 %168, label %233 [
    i32 0, label %169
    i32 4, label %170
  ]

169:                                              ; preds = %167
  br label %170

170:                                              ; preds = %169, %167
  %171 = load i32, ptr %8, align 4, !tbaa !45
  %172 = add nsw i32 %171, 1
  store i32 %172, ptr %8, align 4, !tbaa !45
  br label %76, !llvm.loop !50

173:                                              ; preds = %81
  br label %174

174:                                              ; preds = %173, %66
  %175 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 11
  %176 = load i32, ptr %175, align 4, !tbaa !44
  %177 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 41
  %178 = load i32, ptr %177, align 8, !tbaa !42
  %179 = icmp ne i32 %176, %178
  br i1 %179, label %180, label %195

180:                                              ; preds = %174
  %181 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 42
  %182 = load i8, ptr %181, align 4, !tbaa !40, !range !35, !noundef !36
  %183 = trunc i8 %182 to i1
  br i1 %183, label %184, label %189

184:                                              ; preds = %180
  %185 = load double, ptr %6, align 8, !tbaa !43
  %186 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 11
  %187 = load i32, ptr %186, align 4, !tbaa !44
  %188 = call i32 (ptr, ...) @printf(ptr noundef @.str.121, double noundef %185, i32 noundef %187)
  br label %189

189:                                              ; preds = %184, %180
  %190 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 40
  %191 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 39
  %192 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef nonnull align 8 dereferenceable(8) %191)
  %193 = load double, ptr %192, align 8, !tbaa !43
  %194 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 39
  store double %193, ptr %194, align 8, !tbaa !52
  br label %195

195:                                              ; preds = %189, %174
  %196 = load double, ptr %6, align 8, !tbaa !43
  %197 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 39
  %198 = load double, ptr %197, align 8, !tbaa !52
  %199 = fcmp oge double %196, %198
  br i1 %199, label %200, label %210

200:                                              ; preds = %195
  %201 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 33
  store i8 1, ptr %201, align 2, !tbaa !53
  %202 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 42
  %203 = load i8, ptr %202, align 4, !tbaa !40, !range !35, !noundef !36
  %204 = trunc i8 %203 to i1
  br i1 %204, label %205, label %209

205:                                              ; preds = %200
  %206 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 39
  %207 = load double, ptr %206, align 8, !tbaa !52
  %208 = call i32 (ptr, ...) @printf(ptr noundef @.str.122, double noundef %207)
  br label %209

209:                                              ; preds = %205, %200
  br label %229

210:                                              ; preds = %195
  %211 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 33
  %212 = load i8, ptr %211, align 2, !tbaa !53, !range !35, !noundef !36
  %213 = trunc i8 %212 to i1
  %214 = xor i1 %213, true
  br i1 %214, label %215, label %216

215:                                              ; preds = %210
  br label %218

216:                                              ; preds = %210
  call void @__assert_fail(ptr noundef @.str.123, ptr noundef @.str.53, i32 noundef 1613, ptr noundef @__PRETTY_FUNCTION__._ZN10HEkkPrimal17hyperChooseColumnEv) #8
  unreachable

217:                                              ; No predecessors!
  br label %218

218:                                              ; preds = %217, %215
  %219 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 33
  store i8 0, ptr %219, align 2, !tbaa !53
  %220 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 32
  store i8 1, ptr %220, align 1, !tbaa !37
  %221 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 42
  %222 = load i8, ptr %221, align 4, !tbaa !40, !range !35, !noundef !36
  %223 = trunc i8 %222 to i1
  br i1 %223, label %224, label %228

224:                                              ; preds = %218
  %225 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 39
  %226 = load double, ptr %225, align 8, !tbaa !52
  %227 = call i32 (ptr, ...) @printf(ptr noundef @.str.124, double noundef %226)
  br label %228

228:                                              ; preds = %224, %218
  br label %229

229:                                              ; preds = %228, %209
  %230 = getelementptr inbounds %class.HEkkPrimal, ptr %12, i32 0, i32 1
  %231 = load ptr, ptr %230, align 8, !tbaa !38
  call void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576) %231, i32 noundef 45, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %6) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %5) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %4) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #7
  br label %232

232:                                              ; preds = %229, %21, %16
  ret void

233:                                              ; preds = %167
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIaSaIaEEixEm(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 noundef zeroext i1 @_ZNK4HSet2inEi(ptr noundef nonnull align 8 dereferenceable(80), i32 noundef) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { noreturn nounwind "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 = { "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 nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = { inlinehint 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 #7 = { nounwind }
attributes #8 = { noreturn 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, !27, i64 336}
!10 = !{!"_ZTS10HEkkPrimal", !6, i64 0, !6, i64 8, !11, i64 16, !11, i64 20, !11, i64 24, !11, i64 28, !12, i64 32, !13, i64 40, !13, i64 48, !13, i64 56, !11, i64 64, !11, i64 68, !11, i64 72, !11, i64 76, !11, i64 80, !11, i64 84, !13, i64 88, !13, i64 96, !13, i64 104, !13, i64 112, !13, i64 120, !13, i64 128, !11, i64 136, !14, i64 144, !14, i64 168, !18, i64 192, !11, i64 216, !11, i64 220, !22, i64 224, !11, i64 248, !26, i64 256, !27, i64 336, !27, i64 337, !27, i64 338, !11, i64 340, !11, i64 344, !22, i64 352, !18, i64 376, !26, i64 400, !13, i64 480, !13, i64 488, !11, i64 496, !27, i64 500, !28, i64 504, !28, i64 680, !28, i64 856, !28, i64 1032, !28, i64 1208, !28, i64 1384, !33, i64 1560, !13, i64 1568, !13, i64 1576, !13, i64 1584, !11, i64 1592, !11, i64 1596, !13, i64 1600, !11, i64 1608, !11, i64 1612}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTS14EdgeWeightMode", !7, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = !{!"_ZTSSt6vectorISt4pairIdiESaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseISt4pairIdiESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseISt4pairIdiESaIS1_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseISt4pairIdiESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIiSaIiEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTS4HSet", !11, i64 0, !22, i64 8, !27, i64 32, !27, i64 33, !27, i64 34, !27, i64 35, !6, i64 40, !11, i64 48, !22, i64 56}
!27 = !{!"bool", !7, i64 0}
!28 = !{!"_ZTS11HVectorBaseIdE", !11, i64 0, !11, i64 4, !22, i64 8, !18, i64 32, !13, i64 56, !29, i64 64, !22, i64 88, !6, i64 112, !27, i64 120, !11, i64 124, !22, i64 128, !18, i64 152}
!29 = !{!"_ZTSSt6vectorIcSaIcEE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTS11HighsRandom", !34, i64 0}
!34 = !{!"long", !7, i64 0}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!10, !27, i64 337}
!38 = !{!10, !6, i64 8}
!39 = !{!10, !6, i64 0}
!40 = !{!10, !27, i64 500}
!41 = !{!10, !13, i64 488}
!42 = !{!10, !11, i64 496}
!43 = !{!13, !13, i64 0}
!44 = !{!10, !11, i64 68}
!45 = !{!11, !11, i64 0}
!46 = !{!27, !27, i64 0}
!47 = !{!10, !11, i64 344}
!48 = !{!7, !7, i64 0}
!49 = !{!10, !13, i64 48}
!50 = distinct !{!50, !51}
!51 = !{!"llvm.loop.mustprogress"}
!52 = !{!10, !13, i64 480}
!53 = !{!10, !27, i64 338}


; 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"

@.str.53 = external hidden unnamed_addr constant [76 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [20 x i8], align 1
@__PRETTY_FUNCTION__._ZN10HEkkPrimal17hyperChooseColumnEv = external hidden unnamed_addr constant [37 x i8], align 1
@.str.121 = external hidden unnamed_addr constant [56 x i8], align 1
@.str.122 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.123 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [38 x i8], align 1

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #0

; Function Attrs: nofree nounwind
declare noundef i32 @printf(ptr nocapture noundef readonly, ...) local_unnamed_addr #1

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

declare void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576), i32 noundef, i32 noundef) local_unnamed_addr #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 nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fabs.f64(double) #4

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10HEkkPrimal17hyperChooseColumnEv(ptr noundef nonnull align 8 dereferenceable(1616) %0) local_unnamed_addr #5 align 2 {
  %2 = getelementptr inbounds i8, ptr %0, i64 336
  %3 = load i8, ptr %2, align 8, !tbaa !5, !range !34, !noundef !35
  %4 = trunc nuw i8 %3 to i1
  br i1 %4, label %5, label %116

5:                                                ; preds = %1
  %6 = getelementptr inbounds i8, ptr %0, i64 337
  %7 = load i8, ptr %6, align 1, !tbaa !36, !range !34, !noundef !35
  %8 = trunc nuw i8 %7 to i1
  br i1 %8, label %116, label %9

9:                                                ; preds = %5
  %10 = getelementptr inbounds i8, ptr %0, i64 8
  %11 = load ptr, ptr %10, align 8, !tbaa !37
  tail call void @_ZN20HighsSimplexAnalysis17simplexTimerStartEii(ptr noundef nonnull align 8 dereferenceable(8576) %11, i32 noundef 45, i32 noundef 0)
  %12 = load ptr, ptr %0, align 8, !tbaa !38
  %13 = getelementptr inbounds i8, ptr %12, i64 10664
  %14 = getelementptr inbounds i8, ptr %12, i64 10640
  %15 = getelementptr inbounds i8, ptr %12, i64 9592
  %16 = getelementptr inbounds i8, ptr %0, i64 500
  %17 = load i8, ptr %16, align 4, !tbaa !39, !range !34, !noundef !35
  %18 = trunc nuw i8 %17 to i1
  br i1 %18, label %19, label %25

19:                                               ; preds = %9
  %20 = getelementptr inbounds i8, ptr %0, i64 488
  %21 = load double, ptr %20, align 8, !tbaa !40
  %22 = getelementptr inbounds i8, ptr %0, i64 496
  %23 = load i32, ptr %22, align 8, !tbaa !41
  %24 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.119, double noundef %21, i32 noundef %23)
  br label %25

25:                                               ; preds = %19, %9
  %26 = getelementptr inbounds i8, ptr %0, i64 488
  %27 = load double, ptr %26, align 8, !tbaa !40
  %28 = getelementptr inbounds i8, ptr %0, i64 68
  store i32 -1, ptr %28, align 4, !tbaa !42
  %29 = getelementptr inbounds i8, ptr %0, i64 496
  %30 = load i32, ptr %29, align 8, !tbaa !41
  %31 = icmp sgt i32 %30, -1
  br i1 %31, label %32, label %39

32:                                               ; preds = %25
  %33 = zext nneg i32 %30 to i64
  %34 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %33) #7
  %35 = load double, ptr %34, align 8, !tbaa !43
  %36 = fcmp une double %35, 0.000000e+00
  br i1 %36, label %37, label %39

37:                                               ; preds = %32
  %38 = load i32, ptr %29, align 8, !tbaa !41
  store i32 %38, ptr %28, align 4, !tbaa !42
  br label %39

39:                                               ; preds = %32, %37, %25
  %40 = getelementptr inbounds i8, ptr %0, i64 256
  %41 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK4HSet5countEv(ptr noundef nonnull align 8 dereferenceable(80) %40)
  %42 = load i32, ptr %41, align 4, !tbaa !44
  %.not = icmp eq i32 %42, 0
  %43 = getelementptr inbounds i8, ptr %0, i64 344
  %44 = load i32, ptr %43, align 8
  %.not3337 = icmp slt i32 %44, 1
  br i1 %.not3337, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %39
  %45 = getelementptr inbounds i8, ptr %0, i64 352
  %46 = getelementptr inbounds i8, ptr %0, i64 48
  %47 = getelementptr inbounds i8, ptr %0, i64 192
  br label %48

48:                                               ; preds = %.lr.ph, %85
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %85 ]
  %.02739 = phi double [ %27, %.lr.ph ], [ %.2, %85 ]
  %49 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %indvars.iv) #7
  %50 = load i32, ptr %49, align 4, !tbaa !44
  %51 = sext i32 %50 to i64
  %52 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %14, i64 noundef %51) #7
  %53 = load i8, ptr %52, align 1, !tbaa !45
  %54 = icmp eq i8 %53, 0
  %55 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNKSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %13, i64 noundef %51) #7
  %56 = load i8, ptr %55, align 1, !tbaa !45
  br i1 %54, label %57, label %59

57:                                               ; preds = %48
  %.not35 = icmp eq i8 %56, 0
  br i1 %.not35, label %85, label %58

58:                                               ; preds = %57
  tail call void @__assert_fail(ptr noundef nonnull @.str.120, ptr noundef nonnull @.str.53, i32 noundef 1576, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10HEkkPrimal17hyperChooseColumnEv) #8
  unreachable

59:                                               ; preds = %48
  %60 = sext i8 %56 to i32
  %61 = sub nsw i32 0, %60
  %62 = sitofp i32 %61 to double
  %63 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %51) #7
  %64 = load double, ptr %63, align 8, !tbaa !43
  %65 = fmul double %64, %62
  br i1 %.not, label %72, label %66

66:                                               ; preds = %59
  %67 = tail call noundef zeroext i1 @_ZNK4HSet2inEi(ptr noundef nonnull align 8 dereferenceable(80) %40, i32 noundef %50)
  br i1 %67, label %68, label %72

68:                                               ; preds = %66
  %69 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef %51) #7
  %70 = load double, ptr %69, align 8, !tbaa !43
  %71 = tail call double @llvm.fabs.f64(double %70)
  br label %72

72:                                               ; preds = %66, %68, %59
  %.0 = phi double [ %71, %68 ], [ %65, %66 ], [ %65, %59 ]
  %73 = load double, ptr %46, align 8, !tbaa !46
  %74 = fcmp ogt double %.0, %73
  br i1 %74, label %75, label %85

75:                                               ; preds = %72
  %76 = fmul double %.0, %.0
  %77 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %51) #7
  %78 = load double, ptr %77, align 8, !tbaa !43
  %79 = fmul double %.02739, %78
  %80 = fcmp ogt double %76, %79
  br i1 %80, label %81, label %85

81:                                               ; preds = %75
  %82 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %51) #7
  %83 = load double, ptr %82, align 8, !tbaa !43
  %84 = fdiv double %76, %83
  store i32 %50, ptr %28, align 4, !tbaa !42
  br label %85

85:                                               ; preds = %72, %81, %75, %57
  %.2 = phi double [ %.02739, %57 ], [ %84, %81 ], [ %.02739, %75 ], [ %.02739, %72 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %86 = load i32, ptr %43, align 8, !tbaa !47
  %87 = sext i32 %86 to i64
  %.not33.not = icmp slt i64 %indvars.iv, %87
  br i1 %.not33.not, label %48, label %.loopexit, !llvm.loop !48

.loopexit:                                        ; preds = %85, %39
  %.3 = phi double [ %27, %39 ], [ %.2, %85 ]
  %88 = load i32, ptr %28, align 4, !tbaa !42
  %89 = load i32, ptr %29, align 8, !tbaa !41
  %.not34 = icmp eq i32 %88, %89
  br i1 %.not34, label %.loopexit._crit_edge, label %90

.loopexit._crit_edge:                             ; preds = %.loopexit
  %.phi.trans.insert = getelementptr inbounds i8, ptr %0, i64 480
  %.pre = load double, ptr %.phi.trans.insert, align 8, !tbaa !50
  br label %99

90:                                               ; preds = %.loopexit
  %91 = load i8, ptr %16, align 4, !tbaa !39, !range !34, !noundef !35
  %92 = trunc nuw i8 %91 to i1
  br i1 %92, label %93, label %95

93:                                               ; preds = %90
  %94 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) @.str.121, double noundef %.3, i32 noundef %88)
  br label %95

95:                                               ; preds = %93, %90
  %96 = getelementptr inbounds i8, ptr %0, i64 480
  %97 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %96)
  %98 = load double, ptr %97, align 8, !tbaa !43
  store double %98, ptr %96, align 8, !tbaa !50
  br label %99

99:                                               ; preds = %.loopexit._crit_edge, %95
  %100 = phi double [ %.pre, %.loopexit._crit_edge ], [ %98, %95 ]
  %101 = fcmp ult double %.3, %100
  %102 = getelementptr inbounds i8, ptr %0, i64 338
  br i1 %101, label %106, label %103

103:                                              ; preds = %99
  store i8 1, ptr %102, align 2, !tbaa !51
  %104 = load i8, ptr %16, align 4, !tbaa !39, !range !34, !noundef !35
  %105 = trunc nuw i8 %104 to i1
  br i1 %105, label %.sink.split, label %114

106:                                              ; preds = %99
  %107 = load i8, ptr %102, align 2, !tbaa !51, !range !34, !noundef !35
  %108 = trunc nuw i8 %107 to i1
  br i1 %108, label %109, label %110

109:                                              ; preds = %106
  tail call void @__assert_fail(ptr noundef nonnull @.str.123, ptr noundef nonnull @.str.53, i32 noundef 1613, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN10HEkkPrimal17hyperChooseColumnEv) #8
  unreachable

110:                                              ; preds = %106
  store i8 0, ptr %102, align 2, !tbaa !51
  store i8 1, ptr %6, align 1, !tbaa !36
  %111 = load i8, ptr %16, align 4, !tbaa !39, !range !34, !noundef !35
  %112 = trunc nuw i8 %111 to i1
  br i1 %112, label %.sink.split, label %114

.sink.split:                                      ; preds = %110, %103
  %.str.124.sink = phi ptr [ @.str.122, %103 ], [ @.str.124, %110 ]
  %113 = tail call i32 (ptr, ...) @printf(ptr noundef nonnull dereferenceable(1) %.str.124.sink, double noundef %100)
  br label %114

114:                                              ; preds = %.sink.split, %110, %103
  %115 = load ptr, ptr %10, align 8, !tbaa !37
  tail call void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576) %115, i32 noundef 45, i32 noundef 0)
  br label %116

116:                                              ; preds = %5, %1, %114
  ret void
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIdSaIdEEixEm(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 1 dereferenceable(1) ptr @_ZNKSt6vectorIaSaIaEEixEm(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 noundef zeroext i1 @_ZNK4HSet2inEi(ptr noundef nonnull align 8 dereferenceable(80), i32 noundef) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

attributes #0 = { noreturn nounwind "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 #1 = { nofree nounwind "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 = { "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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 = { inlinehint 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 #7 = { nounwind }
attributes #8 = { noreturn 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, !26, i64 336}
!6 = !{!"_ZTS10HEkkPrimal", !7, i64 0, !7, i64 8, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !11, i64 32, !12, i64 40, !12, i64 48, !12, i64 56, !10, i64 64, !10, i64 68, !10, i64 72, !10, i64 76, !10, i64 80, !10, i64 84, !12, i64 88, !12, i64 96, !12, i64 104, !12, i64 112, !12, i64 120, !12, i64 128, !10, i64 136, !13, i64 144, !13, i64 168, !17, i64 192, !10, i64 216, !10, i64 220, !21, i64 224, !10, i64 248, !25, i64 256, !26, i64 336, !26, i64 337, !26, i64 338, !10, i64 340, !10, i64 344, !21, i64 352, !17, i64 376, !25, i64 400, !12, i64 480, !12, i64 488, !10, i64 496, !26, i64 500, !27, i64 504, !27, i64 680, !27, i64 856, !27, i64 1032, !27, i64 1208, !27, i64 1384, !32, i64 1560, !12, i64 1568, !12, i64 1576, !12, i64 1584, !10, i64 1592, !10, i64 1596, !12, i64 1600, !10, i64 1608, !10, i64 1612}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTS14EdgeWeightMode", !8, i64 0}
!12 = !{!"double", !8, i64 0}
!13 = !{!"_ZTSSt6vectorISt4pairIdiESaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSSt12_Vector_baseISt4pairIdiESaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseISt4pairIdiESaIS1_EE12_Vector_implE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseISt4pairIdiESaIS1_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!17 = !{!"_ZTSSt6vectorIdSaIdEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!21 = !{!"_ZTSSt6vectorIiSaIiEE", !22, i64 0}
!22 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!25 = !{!"_ZTS4HSet", !10, i64 0, !21, i64 8, !26, i64 32, !26, i64 33, !26, i64 34, !26, i64 35, !7, i64 40, !10, i64 48, !21, i64 56}
!26 = !{!"bool", !8, i64 0}
!27 = !{!"_ZTS11HVectorBaseIdE", !10, i64 0, !10, i64 4, !21, i64 8, !17, i64 32, !12, i64 56, !28, i64 64, !21, i64 88, !7, i64 112, !26, i64 120, !10, i64 124, !21, i64 128, !17, i64 152}
!28 = !{!"_ZTSSt6vectorIcSaIcEE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!32 = !{!"_ZTS11HighsRandom", !33, i64 0}
!33 = !{!"long", !8, i64 0}
!34 = !{i8 0, i8 2}
!35 = !{}
!36 = !{!6, !26, i64 337}
!37 = !{!6, !7, i64 8}
!38 = !{!6, !7, i64 0}
!39 = !{!6, !26, i64 500}
!40 = !{!6, !12, i64 488}
!41 = !{!6, !10, i64 496}
!42 = !{!6, !10, i64 68}
!43 = !{!12, !12, i64 0}
!44 = !{!10, !10, i64 0}
!45 = !{!8, !8, i64 0}
!46 = !{!6, !12, i64 48}
!47 = !{!6, !10, i64 344}
!48 = distinct !{!48, !49}
!49 = !{!"llvm.loop.mustprogress"}
!50 = !{!6, !12, i64 480}
!51 = !{!6, !26, i64 338}


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