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

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

; 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

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

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

; 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) #2 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) #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10HEkkPrimal11updateDevexEv(ptr noundef nonnull align 8 dereferenceable(1616) %0) #3 align 2 {
  %2 = alloca ptr, align 8
  %3 = alloca double, align 8
  %4 = alloca i32, align 4
  %5 = alloca i8, align 1
  %6 = alloca i32, align 4
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  store ptr %0, ptr %2, align 8, !tbaa !5
  %21 = load ptr, ptr %2, align 8
  %22 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 1
  %23 = load ptr, ptr %22, align 8, !tbaa !9
  call void @_ZN20HighsSimplexAnalysis17simplexTimerStartEii(ptr noundef nonnull align 8 dereferenceable(8576) %23, i32 noundef 77, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr %3) #6
  store double 0.000000e+00, ptr %3, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 4, ptr %4) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr %5) #6
  %24 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 0
  %25 = load ptr, ptr %24, align 8, !tbaa !36
  %26 = getelementptr inbounds %class.HEkk, ptr %25, i32 0, i32 18
  %27 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 45
  %28 = getelementptr inbounds %class.HVectorBase, ptr %27, i32 0, i32 1
  %29 = load i32, ptr %28, align 4, !tbaa !37
  %30 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 3
  %31 = load i32, ptr %30, align 4, !tbaa !38
  %32 = call noundef zeroext i1 @_ZNK11HSimplexNla15sparseLoopStyleEiiRi(ptr noundef nonnull align 8 dereferenceable(2864) %26, i32 noundef %29, i32 noundef %31, ptr noundef nonnull align 4 dereferenceable(4) %4)
  %33 = zext i1 %32 to i8
  store i8 %33, ptr %5, align 1, !tbaa !39
  call void @llvm.lifetime.start.p0(i64 4, ptr %6) #6
  store i32 0, ptr %6, align 4, !tbaa !40
  br label %34

34:                                               ; preds = %78, %1
  %35 = load i32, ptr %6, align 4, !tbaa !40
  %36 = load i32, ptr %4, align 4, !tbaa !40
  %37 = icmp slt i32 %35, %36
  br i1 %37, label %39, label %38

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

39:                                               ; preds = %34
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #6
  %40 = load i8, ptr %5, align 1, !tbaa !39, !range !41, !noundef !42
  %41 = trunc i8 %40 to i1
  br i1 %41, label %42, label %49

42:                                               ; preds = %39
  %43 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 45
  %44 = getelementptr inbounds %class.HVectorBase, ptr %43, i32 0, i32 2
  %45 = load i32, ptr %6, align 4, !tbaa !40
  %46 = sext i32 %45 to i64
  %47 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %46) #6
  %48 = load i32, ptr %47, align 4, !tbaa !40
  br label %51

49:                                               ; preds = %39
  %50 = load i32, ptr %6, align 4, !tbaa !40
  br label %51

51:                                               ; preds = %49, %42
  %52 = phi i32 [ %48, %42 ], [ %50, %49 ]
  store i32 %52, ptr %7, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #6
  %53 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 0
  %54 = load ptr, ptr %53, align 8, !tbaa !36
  %55 = getelementptr inbounds %class.HEkk, ptr %54, i32 0, i32 10
  %56 = getelementptr inbounds %struct.SimplexBasis, ptr %55, i32 0, i32 0
  %57 = load i32, ptr %7, align 4, !tbaa !40
  %58 = sext i32 %57 to i64
  %59 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %58) #6
  %60 = load i32, ptr %59, align 4, !tbaa !40
  store i32 %60, ptr %8, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #6
  %61 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 28
  %62 = load i32, ptr %8, align 4, !tbaa !40
  %63 = sext i32 %62 to i64
  %64 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %63) #6
  %65 = load i32, ptr %64, align 4, !tbaa !40
  %66 = sitofp i32 %65 to double
  %67 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 45
  %68 = getelementptr inbounds %class.HVectorBase, ptr %67, i32 0, i32 3
  %69 = load i32, ptr %7, align 4, !tbaa !40
  %70 = sext i32 %69 to i64
  %71 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %70) #6
  %72 = load double, ptr %71, align 8, !tbaa !35
  %73 = fmul double %66, %72
  store double %73, ptr %9, align 8, !tbaa !35
  %74 = load double, ptr %9, align 8, !tbaa !35
  %75 = load double, ptr %9, align 8, !tbaa !35
  %76 = load double, ptr %3, align 8, !tbaa !35
  %77 = call double @llvm.fmuladd.f64(double %74, double %75, double %76)
  store double %77, ptr %3, align 8, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #6
  br label %78

78:                                               ; preds = %51
  %79 = load i32, ptr %6, align 4, !tbaa !40
  %80 = add nsw i32 %79, 1
  store i32 %80, ptr %6, align 4, !tbaa !40
  br label %34, !llvm.loop !43

81:                                               ; preds = %38
  %82 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 28
  %83 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 11
  %84 = load i32, ptr %83, 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) %82, i64 noundef %85) #6
  %87 = load i32, ptr %86, align 4, !tbaa !40
  %88 = sitofp i32 %87 to double
  %89 = load double, ptr %3, align 8, !tbaa !35
  %90 = call double @llvm.fmuladd.f64(double %88, double 1.000000e+00, double %89)
  store double %90, ptr %3, align 8, !tbaa !35
  %91 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 25
  %92 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 11
  %93 = load i32, ptr %92, align 4, !tbaa !45
  %94 = sext i32 %93 to i64
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %91, i64 noundef %94) #6
  %96 = load double, ptr %95, align 8, !tbaa !35
  %97 = load double, ptr %3, align 8, !tbaa !35
  %98 = fmul double 3.000000e+00, %97
  %99 = fcmp ogt double %96, %98
  br i1 %99, label %100, label %104

100:                                              ; preds = %81
  %101 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 27
  %102 = load i32, ptr %101, align 4, !tbaa !46
  %103 = add nsw i32 %102, 1
  store i32 %103, ptr %101, align 4, !tbaa !46
  br label %104

104:                                              ; preds = %100, %81
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #6
  %105 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 45
  %106 = getelementptr inbounds %class.HVectorBase, ptr %105, i32 0, i32 3
  %107 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 13
  %108 = load i32, ptr %107, align 4, !tbaa !47
  %109 = sext i32 %108 to i64
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %106, i64 noundef %109) #6
  %111 = load double, ptr %110, align 8, !tbaa !35
  store double %111, ptr %10, align 8, !tbaa !35
  %112 = load double, ptr %10, align 8, !tbaa !35
  %113 = load double, ptr %10, align 8, !tbaa !35
  %114 = fmul double %112, %113
  %115 = load double, ptr %3, align 8, !tbaa !35
  %116 = fdiv double %115, %114
  store double %116, ptr %3, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #6
  store i32 0, ptr %11, align 4, !tbaa !40
  br label %117

117:                                              ; preds = %164, %104
  %118 = load i32, ptr %11, align 4, !tbaa !40
  %119 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 44
  %120 = getelementptr inbounds %class.HVectorBase, ptr %119, i32 0, i32 1
  %121 = load i32, ptr %120, align 4, !tbaa !48
  %122 = icmp slt i32 %118, %121
  br i1 %122, label %124, label %123

123:                                              ; preds = %117
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #6
  br label %167

124:                                              ; preds = %117
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #6
  %125 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 44
  %126 = getelementptr inbounds %class.HVectorBase, ptr %125, i32 0, i32 2
  %127 = load i32, ptr %11, align 4, !tbaa !40
  %128 = sext i32 %127 to i64
  %129 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %126, i64 noundef %128) #6
  %130 = load i32, ptr %129, align 4, !tbaa !40
  store i32 %130, ptr %12, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #6
  %131 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 44
  %132 = getelementptr inbounds %class.HVectorBase, ptr %131, i32 0, i32 3
  %133 = load i32, ptr %12, align 4, !tbaa !40
  %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 !35
  store double %136, ptr %13, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #6
  %137 = load double, ptr %3, align 8, !tbaa !35
  %138 = load double, ptr %13, align 8, !tbaa !35
  %139 = fmul double %137, %138
  %140 = load double, ptr %13, align 8, !tbaa !35
  %141 = fmul double %139, %140
  store double %141, ptr %14, align 8, !tbaa !35
  %142 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 28
  %143 = load i32, ptr %12, align 4, !tbaa !40
  %144 = sext i32 %143 to i64
  %145 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %142, i64 noundef %144) #6
  %146 = load i32, ptr %145, align 4, !tbaa !40
  %147 = sitofp i32 %146 to double
  %148 = load double, ptr %14, align 8, !tbaa !35
  %149 = call double @llvm.fmuladd.f64(double %147, double 1.000000e+00, double %148)
  store double %149, ptr %14, align 8, !tbaa !35
  %150 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 25
  %151 = load i32, ptr %12, align 4, !tbaa !40
  %152 = sext i32 %151 to i64
  %153 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %152) #6
  %154 = load double, ptr %153, align 8, !tbaa !35
  %155 = load double, ptr %14, align 8, !tbaa !35
  %156 = fcmp olt double %154, %155
  br i1 %156, label %157, label %163

157:                                              ; preds = %124
  %158 = load double, ptr %14, align 8, !tbaa !35
  %159 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 25
  %160 = load i32, ptr %12, align 4, !tbaa !40
  %161 = sext i32 %160 to i64
  %162 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef %161) #6
  store double %158, ptr %162, align 8, !tbaa !35
  br label %163

163:                                              ; preds = %157, %124
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #6
  br label %164

164:                                              ; preds = %163
  %165 = load i32, ptr %11, align 4, !tbaa !40
  %166 = add nsw i32 %165, 1
  store i32 %166, ptr %11, align 4, !tbaa !40
  br label %117, !llvm.loop !49

167:                                              ; preds = %123
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #6
  store i32 0, ptr %15, align 4, !tbaa !40
  br label %168

168:                                              ; preds = %219, %167
  %169 = load i32, ptr %15, align 4, !tbaa !40
  %170 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 43
  %171 = getelementptr inbounds %class.HVectorBase, ptr %170, i32 0, i32 1
  %172 = load i32, ptr %171, align 4, !tbaa !50
  %173 = icmp slt i32 %169, %172
  br i1 %173, label %175, label %174

174:                                              ; preds = %168
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #6
  br label %222

175:                                              ; preds = %168
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #6
  %176 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 43
  %177 = getelementptr inbounds %class.HVectorBase, ptr %176, i32 0, i32 2
  %178 = load i32, ptr %15, align 4, !tbaa !40
  %179 = sext i32 %178 to i64
  %180 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %177, i64 noundef %179) #6
  %181 = load i32, ptr %180, align 4, !tbaa !40
  store i32 %181, ptr %16, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #6
  %182 = load i32, ptr %16, align 4, !tbaa !40
  %183 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 2
  %184 = load i32, ptr %183, align 8, !tbaa !51
  %185 = add nsw i32 %182, %184
  store i32 %185, ptr %17, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #6
  %186 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 43
  %187 = getelementptr inbounds %class.HVectorBase, ptr %186, i32 0, i32 3
  %188 = load i32, ptr %16, align 4, !tbaa !40
  %189 = sext i32 %188 to i64
  %190 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %187, i64 noundef %189) #6
  %191 = load double, ptr %190, align 8, !tbaa !35
  store double %191, ptr %18, align 8, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  %192 = load double, ptr %3, align 8, !tbaa !35
  %193 = load double, ptr %18, align 8, !tbaa !35
  %194 = fmul double %192, %193
  %195 = load double, ptr %18, align 8, !tbaa !35
  %196 = fmul double %194, %195
  store double %196, ptr %19, align 8, !tbaa !35
  %197 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 28
  %198 = load i32, ptr %17, align 4, !tbaa !40
  %199 = sext i32 %198 to i64
  %200 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %197, i64 noundef %199) #6
  %201 = load i32, ptr %200, align 4, !tbaa !40
  %202 = sitofp i32 %201 to double
  %203 = load double, ptr %19, align 8, !tbaa !35
  %204 = call double @llvm.fmuladd.f64(double %202, double 1.000000e+00, double %203)
  store double %204, ptr %19, align 8, !tbaa !35
  %205 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 25
  %206 = load i32, ptr %17, align 4, !tbaa !40
  %207 = sext i32 %206 to i64
  %208 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %205, i64 noundef %207) #6
  %209 = load double, ptr %208, align 8, !tbaa !35
  %210 = load double, ptr %19, align 8, !tbaa !35
  %211 = fcmp olt double %209, %210
  br i1 %211, label %212, label %218

212:                                              ; preds = %175
  %213 = load double, ptr %19, align 8, !tbaa !35
  %214 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 25
  %215 = load i32, ptr %17, align 4, !tbaa !40
  %216 = sext i32 %215 to i64
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %214, i64 noundef %216) #6
  store double %213, ptr %217, align 8, !tbaa !35
  br label %218

218:                                              ; preds = %212, %175
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #6
  br label %219

219:                                              ; preds = %218
  %220 = load i32, ptr %15, align 4, !tbaa !40
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr %15, align 4, !tbaa !40
  br label %168, !llvm.loop !52

222:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  store double 1.000000e+00, ptr %20, align 8, !tbaa !35
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %3)
  %224 = load double, ptr %223, align 8, !tbaa !35
  %225 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 25
  %226 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 14
  %227 = load i32, ptr %226, align 8, !tbaa !53
  %228 = sext i32 %227 to i64
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %225, i64 noundef %228) #6
  store double %224, ptr %229, align 8, !tbaa !35
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  %230 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 25
  %231 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 11
  %232 = load i32, ptr %231, align 4, !tbaa !45
  %233 = sext i32 %232 to i64
  %234 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %230, i64 noundef %233) #6
  store double 1.000000e+00, ptr %234, align 8, !tbaa !35
  %235 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 26
  %236 = load i32, ptr %235, align 8, !tbaa !54
  %237 = add nsw i32 %236, 1
  store i32 %237, ptr %235, align 8, !tbaa !54
  %238 = getelementptr inbounds %class.HEkkPrimal, ptr %21, i32 0, i32 1
  %239 = load ptr, ptr %238, align 8, !tbaa !9
  call void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576) %239, i32 noundef 77, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr %5) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr %4) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %3) #6
  ret void
}

; 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)) #4

declare noundef zeroext i1 @_ZNK11HSimplexNla15sparseLoopStyleEiiRi(ptr noundef nonnull align 8 dereferenceable(2864), i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) #1

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

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 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 #3 = { 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 #4 = { 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 #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !6, i64 8}
!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 = !{!13, !13, i64 0}
!36 = !{!10, !6, i64 0}
!37 = !{!10, !11, i64 860}
!38 = !{!10, !11, i64 20}
!39 = !{!27, !27, i64 0}
!40 = !{!11, !11, i64 0}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = !{!10, !11, i64 68}
!46 = !{!10, !11, i64 220}
!47 = !{!10, !11, i64 76}
!48 = !{!10, !11, i64 684}
!49 = distinct !{!49, !44}
!50 = !{!10, !11, i64 508}
!51 = !{!10, !11, i64 16}
!52 = distinct !{!52, !44}
!53 = !{!10, !11, i64 80}
!54 = !{!10, !11, i64 216}


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

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

; 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

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

; 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 #2 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 #2 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZN10HEkkPrimal11updateDevexEv(ptr noundef nonnull align 8 dereferenceable(1616) %0) local_unnamed_addr #3 align 2 {
  %2 = alloca double, align 8
  %3 = alloca i32, align 4
  %4 = alloca double, align 8
  %5 = getelementptr inbounds i8, ptr %0, i64 8
  %6 = load ptr, ptr %5, align 8, !tbaa !5
  tail call void @_ZN20HighsSimplexAnalysis17simplexTimerStartEii(ptr noundef nonnull align 8 dereferenceable(8576) %6, i32 noundef 77, i32 noundef 0)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %3) #6
  %7 = load ptr, ptr %0, align 8, !tbaa !34
  %8 = getelementptr inbounds i8, ptr %7, i64 11064
  %9 = getelementptr inbounds i8, ptr %0, i64 860
  %10 = load i32, ptr %9, align 4, !tbaa !35
  %11 = getelementptr inbounds i8, ptr %0, i64 20
  %12 = load i32, ptr %11, align 4, !tbaa !36
  %13 = call noundef zeroext i1 @_ZNK11HSimplexNla15sparseLoopStyleEiiRi(ptr noundef nonnull align 8 dereferenceable(2864) %8, i32 noundef %10, i32 noundef %12, ptr noundef nonnull align 4 dereferenceable(4) %3)
  %14 = load i32, ptr %3, align 4, !tbaa !37
  %15 = icmp sgt i32 %14, 0
  br i1 %15, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %1
  %16 = getelementptr inbounds i8, ptr %0, i64 864
  %17 = getelementptr inbounds i8, ptr %0, i64 224
  %18 = getelementptr inbounds i8, ptr %0, i64 888
  br i1 %13, label %.lr.ph.split.us, label %.lr.ph.split

.lr.ph.split.us:                                  ; preds = %.lr.ph, %.lr.ph.split.us
  %19 = phi double [ %34, %.lr.ph.split.us ], [ 0.000000e+00, %.lr.ph ]
  %indvars.iv50 = phi i64 [ %indvars.iv.next51, %.lr.ph.split.us ], [ 0, %.lr.ph ]
  %20 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %16, i64 noundef %indvars.iv50) #6
  %21 = load i32, ptr %20, align 4, !tbaa !37
  %22 = load ptr, ptr %0, align 8, !tbaa !34
  %23 = getelementptr inbounds i8, ptr %22, i64 10616
  %24 = sext i32 %21 to i64
  %25 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %23, i64 noundef %24) #6
  %26 = load i32, ptr %25, align 4, !tbaa !37
  %27 = sext i32 %26 to i64
  %28 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %27) #6
  %29 = load i32, ptr %28, align 4, !tbaa !37
  %30 = sitofp i32 %29 to double
  %31 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %24) #6
  %32 = load double, ptr %31, align 8, !tbaa !38
  %33 = fmul double %32, %30
  %34 = call double @llvm.fmuladd.f64(double %33, double %33, double %19)
  %indvars.iv.next51 = add nuw nsw i64 %indvars.iv50, 1
  %35 = load i32, ptr %3, align 4, !tbaa !37
  %36 = sext i32 %35 to i64
  %37 = icmp slt i64 %indvars.iv.next51, %36
  br i1 %37, label %.lr.ph.split.us, label %._crit_edge, !llvm.loop !39

._crit_edge:                                      ; preds = %.lr.ph.split, %.lr.ph.split.us, %1
  %38 = phi double [ 0.000000e+00, %1 ], [ %34, %.lr.ph.split.us ], [ %66, %.lr.ph.split ]
  %39 = getelementptr inbounds i8, ptr %0, i64 224
  %40 = getelementptr inbounds i8, ptr %0, i64 68
  %41 = load i32, ptr %40, align 4, !tbaa !41
  %42 = sext i32 %41 to i64
  %43 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %42) #6
  %44 = load i32, ptr %43, align 4, !tbaa !37
  %45 = sitofp i32 %44 to double
  %46 = fadd double %38, %45
  %47 = getelementptr inbounds i8, ptr %0, i64 192
  %48 = load i32, ptr %40, align 4, !tbaa !41
  %49 = sext i32 %48 to i64
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %49) #6
  %51 = load double, ptr %50, align 8, !tbaa !38
  %52 = fmul double %46, 3.000000e+00
  %53 = fcmp ogt double %51, %52
  br i1 %53, label %70, label %74

.lr.ph.split:                                     ; preds = %.lr.ph, %.lr.ph.split
  %54 = phi double [ %66, %.lr.ph.split ], [ 0.000000e+00, %.lr.ph ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph.split ], [ 0, %.lr.ph ]
  %55 = load ptr, ptr %0, align 8, !tbaa !34
  %56 = getelementptr inbounds i8, ptr %55, i64 10616
  %57 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %indvars.iv) #6
  %58 = load i32, ptr %57, align 4, !tbaa !37
  %59 = sext i32 %58 to i64
  %60 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %17, i64 noundef %59) #6
  %61 = load i32, ptr %60, align 4, !tbaa !37
  %62 = sitofp i32 %61 to double
  %63 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %18, i64 noundef %indvars.iv) #6
  %64 = load double, ptr %63, align 8, !tbaa !38
  %65 = fmul double %64, %62
  %66 = call double @llvm.fmuladd.f64(double %65, double %65, double %54)
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %67 = load i32, ptr %3, align 4, !tbaa !37
  %68 = sext i32 %67 to i64
  %69 = icmp slt i64 %indvars.iv.next, %68
  br i1 %69, label %.lr.ph.split, label %._crit_edge, !llvm.loop !39

70:                                               ; preds = %._crit_edge
  %71 = getelementptr inbounds i8, ptr %0, i64 220
  %72 = load i32, ptr %71, align 4, !tbaa !42
  %73 = add nsw i32 %72, 1
  store i32 %73, ptr %71, align 4, !tbaa !42
  br label %74

74:                                               ; preds = %70, %._crit_edge
  %75 = getelementptr inbounds i8, ptr %0, i64 888
  %76 = getelementptr inbounds i8, ptr %0, i64 76
  %77 = load i32, ptr %76, align 4, !tbaa !43
  %78 = sext i32 %77 to i64
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %75, i64 noundef %78) #6
  %80 = load double, ptr %79, align 8, !tbaa !38
  %81 = fmul double %80, %80
  %82 = fdiv double %46, %81
  store double %82, ptr %2, align 8, !tbaa !38
  %83 = getelementptr inbounds i8, ptr %0, i64 684
  %84 = load i32, ptr %83, align 4, !tbaa !44
  %85 = icmp sgt i32 %84, 0
  br i1 %85, label %.lr.ph44, label %.preheader

.lr.ph44:                                         ; preds = %74
  %86 = getelementptr inbounds i8, ptr %0, i64 688
  %87 = getelementptr inbounds i8, ptr %0, i64 712
  br label %94

.preheader:                                       ; preds = %111, %74
  %88 = getelementptr inbounds i8, ptr %0, i64 508
  %89 = load i32, ptr %88, align 4, !tbaa !45
  %90 = icmp sgt i32 %89, 0
  br i1 %90, label %.lr.ph46, label %._crit_edge47

.lr.ph46:                                         ; preds = %.preheader
  %91 = getelementptr inbounds i8, ptr %0, i64 512
  %92 = getelementptr inbounds i8, ptr %0, i64 16
  %93 = getelementptr inbounds i8, ptr %0, i64 536
  br label %128

94:                                               ; preds = %.lr.ph44, %111
  %indvars.iv53 = phi i64 [ 0, %.lr.ph44 ], [ %indvars.iv.next54, %111 ]
  %95 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %86, i64 noundef %indvars.iv53) #6
  %96 = load i32, ptr %95, align 4, !tbaa !37
  %97 = sext i32 %96 to i64
  %98 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %87, i64 noundef %97) #6
  %99 = load double, ptr %98, align 8, !tbaa !38
  %100 = fmul double %99, %82
  %101 = fmul double %99, %100
  %102 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %97) #6
  %103 = load i32, ptr %102, align 4, !tbaa !37
  %104 = sitofp i32 %103 to double
  %105 = fadd double %101, %104
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %97) #6
  %107 = load double, ptr %106, align 8, !tbaa !38
  %108 = fcmp olt double %107, %105
  br i1 %108, label %109, label %111

109:                                              ; preds = %94
  %110 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %97) #6
  store double %105, ptr %110, align 8, !tbaa !38
  br label %111

111:                                              ; preds = %109, %94
  %indvars.iv.next54 = add nuw nsw i64 %indvars.iv53, 1
  %112 = load i32, ptr %83, align 4, !tbaa !44
  %113 = sext i32 %112 to i64
  %114 = icmp slt i64 %indvars.iv.next54, %113
  br i1 %114, label %94, label %.preheader, !llvm.loop !46

._crit_edge47:                                    ; preds = %148, %.preheader
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #6
  store double 1.000000e+00, ptr %4, align 8, !tbaa !38
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %2)
  %116 = load double, ptr %115, align 8, !tbaa !38
  %117 = getelementptr inbounds i8, ptr %0, i64 80
  %118 = load i32, ptr %117, align 8, !tbaa !47
  %119 = sext i32 %118 to i64
  %120 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %119) #6
  store double %116, ptr %120, align 8, !tbaa !38
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #6
  %121 = load i32, ptr %40, align 4, !tbaa !41
  %122 = sext i32 %121 to i64
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %122) #6
  store double 1.000000e+00, ptr %123, align 8, !tbaa !38
  %124 = getelementptr inbounds i8, ptr %0, i64 216
  %125 = load i32, ptr %124, align 8, !tbaa !48
  %126 = add nsw i32 %125, 1
  store i32 %126, ptr %124, align 8, !tbaa !48
  %127 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN20HighsSimplexAnalysis16simplexTimerStopEii(ptr noundef nonnull align 8 dereferenceable(8576) %127, i32 noundef 77, i32 noundef 0)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %3) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) #6
  ret void

128:                                              ; preds = %.lr.ph46, %148
  %indvars.iv56 = phi i64 [ 0, %.lr.ph46 ], [ %indvars.iv.next57, %148 ]
  %129 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %91, i64 noundef %indvars.iv56) #6
  %130 = load i32, ptr %129, align 4, !tbaa !37
  %131 = load i32, ptr %92, align 8, !tbaa !49
  %132 = add nsw i32 %131, %130
  %133 = sext i32 %130 to i64
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %93, i64 noundef %133) #6
  %135 = load double, ptr %134, align 8, !tbaa !38
  %136 = fmul double %135, %82
  %137 = fmul double %135, %136
  %138 = sext i32 %132 to i64
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %138) #6
  %140 = load i32, ptr %139, align 4, !tbaa !37
  %141 = sitofp i32 %140 to double
  %142 = fadd double %137, %141
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %138) #6
  %144 = load double, ptr %143, align 8, !tbaa !38
  %145 = fcmp olt double %144, %142
  br i1 %145, label %146, label %148

146:                                              ; preds = %128
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %47, i64 noundef %138) #6
  store double %142, ptr %147, align 8, !tbaa !38
  br label %148

148:                                              ; preds = %146, %128
  %indvars.iv.next57 = add nuw nsw i64 %indvars.iv56, 1
  %149 = load i32, ptr %88, align 4, !tbaa !45
  %150 = sext i32 %149 to i64
  %151 = icmp slt i64 %indvars.iv.next57, %150
  br i1 %151, label %128, label %._crit_edge47, !llvm.loop !50
}

; 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 #4

declare noundef zeroext i1 @_ZNK11HSimplexNla15sparseLoopStyleEiiRi(ptr noundef nonnull align 8 dereferenceable(2864), i32 noundef, i32 noundef, ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #1

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #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 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 #3 = { 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 #4 = { 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 #5 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 8}
!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 = !{!6, !7, i64 0}
!35 = !{!6, !10, i64 860}
!36 = !{!6, !10, i64 20}
!37 = !{!10, !10, i64 0}
!38 = !{!12, !12, i64 0}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = !{!6, !10, i64 68}
!42 = !{!6, !10, i64 220}
!43 = !{!6, !10, i64 76}
!44 = !{!6, !10, i64 684}
!45 = !{!6, !10, i64 508}
!46 = distinct !{!46, !40}
!47 = !{!6, !10, i64 80}
!48 = !{!6, !10, i64 216}
!49 = !{!6, !10, i64 16}
!50 = distinct !{!50, !40}


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass