; LLVM IR from ERGO-Code/HiGHS :: src/mip/HighsCutGeneration.ll (ZN18HighsCutGeneration24preprocessBaseInequalityERbS0_S0_)

; 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" = 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.__gnu_cxx::__normal_iterator" = type { ptr }
%class.anon.362 = type { ptr }
%class.HighsCutGeneration = type { ptr, ptr, %class.HighsRandom, %"class.std::vector", %class.HighsCDouble, %class.HighsCDouble, %"class.std::vector.3", %"class.std::vector.3", %"class.std::vector.8", %"class.std::vector.8", double, double, ptr, ptr, %class.HighsCDouble, i8, i8, i32, double, %"class.std::vector", %"class.std::vector.3" }
%class.HighsRandom = type { i64 }
%"class.std::vector.8" = type { %"struct.std::_Vector_base.9" }
%"struct.std::_Vector_base.9" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.HighsCDouble = type { double, double }
%"class.std::vector.3" = type { %"struct.std::_Vector_base.4" }
%"struct.std::_Vector_base.4" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }

; 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 nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) #3

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @frexp(double noundef, ptr noundef) #5

; Function Attrs: nounwind
declare double @ldexp(double noundef, i32 noundef) #5

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN18HighsCutGeneration24preprocessBaseInequalityERbS0_S0_(ptr noundef nonnull align 8 dereferenceable(288) %0, ptr noundef nonnull align 1 dereferenceable(1) %1, ptr noundef nonnull align 1 dereferenceable(1) %2, ptr noundef nonnull align 1 dereferenceable(1) %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca i32, align 4
  %14 = alloca double, align 8
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca %"class.std::vector", align 8
  %22 = alloca i32, align 4
  %23 = alloca double, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca %class.anon.362, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  %35 = load ptr, ptr %6, align 8
  %36 = load ptr, ptr %7, align 8, !tbaa !5
  store i8 0, ptr %36, align 1, !tbaa !9
  %37 = load ptr, ptr %9, align 8, !tbaa !5
  store i8 0, ptr %37, align 1, !tbaa !9
  %38 = load ptr, ptr %8, align 8, !tbaa !5
  store i8 0, ptr %38, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %10) #7
  store i32 0, ptr %10, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  %39 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 10
  %40 = load double, ptr %39, align 8, !tbaa !13
  %41 = fneg double %40
  store double %41, ptr %11, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  store double 0.000000e+00, ptr %12, align 8, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  store i32 0, ptr %13, align 4, !tbaa !11
  br label %42

42:                                               ; preds = %58, %4
  %43 = load i32, ptr %13, align 4, !tbaa !11
  %44 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %45 = load i32, ptr %44, align 4, !tbaa !32
  %46 = icmp slt i32 %43, %45
  br i1 %46, label %48, label %47

47:                                               ; preds = %42
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  br label %61

48:                                               ; preds = %42
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %49 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %50 = load ptr, ptr %49, align 8, !tbaa !33
  %51 = load i32, ptr %13, align 4, !tbaa !11
  %52 = sext i32 %51 to i64
  %53 = getelementptr inbounds double, ptr %50, i64 %52
  %54 = load double, ptr %53, align 8, !tbaa !31
  %55 = call noundef double @_ZSt3absd(double noundef %54)
  store double %55, ptr %14, align 8, !tbaa !31
  %56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %12)
  %57 = load double, ptr %56, align 8, !tbaa !31
  store double %57, ptr %12, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %58

58:                                               ; preds = %48
  %59 = load i32, ptr %13, align 4, !tbaa !11
  %60 = add nsw i32 %59, 1
  store i32 %60, ptr %13, align 4, !tbaa !11
  br label %42, !llvm.loop !34

61:                                               ; preds = %47
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  store i32 0, ptr %15, align 4, !tbaa !11
  %62 = load double, ptr %12, align 8, !tbaa !31
  %63 = call double @frexp(double noundef %62, ptr noundef %15) #7
  %64 = load i32, ptr %15, align 4, !tbaa !11
  %65 = sub nsw i32 0, %64
  store i32 %65, ptr %15, align 4, !tbaa !11
  %66 = load i32, ptr %15, align 4, !tbaa !11
  %67 = call double @ldexp(double noundef 1.000000e+00, i32 noundef %66) #7
  %68 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 18
  store double %67, ptr %68, align 8, !tbaa !36
  %69 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 18
  %70 = load double, ptr %69, align 8, !tbaa !36
  %71 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 14
  %72 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemLEd(ptr noundef nonnull align 8 dereferenceable(16) %71, double noundef %70)
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  store i32 0, ptr %16, align 4, !tbaa !11
  br label %73

73:                                               ; preds = %93, %61
  %74 = load i32, ptr %16, align 4, !tbaa !11
  %75 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %76 = load i32, ptr %75, align 4, !tbaa !32
  %77 = icmp slt i32 %74, %76
  br i1 %77, label %79, label %78

78:                                               ; preds = %73
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  br label %96

79:                                               ; preds = %73
  %80 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %81 = load ptr, ptr %80, align 8, !tbaa !33
  %82 = load i32, ptr %16, align 4, !tbaa !11
  %83 = sext i32 %82 to i64
  %84 = getelementptr inbounds double, ptr %81, i64 %83
  %85 = load double, ptr %84, align 8, !tbaa !31
  %86 = load i32, ptr %15, align 4, !tbaa !11
  %87 = call double @ldexp(double noundef %85, i32 noundef %86) #7
  %88 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %89 = load ptr, ptr %88, align 8, !tbaa !33
  %90 = load i32, ptr %16, align 4, !tbaa !11
  %91 = sext i32 %90 to i64
  %92 = getelementptr inbounds double, ptr %89, i64 %91
  store double %87, ptr %92, align 8, !tbaa !31
  br label %93

93:                                               ; preds = %79
  %94 = load i32, ptr %16, align 4, !tbaa !11
  %95 = add nsw i32 %94, 1
  store i32 %95, ptr %16, align 4, !tbaa !11
  br label %73, !llvm.loop !37

96:                                               ; preds = %78
  %97 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 9
  %98 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %99 = load i32, ptr %98, align 4, !tbaa !32
  %100 = sext i32 %99 to i64
  call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef %100)
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  store i32 0, ptr %17, align 4, !tbaa !11
  br label %101

101:                                              ; preds = %307, %96
  %102 = load i32, ptr %17, align 4, !tbaa !11
  %103 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %104 = load i32, ptr %103, align 4, !tbaa !32
  %105 = icmp ne i32 %102, %104
  br i1 %105, label %107, label %106

106:                                              ; preds = %101
  store i32 8, ptr %18, align 4
  br label %310

107:                                              ; preds = %101
  %108 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 0
  %109 = load ptr, ptr %108, align 8, !tbaa !38
  %110 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 13
  %111 = load ptr, ptr %110, align 8, !tbaa !39
  %112 = load i32, ptr %17, align 4, !tbaa !11
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds i32, ptr %111, i64 %113
  %115 = load i32, ptr %114, align 4, !tbaa !11
  %116 = call noundef zeroext i1 @_ZNK17HighsLpRelaxation13isColIntegralEi(ptr noundef nonnull align 8 dereferenceable(21425) %109, i32 noundef %115)
  br i1 %116, label %117, label %129

117:                                              ; preds = %107
  %118 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %119 = load ptr, ptr %118, align 8, !tbaa !33
  %120 = load i32, ptr %17, align 4, !tbaa !11
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds double, ptr %119, i64 %121
  %123 = load double, ptr %122, align 8, !tbaa !31
  %124 = call noundef double @_ZSt3absd(double noundef %123)
  %125 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 10
  %126 = load double, ptr %125, align 8, !tbaa !13
  %127 = fmul double 1.000000e+01, %126
  %128 = fcmp ogt double %124, %127
  br label %129

129:                                              ; preds = %117, %107
  %130 = phi i1 [ false, %107 ], [ %128, %117 ]
  %131 = zext i1 %130 to i8
  %132 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 9
  %133 = load i32, ptr %17, align 4, !tbaa !11
  %134 = sext i32 %133 to i64
  %135 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %132, i64 noundef %134) #7
  store i8 %131, ptr %135, align 1, !tbaa !40
  %136 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 9
  %137 = load i32, ptr %17, align 4, !tbaa !11
  %138 = sext i32 %137 to i64
  %139 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %136, i64 noundef %138) #7
  %140 = load i8, ptr %139, align 1, !tbaa !40
  %141 = icmp ne i8 %140, 0
  br i1 %141, label %263, label %142

142:                                              ; preds = %129
  %143 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %144 = load i32, ptr %17, align 4, !tbaa !11
  %145 = sext i32 %144 to i64
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %145) #7
  %147 = load double, ptr %146, align 8, !tbaa !31
  %148 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 7
  %149 = load i32, ptr %17, align 4, !tbaa !11
  %150 = sext i32 %149 to i64
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %148, i64 noundef %150) #7
  %152 = load double, ptr %151, align 8, !tbaa !31
  %153 = fmul double 2.000000e+00, %152
  %154 = fcmp olt double %147, %153
  br i1 %154, label %155, label %165

155:                                              ; preds = %142
  %156 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 8
  %157 = call noundef zeroext i1 @_ZNKSt6vectorIhSaIhEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %156) #7
  br i1 %157, label %158, label %163

158:                                              ; preds = %155
  %159 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 8
  %160 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %161 = load i32, ptr %160, align 4, !tbaa !32
  %162 = sext i32 %161 to i64
  call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %159, i64 noundef %162)
  br label %163

163:                                              ; preds = %158, %155
  %164 = load i32, ptr %17, align 4, !tbaa !11
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %35, i32 noundef %164)
  br label %165

165:                                              ; preds = %163, %142
  %166 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %167 = load ptr, ptr %166, align 8, !tbaa !33
  %168 = load i32, ptr %17, align 4, !tbaa !11
  %169 = sext i32 %168 to i64
  %170 = getelementptr inbounds double, ptr %167, i64 %169
  %171 = load double, ptr %170, align 8, !tbaa !31
  %172 = fcmp ogt double %171, 0.000000e+00
  br i1 %172, label %191, label %173

173:                                              ; preds = %165
  %174 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %175 = load ptr, ptr %174, align 8, !tbaa !33
  %176 = load i32, ptr %17, align 4, !tbaa !11
  %177 = sext i32 %176 to i64
  %178 = getelementptr inbounds double, ptr %175, i64 %177
  %179 = load double, ptr %178, align 8, !tbaa !31
  %180 = call noundef double @_ZSt3absd(double noundef %179)
  %181 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %182 = load i32, ptr %17, align 4, !tbaa !11
  %183 = sext i32 %182 to i64
  %184 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %181, i64 noundef %183) #7
  %185 = load double, ptr %184, align 8, !tbaa !31
  %186 = fmul double %180, %185
  %187 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 10
  %188 = load double, ptr %187, align 8, !tbaa !13
  %189 = fmul double 1.000000e+01, %188
  %190 = fcmp ole double %186, %189
  br i1 %190, label %191, label %230

191:                                              ; preds = %173, %165
  %192 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %193 = load ptr, ptr %192, align 8, !tbaa !33
  %194 = load i32, ptr %17, align 4, !tbaa !11
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds double, ptr %193, i64 %195
  %197 = load double, ptr %196, align 8, !tbaa !31
  %198 = fcmp olt double %197, 0.000000e+00
  br i1 %198, label %199, label %222

199:                                              ; preds = %191
  %200 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %201 = load i32, ptr %17, align 4, !tbaa !11
  %202 = sext i32 %201 to i64
  %203 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %200, i64 noundef %202) #7
  %204 = load double, ptr %203, align 8, !tbaa !31
  %205 = fcmp oeq double %204, 0x7FF0000000000000
  br i1 %205, label %206, label %207

206:                                              ; preds = %199
  store i1 false, ptr %5, align 1
  store i32 1, ptr %18, align 4
  br label %310

207:                                              ; preds = %199
  %208 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %209 = load ptr, ptr %208, align 8, !tbaa !33
  %210 = load i32, ptr %17, align 4, !tbaa !11
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds double, ptr %209, i64 %211
  %213 = load double, ptr %212, align 8, !tbaa !31
  %214 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %215 = load i32, ptr %17, align 4, !tbaa !11
  %216 = sext i32 %215 to i64
  %217 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %214, i64 noundef %216) #7
  %218 = load double, ptr %217, align 8, !tbaa !31
  %219 = fmul double %213, %218
  %220 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 14
  %221 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %220, double noundef %219)
  br label %222

222:                                              ; preds = %207, %191
  %223 = load i32, ptr %10, align 4, !tbaa !11
  %224 = add nsw i32 %223, 1
  store i32 %224, ptr %10, align 4, !tbaa !11
  %225 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %226 = load ptr, ptr %225, align 8, !tbaa !33
  %227 = load i32, ptr %17, align 4, !tbaa !11
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds double, ptr %226, i64 %228
  store double 0.000000e+00, ptr %229, align 8, !tbaa !31
  br label %307

230:                                              ; preds = %173
  %231 = load ptr, ptr %9, align 8, !tbaa !5
  store i8 1, ptr %231, align 1, !tbaa !9
  %232 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %233 = load ptr, ptr %232, align 8, !tbaa !33
  %234 = load i32, ptr %17, align 4, !tbaa !11
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds double, ptr %233, i64 %235
  %237 = load double, ptr %236, align 8, !tbaa !31
  %238 = fcmp ogt double %237, 0.000000e+00
  br i1 %238, label %239, label %262

239:                                              ; preds = %230
  %240 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %241 = load i32, ptr %17, align 4, !tbaa !11
  %242 = sext i32 %241 to i64
  %243 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %240, i64 noundef %242) #7
  %244 = load double, ptr %243, align 8, !tbaa !31
  %245 = fcmp oeq double %244, 0x7FF0000000000000
  br i1 %245, label %246, label %247

246:                                              ; preds = %239
  store double 0x7FF0000000000000, ptr %11, align 8, !tbaa !31
  br label %261

247:                                              ; preds = %239
  %248 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %249 = load ptr, ptr %248, align 8, !tbaa !33
  %250 = load i32, ptr %17, align 4, !tbaa !11
  %251 = sext i32 %250 to i64
  %252 = getelementptr inbounds double, ptr %249, i64 %251
  %253 = load double, ptr %252, align 8, !tbaa !31
  %254 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %255 = load i32, ptr %17, align 4, !tbaa !11
  %256 = sext i32 %255 to i64
  %257 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %254, i64 noundef %256) #7
  %258 = load double, ptr %257, align 8, !tbaa !31
  %259 = load double, ptr %11, align 8, !tbaa !31
  %260 = call double @llvm.fmuladd.f64(double %253, double %258, double %259)
  store double %260, ptr %11, align 8, !tbaa !31
  br label %261

261:                                              ; preds = %247, %246
  br label %262

262:                                              ; preds = %261, %230
  br label %306

263:                                              ; preds = %129
  %264 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %265 = load i32, ptr %17, align 4, !tbaa !11
  %266 = sext i32 %265 to i64
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %264, i64 noundef %266) #7
  %268 = load double, ptr %267, align 8, !tbaa !31
  %269 = fcmp oeq double %268, 0x7FF0000000000000
  br i1 %269, label %270, label %273

270:                                              ; preds = %263
  %271 = load ptr, ptr %7, align 8, !tbaa !5
  store i8 1, ptr %271, align 1, !tbaa !9
  %272 = load ptr, ptr %8, align 8, !tbaa !5
  store i8 1, ptr %272, align 1, !tbaa !9
  br label %283

273:                                              ; preds = %263
  %274 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %275 = load i32, ptr %17, align 4, !tbaa !11
  %276 = sext i32 %275 to i64
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %274, i64 noundef %276) #7
  %278 = load double, ptr %277, align 8, !tbaa !31
  %279 = fcmp une double %278, 1.000000e+00
  br i1 %279, label %280, label %282

280:                                              ; preds = %273
  %281 = load ptr, ptr %8, align 8, !tbaa !5
  store i8 1, ptr %281, align 1, !tbaa !9
  br label %282

282:                                              ; preds = %280, %273
  br label %283

283:                                              ; preds = %282, %270
  %284 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %285 = load ptr, ptr %284, align 8, !tbaa !33
  %286 = load i32, ptr %17, align 4, !tbaa !11
  %287 = sext i32 %286 to i64
  %288 = getelementptr inbounds double, ptr %285, i64 %287
  %289 = load double, ptr %288, align 8, !tbaa !31
  %290 = fcmp ogt double %289, 0.000000e+00
  br i1 %290, label %291, label %305

291:                                              ; preds = %283
  %292 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %293 = load ptr, ptr %292, align 8, !tbaa !33
  %294 = load i32, ptr %17, align 4, !tbaa !11
  %295 = sext i32 %294 to i64
  %296 = getelementptr inbounds double, ptr %293, i64 %295
  %297 = load double, ptr %296, align 8, !tbaa !31
  %298 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %299 = load i32, ptr %17, align 4, !tbaa !11
  %300 = sext i32 %299 to i64
  %301 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %298, i64 noundef %300) #7
  %302 = load double, ptr %301, align 8, !tbaa !31
  %303 = load double, ptr %11, align 8, !tbaa !31
  %304 = call double @llvm.fmuladd.f64(double %297, double %302, double %303)
  store double %304, ptr %11, align 8, !tbaa !31
  br label %305

305:                                              ; preds = %291, %283
  br label %306

306:                                              ; preds = %305, %262
  br label %307

307:                                              ; preds = %306, %222
  %308 = load i32, ptr %17, align 4, !tbaa !11
  %309 = add nsw i32 %308, 1
  store i32 %309, ptr %17, align 4, !tbaa !11
  br label %101, !llvm.loop !41

310:                                              ; preds = %206, %106
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  %311 = load i32, ptr %18, align 4
  switch i32 %311, label %678 [
    i32 8, label %312
  ]

312:                                              ; preds = %310
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %313 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 0
  %314 = load ptr, ptr %313, align 8, !tbaa !38
  %315 = call noundef i32 @_ZNK17HighsLpRelaxation7numColsEv(ptr noundef nonnull align 8 dereferenceable(21425) %314)
  %316 = sitofp i32 %315 to double
  %317 = call double @llvm.fmuladd.f64(double 1.500000e-01, double %316, double 1.000000e+02)
  %318 = fptosi double %317 to i32
  store i32 %318, ptr %19, align 4, !tbaa !11
  %319 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %320 = load i32, ptr %319, align 4, !tbaa !32
  %321 = load i32, ptr %10, align 4, !tbaa !11
  %322 = sub nsw i32 %320, %321
  %323 = load i32, ptr %19, align 4, !tbaa !11
  %324 = icmp sgt i32 %322, %323
  br i1 %324, label %325, label %486

325:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  %326 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %327 = load i32, ptr %326, align 4, !tbaa !32
  %328 = load i32, ptr %10, align 4, !tbaa !11
  %329 = sub nsw i32 %327, %328
  %330 = load i32, ptr %19, align 4, !tbaa !11
  %331 = sub nsw i32 %329, %330
  store i32 %331, ptr %20, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #7
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #7
  store i32 0, ptr %22, align 4, !tbaa !11
  br label %332

332:                                              ; preds = %377, %325
  %333 = load i32, ptr %22, align 4, !tbaa !11
  %334 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %335 = load i32, ptr %334, align 4, !tbaa !32
  %336 = icmp ne i32 %333, %335
  br i1 %336, label %338, label %337

337:                                              ; preds = %332
  store i32 11, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %380

338:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %339 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %340 = load ptr, ptr %339, align 8, !tbaa !33
  %341 = load i32, ptr %22, align 4, !tbaa !11
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds double, ptr %340, i64 %342
  %344 = load double, ptr %343, align 8, !tbaa !31
  %345 = fcmp ogt double %344, 0.000000e+00
  br i1 %345, label %346, label %352

346:                                              ; preds = %338
  %347 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 7
  %348 = load i32, ptr %22, align 4, !tbaa !11
  %349 = sext i32 %348 to i64
  %350 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %347, i64 noundef %349) #7
  %351 = load double, ptr %350, align 8, !tbaa !31
  br label %364

352:                                              ; preds = %338
  %353 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %354 = load i32, ptr %22, align 4, !tbaa !11
  %355 = sext i32 %354 to i64
  %356 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %353, i64 noundef %355) #7
  %357 = load double, ptr %356, align 8, !tbaa !31
  %358 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 7
  %359 = load i32, ptr %22, align 4, !tbaa !11
  %360 = sext i32 %359 to i64
  %361 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %358, i64 noundef %360) #7
  %362 = load double, ptr %361, align 8, !tbaa !31
  %363 = fsub double %357, %362
  br label %364

364:                                              ; preds = %352, %346
  %365 = phi double [ %351, %346 ], [ %363, %352 ]
  store double %365, ptr %23, align 8, !tbaa !31
  %366 = load double, ptr %23, align 8, !tbaa !31
  %367 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 10
  %368 = load double, ptr %367, align 8, !tbaa !13
  %369 = fcmp ole double %366, %368
  br i1 %369, label %370, label %376

370:                                              ; preds = %364
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %21, ptr noundef nonnull align 4 dereferenceable(4) %22)
          to label %371 unwind label %372

371:                                              ; preds = %370
  br label %376

372:                                              ; preds = %370
  %373 = landingpad { ptr, i32 }
          cleanup
  %374 = extractvalue { ptr, i32 } %373, 0
  store ptr %374, ptr %24, align 8
  %375 = extractvalue { ptr, i32 } %373, 1
  store i32 %375, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #7
  br label %485

376:                                              ; preds = %371, %364
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  br label %377

377:                                              ; preds = %376
  %378 = load i32, ptr %22, align 4, !tbaa !11
  %379 = add nsw i32 %378, 1
  store i32 %379, ptr %22, align 4, !tbaa !11
  br label %332, !llvm.loop !42

380:                                              ; preds = %337
  %381 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  %382 = trunc i64 %381 to i32
  %383 = load i32, ptr %20, align 4, !tbaa !11
  %384 = icmp slt i32 %382, %383
  br i1 %384, label %385, label %386

385:                                              ; preds = %380
  store i1 false, ptr %5, align 1
  store i32 1, ptr %18, align 4
  br label %482

386:                                              ; preds = %380
  %387 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  %388 = trunc i64 %387 to i32
  %389 = load i32, ptr %20, align 4, !tbaa !11
  %390 = icmp sgt i32 %388, %389
  br i1 %390, label %391, label %416

391:                                              ; preds = %386
  %392 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  %393 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  store ptr %392, ptr %393, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %394 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  %395 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %28, i32 0, i32 0
  store ptr %394, ptr %395, align 8
  %396 = load i32, ptr %20, align 4, !tbaa !11
  %397 = sext i32 %396 to i64
  %398 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %28, i64 noundef %397) #7
  %399 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  store ptr %398, ptr %399, align 8
  %400 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  %401 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %29, i32 0, i32 0
  store ptr %400, ptr %401, align 8
  %402 = getelementptr inbounds %class.anon.362, ptr %30, i32 0, i32 0
  store ptr %35, ptr %402, align 8, !tbaa !43
  %403 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %26, i32 0, i32 0
  %404 = load ptr, ptr %403, align 8
  %405 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %27, i32 0, i32 0
  %406 = load ptr, ptr %405, align 8
  %407 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %29, i32 0, i32 0
  %408 = load ptr, ptr %407, align 8
  %409 = getelementptr inbounds %class.anon.362, ptr %30, i32 0, i32 0
  %410 = load ptr, ptr %409, align 8
  invoke void @"_ZSt12partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN18HighsCutGeneration24preprocessBaseInequalityERbS8_S8_E3$_0EvT_SA_SA_T0_"(ptr %404, ptr %406, ptr %408, ptr %410)
          to label %411 unwind label %412

411:                                              ; preds = %391
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %416

412:                                              ; preds = %391
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %24, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %485

416:                                              ; preds = %411, %386
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  store i32 0, ptr %31, align 4, !tbaa !11
  br label %417

417:                                              ; preds = %475, %416
  %418 = load i32, ptr %31, align 4, !tbaa !11
  %419 = load i32, ptr %20, align 4, !tbaa !11
  %420 = icmp slt i32 %418, %419
  br i1 %420, label %422, label %421

421:                                              ; preds = %417
  store i32 14, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %478

422:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  %423 = load i32, ptr %31, align 4, !tbaa !11
  %424 = sext i32 %423 to i64
  %425 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %21, i64 noundef %424) #7
  %426 = load i32, ptr %425, align 4, !tbaa !11
  store i32 %426, ptr %32, align 4, !tbaa !11
  %427 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %428 = load ptr, ptr %427, align 8, !tbaa !33
  %429 = load i32, ptr %32, align 4, !tbaa !11
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  %432 = load double, ptr %431, align 8, !tbaa !31
  %433 = fcmp olt double %432, 0.000000e+00
  br i1 %433, label %434, label %454

434:                                              ; preds = %422
  %435 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %436 = load ptr, ptr %435, align 8, !tbaa !33
  %437 = load i32, ptr %32, align 4, !tbaa !11
  %438 = sext i32 %437 to i64
  %439 = getelementptr inbounds double, ptr %436, i64 %438
  %440 = load double, ptr %439, align 8, !tbaa !31
  %441 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %442 = load i32, ptr %32, align 4, !tbaa !11
  %443 = sext i32 %442 to i64
  %444 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %441, i64 noundef %443) #7
  %445 = load double, ptr %444, align 8, !tbaa !31
  %446 = fmul double %440, %445
  %447 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 14
  %448 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %447, double noundef %446)
          to label %449 unwind label %450

449:                                              ; preds = %434
  br label %469

450:                                              ; preds = %434
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %24, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %485

454:                                              ; preds = %422
  %455 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %456 = load ptr, ptr %455, align 8, !tbaa !33
  %457 = load i32, ptr %32, align 4, !tbaa !11
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !31
  %461 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %462 = load i32, ptr %32, align 4, !tbaa !11
  %463 = sext i32 %462 to i64
  %464 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %461, i64 noundef %463) #7
  %465 = load double, ptr %464, align 8, !tbaa !31
  %466 = load double, ptr %11, align 8, !tbaa !31
  %467 = fneg double %460
  %468 = call double @llvm.fmuladd.f64(double %467, double %465, double %466)
  store double %468, ptr %11, align 8, !tbaa !31
  br label %469

469:                                              ; preds = %454, %449
  %470 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %471 = load ptr, ptr %470, align 8, !tbaa !33
  %472 = load i32, ptr %32, align 4, !tbaa !11
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds double, ptr %471, i64 %473
  store double 0.000000e+00, ptr %474, align 8, !tbaa !31
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  br label %475

475:                                              ; preds = %469
  %476 = load i32, ptr %31, align 4, !tbaa !11
  %477 = add nsw i32 %476, 1
  store i32 %477, ptr %31, align 4, !tbaa !11
  br label %417, !llvm.loop !45

478:                                              ; preds = %421
  %479 = load i32, ptr %20, align 4, !tbaa !11
  %480 = load i32, ptr %10, align 4, !tbaa !11
  %481 = add nsw i32 %480, %479
  store i32 %481, ptr %10, align 4, !tbaa !11
  store i32 0, ptr %18, align 4
  br label %482

482:                                              ; preds = %478, %385
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  %483 = load i32, ptr %18, align 4
  switch i32 %483, label %677 [
    i32 0, label %484
  ]

484:                                              ; preds = %482
  br label %486

485:                                              ; preds = %450, %412, %372
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #7
  call void @llvm.lifetime.end.p0(i64 24, 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 %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  br label %680

486:                                              ; preds = %484, %312
  %487 = load i32, ptr %10, align 4, !tbaa !11
  %488 = icmp ne i32 %487, 0
  br i1 %488, label %489, label %673

489:                                              ; preds = %486
  %490 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 8
  %491 = call noundef zeroext i1 @_ZNKSt6vectorIhSaIhEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %490) #7
  br i1 %491, label %492, label %577

492:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  %493 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %494 = load i32, ptr %493, align 4, !tbaa !32
  %495 = sub nsw i32 %494, 1
  store i32 %495, ptr %33, align 4, !tbaa !11
  br label %496

496:                                              ; preds = %572, %492
  %497 = load i32, ptr %33, align 4, !tbaa !11
  %498 = icmp sge i32 %497, 0
  br i1 %498, label %500, label %499

499:                                              ; preds = %496
  store i32 17, ptr %18, align 4
  br label %575

500:                                              ; preds = %496
  %501 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %502 = load ptr, ptr %501, align 8, !tbaa !33
  %503 = load i32, ptr %33, align 4, !tbaa !11
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds double, ptr %502, i64 %504
  %506 = load double, ptr %505, align 8, !tbaa !31
  %507 = fcmp oeq double %506, 0.000000e+00
  br i1 %507, label %508, label %571

508:                                              ; preds = %500
  %509 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %510 = load i32, ptr %509, align 4, !tbaa !32
  %511 = add nsw i32 %510, -1
  store i32 %511, ptr %509, align 4, !tbaa !32
  %512 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 13
  %513 = load ptr, ptr %512, align 8, !tbaa !39
  %514 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %515 = load i32, ptr %514, align 4, !tbaa !32
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds i32, ptr %513, i64 %516
  %518 = load i32, ptr %517, align 4, !tbaa !11
  %519 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 13
  %520 = load ptr, ptr %519, align 8, !tbaa !39
  %521 = load i32, ptr %33, align 4, !tbaa !11
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds i32, ptr %520, i64 %522
  store i32 %518, ptr %523, align 4, !tbaa !11
  %524 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %525 = load ptr, ptr %524, align 8, !tbaa !33
  %526 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %527 = load i32, ptr %526, align 4, !tbaa !32
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds double, ptr %525, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !31
  %531 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %532 = load ptr, ptr %531, align 8, !tbaa !33
  %533 = load i32, ptr %33, align 4, !tbaa !11
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds double, ptr %532, i64 %534
  store double %530, ptr %535, align 8, !tbaa !31
  %536 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %537 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %538 = load i32, ptr %537, align 4, !tbaa !32
  %539 = sext i32 %538 to i64
  %540 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %536, i64 noundef %539) #7
  %541 = load double, ptr %540, align 8, !tbaa !31
  %542 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %543 = load i32, ptr %33, align 4, !tbaa !11
  %544 = sext i32 %543 to i64
  %545 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %542, i64 noundef %544) #7
  store double %541, ptr %545, align 8, !tbaa !31
  %546 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 7
  %547 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %548 = load i32, ptr %547, align 4, !tbaa !32
  %549 = sext i32 %548 to i64
  %550 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %546, i64 noundef %549) #7
  %551 = load double, ptr %550, align 8, !tbaa !31
  %552 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 7
  %553 = load i32, ptr %33, align 4, !tbaa !11
  %554 = sext i32 %553 to i64
  %555 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %552, i64 noundef %554) #7
  store double %551, ptr %555, align 8, !tbaa !31
  %556 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 9
  %557 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %558 = load i32, ptr %557, align 4, !tbaa !32
  %559 = sext i32 %558 to i64
  %560 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %556, i64 noundef %559) #7
  %561 = load i8, ptr %560, align 1, !tbaa !40
  %562 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 9
  %563 = load i32, ptr %33, align 4, !tbaa !11
  %564 = sext i32 %563 to i64
  %565 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %562, i64 noundef %564) #7
  store i8 %561, ptr %565, align 1, !tbaa !40
  %566 = load i32, ptr %10, align 4, !tbaa !11
  %567 = add nsw i32 %566, -1
  store i32 %567, ptr %10, align 4, !tbaa !11
  %568 = icmp eq i32 %567, 0
  br i1 %568, label %569, label %570

569:                                              ; preds = %508
  store i32 17, ptr %18, align 4
  br label %575

570:                                              ; preds = %508
  br label %571

571:                                              ; preds = %570, %500
  br label %572

572:                                              ; preds = %571
  %573 = load i32, ptr %33, align 4, !tbaa !11
  %574 = add nsw i32 %573, -1
  store i32 %574, ptr %33, align 4, !tbaa !11
  br label %496, !llvm.loop !46

575:                                              ; preds = %569, %499
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  br label %576

576:                                              ; preds = %575
  br label %672

577:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #7
  %578 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %579 = load i32, ptr %578, align 4, !tbaa !32
  %580 = sub nsw i32 %579, 1
  store i32 %580, ptr %34, align 4, !tbaa !11
  br label %581

581:                                              ; preds = %667, %577
  %582 = load i32, ptr %34, align 4, !tbaa !11
  %583 = icmp sge i32 %582, 0
  br i1 %583, label %585, label %584

584:                                              ; preds = %581
  store i32 20, ptr %18, align 4
  br label %670

585:                                              ; preds = %581
  %586 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %587 = load ptr, ptr %586, align 8, !tbaa !33
  %588 = load i32, ptr %34, align 4, !tbaa !11
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds double, ptr %587, i64 %589
  %591 = load double, ptr %590, align 8, !tbaa !31
  %592 = fcmp oeq double %591, 0.000000e+00
  br i1 %592, label %593, label %666

593:                                              ; preds = %585
  %594 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %595 = load i32, ptr %594, align 4, !tbaa !32
  %596 = add nsw i32 %595, -1
  store i32 %596, ptr %594, align 4, !tbaa !32
  %597 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 13
  %598 = load ptr, ptr %597, align 8, !tbaa !39
  %599 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %600 = load i32, ptr %599, align 4, !tbaa !32
  %601 = sext i32 %600 to i64
  %602 = getelementptr inbounds i32, ptr %598, i64 %601
  %603 = load i32, ptr %602, align 4, !tbaa !11
  %604 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 13
  %605 = load ptr, ptr %604, align 8, !tbaa !39
  %606 = load i32, ptr %34, align 4, !tbaa !11
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds i32, ptr %605, i64 %607
  store i32 %603, ptr %608, align 4, !tbaa !11
  %609 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %610 = load ptr, ptr %609, align 8, !tbaa !33
  %611 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %612 = load i32, ptr %611, align 4, !tbaa !32
  %613 = sext i32 %612 to i64
  %614 = getelementptr inbounds double, ptr %610, i64 %613
  %615 = load double, ptr %614, align 8, !tbaa !31
  %616 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 12
  %617 = load ptr, ptr %616, align 8, !tbaa !33
  %618 = load i32, ptr %34, align 4, !tbaa !11
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %617, i64 %619
  store double %615, ptr %620, align 8, !tbaa !31
  %621 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %622 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %623 = load i32, ptr %622, align 4, !tbaa !32
  %624 = sext i32 %623 to i64
  %625 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %621, i64 noundef %624) #7
  %626 = load double, ptr %625, align 8, !tbaa !31
  %627 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 6
  %628 = load i32, ptr %34, align 4, !tbaa !11
  %629 = sext i32 %628 to i64
  %630 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %627, i64 noundef %629) #7
  store double %626, ptr %630, align 8, !tbaa !31
  %631 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 7
  %632 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %633 = load i32, ptr %632, align 4, !tbaa !32
  %634 = sext i32 %633 to i64
  %635 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %631, i64 noundef %634) #7
  %636 = load double, ptr %635, align 8, !tbaa !31
  %637 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 7
  %638 = load i32, ptr %34, align 4, !tbaa !11
  %639 = sext i32 %638 to i64
  %640 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %637, i64 noundef %639) #7
  store double %636, ptr %640, align 8, !tbaa !31
  %641 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 9
  %642 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %643 = load i32, ptr %642, align 4, !tbaa !32
  %644 = sext i32 %643 to i64
  %645 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %641, i64 noundef %644) #7
  %646 = load i8, ptr %645, align 1, !tbaa !40
  %647 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 9
  %648 = load i32, ptr %34, align 4, !tbaa !11
  %649 = sext i32 %648 to i64
  %650 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %647, i64 noundef %649) #7
  store i8 %646, ptr %650, align 1, !tbaa !40
  %651 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 8
  %652 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 17
  %653 = load i32, ptr %652, align 4, !tbaa !32
  %654 = sext i32 %653 to i64
  %655 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %651, i64 noundef %654) #7
  %656 = load i8, ptr %655, align 1, !tbaa !40
  %657 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 8
  %658 = load i32, ptr %34, align 4, !tbaa !11
  %659 = sext i32 %658 to i64
  %660 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %657, i64 noundef %659) #7
  store i8 %656, ptr %660, align 1, !tbaa !40
  %661 = load i32, ptr %10, align 4, !tbaa !11
  %662 = add nsw i32 %661, -1
  store i32 %662, ptr %10, align 4, !tbaa !11
  %663 = icmp eq i32 %662, 0
  br i1 %663, label %664, label %665

664:                                              ; preds = %593
  store i32 20, ptr %18, align 4
  br label %670

665:                                              ; preds = %593
  br label %666

666:                                              ; preds = %665, %585
  br label %667

667:                                              ; preds = %666
  %668 = load i32, ptr %34, align 4, !tbaa !11
  %669 = add nsw i32 %668, -1
  store i32 %669, ptr %34, align 4, !tbaa !11
  br label %581, !llvm.loop !47

670:                                              ; preds = %664, %584
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #7
  br label %671

671:                                              ; preds = %670
  br label %672

672:                                              ; preds = %671, %576
  br label %673

673:                                              ; preds = %672, %486
  %674 = load double, ptr %11, align 8, !tbaa !31
  %675 = getelementptr inbounds %class.HighsCutGeneration, ptr %35, i32 0, i32 14
  %676 = call noundef zeroext i1 @_ZgtdRK12HighsCDouble(double noundef %674, ptr noundef nonnull align 8 dereferenceable(16) %675)
  store i1 %676, ptr %5, align 1
  store i32 1, ptr %18, align 4
  br label %677

677:                                              ; preds = %673, %482
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %678

678:                                              ; preds = %677, %310
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %10) #7
  %679 = load i1, ptr %5, align 1
  ret i1 %679

680:                                              ; preds = %485
  %681 = load ptr, ptr %24, align 8
  %682 = load i32, ptr %25, align 4
  %683 = insertvalue { ptr, i32 } poison, ptr %681, 0
  %684 = insertvalue { ptr, i32 } %683, i32 %682, 1
  resume { ptr, i32 } %684
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIhSaIhEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt12partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN18HighsCutGeneration24preprocessBaseInequalityERbS8_S8_E3$_0EvT_SA_SA_T0_"(ptr, ptr, ptr, ptr) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZgtdRK12HighsCDouble(double noundef, ptr noundef nonnull align 8 dereferenceable(16)) #1

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { 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 #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !22, i64 176}
!14 = !{!"_ZTS18HighsCutGeneration", !6, i64 0, !6, i64 8, !15, i64 16, !17, i64 24, !21, i64 48, !21, i64 64, !23, i64 80, !23, i64 104, !27, i64 128, !27, i64 152, !22, i64 176, !22, i64 184, !6, i64 192, !6, i64 200, !21, i64 208, !10, i64 224, !10, i64 225, !12, i64 228, !22, i64 232, !17, i64 240, !23, i64 264}
!15 = !{!"_ZTS11HighsRandom", !16, i64 0}
!16 = !{!"long", !7, i64 0}
!17 = !{!"_ZTSSt6vectorIiSaIiEE", !18, i64 0}
!18 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!21 = !{!"_ZTS12HighsCDouble", !22, i64 0, !22, i64 8}
!22 = !{!"double", !7, i64 0}
!23 = !{!"_ZTSSt6vectorIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIhSaIhEE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!22, !22, i64 0}
!32 = !{!14, !12, i64 228}
!33 = !{!14, !6, i64 192}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!14, !22, i64 232}
!37 = distinct !{!37, !35}
!38 = !{!14, !6, i64 0}
!39 = !{!14, !6, i64 200}
!40 = !{!7, !7, i64 0}
!41 = distinct !{!41, !35}
!42 = distinct !{!42, !35}
!43 = !{!44, !6, i64 0}
!44 = !{!"_ZTSZN18HighsCutGeneration24preprocessBaseInequalityERbS0_S0_E3$_0", !6, i64 0}
!45 = distinct !{!45, !35}
!46 = distinct !{!46, !35}
!47 = distinct !{!47, !35}


; 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" = 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.__gnu_cxx::__normal_iterator" = type { ptr }

; 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 nounwind uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3absd(double noundef) local_unnamed_addr #3

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

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

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

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(argmem: write)
declare double @frexp(double noundef, ptr nocapture noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nofree nounwind willreturn
declare double @ldexp(double noundef, i32 noundef) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN18HighsCutGeneration24preprocessBaseInequalityERbS0_S0_(ptr noundef nonnull align 8 dereferenceable(288) %0, ptr nocapture noundef nonnull writeonly align 1 dereferenceable(1) %1, ptr nocapture noundef nonnull writeonly align 1 dereferenceable(1) %2, ptr nocapture noundef nonnull writeonly align 1 dereferenceable(1) %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca i32, align 4
  %8 = alloca %"class.std::vector", align 8
  %9 = alloca i32, align 4
  %10 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  store i8 0, ptr %1, align 1, !tbaa !5
  store i8 0, ptr %3, align 1, !tbaa !5
  store i8 0, ptr %2, align 1, !tbaa !5
  %11 = getelementptr inbounds i8, ptr %0, i64 176
  %12 = load double, ptr %11, align 8, !tbaa !9
  %13 = fneg double %12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #8
  store double 0.000000e+00, ptr %5, align 8, !tbaa !29
  %14 = getelementptr inbounds i8, ptr %0, i64 228
  %15 = load i32, ptr %14, align 4, !tbaa !30
  %16 = icmp sgt i32 %15, 0
  br i1 %16, label %.lr.ph, label %._crit_edge

.lr.ph:                                           ; preds = %4
  %17 = getelementptr inbounds i8, ptr %0, i64 192
  br label %29

._crit_edge:                                      ; preds = %29, %4
  %18 = phi double [ 0.000000e+00, %4 ], [ %35, %29 ]
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #8
  store i32 0, ptr %7, align 4, !tbaa !31
  %19 = call double @frexp(double noundef %18, ptr noundef nonnull %7) #8
  %20 = load i32, ptr %7, align 4, !tbaa !31
  %21 = sub nsw i32 0, %20
  store i32 %21, ptr %7, align 4, !tbaa !31
  %22 = call double @ldexp(double noundef 1.000000e+00, i32 noundef %21) #8
  %23 = getelementptr inbounds i8, ptr %0, i64 232
  store double %22, ptr %23, align 8, !tbaa !32
  %24 = getelementptr inbounds i8, ptr %0, i64 208
  %25 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemLEd(ptr noundef nonnull align 8 dereferenceable(16) %24, double noundef %22)
  %26 = load i32, ptr %14, align 4, !tbaa !30
  %27 = icmp sgt i32 %26, 0
  br i1 %27, label %.lr.ph140, label %._crit_edge.._crit_edge141_crit_edge

._crit_edge.._crit_edge141_crit_edge:             ; preds = %._crit_edge
  %.pre195 = sext i32 %26 to i64
  br label %._crit_edge141

.lr.ph140:                                        ; preds = %._crit_edge
  %28 = getelementptr inbounds i8, ptr %0, i64 192
  %.pre = load ptr, ptr %28, align 8, !tbaa !33
  br label %46

29:                                               ; preds = %.lr.ph, %29
  %indvars.iv = phi i64 [ 0, %.lr.ph ], [ %indvars.iv.next, %29 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %30 = load ptr, ptr %17, align 8, !tbaa !33
  %31 = getelementptr inbounds double, ptr %30, i64 %indvars.iv
  %32 = load double, ptr %31, align 8, !tbaa !29
  %33 = call noundef double @_ZSt3absd(double noundef %32)
  store double %33, ptr %6, align 8, !tbaa !29
  %34 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %5)
  %35 = load double, ptr %34, align 8, !tbaa !29
  store double %35, ptr %5, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %36 = load i32, ptr %14, align 4, !tbaa !30
  %37 = sext i32 %36 to i64
  %38 = icmp slt i64 %indvars.iv.next, %37
  br i1 %38, label %29, label %._crit_edge, !llvm.loop !34

._crit_edge141:                                   ; preds = %46, %._crit_edge.._crit_edge141_crit_edge
  %.pre-phi = phi i64 [ %.pre195, %._crit_edge.._crit_edge141_crit_edge ], [ %54, %46 ]
  %39 = getelementptr inbounds i8, ptr %0, i64 152
  call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %.pre-phi)
  %40 = load i32, ptr %14, align 4, !tbaa !30
  %.not142 = icmp eq i32 %40, 0
  br i1 %.not142, label %.critedge, label %.lr.ph147

.lr.ph147:                                        ; preds = %._crit_edge141
  %41 = getelementptr inbounds i8, ptr %0, i64 200
  %42 = getelementptr inbounds i8, ptr %0, i64 192
  %43 = getelementptr inbounds i8, ptr %0, i64 80
  %44 = getelementptr inbounds i8, ptr %0, i64 104
  %45 = getelementptr inbounds i8, ptr %0, i64 128
  br label %56

46:                                               ; preds = %.lr.ph140, %46
  %47 = phi ptr [ %.pre, %.lr.ph140 ], [ %51, %46 ]
  %indvars.iv176 = phi i64 [ 0, %.lr.ph140 ], [ %indvars.iv.next177, %46 ]
  %48 = getelementptr inbounds double, ptr %47, i64 %indvars.iv176
  %49 = load double, ptr %48, align 8, !tbaa !29
  %50 = call double @ldexp(double noundef %49, i32 noundef %21) #8
  %51 = load ptr, ptr %28, align 8, !tbaa !33
  %52 = getelementptr inbounds double, ptr %51, i64 %indvars.iv176
  store double %50, ptr %52, align 8, !tbaa !29
  %indvars.iv.next177 = add nuw nsw i64 %indvars.iv176, 1
  %53 = load i32, ptr %14, align 4, !tbaa !30
  %54 = sext i32 %53 to i64
  %55 = icmp slt i64 %indvars.iv.next177, %54
  br i1 %55, label %46, label %._crit_edge141, !llvm.loop !36

56:                                               ; preds = %.lr.ph147, %154
  %indvars.iv179 = phi i64 [ 0, %.lr.ph147 ], [ %indvars.iv.next180, %154 ]
  %.097145 = phi i32 [ 0, %.lr.ph147 ], [ %.198, %154 ]
  %.0101144 = phi double [ %13, %.lr.ph147 ], [ %.1102, %154 ]
  %57 = load ptr, ptr %0, align 8, !tbaa !37
  %58 = load ptr, ptr %41, align 8, !tbaa !38
  %59 = getelementptr inbounds i32, ptr %58, i64 %indvars.iv179
  %60 = load i32, ptr %59, align 4, !tbaa !31
  %61 = call noundef zeroext i1 @_ZNK17HighsLpRelaxation13isColIntegralEi(ptr noundef nonnull align 8 dereferenceable(21425) %57, i32 noundef %60)
  br i1 %61, label %62, label %70

62:                                               ; preds = %56
  %63 = load ptr, ptr %42, align 8, !tbaa !33
  %64 = getelementptr inbounds double, ptr %63, i64 %indvars.iv179
  %65 = load double, ptr %64, align 8, !tbaa !29
  %66 = call noundef double @_ZSt3absd(double noundef %65)
  %67 = load double, ptr %11, align 8, !tbaa !9
  %68 = fmul double %67, 1.000000e+01
  %69 = fcmp ogt double %66, %68
  br label %70

70:                                               ; preds = %62, %56
  %71 = phi i1 [ false, %56 ], [ %69, %62 ]
  %72 = zext i1 %71 to i8
  %73 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %indvars.iv179) #8
  store i8 %72, ptr %73, align 1, !tbaa !39
  %74 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %indvars.iv179) #8
  %75 = load i8, ptr %74, align 1, !tbaa !39
  %.not124 = icmp eq i8 %75, 0
  %76 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv179) #8
  %77 = load double, ptr %76, align 8, !tbaa !29
  br i1 %.not124, label %78, label %138

78:                                               ; preds = %70
  %79 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %44, i64 noundef %indvars.iv179) #8
  %80 = load double, ptr %79, align 8, !tbaa !29
  %81 = fmul double %80, 2.000000e+00
  %82 = fcmp olt double %77, %81
  br i1 %82, label %83, label %90

83:                                               ; preds = %78
  %84 = call noundef zeroext i1 @_ZNKSt6vectorIhSaIhEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %45) #8
  br i1 %84, label %85, label %88

85:                                               ; preds = %83
  %86 = load i32, ptr %14, align 4, !tbaa !30
  %87 = sext i32 %86 to i64
  call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %45, i64 noundef %87)
  br label %88

88:                                               ; preds = %85, %83
  %89 = trunc nuw nsw i64 %indvars.iv179 to i32
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %89)
  br label %90

90:                                               ; preds = %88, %78
  %91 = load ptr, ptr %42, align 8, !tbaa !33
  %92 = getelementptr inbounds double, ptr %91, i64 %indvars.iv179
  %93 = load double, ptr %92, align 8, !tbaa !29
  %94 = fcmp ogt double %93, 0.000000e+00
  br i1 %94, label %103, label %95

95:                                               ; preds = %90
  %96 = call noundef double @_ZSt3absd(double noundef %93)
  %97 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv179) #8
  %98 = load double, ptr %97, align 8, !tbaa !29
  %99 = fmul double %96, %98
  %100 = load double, ptr %11, align 8, !tbaa !9
  %101 = fmul double %100, 1.000000e+01
  %102 = fcmp ugt double %99, %101
  %.pre191 = load ptr, ptr %42, align 8, !tbaa !33
  br i1 %102, label %123, label %._crit_edge192

._crit_edge192:                                   ; preds = %95
  %.phi.trans.insert = getelementptr inbounds double, ptr %.pre191, i64 %indvars.iv179
  %.pre193 = load double, ptr %.phi.trans.insert, align 8, !tbaa !29
  br label %103

103:                                              ; preds = %._crit_edge192, %90
  %104 = phi double [ %.pre193, %._crit_edge192 ], [ %93, %90 ]
  %105 = phi ptr [ %.pre191, %._crit_edge192 ], [ %91, %90 ]
  %106 = fcmp olt double %104, 0.000000e+00
  br i1 %106, label %107, label %119

107:                                              ; preds = %103
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv179) #8
  %109 = load double, ptr %108, align 8, !tbaa !29
  %110 = fcmp oeq double %109, 0x7FF0000000000000
  br i1 %110, label %.loopexit132, label %111

111:                                              ; preds = %107
  %112 = load ptr, ptr %42, align 8, !tbaa !33
  %113 = getelementptr inbounds double, ptr %112, i64 %indvars.iv179
  %114 = load double, ptr %113, align 8, !tbaa !29
  %115 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv179) #8
  %116 = load double, ptr %115, align 8, !tbaa !29
  %117 = fmul double %114, %116
  %118 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %24, double noundef %117)
  %.pre194 = load ptr, ptr %42, align 8, !tbaa !33
  br label %119

119:                                              ; preds = %111, %103
  %120 = phi ptr [ %.pre194, %111 ], [ %105, %103 ]
  %121 = add nsw i32 %.097145, 1
  %122 = getelementptr inbounds double, ptr %120, i64 %indvars.iv179
  store double 0.000000e+00, ptr %122, align 8, !tbaa !29
  br label %154

123:                                              ; preds = %95
  store i8 1, ptr %3, align 1, !tbaa !5
  %124 = getelementptr inbounds double, ptr %.pre191, i64 %indvars.iv179
  %125 = load double, ptr %124, align 8, !tbaa !29
  %126 = fcmp ogt double %125, 0.000000e+00
  br i1 %126, label %127, label %154

127:                                              ; preds = %123
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv179) #8
  %129 = load double, ptr %128, align 8, !tbaa !29
  %130 = fcmp oeq double %129, 0x7FF0000000000000
  br i1 %130, label %154, label %131

131:                                              ; preds = %127
  %132 = load ptr, ptr %42, align 8, !tbaa !33
  %133 = getelementptr inbounds double, ptr %132, i64 %indvars.iv179
  %134 = load double, ptr %133, align 8, !tbaa !29
  %135 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv179) #8
  %136 = load double, ptr %135, align 8, !tbaa !29
  %137 = call double @llvm.fmuladd.f64(double %134, double %136, double %.0101144)
  br label %154

138:                                              ; preds = %70
  %139 = fcmp oeq double %77, 0x7FF0000000000000
  br i1 %139, label %140, label %141

140:                                              ; preds = %138
  store i8 1, ptr %1, align 1, !tbaa !5
  br label %.sink.split

141:                                              ; preds = %138
  %142 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv179) #8
  %143 = load double, ptr %142, align 8, !tbaa !29
  %144 = fcmp une double %143, 1.000000e+00
  br i1 %144, label %.sink.split, label %145

.sink.split:                                      ; preds = %141, %140
  store i8 1, ptr %2, align 1, !tbaa !5
  br label %145

145:                                              ; preds = %.sink.split, %141
  %146 = load ptr, ptr %42, align 8, !tbaa !33
  %147 = getelementptr inbounds double, ptr %146, i64 %indvars.iv179
  %148 = load double, ptr %147, align 8, !tbaa !29
  %149 = fcmp ogt double %148, 0.000000e+00
  br i1 %149, label %150, label %154

150:                                              ; preds = %145
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %43, i64 noundef %indvars.iv179) #8
  %152 = load double, ptr %151, align 8, !tbaa !29
  %153 = call double @llvm.fmuladd.f64(double %148, double %152, double %.0101144)
  br label %154

154:                                              ; preds = %127, %131, %123, %150, %145, %119
  %.1102 = phi double [ %153, %150 ], [ %.0101144, %145 ], [ %.0101144, %119 ], [ %137, %131 ], [ %.0101144, %123 ], [ 0x7FF0000000000000, %127 ]
  %.198 = phi i32 [ %.097145, %150 ], [ %.097145, %145 ], [ %121, %119 ], [ %.097145, %131 ], [ %.097145, %123 ], [ %.097145, %127 ]
  %indvars.iv.next180 = add nuw nsw i64 %indvars.iv179, 1
  %155 = load i32, ptr %14, align 4, !tbaa !30
  %156 = zext i32 %155 to i64
  %.not = icmp eq i64 %indvars.iv.next180, %156
  br i1 %.not, label %.critedge, label %56, !llvm.loop !40

.critedge:                                        ; preds = %154, %._crit_edge141
  %.0101.lcssa = phi double [ %13, %._crit_edge141 ], [ %.1102, %154 ]
  %.097.lcssa = phi i32 [ 0, %._crit_edge141 ], [ %.198, %154 ]
  %157 = load ptr, ptr %0, align 8, !tbaa !37
  %158 = call noundef i32 @_ZNK17HighsLpRelaxation7numColsEv(ptr noundef nonnull align 8 dereferenceable(21425) %157)
  %159 = sitofp i32 %158 to double
  %160 = call double @llvm.fmuladd.f64(double %159, double 1.500000e-01, double 1.000000e+02)
  %161 = fptosi double %160 to i32
  %162 = load i32, ptr %14, align 4, !tbaa !30
  %163 = sub nsw i32 %162, %.097.lcssa
  %164 = icmp sgt i32 %163, %161
  br i1 %164, label %165, label %243

165:                                              ; preds = %.critedge
  %166 = sub nsw i32 %163, %161
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %8) #8
  call void @_ZNSt6vectorIiSaIiEEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #8
  store i32 0, ptr %9, align 4, !tbaa !31
  %167 = load i32, ptr %14, align 4, !tbaa !30
  %.not125150 = icmp eq i32 %167, 0
  br i1 %.not125150, label %._crit_edge154, label %.lr.ph153

.lr.ph153:                                        ; preds = %165
  %168 = getelementptr inbounds i8, ptr %0, i64 192
  %169 = getelementptr inbounds i8, ptr %0, i64 80
  %170 = getelementptr inbounds i8, ptr %0, i64 104
  br label %173

._crit_edge154:                                   ; preds = %197, %165
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  %171 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %172 = trunc i64 %171 to i32
  %.not126 = icmp sgt i32 %166, %172
  br i1 %.not126, label %.thread, label %201

.thread:                                          ; preds = %._crit_edge154
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  br label %.loopexit132

173:                                              ; preds = %.lr.ph153, %197
  %storemerge151 = phi i32 [ 0, %.lr.ph153 ], [ %199, %197 ]
  %174 = load ptr, ptr %168, align 8, !tbaa !33
  %175 = sext i32 %storemerge151 to i64
  %176 = getelementptr inbounds double, ptr %174, i64 %175
  %177 = load double, ptr %176, align 8, !tbaa !29
  %178 = fcmp ogt double %177, 0.000000e+00
  br i1 %178, label %179, label %182

179:                                              ; preds = %173
  %180 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %170, i64 noundef %175) #8
  %181 = load double, ptr %180, align 8, !tbaa !29
  br label %190

182:                                              ; preds = %173
  %183 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %169, i64 noundef %175) #8
  %184 = load double, ptr %183, align 8, !tbaa !29
  %185 = load i32, ptr %9, align 4, !tbaa !31
  %186 = sext i32 %185 to i64
  %187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %170, i64 noundef %186) #8
  %188 = load double, ptr %187, align 8, !tbaa !29
  %189 = fsub double %184, %188
  br label %190

190:                                              ; preds = %182, %179
  %191 = phi double [ %181, %179 ], [ %189, %182 ]
  %192 = load double, ptr %11, align 8, !tbaa !9
  %193 = fcmp ugt double %191, %192
  br i1 %193, label %197, label %194

194:                                              ; preds = %190
  invoke void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull align 4 dereferenceable(4) %9)
          to label %197 unwind label %195

195:                                              ; preds = %194
  %196 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #8
  br label %242

197:                                              ; preds = %194, %190
  %198 = load i32, ptr %9, align 4, !tbaa !31
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %9, align 4, !tbaa !31
  %200 = load i32, ptr %14, align 4, !tbaa !30
  %.not125 = icmp eq i32 %199, %200
  br i1 %.not125, label %._crit_edge154, label %173, !llvm.loop !41

201:                                              ; preds = %._crit_edge154
  %202 = call noundef i64 @_ZNKSt6vectorIiSaIiEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  %203 = trunc i64 %202 to i32
  %204 = icmp slt i32 %166, %203
  br i1 %204, label %205, label %214

205:                                              ; preds = %201
  %206 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  %207 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  store ptr %207, ptr %10, align 8
  %208 = sext i32 %166 to i64
  %209 = call ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEplEl(ptr noundef nonnull align 8 dereferenceable(8) %10, i64 noundef %208) #8
  %210 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  invoke void @"_ZSt12partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN18HighsCutGeneration24preprocessBaseInequalityERbS8_S8_E3$_0EvT_SA_SA_T0_"(ptr %206, ptr %209, ptr %210, ptr nonnull %0)
          to label %211 unwind label %212

211:                                              ; preds = %205
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %214

212:                                              ; preds = %205
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %242

214:                                              ; preds = %211, %201
  %215 = icmp sgt i32 %166, 0
  br i1 %215, label %.lr.ph158, label %._crit_edge159

.lr.ph158:                                        ; preds = %214
  %216 = getelementptr inbounds i8, ptr %0, i64 192
  %217 = getelementptr inbounds i8, ptr %0, i64 80
  %218 = zext nneg i32 %166 to i64
  br label %219

219:                                              ; preds = %.lr.ph158, %237
  %indvars.iv182 = phi i64 [ 0, %.lr.ph158 ], [ %indvars.iv.next183, %237 ]
  %.2103155 = phi double [ %.0101.lcssa, %.lr.ph158 ], [ %.3104, %237 ]
  %220 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %8, i64 noundef %indvars.iv182) #8
  %221 = load i32, ptr %220, align 4, !tbaa !31
  %222 = load ptr, ptr %216, align 8, !tbaa !33
  %223 = sext i32 %221 to i64
  %224 = getelementptr inbounds double, ptr %222, i64 %223
  %225 = load double, ptr %224, align 8, !tbaa !29
  %226 = fcmp olt double %225, 0.000000e+00
  %227 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %217, i64 noundef %223) #8
  %228 = load double, ptr %227, align 8, !tbaa !29
  br i1 %226, label %229, label %234

229:                                              ; preds = %219
  %230 = fmul double %225, %228
  %231 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublemIEd(ptr noundef nonnull align 8 dereferenceable(16) %24, double noundef %230)
          to label %237 unwind label %232

232:                                              ; preds = %229
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %242

234:                                              ; preds = %219
  %235 = fneg double %225
  %236 = call double @llvm.fmuladd.f64(double %235, double %228, double %.2103155)
  br label %237

237:                                              ; preds = %229, %234
  %.3104 = phi double [ %.2103155, %229 ], [ %236, %234 ]
  %238 = load ptr, ptr %216, align 8, !tbaa !33
  %239 = getelementptr inbounds double, ptr %238, i64 %223
  store double 0.000000e+00, ptr %239, align 8, !tbaa !29
  %indvars.iv.next183 = add nuw nsw i64 %indvars.iv182, 1
  %240 = icmp ult i64 %indvars.iv.next183, %218
  br i1 %240, label %219, label %._crit_edge159, !llvm.loop !42

._crit_edge159:                                   ; preds = %237, %214
  %.2103.lcssa = phi double [ %.0101.lcssa, %214 ], [ %.3104, %237 ]
  %241 = add nsw i32 %166, %.097.lcssa
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  br label %243

242:                                              ; preds = %232, %212, %195
  %.pn = phi { ptr, i32 } [ %196, %195 ], [ %233, %232 ], [ %213, %212 ]
  call void @_ZNSt6vectorIiSaIiEED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %8) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  resume { ptr, i32 } %.pn

243:                                              ; preds = %._crit_edge159, %.critedge
  %.5106 = phi double [ %.2103.lcssa, %._crit_edge159 ], [ %.0101.lcssa, %.critedge ]
  %.3100 = phi i32 [ %241, %._crit_edge159 ], [ %.097.lcssa, %.critedge ]
  %.not127 = icmp eq i32 %.3100, 0
  br i1 %.not127, label %.loopexit, label %244

244:                                              ; preds = %243
  %245 = getelementptr inbounds i8, ptr %0, i64 128
  %246 = call noundef zeroext i1 @_ZNKSt6vectorIhSaIhEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %245) #8
  %247 = load i32, ptr %14, align 4, !tbaa !30
  %248 = icmp sgt i32 %247, 0
  br i1 %246, label %249, label %289

249:                                              ; preds = %244
  br i1 %248, label %.lr.ph171, label %.loopexit

.lr.ph171:                                        ; preds = %249
  %250 = getelementptr inbounds i8, ptr %0, i64 192
  %251 = getelementptr inbounds i8, ptr %0, i64 200
  %252 = getelementptr inbounds i8, ptr %0, i64 80
  %253 = getelementptr inbounds i8, ptr %0, i64 104
  %254 = zext nneg i32 %247 to i64
  br label %255

255:                                              ; preds = %.lr.ph171, %287
  %indvars.iv188 = phi i64 [ %254, %.lr.ph171 ], [ %indvars.iv.next189, %287 ]
  %.4168 = phi i32 [ %.3100, %.lr.ph171 ], [ %.5, %287 ]
  %indvars.iv.next189 = add nsw i64 %indvars.iv188, -1
  %256 = load ptr, ptr %250, align 8, !tbaa !33
  %257 = getelementptr inbounds double, ptr %256, i64 %indvars.iv.next189
  %258 = load double, ptr %257, align 8, !tbaa !29
  %259 = fcmp oeq double %258, 0.000000e+00
  br i1 %259, label %260, label %287

260:                                              ; preds = %255
  %261 = load i32, ptr %14, align 4, !tbaa !30
  %262 = add nsw i32 %261, -1
  store i32 %262, ptr %14, align 4, !tbaa !30
  %263 = load ptr, ptr %251, align 8, !tbaa !38
  %264 = sext i32 %262 to i64
  %265 = getelementptr inbounds i32, ptr %263, i64 %264
  %266 = load i32, ptr %265, align 4, !tbaa !31
  %267 = getelementptr inbounds i32, ptr %263, i64 %indvars.iv.next189
  store i32 %266, ptr %267, align 4, !tbaa !31
  %268 = load i32, ptr %14, align 4, !tbaa !30
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds double, ptr %256, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !29
  store double %271, ptr %257, align 8, !tbaa !29
  %272 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %252, i64 noundef %269) #8
  %273 = load double, ptr %272, align 8, !tbaa !29
  %274 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %252, i64 noundef %indvars.iv.next189) #8
  store double %273, ptr %274, align 8, !tbaa !29
  %275 = load i32, ptr %14, align 4, !tbaa !30
  %276 = sext i32 %275 to i64
  %277 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %253, i64 noundef %276) #8
  %278 = load double, ptr %277, align 8, !tbaa !29
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %253, i64 noundef %indvars.iv.next189) #8
  store double %278, ptr %279, align 8, !tbaa !29
  %280 = load i32, ptr %14, align 4, !tbaa !30
  %281 = sext i32 %280 to i64
  %282 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %281) #8
  %283 = load i8, ptr %282, align 1, !tbaa !39
  %284 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %indvars.iv.next189) #8
  store i8 %283, ptr %284, align 1, !tbaa !39
  %285 = add nsw i32 %.4168, -1
  %286 = icmp eq i32 %285, 0
  br i1 %286, label %.loopexit, label %287

287:                                              ; preds = %255, %260
  %.5 = phi i32 [ %285, %260 ], [ %.4168, %255 ]
  %288 = icmp ugt i64 %indvars.iv188, 1
  br i1 %288, label %255, label %.loopexit, !llvm.loop !43

289:                                              ; preds = %244
  br i1 %248, label %.lr.ph165, label %.loopexit

.lr.ph165:                                        ; preds = %289
  %290 = getelementptr inbounds i8, ptr %0, i64 192
  %291 = getelementptr inbounds i8, ptr %0, i64 200
  %292 = getelementptr inbounds i8, ptr %0, i64 80
  %293 = getelementptr inbounds i8, ptr %0, i64 104
  %294 = zext nneg i32 %247 to i64
  br label %295

295:                                              ; preds = %.lr.ph165, %332
  %indvars.iv185 = phi i64 [ %294, %.lr.ph165 ], [ %indvars.iv.next186, %332 ]
  %.6162 = phi i32 [ %.3100, %.lr.ph165 ], [ %.7, %332 ]
  %indvars.iv.next186 = add nsw i64 %indvars.iv185, -1
  %296 = load ptr, ptr %290, align 8, !tbaa !33
  %297 = getelementptr inbounds double, ptr %296, i64 %indvars.iv.next186
  %298 = load double, ptr %297, align 8, !tbaa !29
  %299 = fcmp oeq double %298, 0.000000e+00
  br i1 %299, label %300, label %332

300:                                              ; preds = %295
  %301 = load i32, ptr %14, align 4, !tbaa !30
  %302 = add nsw i32 %301, -1
  store i32 %302, ptr %14, align 4, !tbaa !30
  %303 = load ptr, ptr %291, align 8, !tbaa !38
  %304 = sext i32 %302 to i64
  %305 = getelementptr inbounds i32, ptr %303, i64 %304
  %306 = load i32, ptr %305, align 4, !tbaa !31
  %307 = getelementptr inbounds i32, ptr %303, i64 %indvars.iv.next186
  store i32 %306, ptr %307, align 4, !tbaa !31
  %308 = load i32, ptr %14, align 4, !tbaa !30
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds double, ptr %296, i64 %309
  %311 = load double, ptr %310, align 8, !tbaa !29
  store double %311, ptr %297, align 8, !tbaa !29
  %312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %292, i64 noundef %309) #8
  %313 = load double, ptr %312, align 8, !tbaa !29
  %314 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %292, i64 noundef %indvars.iv.next186) #8
  store double %313, ptr %314, align 8, !tbaa !29
  %315 = load i32, ptr %14, align 4, !tbaa !30
  %316 = sext i32 %315 to i64
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %293, i64 noundef %316) #8
  %318 = load double, ptr %317, align 8, !tbaa !29
  %319 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %293, i64 noundef %indvars.iv.next186) #8
  store double %318, ptr %319, align 8, !tbaa !29
  %320 = load i32, ptr %14, align 4, !tbaa !30
  %321 = sext i32 %320 to i64
  %322 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %321) #8
  %323 = load i8, ptr %322, align 1, !tbaa !39
  %324 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %39, i64 noundef %indvars.iv.next186) #8
  store i8 %323, ptr %324, align 1, !tbaa !39
  %325 = load i32, ptr %14, align 4, !tbaa !30
  %326 = sext i32 %325 to i64
  %327 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %245, i64 noundef %326) #8
  %328 = load i8, ptr %327, align 1, !tbaa !39
  %329 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %245, i64 noundef %indvars.iv.next186) #8
  store i8 %328, ptr %329, align 1, !tbaa !39
  %330 = add nsw i32 %.6162, -1
  %331 = icmp eq i32 %330, 0
  br i1 %331, label %.loopexit, label %332

332:                                              ; preds = %295, %300
  %.7 = phi i32 [ %330, %300 ], [ %.6162, %295 ]
  %333 = icmp ugt i64 %indvars.iv185, 1
  br i1 %333, label %295, label %.loopexit, !llvm.loop !44

.loopexit:                                        ; preds = %300, %332, %260, %287, %289, %249, %243
  %334 = call noundef zeroext i1 @_ZgtdRK12HighsCDouble(double noundef %.5106, ptr noundef nonnull align 8 dereferenceable(16) %24)
  br label %.loopexit132

.loopexit132:                                     ; preds = %107, %.thread, %.loopexit
  %.3 = phi i1 [ %334, %.loopexit ], [ false, %.thread ], [ false, %107 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #8
  ret i1 %.3
}

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorIhSaIhEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt12partial_sortIN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEEZN18HighsCutGeneration24preprocessBaseInequalityERbS8_S8_E3$_0EvT_SA_SA_T0_"(ptr, ptr, ptr, ptr) local_unnamed_addr #7

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { mustprogress nofree nounwind willreturn memory(argmem: write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { mustprogress nofree nounwind willreturn "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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #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, !6, i64 0}
!6 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !19, i64 176}
!10 = !{!"_ZTS18HighsCutGeneration", !11, i64 0, !11, i64 8, !12, i64 16, !14, i64 24, !18, i64 48, !18, i64 64, !20, i64 80, !20, i64 104, !24, i64 128, !24, i64 152, !19, i64 176, !19, i64 184, !11, i64 192, !11, i64 200, !18, i64 208, !6, i64 224, !6, i64 225, !28, i64 228, !19, i64 232, !14, i64 240, !20, i64 264}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"_ZTS11HighsRandom", !13, i64 0}
!13 = !{!"long", !7, i64 0}
!14 = !{!"_ZTSSt6vectorIiSaIiEE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!18 = !{!"_ZTS12HighsCDouble", !19, i64 0, !19, i64 8}
!19 = !{!"double", !7, i64 0}
!20 = !{!"_ZTSSt6vectorIdSaIdEE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!24 = !{!"_ZTSSt6vectorIhSaIhEE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!28 = !{!"int", !7, i64 0}
!29 = !{!19, !19, i64 0}
!30 = !{!10, !28, i64 228}
!31 = !{!28, !28, i64 0}
!32 = !{!10, !19, i64 232}
!33 = !{!10, !11, i64 192}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = distinct !{!36, !35}
!37 = !{!10, !11, i64 0}
!38 = !{!10, !11, i64 200}
!39 = !{!7, !7, i64 0}
!40 = distinct !{!40, !35}
!41 = distinct !{!41, !35}
!42 = distinct !{!42, !35}
!43 = distinct !{!43, !35}
!44 = distinct !{!44, !35}


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