; LLVM IR from ERGO-Code/HiGHS :: src/util/HFactorRefactor.ll (ZN7HFactor7rebuildEP15HighsTimerClock)

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

%"class.std::vector.17" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.HVectorBase = type { i32, i32, %"class.std::vector", %"class.std::vector.10", double, %"class.std::vector.15", %"class.std::vector", ptr, i8, i32, %"class.std::vector", %"class.std::vector.10" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = 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.HFactor = type { double, double, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %struct.RefactorInfo, i32, i32, i32, i32, i32, i32, i32, double, i8, ptr, ptr, ptr, ptr, double, double, i32, double, %"class.std::unique_ptr", %struct.HighsLogOptions, i8, i8, i32, i32, ptr, i32, %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.15", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", i32, i32, %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %"class.std::vector.10", %"class.std::vector", %"class.std::vector", %"class.std::vector", %"class.std::vector.10", %class.HVectorBase }
%struct.RefactorInfo = type { i8, %"class.std::vector", %"class.std::vector", %"class.std::vector.3", double }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = 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.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.9" }
%"struct.std::_Head_base.9" = type { 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 } }

@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [78 x i8], align 1
@__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock = external hidden unnamed_addr constant [45 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [30 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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7HFactor7rebuildEP15HighsTimerClock(ptr noundef nonnull align 8 dereferenceable(1912) %0, ptr noundef %1) #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca i32, align 4
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca i8, align 1
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca %"class.std::vector.17", align 8
  %10 = alloca i8, align 1
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i8, align 1
  %14 = alloca i8, align 1
  %15 = alloca i8, align 1
  %16 = alloca i8, align 1
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i8, align 1
  %22 = alloca %"struct.std::_Bit_reference", align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca double, align 8
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca %"struct.std::_Bit_reference", align 8
  %40 = alloca double, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %"struct.std::_Bit_reference", align 8
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca i32, align 4
  %51 = alloca %"class.std::vector.17", align 8
  %52 = alloca double, align 8
  %53 = alloca %class.HVectorBase, align 8
  %54 = alloca i32, align 4
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i8, align 1
  %58 = alloca %"struct.std::_Bit_reference", align 8
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca i32, align 4
  %63 = alloca %"struct.std::_Bit_reference", align 8
  %64 = alloca double, align 8
  %65 = alloca i32, align 4
  %66 = alloca i32, align 4
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca i32, align 4
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca i32, align 4
  %73 = alloca i32, align 4
  %74 = alloca %"struct.std::_Bit_reference", align 8
  %75 = alloca double, align 8
  %76 = alloca i32, align 4
  %77 = alloca %"struct.std::_Bit_reference", align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  %78 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %6) #7
  store i8 0, ptr %6, align 1, !tbaa !9
  %79 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %80 = getelementptr inbounds %struct.RefactorInfo, ptr %79, i32 0, i32 0
  %81 = load i8, ptr %80, align 8, !tbaa !11, !range !42, !noundef !43
  %82 = trunc i8 %81 to i1
  br i1 %82, label %83, label %84

83:                                               ; preds = %2
  br label %86

84:                                               ; preds = %2
  call void @__assert_fail(ptr noundef @.str.51, ptr noundef @.str.52, i32 noundef 33, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

85:                                               ; No predecessors!
  br label %86

86:                                               ; preds = %85, %83
  call void @_ZN7HFactor7luClearEv(ptr noundef nonnull align 8 dereferenceable(1912) %78)
  %87 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 31
  store i32 0, ptr %87, align 8, !tbaa !44
  %88 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 7
  store i32 0, ptr %88, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 4, ptr %7) #7
  %89 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %90 = load i32, ptr %89, align 8, !tbaa !46
  store i32 %90, ptr %7, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %8) #7
  store i32 0, ptr %8, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 40, ptr %9) #7
  call void @_ZNSt6vectorIbSaIbEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #7
  %91 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %92 = load i32, ptr %91, align 8, !tbaa !46
  %93 = sext i32 %92 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  store i8 0, ptr %10, align 1, !tbaa !9
  invoke void @_ZNSt6vectorIbSaIbEE6assignEmRKb(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %93, ptr noundef nonnull align 1 dereferenceable(1) %10)
          to label %94 unwind label %108

94:                                               ; preds = %86
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  store i8 0, ptr %13, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #7
  store i8 0, ptr %14, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #7
  store i8 0, ptr %15, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  store i8 0, ptr %16, align 1, !tbaa !9
  %95 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %96 = getelementptr inbounds %struct.RefactorInfo, ptr %95, i32 0, i32 4
  %97 = load double, ptr %96, align 8, !tbaa !48
  %98 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 1
  store double %97, ptr %98, align 8, !tbaa !49
  %99 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %100 = getelementptr inbounds %struct.RefactorInfo, ptr %99, i32 0, i32 1
  %101 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %100) #7
  %102 = trunc i64 %101 to i32
  %103 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %104 = load i32, ptr %103, align 8, !tbaa !46
  %105 = icmp sge i32 %102, %104
  br i1 %105, label %106, label %107

106:                                              ; preds = %94
  br label %113

107:                                              ; preds = %94
  call void @__assert_fail(ptr noundef @.str.53, ptr noundef @.str.52, i32 noundef 55, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

108:                                              ; preds = %86
  %109 = landingpad { ptr, i32 }
          cleanup
  %110 = extractvalue { ptr, i32 } %109, 0
  store ptr %110, ptr %11, align 8
  %111 = extractvalue { ptr, i32 } %109, 1
  store i32 %111, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  br label %1139

112:                                              ; No predecessors!
  br label %113

113:                                              ; preds = %112, %106
  %114 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %115 = getelementptr inbounds %struct.RefactorInfo, ptr %114, i32 0, i32 2
  %116 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %115) #7
  %117 = trunc i64 %116 to i32
  %118 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %119 = load i32, ptr %118, align 8, !tbaa !46
  %120 = icmp sge i32 %117, %119
  br i1 %120, label %121, label %122

121:                                              ; preds = %113
  br label %124

122:                                              ; preds = %113
  call void @__assert_fail(ptr noundef @.str.54, ptr noundef @.str.52, i32 noundef 56, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

123:                                              ; No predecessors!
  br label %124

124:                                              ; preds = %123, %121
  %125 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %126 = getelementptr inbounds %struct.RefactorInfo, ptr %125, i32 0, i32 3
  %127 = call noundef i64 @_ZNKSt6vectorIaSaIaEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %126) #7
  %128 = trunc i64 %127 to i32
  %129 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %130 = load i32, ptr %129, align 8, !tbaa !46
  %131 = icmp sge i32 %128, %130
  br i1 %131, label %132, label %133

132:                                              ; preds = %124
  br label %135

133:                                              ; preds = %124
  call void @__assert_fail(ptr noundef @.str.55, ptr noundef @.str.52, i32 noundef 57, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

134:                                              ; No predecessors!
  br label %135

135:                                              ; preds = %134, %132
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !47
  br label %136

136:                                              ; preds = %635, %135
  %137 = load i32, ptr %17, align 4, !tbaa !47
  %138 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %139 = load i32, ptr %138, align 8, !tbaa !46
  %140 = icmp slt i32 %137, %139
  br i1 %140, label %142, label %141

141:                                              ; preds = %136
  store i32 2, ptr %18, align 4
  br label %643

142:                                              ; preds = %136
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %143 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %144 = getelementptr inbounds %struct.RefactorInfo, ptr %143, i32 0, i32 1
  %145 = load i32, ptr %17, align 4, !tbaa !47
  %146 = sext i32 %145 to i64
  %147 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %144, i64 noundef %146) #7
  %148 = load i32, ptr %147, align 4, !tbaa !47
  store i32 %148, ptr %19, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %149 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %150 = getelementptr inbounds %struct.RefactorInfo, ptr %149, i32 0, i32 2
  %151 = load i32, ptr %17, align 4, !tbaa !47
  %152 = sext i32 %151 to i64
  %153 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %150, i64 noundef %152) #7
  %154 = load i32, ptr %153, align 4, !tbaa !47
  store i32 %154, ptr %20, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #7
  %155 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %156 = getelementptr inbounds %struct.RefactorInfo, ptr %155, i32 0, i32 3
  %157 = load i32, ptr %17, align 4, !tbaa !47
  %158 = sext i32 %157 to i64
  %159 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %156, i64 noundef %158) #7
  %160 = load i8, ptr %159, align 1, !tbaa !50
  store i8 %160, ptr %21, align 1, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #7
  %161 = load i32, ptr %19, align 4, !tbaa !47
  %162 = sext i32 %161 to i64
  %163 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %162)
          to label %164 unwind label %173

164:                                              ; preds = %142
  %165 = getelementptr inbounds { ptr, i64 }, ptr %22, i32 0, i32 0
  %166 = extractvalue { ptr, i64 } %163, 0
  store ptr %166, ptr %165, align 8
  %167 = getelementptr inbounds { ptr, i64 }, ptr %22, i32 0, i32 1
  %168 = extractvalue { ptr, i64 } %163, 1
  store i64 %168, ptr %167, align 8
  %169 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %22) #7
  %170 = xor i1 %169, true
  br i1 %170, label %171, label %172

171:                                              ; preds = %164
  br label %178

172:                                              ; preds = %164
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.52, i32 noundef 62, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

173:                                              ; preds = %142
  %174 = landingpad { ptr, i32 }
          cleanup
  %175 = extractvalue { ptr, i32 } %174, 0
  store ptr %175, ptr %11, align 8
  %176 = extractvalue { ptr, i32 } %174, 1
  store i32 %176, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  br label %642

177:                                              ; No predecessors!
  br label %178

178:                                              ; preds = %177, %171
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #7
  %179 = load i8, ptr %21, align 1, !tbaa !50
  %180 = sext i8 %179 to i32
  %181 = icmp eq i32 %180, 0
  br i1 %181, label %186, label %182

182:                                              ; preds = %178
  %183 = load i8, ptr %21, align 1, !tbaa !50
  %184 = sext i8 %183 to i32
  %185 = icmp eq i32 %184, 1
  br i1 %185, label %186, label %293

186:                                              ; preds = %182, %178
  %187 = load i8, ptr %21, align 1, !tbaa !50
  %188 = sext i8 %187 to i32
  %189 = icmp eq i32 %188, 0
  br i1 %189, label %190, label %202

190:                                              ; preds = %186
  %191 = load i32, ptr %20, align 4, !tbaa !47
  %192 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 12
  %193 = load i32, ptr %192, align 4, !tbaa !51
  %194 = icmp sge i32 %191, %193
  br i1 %194, label %195, label %196

195:                                              ; preds = %190
  br label %198

196:                                              ; preds = %190
  call void @__assert_fail(ptr noundef @.str.57, ptr noundef @.str.52, i32 noundef 69, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

197:                                              ; No predecessors!
  br label %198

198:                                              ; preds = %197, %195
  %199 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 7
  %200 = load i32, ptr %199, align 8, !tbaa !45
  %201 = add nsw i32 %200, 1
  store i32 %201, ptr %199, align 8, !tbaa !45
  br label %262

202:                                              ; preds = %186
  %203 = load i8, ptr %21, align 1, !tbaa !50
  %204 = sext i8 %203 to i32
  %205 = icmp eq i32 %204, 1
  br i1 %205, label %206, label %261

206:                                              ; preds = %202
  %207 = load i32, ptr %20, align 4, !tbaa !47
  %208 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 12
  %209 = load i32, ptr %208, align 4, !tbaa !51
  %210 = icmp slt i32 %207, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %206
  br label %214

212:                                              ; preds = %206
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.52, i32 noundef 75, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

213:                                              ; No predecessors!
  br label %214

214:                                              ; preds = %213, %211
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #7
  %215 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 16
  %216 = load ptr, ptr %215, align 8, !tbaa !52
  %217 = load i32, ptr %20, align 4, !tbaa !47
  %218 = sext i32 %217 to i64
  %219 = getelementptr inbounds i32, ptr %216, i64 %218
  %220 = load i32, ptr %219, align 4, !tbaa !47
  store i32 %220, ptr %23, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %221 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 16
  %222 = load ptr, ptr %221, align 8, !tbaa !52
  %223 = load i32, ptr %20, align 4, !tbaa !47
  %224 = add nsw i32 %223, 1
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds i32, ptr %222, i64 %225
  %227 = load i32, ptr %226, align 4, !tbaa !47
  %228 = load i32, ptr %23, align 4, !tbaa !47
  %229 = sub nsw i32 %227, %228
  store i32 %229, ptr %24, align 4, !tbaa !47
  %230 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 17
  %231 = load ptr, ptr %230, align 8, !tbaa !53
  %232 = load i32, ptr %23, align 4, !tbaa !47
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds i32, ptr %231, i64 %233
  %235 = load i32, ptr %234, align 4, !tbaa !47
  %236 = load i32, ptr %19, align 4, !tbaa !47
  %237 = icmp eq i32 %235, %236
  br i1 %237, label %238, label %239

238:                                              ; preds = %214
  br label %241

239:                                              ; preds = %214
  call void @__assert_fail(ptr noundef @.str.59, ptr noundef @.str.52, i32 noundef 78, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

240:                                              ; No predecessors!
  br label %241

241:                                              ; preds = %240, %238
  %242 = load i32, ptr %24, align 4, !tbaa !47
  %243 = icmp eq i32 %242, 1
  br i1 %243, label %244, label %252

244:                                              ; preds = %241
  %245 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %246 = load ptr, ptr %245, align 8, !tbaa !54
  %247 = load i32, ptr %23, align 4, !tbaa !47
  %248 = sext i32 %247 to i64
  %249 = getelementptr inbounds double, ptr %246, i64 %248
  %250 = load double, ptr %249, align 8, !tbaa !55
  %251 = fcmp oeq double %250, 1.000000e+00
  br label %252

252:                                              ; preds = %244, %241
  %253 = phi i1 [ false, %241 ], [ %251, %244 ]
  br i1 %253, label %254, label %255

254:                                              ; preds = %252
  br label %257

255:                                              ; preds = %252
  call void @__assert_fail(ptr noundef @.str.60, ptr noundef @.str.52, i32 noundef 79, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

256:                                              ; No predecessors!
  br label %257

257:                                              ; preds = %256, %254
  %258 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 7
  %259 = load i32, ptr %258, align 8, !tbaa !45
  %260 = add nsw i32 %259, 1
  store i32 %260, ptr %258, align 8, !tbaa !45
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #7
  br label %261

261:                                              ; preds = %257, %202
  br label %262

262:                                              ; preds = %261, %198
  %263 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 63
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  %264 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 64
  %265 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %264) #7
  %266 = trunc i64 %265 to i32
  store i32 %266, ptr %25, align 4, !tbaa !47
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %263, ptr noundef nonnull align 4 dereferenceable(4) %25)
          to label %267 unwind label %277

267:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  %268 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 70
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %268, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %269 unwind label %281

269:                                              ; preds = %267
  %270 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 71
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  store double 1.000000e+00, ptr %26, align 8, !tbaa !55
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %270, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %271 unwind label %285

271:                                              ; preds = %269
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  %272 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 74
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  %273 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  %274 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %273) #7
  %275 = trunc i64 %274 to i32
  store i32 %275, ptr %27, align 4, !tbaa !47
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %272, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %276 unwind label %289

276:                                              ; preds = %271
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %616

277:                                              ; preds = %262
  %278 = landingpad { ptr, i32 }
          cleanup
  %279 = extractvalue { ptr, i32 } %278, 0
  store ptr %279, ptr %11, align 8
  %280 = extractvalue { ptr, i32 } %278, 1
  store i32 %280, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %642

281:                                              ; preds = %267
  %282 = landingpad { ptr, i32 }
          cleanup
  %283 = extractvalue { ptr, i32 } %282, 0
  store ptr %283, ptr %11, align 8
  %284 = extractvalue { ptr, i32 } %282, 1
  store i32 %284, ptr %12, align 4
  br label %642

285:                                              ; preds = %269
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %11, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  br label %642

289:                                              ; preds = %271
  %290 = landingpad { ptr, i32 }
          cleanup
  %291 = extractvalue { ptr, i32 } %290, 0
  store ptr %291, ptr %11, align 8
  %292 = extractvalue { ptr, i32 } %290, 1
  store i32 %292, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  br label %642

293:                                              ; preds = %182
  %294 = load i8, ptr %21, align 1, !tbaa !50
  %295 = sext i8 %294 to i32
  %296 = icmp eq i32 %295, 2
  br i1 %296, label %301, label %297

297:                                              ; preds = %293
  %298 = load i8, ptr %21, align 1, !tbaa !50
  %299 = sext i8 %298 to i32
  %300 = icmp eq i32 %299, 3
  br i1 %300, label %301, label %606

301:                                              ; preds = %297, %293
  %302 = load i32, ptr %20, align 4, !tbaa !47
  %303 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 12
  %304 = load i32, ptr %303, align 4, !tbaa !51
  %305 = icmp slt i32 %302, %304
  br i1 %305, label %306, label %307

306:                                              ; preds = %301
  br label %309

307:                                              ; preds = %301
  call void @__assert_fail(ptr noundef @.str.58, ptr noundef @.str.52, i32 noundef 91, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

308:                                              ; No predecessors!
  br label %309

309:                                              ; preds = %308, %306
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  %310 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 16
  %311 = load ptr, ptr %310, align 8, !tbaa !52
  %312 = load i32, ptr %20, align 4, !tbaa !47
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds i32, ptr %311, i64 %313
  %315 = load i32, ptr %314, align 4, !tbaa !47
  store i32 %315, ptr %28, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  %316 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 16
  %317 = load ptr, ptr %316, align 8, !tbaa !52
  %318 = load i32, ptr %20, align 4, !tbaa !47
  %319 = add nsw i32 %318, 1
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds i32, ptr %317, i64 %320
  %322 = load i32, ptr %321, align 4, !tbaa !47
  store i32 %322, ptr %29, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #7
  store i32 -1, ptr %30, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %323 = load i32, ptr %28, align 4, !tbaa !47
  store i32 %323, ptr %31, align 4, !tbaa !47
  br label %324

324:                                              ; preds = %341, %309
  %325 = load i32, ptr %31, align 4, !tbaa !47
  %326 = load i32, ptr %29, align 4, !tbaa !47
  %327 = icmp slt i32 %325, %326
  br i1 %327, label %329, label %328

328:                                              ; preds = %324
  store i32 5, ptr %18, align 4
  br label %344

329:                                              ; preds = %324
  %330 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 17
  %331 = load ptr, ptr %330, align 8, !tbaa !53
  %332 = load i32, ptr %31, align 4, !tbaa !47
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds i32, ptr %331, i64 %333
  %335 = load i32, ptr %334, align 4, !tbaa !47
  %336 = load i32, ptr %19, align 4, !tbaa !47
  %337 = icmp eq i32 %335, %336
  br i1 %337, label %338, label %340

338:                                              ; preds = %329
  %339 = load i32, ptr %31, align 4, !tbaa !47
  store i32 %339, ptr %30, align 4, !tbaa !47
  store i32 5, ptr %18, align 4
  br label %344

340:                                              ; preds = %329
  br label %341

341:                                              ; preds = %340
  %342 = load i32, ptr %31, align 4, !tbaa !47
  %343 = add nsw i32 %342, 1
  store i32 %343, ptr %31, align 4, !tbaa !47
  br label %324, !llvm.loop !56

344:                                              ; preds = %338, %328
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %345

345:                                              ; preds = %344
  %346 = load i32, ptr %30, align 4, !tbaa !47
  %347 = icmp sge i32 %346, 0
  br i1 %347, label %348, label %349

348:                                              ; preds = %345
  br label %351

349:                                              ; preds = %345
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.52, i32 noundef 102, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

350:                                              ; No predecessors!
  br label %351

351:                                              ; preds = %350, %348
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %352 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %353 = load ptr, ptr %352, align 8, !tbaa !54
  %354 = load i32, ptr %30, align 4, !tbaa !47
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds double, ptr %353, i64 %355
  %357 = load double, ptr %356, align 8, !tbaa !55
  %358 = call double @llvm.fabs.f64(double %357)
  store double %358, ptr %32, align 8, !tbaa !55
  %359 = load double, ptr %32, align 8, !tbaa !55
  %360 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 21
  %361 = load double, ptr %360, align 8, !tbaa !58
  %362 = fcmp oge double %359, %361
  br i1 %362, label %363, label %364

363:                                              ; preds = %351
  br label %366

364:                                              ; preds = %351
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.52, i32 noundef 106, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

365:                                              ; No predecessors!
  br label %366

366:                                              ; preds = %365, %363
  %367 = load double, ptr %32, align 8, !tbaa !55
  %368 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 21
  %369 = load double, ptr %368, align 8, !tbaa !58
  %370 = fcmp olt double %367, %369
  br i1 %370, label %371, label %376

371:                                              ; preds = %366
  %372 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 31
  %373 = load i32, ptr %372, align 8, !tbaa !44
  %374 = add nsw i32 %373, 1
  store i32 %374, ptr %8, align 4, !tbaa !47
  %375 = load i32, ptr %8, align 4, !tbaa !47
  store i32 %375, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %602

376:                                              ; preds = %366
  %377 = load i8, ptr %21, align 1, !tbaa !50
  %378 = sext i8 %377 to i32
  %379 = icmp eq i32 %378, 2
  br i1 %379, label %380, label %510

380:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %381 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %382 = load ptr, ptr %381, align 8, !tbaa !54
  %383 = load i32, ptr %30, align 4, !tbaa !47
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds double, ptr %382, i64 %384
  %386 = load double, ptr %385, align 8, !tbaa !55
  %387 = fdiv double 1.000000e+00, %386
  store double %387, ptr %33, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  store i32 0, ptr %34, align 4, !tbaa !47
  br label %388

388:                                              ; preds = %474, %380
  %389 = load i32, ptr %34, align 4, !tbaa !47
  %390 = icmp slt i32 %389, 2
  br i1 %390, label %392, label %391

391:                                              ; preds = %388
  store i32 8, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %477

392:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #7
  %393 = load i32, ptr %34, align 4, !tbaa !47
  %394 = icmp eq i32 %393, 0
  br i1 %394, label %395, label %397

395:                                              ; preds = %392
  %396 = load i32, ptr %28, align 4, !tbaa !47
  br label %400

397:                                              ; preds = %392
  %398 = load i32, ptr %30, align 4, !tbaa !47
  %399 = add nsw i32 %398, 1
  br label %400

400:                                              ; preds = %397, %395
  %401 = phi i32 [ %396, %395 ], [ %399, %397 ]
  store i32 %401, ptr %35, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #7
  %402 = load i32, ptr %34, align 4, !tbaa !47
  %403 = icmp eq i32 %402, 0
  br i1 %403, label %404, label %406

404:                                              ; preds = %400
  %405 = load i32, ptr %30, align 4, !tbaa !47
  br label %408

406:                                              ; preds = %400
  %407 = load i32, ptr %29, align 4, !tbaa !47
  br label %408

408:                                              ; preds = %406, %404
  %409 = phi i32 [ %405, %404 ], [ %407, %406 ]
  store i32 %409, ptr %36, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #7
  %410 = load i32, ptr %35, align 4, !tbaa !47
  store i32 %410, ptr %37, align 4, !tbaa !47
  br label %411

411:                                              ; preds = %469, %408
  %412 = load i32, ptr %37, align 4, !tbaa !47
  %413 = load i32, ptr %36, align 4, !tbaa !47
  %414 = icmp slt i32 %412, %413
  br i1 %414, label %416, label %415

415:                                              ; preds = %411
  store i32 11, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  br label %473

416:                                              ; preds = %411
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #7
  %417 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 17
  %418 = load ptr, ptr %417, align 8, !tbaa !53
  %419 = load i32, ptr %37, align 4, !tbaa !47
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds i32, ptr %418, i64 %420
  %422 = load i32, ptr %421, align 4, !tbaa !47
  store i32 %422, ptr %38, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #7
  %423 = load i32, ptr %38, align 4, !tbaa !47
  %424 = sext i32 %423 to i64
  %425 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %424)
          to label %426 unwind label %446

426:                                              ; preds = %416
  %427 = getelementptr inbounds { ptr, i64 }, ptr %39, i32 0, i32 0
  %428 = extractvalue { ptr, i64 } %425, 0
  store ptr %428, ptr %427, align 8
  %429 = getelementptr inbounds { ptr, i64 }, ptr %39, i32 0, i32 1
  %430 = extractvalue { ptr, i64 } %425, 1
  store i64 %430, ptr %429, align 8
  %431 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %39) #7
  %432 = xor i1 %431, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #7
  br i1 %432, label %433, label %458

433:                                              ; preds = %426
  %434 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 64
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %434, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %435 unwind label %450

435:                                              ; preds = %433
  %436 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 65
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %437 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %438 = load ptr, ptr %437, align 8, !tbaa !54
  %439 = load i32, ptr %37, align 4, !tbaa !47
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds double, ptr %438, i64 %440
  %442 = load double, ptr %441, align 8, !tbaa !55
  %443 = load double, ptr %33, align 8, !tbaa !55
  %444 = fmul double %442, %443
  store double %444, ptr %40, align 8, !tbaa !55
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %436, ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %445 unwind label %454

445:                                              ; preds = %435
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %468

446:                                              ; preds = %416
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %11, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #7
  br label %472

450:                                              ; preds = %460, %458, %433
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %11, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %12, align 4
  br label %472

454:                                              ; preds = %435
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %11, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %472

458:                                              ; preds = %426
  %459 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %459, ptr noundef nonnull align 4 dereferenceable(4) %38)
          to label %460 unwind label %450

460:                                              ; preds = %458
  %461 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 77
  %462 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %463 = load ptr, ptr %462, align 8, !tbaa !54
  %464 = load i32, ptr %37, align 4, !tbaa !47
  %465 = sext i32 %464 to i64
  %466 = getelementptr inbounds double, ptr %463, i64 %465
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %461, ptr noundef nonnull align 8 dereferenceable(8) %466)
          to label %467 unwind label %450

467:                                              ; preds = %460
  br label %468

468:                                              ; preds = %467, %445
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  br label %469

469:                                              ; preds = %468
  %470 = load i32, ptr %37, align 4, !tbaa !47
  %471 = add nsw i32 %470, 1
  store i32 %471, ptr %37, align 4, !tbaa !47
  br label %411, !llvm.loop !59

472:                                              ; preds = %454, %450, %446
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %509

473:                                              ; preds = %415
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #7
  br label %474

474:                                              ; preds = %473
  %475 = load i32, ptr %34, align 4, !tbaa !47
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %34, align 4, !tbaa !47
  br label %388, !llvm.loop !60

477:                                              ; preds = %391
  %478 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 63
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  %479 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 64
  %480 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %479) #7
  %481 = trunc i64 %480 to i32
  store i32 %481, ptr %41, align 4, !tbaa !47
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %478, ptr noundef nonnull align 4 dereferenceable(4) %41)
          to label %482 unwind label %497

482:                                              ; preds = %477
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  %483 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 70
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %483, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %484 unwind label %501

484:                                              ; preds = %482
  %485 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 71
  %486 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %487 = load ptr, ptr %486, align 8, !tbaa !54
  %488 = load i32, ptr %30, align 4, !tbaa !47
  %489 = sext i32 %488 to i64
  %490 = getelementptr inbounds double, ptr %487, i64 %489
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %485, ptr noundef nonnull align 8 dereferenceable(8) %490)
          to label %491 unwind label %501

491:                                              ; preds = %484
  %492 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 74
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  %493 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  %494 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %493) #7
  %495 = trunc i64 %494 to i32
  store i32 %495, ptr %42, align 4, !tbaa !47
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %492, ptr noundef nonnull align 4 dereferenceable(4) %42)
          to label %496 unwind label %505

496:                                              ; preds = %491
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %601

497:                                              ; preds = %477
  %498 = landingpad { ptr, i32 }
          cleanup
  %499 = extractvalue { ptr, i32 } %498, 0
  store ptr %499, ptr %11, align 8
  %500 = extractvalue { ptr, i32 } %498, 1
  store i32 %500, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  br label %509

501:                                              ; preds = %484, %482
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %11, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %12, align 4
  br label %509

505:                                              ; preds = %491
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %11, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %509

509:                                              ; preds = %505, %501, %497, %472
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %605

510:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #7
  %511 = load i32, ptr %28, align 4, !tbaa !47
  store i32 %511, ptr %43, align 4, !tbaa !47
  br label %512

512:                                              ; preds = %532, %510
  %513 = load i32, ptr %43, align 4, !tbaa !47
  %514 = load i32, ptr %30, align 4, !tbaa !47
  %515 = icmp slt i32 %513, %514
  br i1 %515, label %517, label %516

516:                                              ; preds = %512
  store i32 14, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %539

517:                                              ; preds = %512
  %518 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  %519 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 17
  %520 = load ptr, ptr %519, align 8, !tbaa !53
  %521 = load i32, ptr %43, align 4, !tbaa !47
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds i32, ptr %520, i64 %522
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %518, ptr noundef nonnull align 4 dereferenceable(4) %523)
          to label %524 unwind label %535

524:                                              ; preds = %517
  %525 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 77
  %526 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %527 = load ptr, ptr %526, align 8, !tbaa !54
  %528 = load i32, ptr %43, align 4, !tbaa !47
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds double, ptr %527, i64 %529
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %525, ptr noundef nonnull align 8 dereferenceable(8) %530)
          to label %531 unwind label %535

531:                                              ; preds = %524
  br label %532

532:                                              ; preds = %531
  %533 = load i32, ptr %43, align 4, !tbaa !47
  %534 = add nsw i32 %533, 1
  store i32 %534, ptr %43, align 4, !tbaa !47
  br label %512, !llvm.loop !61

535:                                              ; preds = %524, %517
  %536 = landingpad { ptr, i32 }
          cleanup
  %537 = extractvalue { ptr, i32 } %536, 0
  store ptr %537, ptr %11, align 8
  %538 = extractvalue { ptr, i32 } %536, 1
  store i32 %538, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #7
  br label %605

539:                                              ; preds = %516
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  %540 = load i32, ptr %30, align 4, !tbaa !47
  %541 = add nsw i32 %540, 1
  store i32 %541, ptr %44, align 4, !tbaa !47
  br label %542

542:                                              ; preds = %562, %539
  %543 = load i32, ptr %44, align 4, !tbaa !47
  %544 = load i32, ptr %29, align 4, !tbaa !47
  %545 = icmp slt i32 %543, %544
  br i1 %545, label %547, label %546

546:                                              ; preds = %542
  store i32 17, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %569

547:                                              ; preds = %542
  %548 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  %549 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 17
  %550 = load ptr, ptr %549, align 8, !tbaa !53
  %551 = load i32, ptr %44, align 4, !tbaa !47
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds i32, ptr %550, i64 %552
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %548, ptr noundef nonnull align 4 dereferenceable(4) %553)
          to label %554 unwind label %565

554:                                              ; preds = %547
  %555 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 77
  %556 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %557 = load ptr, ptr %556, align 8, !tbaa !54
  %558 = load i32, ptr %44, align 4, !tbaa !47
  %559 = sext i32 %558 to i64
  %560 = getelementptr inbounds double, ptr %557, i64 %559
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %555, ptr noundef nonnull align 8 dereferenceable(8) %560)
          to label %561 unwind label %565

561:                                              ; preds = %554
  br label %562

562:                                              ; preds = %561
  %563 = load i32, ptr %44, align 4, !tbaa !47
  %564 = add nsw i32 %563, 1
  store i32 %564, ptr %44, align 4, !tbaa !47
  br label %542, !llvm.loop !62

565:                                              ; preds = %554, %547
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %11, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  br label %605

569:                                              ; preds = %546
  %570 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 63
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  %571 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 64
  %572 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %571) #7
  %573 = trunc i64 %572 to i32
  store i32 %573, ptr %45, align 4, !tbaa !47
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %570, ptr noundef nonnull align 4 dereferenceable(4) %45)
          to label %574 unwind label %589

574:                                              ; preds = %569
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  %575 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 70
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %575, ptr noundef nonnull align 4 dereferenceable(4) %19)
          to label %576 unwind label %593

576:                                              ; preds = %574
  %577 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 71
  %578 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %579 = load ptr, ptr %578, align 8, !tbaa !54
  %580 = load i32, ptr %30, align 4, !tbaa !47
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds double, ptr %579, i64 %581
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %577, ptr noundef nonnull align 8 dereferenceable(8) %582)
          to label %583 unwind label %593

583:                                              ; preds = %576
  %584 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 74
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  %585 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  %586 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %585) #7
  %587 = trunc i64 %586 to i32
  store i32 %587, ptr %46, align 4, !tbaa !47
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %584, ptr noundef nonnull align 4 dereferenceable(4) %46)
          to label %588 unwind label %597

588:                                              ; preds = %583
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %601

589:                                              ; preds = %569
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %11, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  br label %605

593:                                              ; preds = %576, %574
  %594 = landingpad { ptr, i32 }
          cleanup
  %595 = extractvalue { ptr, i32 } %594, 0
  store ptr %595, ptr %11, align 8
  %596 = extractvalue { ptr, i32 } %594, 1
  store i32 %596, ptr %12, align 4
  br label %605

597:                                              ; preds = %583
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %11, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  br label %605

601:                                              ; preds = %588, %496
  store i32 0, ptr %18, align 4
  br label %602

602:                                              ; preds = %601, %371
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  %603 = load i32, ptr %18, align 4
  switch i32 %603, label %632 [
    i32 0, label %604
  ]

604:                                              ; preds = %602
  br label %615

605:                                              ; preds = %597, %593, %589, %565, %535, %509
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  br label %642

606:                                              ; preds = %297
  %607 = load i8, ptr %21, align 1, !tbaa !50
  %608 = sext i8 %607 to i32
  %609 = icmp eq i32 %608, 4
  br i1 %609, label %610, label %611

610:                                              ; preds = %606
  br label %613

611:                                              ; preds = %606
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.52, i32 noundef 172, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

612:                                              ; No predecessors!
  br label %613

613:                                              ; preds = %612, %610
  %614 = load i32, ptr %17, align 4, !tbaa !47
  store i32 %614, ptr %7, align 4, !tbaa !47
  store i32 2, ptr %18, align 4
  br label %632

615:                                              ; preds = %604
  br label %616

616:                                              ; preds = %615, %276
  %617 = load i32, ptr %20, align 4, !tbaa !47
  %618 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 19
  %619 = load ptr, ptr %618, align 8, !tbaa !63
  %620 = load i32, ptr %19, align 4, !tbaa !47
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds i32, ptr %619, i64 %621
  store i32 %617, ptr %622, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 16, ptr %47) #7
  %623 = load i32, ptr %19, align 4, !tbaa !47
  %624 = sext i32 %623 to i64
  %625 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %624)
          to label %626 unwind label %638

626:                                              ; preds = %616
  %627 = getelementptr inbounds { ptr, i64 }, ptr %47, i32 0, i32 0
  %628 = extractvalue { ptr, i64 } %625, 0
  store ptr %628, ptr %627, align 8
  %629 = getelementptr inbounds { ptr, i64 }, ptr %47, i32 0, i32 1
  %630 = extractvalue { ptr, i64 } %625, 1
  store i64 %630, ptr %629, align 8
  %631 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %47, i1 noundef zeroext true) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #7
  store i32 0, ptr %18, align 4
  br label %632

632:                                              ; preds = %626, %613, %602
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  %633 = load i32, ptr %18, align 4
  switch i32 %633, label %643 [
    i32 0, label %634
  ]

634:                                              ; preds = %632
  br label %635

635:                                              ; preds = %634
  %636 = load i32, ptr %17, align 4, !tbaa !47
  %637 = add nsw i32 %636, 1
  store i32 %637, ptr %17, align 4, !tbaa !47
  br label %136, !llvm.loop !64

638:                                              ; preds = %616
  %639 = landingpad { ptr, i32 }
          cleanup
  %640 = extractvalue { ptr, i32 } %639, 0
  store ptr %640, ptr %11, align 8
  %641 = extractvalue { ptr, i32 } %639, 1
  store i32 %641, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %47) #7
  br label %642

642:                                              ; preds = %638, %605, %289, %285, %281, %277, %173
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  br label %1138

643:                                              ; preds = %632, %141
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  %644 = load i32, ptr %18, align 4
  switch i32 %644, label %1136 [
    i32 2, label %645
  ]

645:                                              ; preds = %643
  %646 = load i32, ptr %7, align 4, !tbaa !47
  %647 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %648 = load i32, ptr %647, align 8, !tbaa !46
  %649 = icmp slt i32 %646, %648
  br i1 %649, label %650, label %1134

650:                                              ; preds = %645
  %651 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 63
  %652 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %653 = load i32, ptr %652, align 8, !tbaa !46
  %654 = add nsw i32 %653, 1
  %655 = sext i32 %654 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %651, i64 noundef %655)
          to label %656 unwind label %664

656:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  %657 = load i32, ptr %7, align 4, !tbaa !47
  store i32 %657, ptr %48, align 4, !tbaa !47
  br label %658

658:                                              ; preds = %679, %656
  %659 = load i32, ptr %48, align 4, !tbaa !47
  %660 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %661 = load i32, ptr %660, align 8, !tbaa !46
  %662 = icmp slt i32 %659, %661
  br i1 %662, label %668, label %663

663:                                              ; preds = %658
  store i32 20, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  br label %682

664:                                              ; preds = %1134, %708, %682, %650
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %11, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %12, align 4
  br label %1138

668:                                              ; preds = %658
  %669 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 63
  %670 = load i32, ptr %48, align 4, !tbaa !47
  %671 = sext i32 %670 to i64
  %672 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %669, i64 noundef %671) #7
  %673 = load i32, ptr %672, align 4, !tbaa !47
  %674 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 63
  %675 = load i32, ptr %48, align 4, !tbaa !47
  %676 = add nsw i32 %675, 1
  %677 = sext i32 %676 to i64
  %678 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %674, i64 noundef %677) #7
  store i32 %673, ptr %678, align 4, !tbaa !47
  br label %679

679:                                              ; preds = %668
  %680 = load i32, ptr %48, align 4, !tbaa !47
  %681 = add nsw i32 %680, 1
  store i32 %681, ptr %48, align 4, !tbaa !47
  br label %658, !llvm.loop !65

682:                                              ; preds = %663
  %683 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 62
  %684 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %685 = load i32, ptr %684, align 8, !tbaa !46
  %686 = sext i32 %685 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %683, i64 noundef %686)
          to label %687 unwind label %664

687:                                              ; preds = %682
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  store i32 0, ptr %49, align 4, !tbaa !47
  br label %688

688:                                              ; preds = %705, %687
  %689 = load i32, ptr %49, align 4, !tbaa !47
  %690 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %691 = load i32, ptr %690, align 8, !tbaa !46
  %692 = icmp slt i32 %689, %691
  br i1 %692, label %694, label %693

693:                                              ; preds = %688
  store i32 23, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  br label %708

694:                                              ; preds = %688
  %695 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %696 = getelementptr inbounds %struct.RefactorInfo, ptr %695, i32 0, i32 1
  %697 = load i32, ptr %49, align 4, !tbaa !47
  %698 = sext i32 %697 to i64
  %699 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %696, i64 noundef %698) #7
  %700 = load i32, ptr %699, align 4, !tbaa !47
  %701 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 62
  %702 = load i32, ptr %49, align 4, !tbaa !47
  %703 = sext i32 %702 to i64
  %704 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %701, i64 noundef %703) #7
  store i32 %700, ptr %704, align 4, !tbaa !47
  br label %705

705:                                              ; preds = %694
  %706 = load i32, ptr %49, align 4, !tbaa !47
  %707 = add nsw i32 %706, 1
  store i32 %707, ptr %49, align 4, !tbaa !47
  br label %688, !llvm.loop !66

708:                                              ; preds = %693
  %709 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 61
  %710 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %711 = load i32, ptr %710, align 8, !tbaa !46
  %712 = sext i32 %711 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %709, i64 noundef %712)
          to label %713 unwind label %664

713:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 4, ptr %50) #7
  store i32 0, ptr %50, align 4, !tbaa !47
  br label %714

714:                                              ; preds = %748, %713
  %715 = load i32, ptr %50, align 4, !tbaa !47
  %716 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %717 = load i32, ptr %716, align 8, !tbaa !46
  %718 = icmp slt i32 %715, %717
  br i1 %718, label %720, label %719

719:                                              ; preds = %714
  store i32 26, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #7
  br label %751

720:                                              ; preds = %714
  %721 = load i32, ptr %50, align 4, !tbaa !47
  %722 = load i32, ptr %7, align 4, !tbaa !47
  %723 = icmp slt i32 %721, %722
  br i1 %723, label %724, label %738

724:                                              ; preds = %720
  %725 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 61
  %726 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 62
  %727 = load i32, ptr %50, align 4, !tbaa !47
  %728 = sext i32 %727 to i64
  %729 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %726, i64 noundef %728) #7
  %730 = load i32, ptr %729, align 4, !tbaa !47
  %731 = sext i32 %730 to i64
  %732 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %725, i64 noundef %731) #7
  %733 = load i32, ptr %732, align 4, !tbaa !47
  %734 = load i32, ptr %50, align 4, !tbaa !47
  %735 = icmp ne i32 %733, %734
  br i1 %735, label %736, label %737

736:                                              ; preds = %724
  br label %737

737:                                              ; preds = %736, %724
  br label %738

738:                                              ; preds = %737, %720
  %739 = load i32, ptr %50, align 4, !tbaa !47
  %740 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 61
  %741 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 62
  %742 = load i32, ptr %50, align 4, !tbaa !47
  %743 = sext i32 %742 to i64
  %744 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %741, i64 noundef %743) #7
  %745 = load i32, ptr %744, align 4, !tbaa !47
  %746 = sext i32 %745 to i64
  %747 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %740, i64 noundef %746) #7
  store i32 %739, ptr %747, align 4, !tbaa !47
  br label %748

748:                                              ; preds = %738
  %749 = load i32, ptr %50, align 4, !tbaa !47
  %750 = add nsw i32 %749, 1
  store i32 %750, ptr %50, align 4, !tbaa !47
  br label %714, !llvm.loop !67

751:                                              ; preds = %719
  call void @llvm.lifetime.start.p0(i64 40, ptr %51) #7
  invoke void @_ZNSt6vectorIbSaIbEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(40) %51, ptr noundef nonnull align 8 dereferenceable(40) %9)
          to label %752 unwind label %763

752:                                              ; preds = %751
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  store double 0.000000e+00, ptr %52, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 176, ptr %53) #7
  call void @_ZN11HVectorBaseIdEC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %53) #7
  %753 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %754 = load i32, ptr %753, align 8, !tbaa !46
  invoke void @_ZN11HVectorBaseIdE5setupEi(ptr noundef nonnull align 8 dereferenceable(176) %53, i32 noundef %754)
          to label %755 unwind label %767

755:                                              ; preds = %752
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #7
  %756 = load i32, ptr %7, align 4, !tbaa !47
  store i32 %756, ptr %54, align 4, !tbaa !47
  br label %757

757:                                              ; preds = %1107, %755
  %758 = load i32, ptr %54, align 4, !tbaa !47
  %759 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %760 = load i32, ptr %759, align 8, !tbaa !46
  %761 = icmp slt i32 %758, %760
  br i1 %761, label %771, label %762

762:                                              ; preds = %757
  store i32 29, ptr %18, align 4
  br label %1126

763:                                              ; preds = %751
  %764 = landingpad { ptr, i32 }
          cleanup
  %765 = extractvalue { ptr, i32 } %764, 0
  store ptr %765, ptr %11, align 8
  %766 = extractvalue { ptr, i32 } %764, 1
  store i32 %766, ptr %12, align 4
  br label %1133

767:                                              ; preds = %752
  %768 = landingpad { ptr, i32 }
          cleanup
  %769 = extractvalue { ptr, i32 } %768, 0
  store ptr %769, ptr %11, align 8
  %770 = extractvalue { ptr, i32 } %768, 1
  store i32 %770, ptr %12, align 4
  br label %1132

771:                                              ; preds = %757
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #7
  %772 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %773 = getelementptr inbounds %struct.RefactorInfo, ptr %772, i32 0, i32 1
  %774 = load i32, ptr %54, align 4, !tbaa !47
  %775 = sext i32 %774 to i64
  %776 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %773, i64 noundef %775) #7
  %777 = load i32, ptr %776, align 4, !tbaa !47
  store i32 %777, ptr %55, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #7
  %778 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %779 = getelementptr inbounds %struct.RefactorInfo, ptr %778, i32 0, i32 2
  %780 = load i32, ptr %54, align 4, !tbaa !47
  %781 = sext i32 %780 to i64
  %782 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %779, i64 noundef %781) #7
  %783 = load i32, ptr %782, align 4, !tbaa !47
  store i32 %783, ptr %56, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #7
  %784 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 6
  %785 = getelementptr inbounds %struct.RefactorInfo, ptr %784, i32 0, i32 3
  %786 = load i32, ptr %54, align 4, !tbaa !47
  %787 = sext i32 %786 to i64
  %788 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %785, i64 noundef %787) #7
  %789 = load i8, ptr %788, align 1, !tbaa !50
  store i8 %789, ptr %57, align 1, !tbaa !50
  call void @llvm.lifetime.start.p0(i64 16, ptr %58) #7
  %790 = load i32, ptr %55, align 4, !tbaa !47
  %791 = sext i32 %790 to i64
  %792 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %791)
          to label %793 unwind label %802

793:                                              ; preds = %771
  %794 = getelementptr inbounds { ptr, i64 }, ptr %58, i32 0, i32 0
  %795 = extractvalue { ptr, i64 } %792, 0
  store ptr %795, ptr %794, align 8
  %796 = getelementptr inbounds { ptr, i64 }, ptr %58, i32 0, i32 1
  %797 = extractvalue { ptr, i64 } %792, 1
  store i64 %797, ptr %796, align 8
  %798 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %58) #7
  %799 = xor i1 %798, true
  br i1 %799, label %800, label %801

800:                                              ; preds = %793
  br label %807

801:                                              ; preds = %793
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.52, i32 noundef 224, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

802:                                              ; preds = %771
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %11, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  br label %1125

806:                                              ; No predecessors!
  br label %807

807:                                              ; preds = %806, %800
  call void @llvm.lifetime.end.p0(i64 16, ptr %58) #7
  %808 = load i8, ptr %57, align 1, !tbaa !50
  %809 = sext i8 %808 to i32
  %810 = icmp eq i32 %809, 4
  br i1 %810, label %811, label %812

811:                                              ; preds = %807
  br label %814

812:                                              ; preds = %807
  call void @__assert_fail(ptr noundef @.str.63, ptr noundef @.str.52, i32 noundef 225, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

813:                                              ; No predecessors!
  br label %814

814:                                              ; preds = %813, %811
  invoke void @_ZN11HVectorBaseIdE5clearEv(ptr noundef nonnull align 8 dereferenceable(176) %53)
          to label %815 unwind label %835

815:                                              ; preds = %814
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #7
  %816 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 16
  %817 = load ptr, ptr %816, align 8, !tbaa !52
  %818 = load i32, ptr %56, align 4, !tbaa !47
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds i32, ptr %817, i64 %819
  %821 = load i32, ptr %820, align 4, !tbaa !47
  store i32 %821, ptr %59, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #7
  %822 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 16
  %823 = load ptr, ptr %822, align 8, !tbaa !52
  %824 = load i32, ptr %56, align 4, !tbaa !47
  %825 = add nsw i32 %824, 1
  %826 = sext i32 %825 to i64
  %827 = getelementptr inbounds i32, ptr %823, i64 %826
  %828 = load i32, ptr %827, align 4, !tbaa !47
  store i32 %828, ptr %60, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #7
  %829 = load i32, ptr %59, align 4, !tbaa !47
  store i32 %829, ptr %61, align 4, !tbaa !47
  br label %830

830:                                              ; preds = %892, %815
  %831 = load i32, ptr %61, align 4, !tbaa !47
  %832 = load i32, ptr %60, align 4, !tbaa !47
  %833 = icmp slt i32 %831, %832
  br i1 %833, label %839, label %834

834:                                              ; preds = %830
  store i32 32, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  br label %896

835:                                              ; preds = %814
  %836 = landingpad { ptr, i32 }
          cleanup
  %837 = extractvalue { ptr, i32 } %836, 0
  store ptr %837, ptr %11, align 8
  %838 = extractvalue { ptr, i32 } %836, 1
  store i32 %838, ptr %12, align 4
  br label %1125

839:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #7
  %840 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 17
  %841 = load ptr, ptr %840, align 8, !tbaa !53
  %842 = load i32, ptr %61, align 4, !tbaa !47
  %843 = sext i32 %842 to i64
  %844 = getelementptr inbounds i32, ptr %841, i64 %843
  %845 = load i32, ptr %844, align 4, !tbaa !47
  store i32 %845, ptr %62, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #7
  %846 = load i32, ptr %62, align 4, !tbaa !47
  %847 = sext i32 %846 to i64
  %848 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %51, i64 noundef %847)
          to label %849 unwind label %865

849:                                              ; preds = %839
  %850 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 0
  %851 = extractvalue { ptr, i64 } %848, 0
  store ptr %851, ptr %850, align 8
  %852 = getelementptr inbounds { ptr, i64 }, ptr %63, i32 0, i32 1
  %853 = extractvalue { ptr, i64 } %848, 1
  store i64 %853, ptr %852, align 8
  %854 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %63) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #7
  br i1 %854, label %855, label %873

855:                                              ; preds = %849
  %856 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %856, ptr noundef nonnull align 4 dereferenceable(4) %62)
          to label %857 unwind label %869

857:                                              ; preds = %855
  %858 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 77
  %859 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %860 = load ptr, ptr %859, align 8, !tbaa !54
  %861 = load i32, ptr %61, align 4, !tbaa !47
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds double, ptr %860, i64 %862
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %858, ptr noundef nonnull align 8 dereferenceable(8) %863)
          to label %864 unwind label %869

864:                                              ; preds = %857
  br label %891

865:                                              ; preds = %839
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %11, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #7
  br label %895

869:                                              ; preds = %857, %855
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %11, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %12, align 4
  br label %895

873:                                              ; preds = %849
  %874 = load i32, ptr %62, align 4, !tbaa !47
  %875 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 2
  %876 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 1
  %877 = load i32, ptr %876, align 4, !tbaa !68
  %878 = add nsw i32 %877, 1
  store i32 %878, ptr %876, align 4, !tbaa !68
  %879 = sext i32 %877 to i64
  %880 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %875, i64 noundef %879) #7
  store i32 %874, ptr %880, align 4, !tbaa !47
  %881 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 18
  %882 = load ptr, ptr %881, align 8, !tbaa !54
  %883 = load i32, ptr %61, align 4, !tbaa !47
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds double, ptr %882, i64 %884
  %886 = load double, ptr %885, align 8, !tbaa !55
  %887 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 3
  %888 = load i32, ptr %62, align 4, !tbaa !47
  %889 = sext i32 %888 to i64
  %890 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %887, i64 noundef %889) #7
  store double %886, ptr %890, align 8, !tbaa !55
  br label %891

891:                                              ; preds = %873, %864
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  br label %892

892:                                              ; preds = %891
  %893 = load i32, ptr %61, align 4, !tbaa !47
  %894 = add nsw i32 %893, 1
  store i32 %894, ptr %61, align 4, !tbaa !47
  br label %830, !llvm.loop !69

895:                                              ; preds = %869, %865
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #7
  br label %1124

896:                                              ; preds = %834
  %897 = load double, ptr %52, align 8, !tbaa !55
  invoke void @_ZNK7HFactor6ftranLER11HVectorBaseIdEdP15HighsTimerClock(ptr noundef nonnull align 8 dereferenceable(1912) %78, ptr noundef nonnull align 8 dereferenceable(176) %53, double noundef %897, ptr noundef null)
          to label %898 unwind label %920

898:                                              ; preds = %896
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %899 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 1
  %900 = load i32, ptr %899, align 4, !tbaa !68
  %901 = sitofp i32 %900 to double
  %902 = fmul double 1.000000e+00, %901
  %903 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %904 = load i32, ptr %903, align 8, !tbaa !46
  %905 = sitofp i32 %904 to double
  %906 = fdiv double %902, %905
  store double %906, ptr %64, align 8, !tbaa !55
  %907 = load double, ptr %64, align 8, !tbaa !55
  %908 = load double, ptr %52, align 8, !tbaa !55
  %909 = fmul double 0x3FEE666666666666, %908
  %910 = call double @llvm.fmuladd.f64(double 5.000000e-02, double %907, double %909)
  store double %910, ptr %52, align 8, !tbaa !55
  invoke void @_ZN11HVectorBaseIdE5tightEv(ptr noundef nonnull align 8 dereferenceable(176) %53)
          to label %911 unwind label %924

911:                                              ; preds = %898
  call void @llvm.lifetime.start.p0(i64 4, ptr %65) #7
  store i32 -1, ptr %65, align 4, !tbaa !47
  store i32 0, ptr %59, align 4, !tbaa !47
  %912 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 1
  %913 = load i32, ptr %912, align 4, !tbaa !68
  store i32 %913, ptr %60, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #7
  %914 = load i32, ptr %59, align 4, !tbaa !47
  store i32 %914, ptr %66, align 4, !tbaa !47
  br label %915

915:                                              ; preds = %939, %911
  %916 = load i32, ptr %66, align 4, !tbaa !47
  %917 = load i32, ptr %60, align 4, !tbaa !47
  %918 = icmp slt i32 %916, %917
  br i1 %918, label %928, label %919

919:                                              ; preds = %915
  store i32 35, ptr %18, align 4
  br label %942

920:                                              ; preds = %896
  %921 = landingpad { ptr, i32 }
          cleanup
  %922 = extractvalue { ptr, i32 } %921, 0
  store ptr %922, ptr %11, align 8
  %923 = extractvalue { ptr, i32 } %921, 1
  store i32 %923, ptr %12, align 4
  br label %1124

924:                                              ; preds = %898
  %925 = landingpad { ptr, i32 }
          cleanup
  %926 = extractvalue { ptr, i32 } %925, 0
  store ptr %926, ptr %11, align 8
  %927 = extractvalue { ptr, i32 } %925, 1
  store i32 %927, ptr %12, align 4
  br label %1123

928:                                              ; preds = %915
  %929 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 2
  %930 = load i32, ptr %66, align 4, !tbaa !47
  %931 = sext i32 %930 to i64
  %932 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %929, i64 noundef %931) #7
  %933 = load i32, ptr %932, align 4, !tbaa !47
  %934 = load i32, ptr %55, align 4, !tbaa !47
  %935 = icmp eq i32 %933, %934
  br i1 %935, label %936, label %938

936:                                              ; preds = %928
  %937 = load i32, ptr %66, align 4, !tbaa !47
  store i32 %937, ptr %65, align 4, !tbaa !47
  store i32 35, ptr %18, align 4
  br label %942

938:                                              ; preds = %928
  br label %939

939:                                              ; preds = %938
  %940 = load i32, ptr %66, align 4, !tbaa !47
  %941 = add nsw i32 %940, 1
  store i32 %941, ptr %66, align 4, !tbaa !47
  br label %915, !llvm.loop !70

942:                                              ; preds = %936, %919
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #7
  br label %943

943:                                              ; preds = %942
  %944 = load i32, ptr %65, align 4, !tbaa !47
  %945 = icmp sge i32 %944, 0
  br i1 %945, label %946, label %947

946:                                              ; preds = %943
  br label %949

947:                                              ; preds = %943
  call void @__assert_fail(ptr noundef @.str.61, ptr noundef @.str.52, i32 noundef 262, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

948:                                              ; No predecessors!
  br label %949

949:                                              ; preds = %948, %946
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %950 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 3
  %951 = load i32, ptr %55, align 4, !tbaa !47
  %952 = sext i32 %951 to i64
  %953 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %950, i64 noundef %952) #7
  %954 = load double, ptr %953, align 8, !tbaa !55
  %955 = call double @llvm.fabs.f64(double %954)
  store double %955, ptr %67, align 8, !tbaa !55
  %956 = load double, ptr %67, align 8, !tbaa !55
  %957 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 21
  %958 = load double, ptr %957, align 8, !tbaa !58
  %959 = fcmp oge double %956, %958
  br i1 %959, label %960, label %961

960:                                              ; preds = %949
  br label %963

961:                                              ; preds = %949
  call void @__assert_fail(ptr noundef @.str.62, ptr noundef @.str.52, i32 noundef 266, ptr noundef @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #8
  unreachable

962:                                              ; No predecessors!
  br label %963

963:                                              ; preds = %962, %960
  %964 = load double, ptr %67, align 8, !tbaa !55
  %965 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 21
  %966 = load double, ptr %965, align 8, !tbaa !58
  %967 = fcmp olt double %964, %966
  br i1 %967, label %968, label %974

968:                                              ; preds = %963
  %969 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 11
  %970 = load i32, ptr %969, align 8, !tbaa !46
  %971 = load i32, ptr %54, align 4, !tbaa !47
  %972 = sub nsw i32 %970, %971
  store i32 %972, ptr %8, align 4, !tbaa !47
  %973 = load i32, ptr %8, align 4, !tbaa !47
  store i32 %973, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %1104

974:                                              ; preds = %963
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %975 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 3
  %976 = load i32, ptr %55, align 4, !tbaa !47
  %977 = sext i32 %976 to i64
  %978 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %975, i64 noundef %977) #7
  %979 = load double, ptr %978, align 8, !tbaa !55
  %980 = fdiv double 1.000000e+00, %979
  store double %980, ptr %68, align 8, !tbaa !55
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #7
  store i32 0, ptr %69, align 4, !tbaa !47
  br label %981

981:                                              ; preds = %1064, %974
  %982 = load i32, ptr %69, align 4, !tbaa !47
  %983 = icmp slt i32 %982, 2
  br i1 %983, label %985, label %984

984:                                              ; preds = %981
  store i32 38, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  br label %1067

985:                                              ; preds = %981
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #7
  %986 = load i32, ptr %69, align 4, !tbaa !47
  %987 = icmp eq i32 %986, 0
  br i1 %987, label %988, label %990

988:                                              ; preds = %985
  %989 = load i32, ptr %59, align 4, !tbaa !47
  br label %993

990:                                              ; preds = %985
  %991 = load i32, ptr %65, align 4, !tbaa !47
  %992 = add nsw i32 %991, 1
  br label %993

993:                                              ; preds = %990, %988
  %994 = phi i32 [ %989, %988 ], [ %992, %990 ]
  store i32 %994, ptr %70, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #7
  %995 = load i32, ptr %69, align 4, !tbaa !47
  %996 = icmp eq i32 %995, 0
  br i1 %996, label %997, label %999

997:                                              ; preds = %993
  %998 = load i32, ptr %65, align 4, !tbaa !47
  br label %1001

999:                                              ; preds = %993
  %1000 = load i32, ptr %60, align 4, !tbaa !47
  br label %1001

1001:                                             ; preds = %999, %997
  %1002 = phi i32 [ %998, %997 ], [ %1000, %999 ]
  store i32 %1002, ptr %71, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 4, ptr %72) #7
  %1003 = load i32, ptr %70, align 4, !tbaa !47
  store i32 %1003, ptr %72, align 4, !tbaa !47
  br label %1004

1004:                                             ; preds = %1059, %1001
  %1005 = load i32, ptr %72, align 4, !tbaa !47
  %1006 = load i32, ptr %71, align 4, !tbaa !47
  %1007 = icmp slt i32 %1005, %1006
  br i1 %1007, label %1009, label %1008

1008:                                             ; preds = %1004
  store i32 41, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #7
  br label %1063

1009:                                             ; preds = %1004
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #7
  %1010 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 2
  %1011 = load i32, ptr %72, align 4, !tbaa !47
  %1012 = sext i32 %1011 to i64
  %1013 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1010, i64 noundef %1012) #7
  %1014 = load i32, ptr %1013, align 4, !tbaa !47
  store i32 %1014, ptr %73, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 16, ptr %74) #7
  %1015 = load i32, ptr %73, align 4, !tbaa !47
  %1016 = sext i32 %1015 to i64
  %1017 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %1016)
          to label %1018 unwind label %1037

1018:                                             ; preds = %1009
  %1019 = getelementptr inbounds { ptr, i64 }, ptr %74, i32 0, i32 0
  %1020 = extractvalue { ptr, i64 } %1017, 0
  store ptr %1020, ptr %1019, align 8
  %1021 = getelementptr inbounds { ptr, i64 }, ptr %74, i32 0, i32 1
  %1022 = extractvalue { ptr, i64 } %1017, 1
  store i64 %1022, ptr %1021, align 8
  %1023 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %74) #7
  %1024 = xor i1 %1023, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #7
  br i1 %1024, label %1025, label %1049

1025:                                             ; preds = %1018
  %1026 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 64
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %1026, ptr noundef nonnull align 4 dereferenceable(4) %73)
          to label %1027 unwind label %1041

1027:                                             ; preds = %1025
  %1028 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 65
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  %1029 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 3
  %1030 = load i32, ptr %73, align 4, !tbaa !47
  %1031 = sext i32 %1030 to i64
  %1032 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1029, i64 noundef %1031) #7
  %1033 = load double, ptr %1032, align 8, !tbaa !55
  %1034 = load double, ptr %68, align 8, !tbaa !55
  %1035 = fmul double %1033, %1034
  store double %1035, ptr %75, align 8, !tbaa !55
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %1028, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %1036 unwind label %1045

1036:                                             ; preds = %1027
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %1058

1037:                                             ; preds = %1009
  %1038 = landingpad { ptr, i32 }
          cleanup
  %1039 = extractvalue { ptr, i32 } %1038, 0
  store ptr %1039, ptr %11, align 8
  %1040 = extractvalue { ptr, i32 } %1038, 1
  store i32 %1040, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #7
  br label %1062

1041:                                             ; preds = %1051, %1049, %1025
  %1042 = landingpad { ptr, i32 }
          cleanup
  %1043 = extractvalue { ptr, i32 } %1042, 0
  store ptr %1043, ptr %11, align 8
  %1044 = extractvalue { ptr, i32 } %1042, 1
  store i32 %1044, ptr %12, align 4
  br label %1062

1045:                                             ; preds = %1027
  %1046 = landingpad { ptr, i32 }
          cleanup
  %1047 = extractvalue { ptr, i32 } %1046, 0
  store ptr %1047, ptr %11, align 8
  %1048 = extractvalue { ptr, i32 } %1046, 1
  store i32 %1048, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %1062

1049:                                             ; preds = %1018
  %1050 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %1050, ptr noundef nonnull align 4 dereferenceable(4) %73)
          to label %1051 unwind label %1041

1051:                                             ; preds = %1049
  %1052 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 77
  %1053 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 3
  %1054 = load i32, ptr %73, align 4, !tbaa !47
  %1055 = sext i32 %1054 to i64
  %1056 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1053, i64 noundef %1055) #7
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %1052, ptr noundef nonnull align 8 dereferenceable(8) %1056)
          to label %1057 unwind label %1041

1057:                                             ; preds = %1051
  br label %1058

1058:                                             ; preds = %1057, %1036
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  br label %1059

1059:                                             ; preds = %1058
  %1060 = load i32, ptr %72, align 4, !tbaa !47
  %1061 = add nsw i32 %1060, 1
  store i32 %1061, ptr %72, align 4, !tbaa !47
  br label %1004, !llvm.loop !71

1062:                                             ; preds = %1045, %1041, %1037
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #7
  br label %1122

1063:                                             ; preds = %1008
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #7
  br label %1064

1064:                                             ; preds = %1063
  %1065 = load i32, ptr %69, align 4, !tbaa !47
  %1066 = add nsw i32 %1065, 1
  store i32 %1066, ptr %69, align 4, !tbaa !47
  br label %981, !llvm.loop !72

1067:                                             ; preds = %984
  %1068 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 64
  %1069 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1068) #7
  %1070 = trunc i64 %1069 to i32
  %1071 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 63
  %1072 = load i32, ptr %54, align 4, !tbaa !47
  %1073 = add nsw i32 %1072, 1
  %1074 = sext i32 %1073 to i64
  %1075 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1071, i64 noundef %1074) #7
  store i32 %1070, ptr %1075, align 4, !tbaa !47
  %1076 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 70
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %1076, ptr noundef nonnull align 4 dereferenceable(4) %55)
          to label %1077 unwind label %1110

1077:                                             ; preds = %1067
  %1078 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 71
  %1079 = getelementptr inbounds %class.HVectorBase, ptr %53, i32 0, i32 3
  %1080 = load i32, ptr %55, align 4, !tbaa !47
  %1081 = sext i32 %1080 to i64
  %1082 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1079, i64 noundef %1081) #7
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %1078, ptr noundef nonnull align 8 dereferenceable(8) %1082)
          to label %1083 unwind label %1110

1083:                                             ; preds = %1077
  %1084 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 74
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  %1085 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 76
  %1086 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1085) #7
  %1087 = trunc i64 %1086 to i32
  store i32 %1087, ptr %76, align 4, !tbaa !47
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %1084, ptr noundef nonnull align 4 dereferenceable(4) %76)
          to label %1088 unwind label %1114

1088:                                             ; preds = %1083
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  %1089 = load i32, ptr %56, align 4, !tbaa !47
  %1090 = getelementptr inbounds %class.HFactor, ptr %78, i32 0, i32 19
  %1091 = load ptr, ptr %1090, align 8, !tbaa !63
  %1092 = load i32, ptr %55, align 4, !tbaa !47
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds i32, ptr %1091, i64 %1093
  store i32 %1089, ptr %1094, align 4, !tbaa !47
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #7
  %1095 = load i32, ptr %55, align 4, !tbaa !47
  %1096 = sext i32 %1095 to i64
  %1097 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %9, i64 noundef %1096)
          to label %1098 unwind label %1118

1098:                                             ; preds = %1088
  %1099 = getelementptr inbounds { ptr, i64 }, ptr %77, i32 0, i32 0
  %1100 = extractvalue { ptr, i64 } %1097, 0
  store ptr %1100, ptr %1099, align 8
  %1101 = getelementptr inbounds { ptr, i64 }, ptr %77, i32 0, i32 1
  %1102 = extractvalue { ptr, i64 } %1097, 1
  store i64 %1102, ptr %1101, align 8
  %1103 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %77, i1 noundef zeroext true) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  store i32 0, ptr %18, align 4
  br label %1104

1104:                                             ; preds = %1098, %968
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  %1105 = load i32, ptr %18, align 4
  switch i32 %1105, label %1126 [
    i32 0, label %1106
  ]

1106:                                             ; preds = %1104
  br label %1107

1107:                                             ; preds = %1106
  %1108 = load i32, ptr %54, align 4, !tbaa !47
  %1109 = add nsw i32 %1108, 1
  store i32 %1109, ptr %54, align 4, !tbaa !47
  br label %757, !llvm.loop !73

1110:                                             ; preds = %1077, %1067
  %1111 = landingpad { ptr, i32 }
          cleanup
  %1112 = extractvalue { ptr, i32 } %1111, 0
  store ptr %1112, ptr %11, align 8
  %1113 = extractvalue { ptr, i32 } %1111, 1
  store i32 %1113, ptr %12, align 4
  br label %1122

1114:                                             ; preds = %1083
  %1115 = landingpad { ptr, i32 }
          cleanup
  %1116 = extractvalue { ptr, i32 } %1115, 0
  store ptr %1116, ptr %11, align 8
  %1117 = extractvalue { ptr, i32 } %1115, 1
  store i32 %1117, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %1122

1118:                                             ; preds = %1088
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %11, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %12, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  br label %1122

1122:                                             ; preds = %1118, %1114, %1110, %1062
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #7
  br label %1123

1123:                                             ; preds = %1122, %924
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %1124

1124:                                             ; preds = %1123, %920, %895
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #7
  br label %1125

1125:                                             ; preds = %1124, %835, %802
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  br label %1132

1126:                                             ; preds = %1104, %762
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #7
  %1127 = load i32, ptr %18, align 4
  switch i32 %1127, label %1129 [
    i32 29, label %1128
  ]

1128:                                             ; preds = %1126
  store i32 0, ptr %18, align 4
  br label %1129

1129:                                             ; preds = %1128, %1126
  call void @_ZN11HVectorBaseIdED2Ev(ptr noundef nonnull align 8 dereferenceable(176) %53) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %51) #7
  %1130 = load i32, ptr %18, align 4
  switch i32 %1130, label %1136 [
    i32 0, label %1131
  ]

1131:                                             ; preds = %1129
  br label %1134

1132:                                             ; preds = %1125, %767
  call void @_ZN11HVectorBaseIdED2Ev(ptr noundef nonnull align 8 dereferenceable(176) %53) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #7
  br label %1133

1133:                                             ; preds = %1132, %763
  call void @llvm.lifetime.end.p0(i64 40, ptr %51) #7
  br label %1138

1134:                                             ; preds = %1131, %645
  invoke void @_ZN7HFactor11buildFinishEv(ptr noundef nonnull align 8 dereferenceable(1912) %78)
          to label %1135 unwind label %664

1135:                                             ; preds = %1134
  store i32 0, ptr %3, align 4
  store i32 1, ptr %18, align 4
  br label %1136

1136:                                             ; preds = %1135, %1129, %643
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #7
  %1137 = load i32, ptr %3, align 4
  ret i32 %1137

1138:                                             ; preds = %1133, %664, %642
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  br label %1139

1139:                                             ; preds = %1138, %108
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %9) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %8) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %7) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %6) #7
  br label %1140

1140:                                             ; preds = %1139
  %1141 = load ptr, ptr %11, align 8
  %1142 = load i32, ptr %12, align 4
  %1143 = insertvalue { ptr, i32 } poison, ptr %1141, 0
  %1144 = insertvalue { ptr, i32 } %1143, i32 %1142, 1
  resume { ptr, i32 } %1144
}

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

declare void @_ZN7HFactor7luClearEv(ptr noundef nonnull align 8 dereferenceable(1912)) #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIaSaIaEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #4 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) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11HVectorBaseIdEC2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #6 align 2

declare void @_ZN11HVectorBaseIdE5setupEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) #3

declare void @_ZN11HVectorBaseIdE5clearEv(ptr noundef nonnull align 8 dereferenceable(176)) #3

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

declare void @_ZNK7HFactor6ftranLER11HVectorBaseIdEdP15HighsTimerClock(ptr noundef nonnull align 8 dereferenceable(1912), ptr noundef nonnull align 8 dereferenceable(176), double noundef, ptr noundef) #3

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

declare void @_ZN11HVectorBaseIdE5tightEv(ptr noundef nonnull align 8 dereferenceable(176)) #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11HVectorBaseIdED2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4 align 2

declare void @_ZN7HFactor11buildFinishEv(ptr noundef nonnull align 8 dereferenceable(1912)) #3

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { "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 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 = { 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, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!12, !10, i64 96}
!12 = !{!"_ZTS7HFactor", !13, i64 0, !13, i64 8, !14, i64 16, !15, i64 24, !15, i64 48, !15, i64 72, !19, i64 96, !14, i64 184, !14, i64 188, !14, i64 192, !14, i64 196, !14, i64 200, !14, i64 204, !14, i64 208, !13, i64 216, !10, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !6, i64 256, !13, i64 264, !13, i64 272, !14, i64 280, !13, i64 288, !24, i64 296, !30, i64 304, !10, i64 400, !10, i64 401, !14, i64 404, !14, i64 408, !6, i64 416, !14, i64 424, !15, i64 432, !33, i64 456, !15, i64 480, !15, i64 504, !15, i64 528, !33, i64 552, !15, i64 576, !15, i64 600, !15, i64 624, !15, i64 648, !15, i64 672, !15, i64 696, !15, i64 720, !33, i64 744, !33, i64 768, !15, i64 792, !15, i64 816, !15, i64 840, !15, i64 864, !15, i64 888, !15, i64 912, !37, i64 936, !33, i64 960, !15, i64 984, !15, i64 1008, !15, i64 1032, !15, i64 1056, !15, i64 1080, !15, i64 1104, !15, i64 1128, !15, i64 1152, !15, i64 1176, !15, i64 1200, !33, i64 1224, !15, i64 1248, !15, i64 1272, !33, i64 1296, !15, i64 1320, !15, i64 1344, !33, i64 1368, !14, i64 1392, !14, i64 1396, !15, i64 1400, !15, i64 1424, !15, i64 1448, !33, i64 1472, !15, i64 1496, !15, i64 1520, !15, i64 1544, !15, i64 1568, !33, i64 1592, !33, i64 1616, !15, i64 1640, !15, i64 1664, !15, i64 1688, !33, i64 1712, !41, i64 1736}
!13 = !{!"double", !7, i64 0}
!14 = !{!"int", !7, i64 0}
!15 = !{!"_ZTSSt6vectorIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTS12RefactorInfo", !10, i64 0, !15, i64 8, !15, i64 32, !20, i64 56, !13, i64 80}
!20 = !{!"_ZTSSt6vectorIaSaIaEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIaSaIaEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIaSaIaEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIaSaIaEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt10unique_ptrIN7HFactor7LogDataESt14default_deleteIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt15__uniq_ptr_dataIN7HFactor7LogDataESt14default_deleteIS1_ELb1ELb1EE", !26, i64 0}
!26 = !{!"_ZTSSt15__uniq_ptr_implIN7HFactor7LogDataESt14default_deleteIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt5tupleIJPN7HFactor7LogDataESt14default_deleteIS1_EEE", !28, i64 0}
!28 = !{!"_ZTSSt11_Tuple_implILm0EJPN7HFactor7LogDataESt14default_deleteIS1_EEE", !29, i64 0}
!29 = !{!"_ZTSSt10_Head_baseILm0EPN7HFactor7LogDataELb0EE", !6, i64 0}
!30 = !{!"_ZTS15HighsLogOptions", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !31, i64 48, !6, i64 80, !10, i64 88}
!31 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !32, i64 0, !6, i64 24}
!32 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!33 = !{!"_ZTSSt6vectorIdSaIdEE", !34, i64 0}
!34 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!37 = !{!"_ZTSSt6vectorIcSaIcEE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTS11HVectorBaseIdE", !14, i64 0, !14, i64 4, !15, i64 8, !33, i64 32, !13, i64 56, !37, i64 64, !15, i64 88, !6, i64 112, !10, i64 120, !14, i64 124, !15, i64 128, !33, i64 152}
!42 = !{i8 0, i8 2}
!43 = !{}
!44 = !{!12, !14, i64 424}
!45 = !{!12, !14, i64 184}
!46 = !{!12, !14, i64 200}
!47 = !{!14, !14, i64 0}
!48 = !{!12, !13, i64 176}
!49 = !{!12, !13, i64 8}
!50 = !{!7, !7, i64 0}
!51 = !{!12, !14, i64 204}
!52 = !{!12, !6, i64 232}
!53 = !{!12, !6, i64 240}
!54 = !{!12, !6, i64 248}
!55 = !{!13, !13, i64 0}
!56 = distinct !{!56, !57}
!57 = !{!"llvm.loop.mustprogress"}
!58 = !{!12, !13, i64 272}
!59 = distinct !{!59, !57}
!60 = distinct !{!60, !57}
!61 = distinct !{!61, !57}
!62 = distinct !{!62, !57}
!63 = !{!12, !6, i64 256}
!64 = distinct !{!64, !57}
!65 = distinct !{!65, !57}
!66 = distinct !{!66, !57}
!67 = distinct !{!67, !57}
!68 = !{!41, !14, i64 4}
!69 = distinct !{!69, !57}
!70 = distinct !{!70, !57}
!71 = distinct !{!71, !57}
!72 = distinct !{!72, !57}
!73 = distinct !{!73, !57}


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

%"class.std::vector.17" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.HVectorBase = type { i32, i32, %"class.std::vector", %"class.std::vector.10", double, %"class.std::vector.15", %"class.std::vector", ptr, i8, i32, %"class.std::vector", %"class.std::vector.10" }
%"class.std::vector.15" = type { %"struct.std::_Vector_base.16" }
%"struct.std::_Vector_base.16" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl" = type { %"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<char, std::allocator<char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.10" = type { %"struct.std::_Vector_base.11" }
%"struct.std::_Vector_base.11" = 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 }

@.str.51 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [78 x i8], align 1
@__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock = external hidden unnamed_addr constant [45 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.54 = external hidden unnamed_addr constant [54 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [30 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZN7HFactor7rebuildEP15HighsTimerClock(ptr noundef nonnull align 8 dereferenceable(1912) %0, ptr nocapture noundef readnone %1) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %3 = alloca %"class.std::vector.17", align 8
  %4 = alloca i8, align 1
  %5 = alloca i32, align 4
  %6 = alloca %"struct.std::_Bit_reference", align 8
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca i32, align 4
  %11 = alloca %"struct.std::_Bit_reference", align 8
  %12 = alloca double, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %"struct.std::_Bit_reference", align 8
  %18 = alloca %"class.std::vector.17", align 8
  %19 = alloca %class.HVectorBase, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"struct.std::_Bit_reference", align 8
  %22 = alloca i32, align 4
  %23 = alloca %"struct.std::_Bit_reference", align 8
  %24 = alloca i32, align 4
  %25 = alloca %"struct.std::_Bit_reference", align 8
  %26 = alloca double, align 8
  %27 = alloca i32, align 4
  %28 = alloca %"struct.std::_Bit_reference", align 8
  %29 = getelementptr inbounds i8, ptr %0, i64 96
  %30 = load i8, ptr %29, align 8, !tbaa !5, !range !40, !noundef !41
  %31 = trunc nuw i8 %30 to i1
  br i1 %31, label %33, label %32

32:                                               ; preds = %2
  tail call void @__assert_fail(ptr noundef nonnull @.str.51, ptr noundef nonnull @.str.52, i32 noundef 33, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

33:                                               ; preds = %2
  tail call void @_ZN7HFactor7luClearEv(ptr noundef nonnull align 8 dereferenceable(1912) %0)
  %34 = getelementptr inbounds i8, ptr %0, i64 424
  store i32 0, ptr %34, align 8, !tbaa !42
  %35 = getelementptr inbounds i8, ptr %0, i64 184
  store i32 0, ptr %35, align 8, !tbaa !43
  %36 = getelementptr inbounds i8, ptr %0, i64 200
  %37 = load i32, ptr %36, align 8, !tbaa !44
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %3) #8
  call void @_ZNSt6vectorIbSaIbEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #8
  %38 = load i32, ptr %36, align 8, !tbaa !44
  %39 = sext i32 %38 to i64
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %4) #8
  store i8 0, ptr %4, align 1, !tbaa !45
  invoke void @_ZNSt6vectorIbSaIbEE6assignEmRKb(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %39, ptr noundef nonnull align 1 dereferenceable(1) %4)
          to label %40 unwind label %49

40:                                               ; preds = %33
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  %41 = getelementptr inbounds i8, ptr %0, i64 176
  %42 = load double, ptr %41, align 8, !tbaa !46
  %43 = getelementptr inbounds i8, ptr %0, i64 8
  store double %42, ptr %43, align 8, !tbaa !47
  %44 = getelementptr inbounds i8, ptr %0, i64 104
  %45 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %44) #8
  %46 = trunc i64 %45 to i32
  %47 = load i32, ptr %36, align 8, !tbaa !44
  %.not = icmp sgt i32 %47, %46
  br i1 %.not, label %48, label %51

48:                                               ; preds = %40
  call void @__assert_fail(ptr noundef nonnull @.str.53, ptr noundef nonnull @.str.52, i32 noundef 55, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

49:                                               ; preds = %33
  %50 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %4) #8
  br label %574

51:                                               ; preds = %40
  %52 = getelementptr inbounds i8, ptr %0, i64 128
  %53 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  %54 = trunc i64 %53 to i32
  %55 = load i32, ptr %36, align 8, !tbaa !44
  %.not209 = icmp sgt i32 %55, %54
  br i1 %.not209, label %56, label %57

56:                                               ; preds = %51
  call void @__assert_fail(ptr noundef nonnull @.str.54, ptr noundef nonnull @.str.52, i32 noundef 56, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

57:                                               ; preds = %51
  %58 = getelementptr inbounds i8, ptr %0, i64 152
  %59 = call noundef i64 @_ZNKSt6vectorIaSaIaEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  %60 = trunc i64 %59 to i32
  %61 = load i32, ptr %36, align 8, !tbaa !44
  %.not210 = icmp sgt i32 %61, %60
  br i1 %.not210, label %80, label %.preheader260

.preheader260:                                    ; preds = %57
  %62 = icmp sgt i32 %61, 0
  br i1 %62, label %.lr.ph366, label %.thread238

.lr.ph366:                                        ; preds = %.preheader260
  %63 = getelementptr inbounds i8, ptr %6, i64 8
  %64 = getelementptr inbounds i8, ptr %0, i64 204
  %65 = getelementptr inbounds i8, ptr %0, i64 232
  %66 = getelementptr inbounds i8, ptr %0, i64 240
  %67 = getelementptr inbounds i8, ptr %0, i64 248
  %68 = getelementptr inbounds i8, ptr %0, i64 272
  %69 = getelementptr inbounds i8, ptr %0, i64 1448
  %70 = getelementptr inbounds i8, ptr %0, i64 1472
  %71 = getelementptr inbounds i8, ptr %0, i64 1176
  %72 = getelementptr inbounds i8, ptr %0, i64 1200
  %73 = getelementptr inbounds i8, ptr %0, i64 1344
  %74 = getelementptr inbounds i8, ptr %0, i64 1368
  %75 = getelementptr inbounds i8, ptr %0, i64 1400
  %76 = getelementptr inbounds i8, ptr %11, i64 8
  %77 = getelementptr inbounds i8, ptr %0, i64 1224
  %78 = getelementptr inbounds i8, ptr %0, i64 256
  %79 = getelementptr inbounds i8, ptr %17, i64 8
  br label %81

80:                                               ; preds = %57
  call void @__assert_fail(ptr noundef nonnull @.str.55, ptr noundef nonnull @.str.52, i32 noundef 57, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

81:                                               ; preds = %.lr.ph366, %298
  %indvars.iv529 = phi i64 [ 0, %.lr.ph366 ], [ %indvars.iv.next530, %298 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %5) #8
  %82 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %indvars.iv529) #8
  %83 = load i32, ptr %82, align 4, !tbaa !48
  store i32 %83, ptr %5, align 4, !tbaa !48
  %84 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %indvars.iv529) #8
  %85 = load i32, ptr %84, align 4, !tbaa !48
  %86 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %indvars.iv529) #8
  %87 = load i8, ptr %86, align 1, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %6) #8
  %88 = load i32, ptr %5, align 4, !tbaa !48
  %89 = sext i32 %88 to i64
  %90 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %89)
          to label %91 unwind label %96

91:                                               ; preds = %81
  %92 = extractvalue { ptr, i64 } %90, 0
  store ptr %92, ptr %6, align 8
  %93 = extractvalue { ptr, i64 } %90, 1
  store i64 %93, ptr %63, align 8
  %94 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %6) #8
  br i1 %94, label %95, label %98

95:                                               ; preds = %91
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.52, i32 noundef 62, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

96:                                               ; preds = %81
  %97 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  br label %307

98:                                               ; preds = %91
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %6) #8
  %or.cond = icmp ult i8 %87, 2
  br i1 %or.cond, label %99, label %144

99:                                               ; preds = %98
  %switch = icmp eq i8 %87, 0
  %100 = load i32, ptr %64, align 4, !tbaa !50
  %.not214 = icmp slt i32 %85, %100
  br i1 %switch, label %101, label %103

101:                                              ; preds = %99
  br i1 %.not214, label %102, label %127

102:                                              ; preds = %101
  call void @__assert_fail(ptr noundef nonnull @.str.57, ptr noundef nonnull @.str.52, i32 noundef 69, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

103:                                              ; preds = %99
  br i1 %.not214, label %105, label %104

104:                                              ; preds = %103
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.52, i32 noundef 75, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

105:                                              ; preds = %103
  %106 = load ptr, ptr %65, align 8, !tbaa !51
  %107 = sext i32 %85 to i64
  %108 = getelementptr inbounds i32, ptr %106, i64 %107
  %109 = load i32, ptr %108, align 4, !tbaa !48
  %110 = load ptr, ptr %66, align 8, !tbaa !52
  %111 = sext i32 %109 to i64
  %112 = getelementptr inbounds i32, ptr %110, i64 %111
  %113 = load i32, ptr %112, align 4, !tbaa !48
  %114 = load i32, ptr %5, align 4, !tbaa !48
  %115 = icmp eq i32 %113, %114
  br i1 %115, label %117, label %116

116:                                              ; preds = %105
  call void @__assert_fail(ptr noundef nonnull @.str.59, ptr noundef nonnull @.str.52, i32 noundef 78, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

117:                                              ; preds = %105
  %118 = getelementptr i8, ptr %108, i64 4
  %119 = load i32, ptr %118, align 4, !tbaa !48
  %120 = sub nsw i32 %119, %109
  %121 = icmp eq i32 %120, 1
  br i1 %121, label %122, label %.critedge

122:                                              ; preds = %117
  %123 = load ptr, ptr %67, align 8, !tbaa !53
  %124 = getelementptr inbounds double, ptr %123, i64 %111
  %125 = load double, ptr %124, align 8, !tbaa !54
  %126 = fcmp oeq double %125, 1.000000e+00
  br i1 %126, label %127, label %.critedge

.critedge:                                        ; preds = %117, %122
  call void @__assert_fail(ptr noundef nonnull @.str.60, ptr noundef nonnull @.str.52, i32 noundef 79, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

127:                                              ; preds = %122, %101
  %storemerge.in = load i32, ptr %35, align 8, !tbaa !43
  %storemerge = add nsw i32 %storemerge.in, 1
  store i32 %storemerge, ptr %35, align 8, !tbaa !43
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #8
  %128 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %72) #8
  %129 = trunc i64 %128 to i32
  store i32 %129, ptr %7, align 4, !tbaa !48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 4 dereferenceable(4) %7)
          to label %130 unwind label %136

130:                                              ; preds = %127
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %131 unwind label %138

131:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store double 1.000000e+00, ptr %8, align 8, !tbaa !54
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 8 dereferenceable(8) %8)
          to label %132 unwind label %140

132:                                              ; preds = %131
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8
  %133 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #8
  %134 = trunc i64 %133 to i32
  store i32 %134, ptr %9, align 4, !tbaa !48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %135 unwind label %142

135:                                              ; preds = %132
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  br label %290

136:                                              ; preds = %127
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8
  br label %307

138:                                              ; preds = %130
  %139 = landingpad { ptr, i32 }
          cleanup
  br label %307

140:                                              ; preds = %131
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %307

142:                                              ; preds = %132
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  br label %307

144:                                              ; preds = %98
  %145 = icmp eq i8 %87, 2
  %146 = and i8 %87, -2
  %or.cond10 = icmp eq i8 %146, 2
  br i1 %or.cond10, label %147, label %287

147:                                              ; preds = %144
  %148 = load i32, ptr %64, align 4, !tbaa !50
  %149 = icmp slt i32 %85, %148
  br i1 %149, label %151, label %150

150:                                              ; preds = %147
  call void @__assert_fail(ptr noundef nonnull @.str.58, ptr noundef nonnull @.str.52, i32 noundef 91, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

151:                                              ; preds = %147
  %152 = load ptr, ptr %65, align 8, !tbaa !51
  %153 = sext i32 %85 to i64
  %154 = getelementptr inbounds i32, ptr %152, i64 %153
  %155 = load i32, ptr %154, align 4, !tbaa !48
  %156 = getelementptr i8, ptr %154, i64 4
  %157 = load i32, ptr %156, align 4, !tbaa !48
  %158 = icmp slt i32 %155, %157
  br i1 %158, label %.lr.ph, label %.thread

.lr.ph:                                           ; preds = %151
  %159 = load ptr, ptr %66, align 8, !tbaa !52
  %160 = load i32, ptr %5, align 4, !tbaa !48
  %161 = sext i32 %155 to i64
  br label %162

162:                                              ; preds = %.lr.ph, %166
  %indvars.iv503 = phi i32 [ %155, %.lr.ph ], [ %indvars.iv.next504, %166 ]
  %indvars.iv = phi i64 [ %161, %.lr.ph ], [ %indvars.iv.next, %166 ]
  %163 = getelementptr inbounds i32, ptr %159, i64 %indvars.iv
  %164 = load i32, ptr %163, align 4, !tbaa !48
  %165 = icmp eq i32 %164, %160
  br i1 %165, label %167, label %166

166:                                              ; preds = %162
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond.not = icmp eq i32 %157, %lftr.wideiv
  %indvars.iv.next504 = add i32 %indvars.iv503, 1
  br i1 %exitcond.not, label %.thread, label %162, !llvm.loop !55

167:                                              ; preds = %162
  %168 = trunc nsw i64 %indvars.iv to i32
  %169 = icmp sgt i64 %indvars.iv, -1
  br i1 %169, label %170, label %.thread

.thread:                                          ; preds = %167, %151, %166
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.52, i32 noundef 102, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

170:                                              ; preds = %167
  %171 = load ptr, ptr %67, align 8, !tbaa !53
  %172 = and i64 %indvars.iv, 4294967295
  %173 = getelementptr inbounds double, ptr %171, i64 %172
  %174 = load double, ptr %173, align 8, !tbaa !54
  %175 = call double @llvm.fabs.f64(double %174)
  %176 = load double, ptr %68, align 8, !tbaa !57
  %177 = fcmp ult double %175, %176
  br i1 %177, label %178, label %179

178:                                              ; preds = %170
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.52, i32 noundef 106, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

179:                                              ; preds = %170
  %180 = fcmp uge double %175, %176
  br i1 %180, label %181, label %.thread246

181:                                              ; preds = %179
  br i1 %145, label %183, label %.preheader259

.preheader259:                                    ; preds = %181
  %182 = icmp slt i32 %155, %168
  br i1 %182, label %.lr.ph361, label %.preheader258

183:                                              ; preds = %181
  %184 = fdiv double 1.000000e+00, %174
  %185 = add nuw nsw i32 %168, 1
  %186 = icmp slt i32 %155, %168
  br i1 %186, label %.lr.ph363, label %._crit_edge

._crit_edge:                                      ; preds = %234, %183
  %187 = icmp slt i32 %185, %157
  br i1 %187, label %.lr.ph363.preheader.1, label %._crit_edge.1

.lr.ph363.preheader.1:                            ; preds = %._crit_edge
  %188 = sext i32 %185 to i64
  br label %.lr.ph363.1

.lr.ph363.1:                                      ; preds = %209, %.lr.ph363.preheader.1
  %indvars.iv513.1 = phi i64 [ %188, %.lr.ph363.preheader.1 ], [ %indvars.iv.next514.1, %209 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  %189 = load ptr, ptr %66, align 8, !tbaa !52
  %190 = getelementptr inbounds i32, ptr %189, i64 %indvars.iv513.1
  %191 = load i32, ptr %190, align 4, !tbaa !48
  store i32 %191, ptr %10, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #8
  %192 = sext i32 %191 to i64
  %193 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %192)
          to label %194 unwind label %.loopexit.split-lp

194:                                              ; preds = %.lr.ph363.1
  %195 = extractvalue { ptr, i64 } %193, 0
  store ptr %195, ptr %11, align 8
  %196 = extractvalue { ptr, i64 } %193, 1
  store i64 %196, ptr %76, align 8
  %197 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %11) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #8
  br i1 %197, label %205, label %198

198:                                              ; preds = %194
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %199 unwind label %.loopexit.split-lp520

199:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %200 = load ptr, ptr %67, align 8, !tbaa !53
  %201 = getelementptr inbounds double, ptr %200, i64 %indvars.iv513.1
  %202 = load double, ptr %201, align 8, !tbaa !54
  %203 = fmul double %184, %202
  store double %203, ptr %12, align 8, !tbaa !54
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %204 unwind label %.loopexit.split-lp525

204:                                              ; preds = %199
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %209

205:                                              ; preds = %194
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %206 unwind label %.loopexit.split-lp520

206:                                              ; preds = %205
  %207 = load ptr, ptr %67, align 8, !tbaa !53
  %208 = getelementptr inbounds double, ptr %207, i64 %indvars.iv513.1
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(8) %208)
          to label %209 unwind label %.loopexit.split-lp520

209:                                              ; preds = %206, %204
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  %indvars.iv.next514.1 = add nsw i64 %indvars.iv513.1, 1
  %lftr.wideiv516.1 = trunc i64 %indvars.iv.next514.1 to i32
  %exitcond517.1.not = icmp eq i32 %157, %lftr.wideiv516.1
  br i1 %exitcond517.1.not, label %._crit_edge.1, label %.lr.ph363.1, !llvm.loop !58

._crit_edge.1:                                    ; preds = %209, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #8
  %210 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %72) #8
  %211 = trunc i64 %210 to i32
  store i32 %211, ptr %13, align 4, !tbaa !48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 4 dereferenceable(4) %13)
          to label %236 unwind label %244

.lr.ph363:                                        ; preds = %183, %234
  %indvars.iv513 = phi i64 [ %indvars.iv.next514, %234 ], [ %161, %183 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  %212 = load ptr, ptr %66, align 8, !tbaa !52
  %213 = getelementptr inbounds i32, ptr %212, i64 %indvars.iv513
  %214 = load i32, ptr %213, align 4, !tbaa !48
  store i32 %214, ptr %10, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #8
  %215 = sext i32 %214 to i64
  %216 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %215)
          to label %217 unwind label %.loopexit518

217:                                              ; preds = %.lr.ph363
  %218 = extractvalue { ptr, i64 } %216, 0
  store ptr %218, ptr %11, align 8
  %219 = extractvalue { ptr, i64 } %216, 1
  store i64 %219, ptr %76, align 8
  %220 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %11) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #8
  br i1 %220, label %230, label %221

221:                                              ; preds = %217
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %72, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %222 unwind label %.loopexit519

222:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %223 = load ptr, ptr %67, align 8, !tbaa !53
  %224 = getelementptr inbounds double, ptr %223, i64 %indvars.iv513
  %225 = load double, ptr %224, align 8, !tbaa !54
  %226 = fmul double %184, %225
  store double %226, ptr %12, align 8, !tbaa !54
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %227 unwind label %.loopexit524

227:                                              ; preds = %222
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %234

.loopexit518:                                     ; preds = %.lr.ph363
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %228

.loopexit.split-lp:                               ; preds = %.lr.ph363.1
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %228

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

.loopexit519:                                     ; preds = %221, %230, %231
  %lpad.loopexit521 = landingpad { ptr, i32 }
          cleanup
  br label %235

.loopexit.split-lp520:                            ; preds = %198, %205, %206
  %lpad.loopexit.split-lp522 = landingpad { ptr, i32 }
          cleanup
  br label %235

.loopexit524:                                     ; preds = %222
  %lpad.loopexit526 = landingpad { ptr, i32 }
          cleanup
  br label %229

.loopexit.split-lp525:                            ; preds = %199
  %lpad.loopexit.split-lp527 = landingpad { ptr, i32 }
          cleanup
  br label %229

229:                                              ; preds = %.loopexit.split-lp525, %.loopexit524
  %lpad.phi528 = phi { ptr, i32 } [ %lpad.loopexit526, %.loopexit524 ], [ %lpad.loopexit.split-lp527, %.loopexit.split-lp525 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %235

230:                                              ; preds = %217
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %231 unwind label %.loopexit519

231:                                              ; preds = %230
  %232 = load ptr, ptr %67, align 8, !tbaa !53
  %233 = getelementptr inbounds double, ptr %232, i64 %indvars.iv513
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %234 unwind label %.loopexit519

234:                                              ; preds = %231, %227
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  %indvars.iv.next514 = add nsw i64 %indvars.iv513, 1
  %lftr.wideiv516 = trunc i64 %indvars.iv.next514 to i32
  %exitcond517.not = icmp eq i32 %lftr.wideiv516, %168
  br i1 %exitcond517.not, label %._crit_edge, label %.lr.ph363, !llvm.loop !58

235:                                              ; preds = %.loopexit519, %.loopexit.split-lp520, %229, %228
  %.pn = phi { ptr, i32 } [ %lpad.phi528, %229 ], [ %lpad.phi, %228 ], [ %lpad.loopexit521, %.loopexit519 ], [ %lpad.loopexit.split-lp522, %.loopexit.split-lp520 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  br label %307

236:                                              ; preds = %._crit_edge.1
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %237 unwind label %246

237:                                              ; preds = %236
  %238 = load ptr, ptr %67, align 8, !tbaa !53
  %239 = getelementptr inbounds double, ptr %238, i64 %172
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 8 dereferenceable(8) %239)
          to label %240 unwind label %246

240:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #8
  %241 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #8
  %242 = trunc i64 %241 to i32
  store i32 %242, ptr %14, align 4, !tbaa !48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 4 dereferenceable(4) %14)
          to label %243 unwind label %248

243:                                              ; preds = %240
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #8
  br label %290

244:                                              ; preds = %._crit_edge.1
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  br label %307

246:                                              ; preds = %237, %236
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %307

248:                                              ; preds = %240
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #8
  br label %307

.preheader258:                                    ; preds = %256, %.preheader259
  %250 = zext i32 %indvars.iv503 to i64
  br label %259

.lr.ph361:                                        ; preds = %.preheader259, %256
  %indvars.iv500 = phi i64 [ %indvars.iv.next501, %256 ], [ %161, %.preheader259 ]
  %251 = load ptr, ptr %66, align 8, !tbaa !52
  %252 = getelementptr inbounds i32, ptr %251, i64 %indvars.iv500
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 4 dereferenceable(4) %252)
          to label %253 unwind label %257

253:                                              ; preds = %.lr.ph361
  %254 = load ptr, ptr %67, align 8, !tbaa !53
  %255 = getelementptr inbounds double, ptr %254, i64 %indvars.iv500
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(8) %255)
          to label %256 unwind label %257

256:                                              ; preds = %253
  %indvars.iv.next501 = add nsw i64 %indvars.iv500, 1
  %lftr.wideiv506 = trunc i64 %indvars.iv.next501 to i32
  %exitcond507.not = icmp eq i32 %indvars.iv503, %lftr.wideiv506
  br i1 %exitcond507.not, label %.preheader258, label %.lr.ph361, !llvm.loop !59

257:                                              ; preds = %253, %.lr.ph361
  %258 = landingpad { ptr, i32 }
          cleanup
  br label %307

259:                                              ; preds = %.preheader258, %268
  %indvars.iv510 = phi i64 [ %250, %.preheader258 ], [ %indvars.iv.next511, %268 ]
  %indvars.iv.next511 = add nuw nsw i64 %indvars.iv510, 1
  %260 = trunc nuw i64 %indvars.iv.next511 to i32
  %261 = icmp sgt i32 %157, %260
  br i1 %261, label %265, label %262

262:                                              ; preds = %259
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %15) #8
  %263 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %72) #8
  %264 = trunc i64 %263 to i32
  store i32 %264, ptr %15, align 4, !tbaa !48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %71, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %273 unwind label %281

265:                                              ; preds = %259
  %266 = load ptr, ptr %66, align 8, !tbaa !52
  %267 = getelementptr inbounds i32, ptr %266, i64 %indvars.iv.next511
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef nonnull align 4 dereferenceable(4) %267)
          to label %268 unwind label %271

268:                                              ; preds = %265
  %269 = load ptr, ptr %67, align 8, !tbaa !53
  %270 = getelementptr inbounds double, ptr %269, i64 %indvars.iv.next511
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %70, ptr noundef nonnull align 8 dereferenceable(8) %270)
          to label %259 unwind label %271, !llvm.loop !60

271:                                              ; preds = %268, %265
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %307

273:                                              ; preds = %262
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 4 dereferenceable(4) %5)
          to label %274 unwind label %283

274:                                              ; preds = %273
  %275 = load ptr, ptr %67, align 8, !tbaa !53
  %276 = getelementptr inbounds double, ptr %275, i64 %172
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %74, ptr noundef nonnull align 8 dereferenceable(8) %276)
          to label %277 unwind label %283

277:                                              ; preds = %274
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %16) #8
  %278 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %69) #8
  %279 = trunc i64 %278 to i32
  store i32 %279, ptr %16, align 4, !tbaa !48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %75, ptr noundef nonnull align 4 dereferenceable(4) %16)
          to label %280 unwind label %285

280:                                              ; preds = %277
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %290

281:                                              ; preds = %262
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #8
  br label %307

283:                                              ; preds = %274, %273
  %284 = landingpad { ptr, i32 }
          cleanup
  br label %307

285:                                              ; preds = %277
  %286 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  br label %307

287:                                              ; preds = %144
  %288 = icmp eq i8 %87, 4
  br i1 %288, label %310, label %289

289:                                              ; preds = %287
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.52, i32 noundef 172, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

290:                                              ; preds = %280, %243, %135
  %291 = load ptr, ptr %78, align 8, !tbaa !61
  %292 = load i32, ptr %5, align 4, !tbaa !48
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds i32, ptr %291, i64 %293
  store i32 %85, ptr %294, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #8
  %295 = load i32, ptr %5, align 4, !tbaa !48
  %296 = sext i32 %295 to i64
  %297 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %296)
          to label %298 unwind label %305

298:                                              ; preds = %290
  %299 = extractvalue { ptr, i64 } %297, 0
  store ptr %299, ptr %17, align 8
  %300 = extractvalue { ptr, i64 } %297, 1
  store i64 %300, ptr %79, align 8
  %301 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %17, i1 noundef zeroext true) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  %indvars.iv.next530 = add nuw nsw i64 %indvars.iv529, 1
  %302 = load i32, ptr %36, align 8, !tbaa !44
  %303 = sext i32 %302 to i64
  %304 = icmp slt i64 %indvars.iv.next530, %303
  br i1 %304, label %81, label %.thread238, !llvm.loop !62

305:                                              ; preds = %290
  %306 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #8
  br label %307

307:                                              ; preds = %257, %271, %281, %283, %285, %248, %246, %244, %235, %305, %142, %140, %138, %136, %96
  %.pn215 = phi { ptr, i32 } [ %306, %305 ], [ %143, %142 ], [ %141, %140 ], [ %139, %138 ], [ %137, %136 ], [ %97, %96 ], [ %258, %257 ], [ %272, %271 ], [ %286, %285 ], [ %284, %283 ], [ %282, %281 ], [ %.pn, %235 ], [ %249, %248 ], [ %247, %246 ], [ %245, %244 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  br label %574

.thread246:                                       ; preds = %179
  %308 = load i32, ptr %34, align 8, !tbaa !42
  %309 = add nsw i32 %308, 1
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  br label %573

310:                                              ; preds = %287
  %311 = trunc nuw nsw i64 %indvars.iv529 to i32
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %5) #8
  %.pre = load i32, ptr %36, align 8, !tbaa !44
  br label %.thread238

.thread238:                                       ; preds = %298, %.preheader260, %310
  %312 = phi i32 [ %.pre, %310 ], [ %61, %.preheader260 ], [ %302, %298 ]
  %.2154243 = phi i32 [ %311, %310 ], [ %37, %.preheader260 ], [ %37, %298 ]
  %313 = icmp slt i32 %.2154243, %312
  br i1 %313, label %314, label %572

314:                                              ; preds = %.thread238
  %315 = getelementptr inbounds i8, ptr %0, i64 1176
  %316 = add nsw i32 %312, 1
  %317 = sext i32 %316 to i64
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %315, i64 noundef %317)
          to label %.preheader257 unwind label %324

.preheader257:                                    ; preds = %314
  %318 = load i32, ptr %36, align 8, !tbaa !44
  %319 = icmp slt i32 %.2154243, %318
  br i1 %319, label %.lr.ph368.preheader, label %.preheader257.._crit_edge369_crit_edge

.preheader257.._crit_edge369_crit_edge:           ; preds = %.preheader257
  %.pre575 = sext i32 %318 to i64
  br label %._crit_edge369

.lr.ph368.preheader:                              ; preds = %.preheader257
  %320 = sext i32 %.2154243 to i64
  br label %.lr.ph368

._crit_edge369:                                   ; preds = %.lr.ph368, %.preheader257.._crit_edge369_crit_edge
  %.pre-phi = phi i64 [ %.pre575, %.preheader257.._crit_edge369_crit_edge ], [ %330, %.lr.ph368 ]
  %321 = getelementptr inbounds i8, ptr %0, i64 1152
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %321, i64 noundef %.pre-phi)
          to label %.preheader256 unwind label %324

.preheader256:                                    ; preds = %._crit_edge369
  %322 = load i32, ptr %36, align 8, !tbaa !44
  %323 = icmp sgt i32 %322, 0
  br i1 %323, label %.lr.ph371, label %.preheader256.._crit_edge372_crit_edge

.preheader256.._crit_edge372_crit_edge:           ; preds = %.preheader256
  %.pre576 = sext i32 %322 to i64
  br label %._crit_edge372

324:                                              ; preds = %572, %._crit_edge372, %._crit_edge369, %314
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %574

.lr.ph368:                                        ; preds = %.lr.ph368.preheader, %.lr.ph368
  %indvars.iv532 = phi i64 [ %320, %.lr.ph368.preheader ], [ %indvars.iv.next533, %.lr.ph368 ]
  %326 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %315, i64 noundef %indvars.iv532) #8
  %327 = load i32, ptr %326, align 4, !tbaa !48
  %indvars.iv.next533 = add nsw i64 %indvars.iv532, 1
  %328 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %315, i64 noundef %indvars.iv.next533) #8
  store i32 %327, ptr %328, align 4, !tbaa !48
  %329 = load i32, ptr %36, align 8, !tbaa !44
  %330 = sext i32 %329 to i64
  %331 = icmp slt i64 %indvars.iv.next533, %330
  br i1 %331, label %.lr.ph368, label %._crit_edge369, !llvm.loop !63

._crit_edge372:                                   ; preds = %.lr.ph371, %.preheader256.._crit_edge372_crit_edge
  %.pre-phi577 = phi i64 [ %.pre576, %.preheader256.._crit_edge372_crit_edge ], [ %340, %.lr.ph371 ]
  %332 = getelementptr inbounds i8, ptr %0, i64 1128
  invoke void @_ZNSt6vectorIiSaIiEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %332, i64 noundef %.pre-phi577)
          to label %.preheader255 unwind label %324

.preheader255:                                    ; preds = %._crit_edge372
  %333 = load i32, ptr %36, align 8, !tbaa !44
  %334 = icmp sgt i32 %333, 0
  br i1 %334, label %.lr.ph375.preheader, label %._crit_edge376

.lr.ph375.preheader:                              ; preds = %.preheader255
  %335 = sext i32 %.2154243 to i64
  br label %.lr.ph375

.lr.ph371:                                        ; preds = %.preheader256, %.lr.ph371
  %indvars.iv535 = phi i64 [ %indvars.iv.next536, %.lr.ph371 ], [ 0, %.preheader256 ]
  %336 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %indvars.iv535) #8
  %337 = load i32, ptr %336, align 4, !tbaa !48
  %338 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %321, i64 noundef %indvars.iv535) #8
  store i32 %337, ptr %338, align 4, !tbaa !48
  %indvars.iv.next536 = add nuw nsw i64 %indvars.iv535, 1
  %339 = load i32, ptr %36, align 8, !tbaa !44
  %340 = sext i32 %339 to i64
  %341 = icmp slt i64 %indvars.iv.next536, %340
  br i1 %341, label %.lr.ph371, label %._crit_edge372, !llvm.loop !64

._crit_edge376:                                   ; preds = %348, %.preheader255
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %18) #8
  invoke void @_ZNSt6vectorIbSaIbEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(40) %18, ptr noundef nonnull align 8 dereferenceable(40) %3)
          to label %357 unwind label %380

.lr.ph375:                                        ; preds = %.lr.ph375.preheader, %348
  %indvars.iv538 = phi i64 [ 0, %.lr.ph375.preheader ], [ %indvars.iv.next539, %348 ]
  %342 = icmp slt i64 %indvars.iv538, %335
  br i1 %342, label %343, label %348

343:                                              ; preds = %.lr.ph375
  %344 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %321, i64 noundef %indvars.iv538) #8
  %345 = load i32, ptr %344, align 4, !tbaa !48
  %346 = sext i32 %345 to i64
  %347 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %332, i64 noundef %346) #8
  br label %348

348:                                              ; preds = %343, %.lr.ph375
  %349 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %321, i64 noundef %indvars.iv538) #8
  %350 = load i32, ptr %349, align 4, !tbaa !48
  %351 = sext i32 %350 to i64
  %352 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %332, i64 noundef %351) #8
  %353 = trunc nuw nsw i64 %indvars.iv538 to i32
  store i32 %353, ptr %352, align 4, !tbaa !48
  %indvars.iv.next539 = add nuw nsw i64 %indvars.iv538, 1
  %354 = load i32, ptr %36, align 8, !tbaa !44
  %355 = sext i32 %354 to i64
  %356 = icmp slt i64 %indvars.iv.next539, %355
  br i1 %356, label %.lr.ph375, label %._crit_edge376, !llvm.loop !65

357:                                              ; preds = %._crit_edge376
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %19) #8
  call void @_ZN11HVectorBaseIdEC2Ev(ptr noundef nonnull align 8 dereferenceable(176) %19) #8
  %358 = load i32, ptr %36, align 8, !tbaa !44
  invoke void @_ZN11HVectorBaseIdE5setupEi(ptr noundef nonnull align 8 dereferenceable(176) %19, i32 noundef %358)
          to label %.preheader unwind label %382

.preheader:                                       ; preds = %357
  %359 = load i32, ptr %36, align 8, !tbaa !44
  %.not221390 = icmp slt i32 %.2154243, %359
  br i1 %.not221390, label %.lr.ph394, label %.loopexit

.lr.ph394:                                        ; preds = %.preheader
  %360 = getelementptr inbounds i8, ptr %21, i64 8
  %361 = getelementptr inbounds i8, ptr %0, i64 232
  %362 = getelementptr inbounds i8, ptr %0, i64 240
  %363 = getelementptr inbounds i8, ptr %23, i64 8
  %364 = getelementptr inbounds i8, ptr %19, i64 8
  %365 = getelementptr inbounds i8, ptr %19, i64 4
  %366 = getelementptr inbounds i8, ptr %0, i64 248
  %367 = getelementptr inbounds i8, ptr %19, i64 32
  %368 = getelementptr inbounds i8, ptr %0, i64 1448
  %369 = getelementptr inbounds i8, ptr %0, i64 1472
  %370 = getelementptr inbounds i8, ptr %0, i64 272
  %371 = getelementptr inbounds i8, ptr %25, i64 8
  %372 = getelementptr inbounds i8, ptr %0, i64 1200
  %373 = getelementptr inbounds i8, ptr %0, i64 1224
  %374 = getelementptr inbounds i8, ptr %0, i64 1344
  %375 = getelementptr inbounds i8, ptr %0, i64 1368
  %376 = getelementptr inbounds i8, ptr %0, i64 1400
  %377 = getelementptr inbounds i8, ptr %0, i64 256
  %378 = getelementptr inbounds i8, ptr %28, i64 8
  %379 = sext i32 %.2154243 to i64
  br label %384

380:                                              ; preds = %._crit_edge376
  %381 = landingpad { ptr, i32 }
          cleanup
  br label %571

382:                                              ; preds = %357
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %570

384:                                              ; preds = %.lr.ph394, %557
  %indvars.iv573 = phi i64 [ %379, %.lr.ph394 ], [ %indvars.iv.next574, %557 ]
  %.0189391 = phi double [ 0.000000e+00, %.lr.ph394 ], [ %454, %557 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #8
  %385 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %indvars.iv573) #8
  %386 = load i32, ptr %385, align 4, !tbaa !48
  store i32 %386, ptr %20, align 4, !tbaa !48
  %387 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %52, i64 noundef %indvars.iv573) #8
  %388 = load i32, ptr %387, align 4, !tbaa !48
  %389 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIaSaIaEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %58, i64 noundef %indvars.iv573) #8
  %390 = load i8, ptr %389, align 1, !tbaa !49
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #8
  %391 = load i32, ptr %20, align 4, !tbaa !48
  %392 = sext i32 %391 to i64
  %393 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %392)
          to label %394 unwind label %399

394:                                              ; preds = %384
  %395 = extractvalue { ptr, i64 } %393, 0
  store ptr %395, ptr %21, align 8
  %396 = extractvalue { ptr, i64 } %393, 1
  store i64 %396, ptr %360, align 8
  %397 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %21) #8
  br i1 %397, label %398, label %401

398:                                              ; preds = %394
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.52, i32 noundef 224, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

399:                                              ; preds = %384
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  br label %569

401:                                              ; preds = %394
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #8
  %402 = icmp eq i8 %390, 4
  br i1 %402, label %404, label %403

403:                                              ; preds = %401
  call void @__assert_fail(ptr noundef nonnull @.str.63, ptr noundef nonnull @.str.52, i32 noundef 225, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

404:                                              ; preds = %401
  invoke void @_ZN11HVectorBaseIdE5clearEv(ptr noundef nonnull align 8 dereferenceable(176) %19)
          to label %405 unwind label %414

405:                                              ; preds = %404
  %406 = load ptr, ptr %361, align 8, !tbaa !51
  %407 = sext i32 %388 to i64
  %408 = getelementptr inbounds i32, ptr %406, i64 %407
  %409 = load i32, ptr %408, align 4, !tbaa !48
  %410 = getelementptr i8, ptr %408, i64 4
  %411 = load i32, ptr %410, align 4, !tbaa !48
  %412 = icmp slt i32 %409, %411
  br i1 %412, label %.lr.ph379.preheader, label %._crit_edge380

.lr.ph379.preheader:                              ; preds = %405
  %413 = sext i32 %409 to i64
  br label %.lr.ph379

._crit_edge380:                                   ; preds = %445, %405
  invoke void @_ZNK7HFactor6ftranLER11HVectorBaseIdEdP15HighsTimerClock(ptr noundef nonnull align 8 dereferenceable(1912) %0, ptr noundef nonnull align 8 dereferenceable(176) %19, double noundef %.0189391, ptr noundef null)
          to label %447 unwind label %458

414:                                              ; preds = %404
  %415 = landingpad { ptr, i32 }
          cleanup
  br label %569

.lr.ph379:                                        ; preds = %.lr.ph379.preheader, %445
  %indvars.iv541 = phi i64 [ %413, %.lr.ph379.preheader ], [ %indvars.iv.next542, %445 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #8
  %416 = load ptr, ptr %362, align 8, !tbaa !52
  %417 = getelementptr inbounds i32, ptr %416, i64 %indvars.iv541
  %418 = load i32, ptr %417, align 4, !tbaa !48
  store i32 %418, ptr %22, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #8
  %419 = sext i32 %418 to i64
  %420 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %18, i64 noundef %419)
          to label %421 unwind label %429

421:                                              ; preds = %.lr.ph379
  %422 = extractvalue { ptr, i64 } %420, 0
  store ptr %422, ptr %23, align 8
  %423 = extractvalue { ptr, i64 } %420, 1
  store i64 %423, ptr %363, align 8
  %424 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br i1 %424, label %425, label %433

425:                                              ; preds = %421
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %368, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %426 unwind label %431

426:                                              ; preds = %425
  %427 = load ptr, ptr %366, align 8, !tbaa !53
  %428 = getelementptr inbounds double, ptr %427, i64 %indvars.iv541
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %369, ptr noundef nonnull align 8 dereferenceable(8) %428)
          to label %445 unwind label %431

429:                                              ; preds = %.lr.ph379
  %430 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  br label %446

431:                                              ; preds = %426, %425
  %432 = landingpad { ptr, i32 }
          cleanup
  br label %446

433:                                              ; preds = %421
  %434 = load i32, ptr %22, align 4, !tbaa !48
  %435 = load i32, ptr %365, align 4, !tbaa !66
  %436 = add nsw i32 %435, 1
  store i32 %436, ptr %365, align 4, !tbaa !66
  %437 = sext i32 %435 to i64
  %438 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef %437) #8
  store i32 %434, ptr %438, align 4, !tbaa !48
  %439 = load ptr, ptr %366, align 8, !tbaa !53
  %440 = getelementptr inbounds double, ptr %439, i64 %indvars.iv541
  %441 = load double, ptr %440, align 8, !tbaa !54
  %442 = load i32, ptr %22, align 4, !tbaa !48
  %443 = sext i32 %442 to i64
  %444 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %443) #8
  store double %441, ptr %444, align 8, !tbaa !54
  br label %445

445:                                              ; preds = %426, %433
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #8
  %indvars.iv.next542 = add nsw i64 %indvars.iv541, 1
  %lftr.wideiv544 = trunc i64 %indvars.iv.next542 to i32
  %exitcond545.not = icmp eq i32 %411, %lftr.wideiv544
  br i1 %exitcond545.not, label %._crit_edge380, label %.lr.ph379, !llvm.loop !67

446:                                              ; preds = %431, %429
  %.pn222 = phi { ptr, i32 } [ %432, %431 ], [ %430, %429 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #8
  br label %569

447:                                              ; preds = %._crit_edge380
  %448 = load i32, ptr %365, align 4, !tbaa !66
  %449 = sitofp i32 %448 to double
  %450 = load i32, ptr %36, align 8, !tbaa !44
  %451 = sitofp i32 %450 to double
  %452 = fdiv double %449, %451
  %453 = fmul double %.0189391, 0x3FEE666666666666
  %454 = call double @llvm.fmuladd.f64(double %452, double 5.000000e-02, double %453)
  invoke void @_ZN11HVectorBaseIdE5tightEv(ptr noundef nonnull align 8 dereferenceable(176) %19)
          to label %455 unwind label %460

455:                                              ; preds = %447
  %456 = load i32, ptr %365, align 4, !tbaa !66
  %457 = icmp sgt i32 %456, 0
  br i1 %457, label %.lr.ph383.preheader, label %.thread251

.lr.ph383.preheader:                              ; preds = %455
  %wide.trip.count = zext nneg i32 %456 to i64
  br label %.lr.ph383

458:                                              ; preds = %._crit_edge380
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %569

460:                                              ; preds = %447
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %569

.lr.ph383:                                        ; preds = %.lr.ph383.preheader, %466
  %indvars.iv568 = phi i32 [ 0, %.lr.ph383.preheader ], [ %indvars.iv.next569, %466 ]
  %indvars.iv546 = phi i64 [ 0, %.lr.ph383.preheader ], [ %indvars.iv.next547, %466 ]
  %462 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef %indvars.iv546) #8
  %463 = load i32, ptr %462, align 4, !tbaa !48
  %464 = load i32, ptr %20, align 4, !tbaa !48
  %465 = icmp eq i32 %463, %464
  br i1 %465, label %467, label %466

466:                                              ; preds = %.lr.ph383
  %indvars.iv.next547 = add nuw nsw i64 %indvars.iv546, 1
  %exitcond549.not = icmp eq i64 %indvars.iv.next547, %wide.trip.count
  %indvars.iv.next569 = add nuw nsw i32 %indvars.iv568, 1
  br i1 %exitcond549.not, label %.thread251, label %.lr.ph383, !llvm.loop !68

.thread251:                                       ; preds = %455, %466
  call void @__assert_fail(ptr noundef nonnull @.str.61, ptr noundef nonnull @.str.52, i32 noundef 262, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

467:                                              ; preds = %.lr.ph383
  %468 = trunc nuw nsw i64 %indvars.iv546 to i32
  %469 = sext i32 %463 to i64
  %470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %469) #8
  %471 = load double, ptr %470, align 8, !tbaa !54
  %472 = call double @llvm.fabs.f64(double %471)
  %473 = load double, ptr %370, align 8, !tbaa !57
  %474 = fcmp ult double %472, %473
  br i1 %474, label %475, label %476

475:                                              ; preds = %467
  call void @__assert_fail(ptr noundef nonnull @.str.62, ptr noundef nonnull @.str.52, i32 noundef 266, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN7HFactor7rebuildEP15HighsTimerClock) #7
  unreachable

476:                                              ; preds = %467
  %477 = fcmp uge double %472, %473
  br i1 %477, label %481, label %.thread253

.thread253:                                       ; preds = %476
  %478 = trunc nsw i64 %indvars.iv573 to i32
  %479 = load i32, ptr %36, align 8, !tbaa !44
  %480 = sub nsw i32 %479, %478
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #8
  br label %.loopexit

481:                                              ; preds = %476
  %482 = load i32, ptr %20, align 4, !tbaa !48
  %483 = sext i32 %482 to i64
  %484 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %483) #8
  %485 = load double, ptr %484, align 8, !tbaa !54
  %486 = fdiv double 1.000000e+00, %485
  %487 = add nuw nsw i32 %468, 1
  %.not578 = icmp eq i64 %indvars.iv546, 0
  br i1 %.not578, label %._crit_edge388, label %.lr.ph387.preheader

.lr.ph387.preheader:                              ; preds = %481
  %wide.trip.count571 = zext nneg i32 %indvars.iv568 to i64
  br label %.lr.ph387

._crit_edge388:                                   ; preds = %540, %481
  %488 = icmp slt i32 %487, %456
  br i1 %488, label %.lr.ph387.preheader.1, label %._crit_edge388.1

.lr.ph387.preheader.1:                            ; preds = %._crit_edge388
  %489 = zext i32 %487 to i64
  br label %.lr.ph387.1

.lr.ph387.1:                                      ; preds = %511, %.lr.ph387.preheader.1
  %indvars.iv550.1 = phi i64 [ %489, %.lr.ph387.preheader.1 ], [ %indvars.iv.next551.1, %511 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #8
  %490 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef %indvars.iv550.1) #8
  %491 = load i32, ptr %490, align 4, !tbaa !48
  store i32 %491, ptr %24, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  %492 = sext i32 %491 to i64
  %493 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %492)
          to label %494 unwind label %.loopexit.split-lp554

494:                                              ; preds = %.lr.ph387.1
  %495 = extractvalue { ptr, i64 } %493, 0
  store ptr %495, ptr %25, align 8
  %496 = extractvalue { ptr, i64 } %493, 1
  store i64 %496, ptr %371, align 8
  %497 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br i1 %497, label %506, label %498

498:                                              ; preds = %494
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %372, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %499 unwind label %.loopexit.split-lp559

499:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %500 = load i32, ptr %24, align 4, !tbaa !48
  %501 = sext i32 %500 to i64
  %502 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %501) #8
  %503 = load double, ptr %502, align 8, !tbaa !54
  %504 = fmul double %486, %503
  store double %504, ptr %26, align 8, !tbaa !54
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %373, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %505 unwind label %.loopexit.split-lp564

505:                                              ; preds = %499
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %511

506:                                              ; preds = %494
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %368, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %507 unwind label %.loopexit.split-lp559

507:                                              ; preds = %506
  %508 = load i32, ptr %24, align 4, !tbaa !48
  %509 = sext i32 %508 to i64
  %510 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %509) #8
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %369, ptr noundef nonnull align 8 dereferenceable(8) %510)
          to label %511 unwind label %.loopexit.split-lp559

511:                                              ; preds = %507, %505
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  %indvars.iv.next551.1 = add nuw nsw i64 %indvars.iv550.1, 1
  %512 = trunc nuw i64 %indvars.iv.next551.1 to i32
  %513 = icmp sgt i32 %456, %512
  br i1 %513, label %.lr.ph387.1, label %._crit_edge388.1, !llvm.loop !69

._crit_edge388.1:                                 ; preds = %511, %._crit_edge388
  %514 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %372) #8
  %515 = trunc i64 %514 to i32
  %indvars.iv.next574 = add nsw i64 %indvars.iv573, 1
  %516 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %315, i64 noundef %indvars.iv.next574) #8
  store i32 %515, ptr %516, align 4, !tbaa !48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %374, ptr noundef nonnull align 4 dereferenceable(4) %20)
          to label %542 unwind label %563

.lr.ph387:                                        ; preds = %.lr.ph387.preheader, %540
  %indvars.iv550 = phi i64 [ 0, %.lr.ph387.preheader ], [ %indvars.iv.next551, %540 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #8
  %517 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %364, i64 noundef %indvars.iv550) #8
  %518 = load i32, ptr %517, align 4, !tbaa !48
  store i32 %518, ptr %24, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  %519 = sext i32 %518 to i64
  %520 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %519)
          to label %521 unwind label %.loopexit553

521:                                              ; preds = %.lr.ph387
  %522 = extractvalue { ptr, i64 } %520, 0
  store ptr %522, ptr %25, align 8
  %523 = extractvalue { ptr, i64 } %520, 1
  store i64 %523, ptr %371, align 8
  %524 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br i1 %524, label %535, label %525

525:                                              ; preds = %521
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %372, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %526 unwind label %.loopexit558

526:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %527 = load i32, ptr %24, align 4, !tbaa !48
  %528 = sext i32 %527 to i64
  %529 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %528) #8
  %530 = load double, ptr %529, align 8, !tbaa !54
  %531 = fmul double %486, %530
  store double %531, ptr %26, align 8, !tbaa !54
  invoke void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %373, ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %532 unwind label %.loopexit563

532:                                              ; preds = %526
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %540

.loopexit553:                                     ; preds = %.lr.ph387
  %lpad.loopexit555 = landingpad { ptr, i32 }
          cleanup
  br label %533

.loopexit.split-lp554:                            ; preds = %.lr.ph387.1
  %lpad.loopexit.split-lp556 = landingpad { ptr, i32 }
          cleanup
  br label %533

533:                                              ; preds = %.loopexit.split-lp554, %.loopexit553
  %lpad.phi557 = phi { ptr, i32 } [ %lpad.loopexit555, %.loopexit553 ], [ %lpad.loopexit.split-lp556, %.loopexit.split-lp554 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br label %541

.loopexit558:                                     ; preds = %525, %535, %536
  %lpad.loopexit560 = landingpad { ptr, i32 }
          cleanup
  br label %541

.loopexit.split-lp559:                            ; preds = %498, %506, %507
  %lpad.loopexit.split-lp561 = landingpad { ptr, i32 }
          cleanup
  br label %541

.loopexit563:                                     ; preds = %526
  %lpad.loopexit565 = landingpad { ptr, i32 }
          cleanup
  br label %534

.loopexit.split-lp564:                            ; preds = %499
  %lpad.loopexit.split-lp566 = landingpad { ptr, i32 }
          cleanup
  br label %534

534:                                              ; preds = %.loopexit.split-lp564, %.loopexit563
  %lpad.phi567 = phi { ptr, i32 } [ %lpad.loopexit565, %.loopexit563 ], [ %lpad.loopexit.split-lp566, %.loopexit.split-lp564 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %541

535:                                              ; preds = %521
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %368, ptr noundef nonnull align 4 dereferenceable(4) %24)
          to label %536 unwind label %.loopexit558

536:                                              ; preds = %535
  %537 = load i32, ptr %24, align 4, !tbaa !48
  %538 = sext i32 %537 to i64
  %539 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %538) #8
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %369, ptr noundef nonnull align 8 dereferenceable(8) %539)
          to label %540 unwind label %.loopexit558

540:                                              ; preds = %536, %532
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  %indvars.iv.next551 = add nuw nsw i64 %indvars.iv550, 1
  %exitcond572.not = icmp eq i64 %indvars.iv.next551, %wide.trip.count571
  br i1 %exitcond572.not, label %._crit_edge388, label %.lr.ph387, !llvm.loop !69

541:                                              ; preds = %.loopexit558, %.loopexit.split-lp559, %534, %533
  %.pn217 = phi { ptr, i32 } [ %lpad.phi567, %534 ], [ %lpad.phi557, %533 ], [ %lpad.loopexit560, %.loopexit558 ], [ %lpad.loopexit.split-lp561, %.loopexit.split-lp559 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  br label %569

542:                                              ; preds = %._crit_edge388.1
  %543 = load i32, ptr %20, align 4, !tbaa !48
  %544 = sext i32 %543 to i64
  %545 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %367, i64 noundef %544) #8
  invoke void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %375, ptr noundef nonnull align 8 dereferenceable(8) %545)
          to label %546 unwind label %563

546:                                              ; preds = %542
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #8
  %547 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %368) #8
  %548 = trunc i64 %547 to i32
  store i32 %548, ptr %27, align 4, !tbaa !48
  invoke void @_ZNSt6vectorIiSaIiEE9push_backEOi(ptr noundef nonnull align 8 dereferenceable(24) %376, ptr noundef nonnull align 4 dereferenceable(4) %27)
          to label %549 unwind label %565

549:                                              ; preds = %546
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #8
  %550 = load ptr, ptr %377, align 8, !tbaa !61
  %551 = load i32, ptr %20, align 4, !tbaa !48
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds i32, ptr %550, i64 %552
  store i32 %388, ptr %553, align 4, !tbaa !48
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #8
  %554 = load i32, ptr %20, align 4, !tbaa !48
  %555 = sext i32 %554 to i64
  %556 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %3, i64 noundef %555)
          to label %557 unwind label %567

557:                                              ; preds = %549
  %558 = extractvalue { ptr, i64 } %556, 0
  store ptr %558, ptr %28, align 8
  %559 = extractvalue { ptr, i64 } %556, 1
  store i64 %559, ptr %378, align 8
  %560 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16) %28, i1 noundef zeroext true) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #8
  %561 = load i32, ptr %36, align 8, !tbaa !44
  %562 = sext i32 %561 to i64
  %.not221 = icmp slt i64 %indvars.iv.next574, %562
  br i1 %.not221, label %384, label %.loopexit, !llvm.loop !70

563:                                              ; preds = %542, %._crit_edge388.1
  %564 = landingpad { ptr, i32 }
          cleanup
  br label %569

565:                                              ; preds = %546
  %566 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #8
  br label %569

567:                                              ; preds = %549
  %568 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #8
  br label %569

569:                                              ; preds = %446, %458, %541, %563, %565, %567, %460, %414, %399
  %.pn222.pn.pn = phi { ptr, i32 } [ %415, %414 ], [ %400, %399 ], [ %.pn222, %446 ], [ %459, %458 ], [ %461, %460 ], [ %.pn217, %541 ], [ %568, %567 ], [ %566, %565 ], [ %564, %563 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #8
  br label %570

.loopexit:                                        ; preds = %557, %.preheader, %.thread253
  %.not221280 = phi i1 [ true, %.thread253 ], [ false, %.preheader ], [ false, %557 ]
  %.7 = phi i32 [ %480, %.thread253 ], [ undef, %.preheader ], [ undef, %557 ]
  call void @_ZN11HVectorBaseIdED2Ev(ptr noundef nonnull align 8 dereferenceable(176) %19) #8
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %19) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #8
  br i1 %.not221280, label %573, label %572

570:                                              ; preds = %569, %382
  %.pn222.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn, %569 ], [ %383, %382 ]
  call void @_ZN11HVectorBaseIdED2Ev(ptr noundef nonnull align 8 dereferenceable(176) %19) #8
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %19) #8
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #8
  br label %571

571:                                              ; preds = %570, %380
  %.pn222.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn222.pn.pn.pn, %570 ], [ %381, %380 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %18) #8
  br label %574

572:                                              ; preds = %.loopexit, %.thread238
  invoke void @_ZN7HFactor11buildFinishEv(ptr noundef nonnull align 8 dereferenceable(1912) %0)
          to label %573 unwind label %324

573:                                              ; preds = %.thread246, %572, %.loopexit
  %.8 = phi i32 [ %.7, %.loopexit ], [ 0, %572 ], [ %309, %.thread246 ]
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #8
  ret i32 %.8

574:                                              ; preds = %307, %324, %571, %49
  %.pn222.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %50, %49 ], [ %.pn222.pn.pn.pn.pn, %571 ], [ %325, %324 ], [ %.pn215, %307 ]
  call void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %3) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn222.pn.pn.pn.pn.pn.pn
}

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

declare void @_ZN7HFactor7luClearEv(ptr noundef nonnull align 8 dereferenceable(1912)) local_unnamed_addr #3

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIaSaIaEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 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 #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(16) ptr @_ZNSt14_Bit_referenceaSEb(ptr noundef nonnull align 8 dereferenceable(16), i1 noundef zeroext) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIbSaIbEEC2ERKS1_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #1 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11HVectorBaseIdEC2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #6 align 2

declare void @_ZN11HVectorBaseIdE5setupEi(ptr noundef nonnull align 8 dereferenceable(176), i32 noundef) local_unnamed_addr #3

declare void @_ZN11HVectorBaseIdE5clearEv(ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #3

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

declare void @_ZNK7HFactor6ftranLER11HVectorBaseIdEdP15HighsTimerClock(ptr noundef nonnull align 8 dereferenceable(1912), ptr noundef nonnull align 8 dereferenceable(176), double noundef, ptr noundef) local_unnamed_addr #3

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

declare void @_ZN11HVectorBaseIdE5tightEv(ptr noundef nonnull align 8 dereferenceable(176)) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN11HVectorBaseIdED2Ev(ptr noundef nonnull align 8 dereferenceable(176)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt13_Bvector_baseISaIbEED2Ev(ptr noundef nonnull align 8 dereferenceable(40)) unnamed_addr #4 align 2

declare void @_ZN7HFactor11buildFinishEv(ptr noundef nonnull align 8 dereferenceable(1912)) local_unnamed_addr #3

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { 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 #3 = { "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 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 = { 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 = { noreturn nounwind }
attributes #8 = { 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, !17, i64 96}
!6 = !{!"_ZTS7HFactor", !7, i64 0, !7, i64 8, !10, i64 16, !11, i64 24, !11, i64 48, !11, i64 72, !16, i64 96, !10, i64 184, !10, i64 188, !10, i64 192, !10, i64 196, !10, i64 200, !10, i64 204, !10, i64 208, !7, i64 216, !17, i64 224, !15, i64 232, !15, i64 240, !15, i64 248, !15, i64 256, !7, i64 264, !7, i64 272, !10, i64 280, !7, i64 288, !22, i64 296, !28, i64 304, !17, i64 400, !17, i64 401, !10, i64 404, !10, i64 408, !15, i64 416, !10, i64 424, !11, i64 432, !31, i64 456, !11, i64 480, !11, i64 504, !11, i64 528, !31, i64 552, !11, i64 576, !11, i64 600, !11, i64 624, !11, i64 648, !11, i64 672, !11, i64 696, !11, i64 720, !31, i64 744, !31, i64 768, !11, i64 792, !11, i64 816, !11, i64 840, !11, i64 864, !11, i64 888, !11, i64 912, !35, i64 936, !31, i64 960, !11, i64 984, !11, i64 1008, !11, i64 1032, !11, i64 1056, !11, i64 1080, !11, i64 1104, !11, i64 1128, !11, i64 1152, !11, i64 1176, !11, i64 1200, !31, i64 1224, !11, i64 1248, !11, i64 1272, !31, i64 1296, !11, i64 1320, !11, i64 1344, !31, i64 1368, !10, i64 1392, !10, i64 1396, !11, i64 1400, !11, i64 1424, !11, i64 1448, !31, i64 1472, !11, i64 1496, !11, i64 1520, !11, i64 1544, !11, i64 1568, !31, i64 1592, !31, i64 1616, !11, i64 1640, !11, i64 1664, !11, i64 1688, !31, i64 1712, !39, i64 1736}
!7 = !{!"double", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"int", !8, i64 0}
!11 = !{!"_ZTSSt6vectorIiSaIiEE", !12, i64 0}
!12 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!15 = !{!"any pointer", !8, i64 0}
!16 = !{!"_ZTS12RefactorInfo", !17, i64 0, !11, i64 8, !11, i64 32, !18, i64 56, !7, i64 80}
!17 = !{!"bool", !8, i64 0}
!18 = !{!"_ZTSSt6vectorIaSaIaEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIaSaIaEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIaSaIaEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIaSaIaEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!22 = !{!"_ZTSSt10unique_ptrIN7HFactor7LogDataESt14default_deleteIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt15__uniq_ptr_dataIN7HFactor7LogDataESt14default_deleteIS1_ELb1ELb1EE", !24, i64 0}
!24 = !{!"_ZTSSt15__uniq_ptr_implIN7HFactor7LogDataESt14default_deleteIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt5tupleIJPN7HFactor7LogDataESt14default_deleteIS1_EEE", !26, i64 0}
!26 = !{!"_ZTSSt11_Tuple_implILm0EJPN7HFactor7LogDataESt14default_deleteIS1_EEE", !27, i64 0}
!27 = !{!"_ZTSSt10_Head_baseILm0EPN7HFactor7LogDataELb0EE", !15, i64 0}
!28 = !{!"_ZTS15HighsLogOptions", !15, i64 0, !15, i64 8, !15, i64 16, !15, i64 24, !15, i64 32, !15, i64 40, !29, i64 48, !15, i64 80, !17, i64 88}
!29 = !{!"_ZTSSt8functionIFviRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPK20HighsCallbackDataOutP19HighsCallbackDataInPvEE", !30, i64 0, !15, i64 24}
!30 = !{!"_ZTSSt14_Function_base", !8, i64 0, !15, i64 16}
!31 = !{!"_ZTSSt6vectorIdSaIdEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!35 = !{!"_ZTSSt6vectorIcSaIcEE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIcSaIcEE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIcSaIcEE17_Vector_impl_dataE", !15, i64 0, !15, i64 8, !15, i64 16}
!39 = !{!"_ZTS11HVectorBaseIdE", !10, i64 0, !10, i64 4, !11, i64 8, !31, i64 32, !7, i64 56, !35, i64 64, !11, i64 88, !15, i64 112, !17, i64 120, !10, i64 124, !11, i64 128, !31, i64 152}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!6, !10, i64 424}
!43 = !{!6, !10, i64 184}
!44 = !{!6, !10, i64 200}
!45 = !{!17, !17, i64 0}
!46 = !{!6, !7, i64 176}
!47 = !{!6, !7, i64 8}
!48 = !{!10, !10, i64 0}
!49 = !{!8, !8, i64 0}
!50 = !{!6, !10, i64 204}
!51 = !{!6, !15, i64 232}
!52 = !{!6, !15, i64 240}
!53 = !{!6, !15, i64 248}
!54 = !{!7, !7, i64 0}
!55 = distinct !{!55, !56}
!56 = !{!"llvm.loop.mustprogress"}
!57 = !{!6, !7, i64 272}
!58 = distinct !{!58, !56}
!59 = distinct !{!59, !56}
!60 = distinct !{!60, !56}
!61 = !{!6, !15, i64 256}
!62 = distinct !{!62, !56}
!63 = distinct !{!63, !56}
!64 = distinct !{!64, !56}
!65 = distinct !{!65, !56}
!66 = !{!39, !10, i64 4}
!67 = distinct !{!67, !56}
!68 = distinct !{!68, !56}
!69 = distinct !{!69, !56}
!70 = distinct !{!70, !56}


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