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

; 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.__gnu_cxx::__normal_iterator.360" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.361" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.HighsCDouble = type { double, double }
%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.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.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 }

@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [16 x i8], align 1
@__PRETTY_FUNCTION__._ZN18HighsCutGeneration26cmirCutGenerationHeuristicEdb = external hidden unnamed_addr constant [66 x i8], align 1

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #2 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 void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #1 align 2

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

; 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #4

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) #1 align 2

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

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

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

; 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 { double, double } @_ZmidRK12HighsCDouble(double noundef, ptr noundef nonnull align 8 dereferenceable(16)) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN18HighsCutGeneration26cmirCutGenerationHeuristicEdb(ptr noundef nonnull align 8 dereferenceable(288) %0, double noundef %1, i1 noundef zeroext %2) #2 align 2 {
  %4 = alloca i1, align 1
  %5 = alloca ptr, align 8
  %6 = alloca double, align 8
  %7 = alloca i8, align 1
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca double, align 8
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %27 = alloca double, align 8
  %28 = alloca i64, align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.361", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %33 = alloca double, align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.361", align 8
  %35 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %41 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca ptr, align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %53 = alloca i32, align 4
  %54 = alloca double, align 8
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca double, align 8
  %59 = alloca double, align 8
  %60 = alloca double, align 8
  %61 = alloca i32, align 4
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca double, align 8
  %67 = alloca double, align 8
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca ptr, align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %73 = alloca i32, align 4
  %74 = alloca double, align 8
  %75 = alloca double, align 8
  %76 = alloca double, align 8
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca double, align 8
  %80 = alloca double, align 8
  %81 = alloca ptr, align 8
  %82 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %83 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %84 = alloca i32, align 4
  %85 = alloca double, align 8
  %86 = alloca double, align 8
  %87 = alloca double, align 8
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca double, align 8
  %93 = alloca ptr, align 8
  %94 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %95 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %96 = alloca i32, align 4
  %97 = alloca double, align 8
  %98 = alloca double, align 8
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca double, align 8
  %102 = alloca double, align 8
  %103 = alloca double, align 8
  %104 = alloca %class.HighsCDouble, align 8
  %105 = alloca %class.HighsCDouble, align 8
  %106 = alloca %class.HighsCDouble, align 8
  %107 = alloca double, align 8
  %108 = alloca %class.HighsCDouble, align 8
  %109 = alloca %class.HighsCDouble, align 8
  %110 = alloca %class.HighsCDouble, align 8
  %111 = alloca %class.HighsCDouble, align 8
  %112 = alloca i32, align 4
  %113 = alloca %class.HighsCDouble, align 8
  %114 = alloca %class.HighsCDouble, align 8
  %115 = alloca double, align 8
  %116 = alloca %class.HighsCDouble, align 8
  %117 = alloca %class.HighsCDouble, align 8
  %118 = alloca %class.HighsCDouble, align 8
  %119 = alloca %class.HighsCDouble, align 8
  %120 = alloca %class.HighsCDouble, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store double %1, ptr %6, align 8, !tbaa !9
  %121 = zext i1 %2 to i8
  store i8 %121, ptr %7, align 1, !tbaa !11
  %122 = load ptr, ptr %5, align 8
  %123 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 15
  store i8 0, ptr %123, align 8, !tbaa !13
  %124 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 16
  store i8 0, ptr %124, align 1, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 8, ptr %8) #9
  store double 0.000000e+00, ptr %8, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #9
  store double 0.000000e+00, ptr %9, align 8, !tbaa !9
  %125 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  call void @_ZNSt6vectorIdSaIdEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %125) #9
  %126 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %127 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 17
  %128 = load i32, ptr %127, align 4, !tbaa !32
  %129 = add nsw i32 %128, 3
  %130 = sext i32 %129 to i64
  call void @_ZNSt6vectorIdSaIdEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %126, i64 noundef %130)
  %131 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 19
  call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #9
  %132 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 19
  %133 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 17
  %134 = load i32, ptr %133, align 4, !tbaa !32
  %135 = sext i32 %134 to i64
  call void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %132, i64 noundef %135)
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  store double 0.000000e+00, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  store double 1.000000e+06, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  store double 5.000000e-03, ptr %12, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #9
  store double 0x3FEFD70A3D70A3D7, ptr %13, align 8, !tbaa !9
  %136 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 8
  %137 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 17
  %138 = load i32, ptr %137, align 4, !tbaa !32
  %139 = sext i32 %138 to i64
  call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %136, i64 noundef %139)
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #9
  store i32 0, ptr %14, align 4, !tbaa !33
  br label %140

140:                                              ; preds = %214, %3
  %141 = load i32, ptr %14, align 4, !tbaa !33
  %142 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 17
  %143 = load i32, ptr %142, align 4, !tbaa !32
  %144 = icmp ne i32 %141, %143
  br i1 %144, label %146, label %145

145:                                              ; preds = %140
  store i32 2, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #9
  br label %217

146:                                              ; preds = %140
  %147 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 9
  %148 = load i32, ptr %14, align 4, !tbaa !33
  %149 = sext i32 %148 to i64
  %150 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %147, i64 noundef %149) #9
  %151 = load i8, ptr %150, align 1, !tbaa !34
  %152 = icmp ne i8 %151, 0
  br i1 %152, label %153, label %205

153:                                              ; preds = %146
  %154 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 19
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %154, ptr noundef nonnull align 4 dereferenceable(4) %14)
  %155 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 6
  %156 = load i32, ptr %14, align 4, !tbaa !33
  %157 = sext i32 %156 to i64
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %155, i64 noundef %157) #9
  %159 = load double, ptr %158, align 8, !tbaa !9
  %160 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 7
  %161 = load i32, ptr %14, align 4, !tbaa !33
  %162 = sext i32 %161 to i64
  %163 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %160, i64 noundef %162) #9
  %164 = load double, ptr %163, align 8, !tbaa !9
  %165 = fmul double 2.000000e+00, %164
  %166 = fcmp olt double %159, %165
  br i1 %166, label %167, label %169

167:                                              ; preds = %153
  %168 = load i32, ptr %14, align 4, !tbaa !33
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %168)
  br label %169

169:                                              ; preds = %167, %153
  %170 = load i8, ptr %7, align 1, !tbaa !11, !range !35, !noundef !36
  %171 = trunc i8 %170 to i1
  br i1 %171, label %172, label %173

172:                                              ; preds = %169
  br label %214

173:                                              ; preds = %169
  %174 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 7
  %175 = load i32, ptr %14, align 4, !tbaa !33
  %176 = sext i32 %175 to i64
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %174, i64 noundef %176) #9
  %178 = load double, ptr %177, align 8, !tbaa !9
  %179 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 10
  %180 = load double, ptr %179, align 8, !tbaa !37
  %181 = fcmp ogt double %178, %180
  br i1 %181, label %182, label %204

182:                                              ; preds = %173
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %183 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %184 = load ptr, ptr %183, align 8, !tbaa !38
  %185 = load i32, ptr %14, align 4, !tbaa !33
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %184, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = call noundef double @_ZSt3absd(double noundef %188)
  store double %189, ptr %16, align 8, !tbaa !9
  %190 = load double, ptr %16, align 8, !tbaa !9
  %191 = fcmp ole double %190, 1.000000e-04
  br i1 %191, label %196, label %192

192:                                              ; preds = %182
  %193 = load double, ptr %16, align 8, !tbaa !9
  %194 = load double, ptr %10, align 8, !tbaa !9
  %195 = fcmp oeq double %193, %194
  br i1 %195, label %196, label %197

196:                                              ; preds = %192, %182
  store i32 4, ptr %15, align 4
  br label %201

197:                                              ; preds = %192
  %198 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %16)
  %199 = load double, ptr %198, align 8, !tbaa !9
  store double %199, ptr %10, align 8, !tbaa !9
  %200 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %200, ptr noundef nonnull align 8 dereferenceable(8) %16)
  store i32 0, ptr %15, align 4
  br label %201

201:                                              ; preds = %197, %196
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  %202 = load i32, ptr %15, align 4
  switch i32 %202, label %850 [
    i32 0, label %203
    i32 4, label %214
  ]

203:                                              ; preds = %201
  br label %204

204:                                              ; preds = %203, %173
  br label %213

205:                                              ; preds = %146
  %206 = load i32, ptr %14, align 4, !tbaa !33
  %207 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %208 = load ptr, ptr %207, align 8, !tbaa !38
  %209 = load i32, ptr %14, align 4, !tbaa !33
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds double, ptr %208, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %206, double noundef %212, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9)
  br label %213

213:                                              ; preds = %205, %204
  br label %214

214:                                              ; preds = %213, %201, %172
  %215 = load i32, ptr %14, align 4, !tbaa !33
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr %14, align 4, !tbaa !33
  br label %140, !llvm.loop !39

217:                                              ; preds = %145
  %218 = load double, ptr %9, align 8, !tbaa !9
  %219 = fcmp oeq double %218, 0.000000e+00
  br i1 %219, label %220, label %255

220:                                              ; preds = %217
  %221 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %222 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %221) #9
  %223 = icmp ugt i64 %222, 1
  br i1 %223, label %224, label %255

224:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %225 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %226 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 10
  %227 = load double, ptr %226, align 8, !tbaa !37
  %228 = call noundef double @_ZN13HighsIntegers13integralScaleERKSt6vectorIdSaIdEEdd(ptr noundef nonnull align 8 dereferenceable(24) %225, double noundef %227, double noundef 0x3D06849B86A12B9B)
  store double %228, ptr %17, align 8, !tbaa !9
  %229 = load double, ptr %17, align 8, !tbaa !9
  %230 = fcmp une double %229, 0.000000e+00
  br i1 %230, label %231, label %254

231:                                              ; preds = %224
  %232 = load double, ptr %17, align 8, !tbaa !9
  %233 = fcmp ole double %232, 1.000000e+04
  br i1 %233, label %234, label %254

234:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %235 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 14
  %236 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %235)
  %237 = load double, ptr %17, align 8, !tbaa !9
  %238 = fmul double %236, %237
  store double %238, ptr %18, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %239 = load double, ptr %18, align 8, !tbaa !9
  %240 = call noundef double @_ZL10fast_floord(double noundef %239)
  store double %240, ptr %19, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %241 = load double, ptr %18, align 8, !tbaa !9
  %242 = load double, ptr %19, align 8, !tbaa !9
  %243 = fsub double %241, %242
  store double %243, ptr %20, align 8, !tbaa !9
  %244 = load double, ptr %20, align 8, !tbaa !9
  %245 = fcmp oge double %244, 5.000000e-03
  br i1 %245, label %246, label %253

246:                                              ; preds = %234
  %247 = load double, ptr %20, align 8, !tbaa !9
  %248 = fcmp ole double %247, 0x3FEFD70A3D70A3D7
  br i1 %248, label %249, label %253

249:                                              ; preds = %246
  %250 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %251 = load double, ptr %17, align 8, !tbaa !9
  %252 = fdiv double 1.000000e+00, %251
  store double %252, ptr %21, align 8, !tbaa !9
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %250, ptr noundef nonnull align 8 dereferenceable(8) %21)
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %253

253:                                              ; preds = %249, %246, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %254

254:                                              ; preds = %253, %231, %224
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  br label %255

255:                                              ; preds = %254, %220, %217
  %256 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  store double 1.000000e+00, ptr %22, align 8, !tbaa !9
  %257 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 18
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %257)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %256, ptr noundef nonnull align 8 dereferenceable(8) %258)
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  %259 = load i8, ptr %7, align 1, !tbaa !11, !range !35, !noundef !36
  %260 = trunc i8 %259 to i1
  br i1 %260, label %268, label %261

261:                                              ; preds = %255
  %262 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %263 = load double, ptr %10, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  store double 1.000000e+00, ptr %24, align 8, !tbaa !9
  %264 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 18
  %265 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %264)
  %266 = load double, ptr %265, align 8, !tbaa !9
  %267 = fadd double %263, %266
  store double %267, ptr %23, align 8, !tbaa !9
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %262, ptr noundef nonnull align 8 dereferenceable(8) %23)
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  br label %268

268:                                              ; preds = %261, %255
  %269 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %270 = call noundef zeroext i1 @_ZNKSt6vectorIdSaIdEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %269) #9
  br i1 %270, label %271, label %272

271:                                              ; preds = %268
  store i1 false, ptr %4, align 1
  store i32 1, ptr %15, align 4
  br label %848

272:                                              ; preds = %268
  %273 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %274 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %273) #9
  %275 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %25, i32 0, i32 0
  store ptr %274, ptr %275, align 8
  %276 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %277 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %276) #9
  %278 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %26, i32 0, i32 0
  store ptr %277, ptr %278, align 8
  %279 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %25, i32 0, i32 0
  %280 = load ptr, ptr %279, align 8
  %281 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %26, i32 0, i32 0
  %282 = load ptr, ptr %281, align 8
  call void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEEvT_S7_(ptr %280, ptr %282)
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %283 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %284 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %283, i64 noundef 0) #9
  %285 = load double, ptr %284, align 8, !tbaa !9
  store double %285, ptr %27, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  store i64 1, ptr %28, align 8, !tbaa !41
  br label %286

286:                                              ; preds = %313, %272
  %287 = load i64, ptr %28, align 8, !tbaa !41
  %288 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %289 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %288) #9
  %290 = icmp ult i64 %287, %289
  br i1 %290, label %292, label %291

291:                                              ; preds = %286
  store i32 5, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %316

292:                                              ; preds = %286
  %293 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %294 = load i64, ptr %28, align 8, !tbaa !41
  %295 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %293, i64 noundef %294) #9
  %296 = load double, ptr %295, align 8, !tbaa !9
  %297 = load double, ptr %27, align 8, !tbaa !9
  %298 = fsub double %296, %297
  %299 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 10
  %300 = load double, ptr %299, align 8, !tbaa !37
  %301 = fmul double 1.000000e+01, %300
  %302 = fcmp ole double %298, %301
  br i1 %302, label %303, label %307

303:                                              ; preds = %292
  %304 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %305 = load i64, ptr %28, align 8, !tbaa !41
  %306 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %304, i64 noundef %305) #9
  store double 0.000000e+00, ptr %306, align 8, !tbaa !9
  br label %312

307:                                              ; preds = %292
  %308 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %309 = load i64, ptr %28, align 8, !tbaa !41
  %310 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %308, i64 noundef %309) #9
  %311 = load double, ptr %310, align 8, !tbaa !9
  store double %311, ptr %27, align 8, !tbaa !9
  br label %312

312:                                              ; preds = %307, %303
  br label %313

313:                                              ; preds = %312
  %314 = load i64, ptr %28, align 8, !tbaa !41
  %315 = add i64 %314, 1
  store i64 %315, ptr %28, align 8, !tbaa !41
  br label %286, !llvm.loop !42

316:                                              ; preds = %291
  %317 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %318 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %319 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %318) #9
  %320 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %31, i32 0, i32 0
  store ptr %319, ptr %320, align 8
  %321 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %322 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %321) #9
  %323 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %32, i32 0, i32 0
  store ptr %322, ptr %323, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  store double 0.000000e+00, ptr %33, align 8, !tbaa !9
  %324 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %31, i32 0, i32 0
  %325 = load ptr, ptr %324, align 8
  %326 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %32, i32 0, i32 0
  %327 = load ptr, ptr %326, align 8
  %328 = call ptr @_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdET_S7_S7_RKT0_(ptr %325, ptr %327, ptr noundef nonnull align 8 dereferenceable(8) %33)
  %329 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %30, i32 0, i32 0
  store ptr %328, ptr %329, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEC2IPdvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %330 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  %331 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %330) #9
  %332 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %35, i32 0, i32 0
  store ptr %331, ptr %332, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEC2IPdvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  %333 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.361", ptr %29, i32 0, i32 0
  %334 = load ptr, ptr %333, align 8
  %335 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.361", ptr %34, i32 0, i32 0
  %336 = load ptr, ptr %335, align 8
  %337 = call ptr @_ZNSt6vectorIdSaIdEE5eraseEN9__gnu_cxx17__normal_iteratorIPKdS1_EES6_(ptr noundef nonnull align 8 dereferenceable(24) %317, ptr %334, ptr %336)
  %338 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %36, i32 0, i32 0
  store ptr %337, ptr %338, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  store double -1.000000e+00, ptr %37, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %339 = load double, ptr %6, align 8, !tbaa !9
  store double %339, ptr %38, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %340 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 20
  store ptr %340, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  %341 = load ptr, ptr %39, align 8, !tbaa !5
  %342 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %341) #9
  %343 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %40, i32 0, i32 0
  store ptr %342, ptr %343, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %344 = load ptr, ptr %39, align 8, !tbaa !5
  %345 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %344) #9
  %346 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.360", ptr %41, i32 0, i32 0
  store ptr %345, ptr %346, align 8
  br label %347

347:                                              ; preds = %447, %316
  %348 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPdSt6vectorIdSaIdEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  br i1 %348, label %350, label %349

349:                                              ; preds = %347
  store i32 8, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %449

350:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  %352 = load double, ptr %351, align 8, !tbaa !9
  store double %352, ptr %42, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %353 = load double, ptr %42, align 8, !tbaa !9
  %354 = fdiv double 1.000000e+00, %353
  store double %354, ptr %43, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %355 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 14
  %356 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %355)
  %357 = load double, ptr %43, align 8, !tbaa !9
  %358 = fmul double %356, %357
  store double %358, ptr %44, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %359 = load double, ptr %44, align 8, !tbaa !9
  %360 = call noundef double @_ZL10fast_floord(double noundef %359)
  store double %360, ptr %45, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %361 = load double, ptr %44, align 8, !tbaa !9
  %362 = load double, ptr %45, align 8, !tbaa !9
  %363 = fsub double %361, %362
  store double %363, ptr %46, align 8, !tbaa !9
  %364 = load double, ptr %46, align 8, !tbaa !9
  %365 = fcmp olt double %364, 5.000000e-03
  br i1 %365, label %369, label %366

366:                                              ; preds = %350
  %367 = load double, ptr %46, align 8, !tbaa !9
  %368 = fcmp ogt double %367, 0x3FEFD70A3D70A3D7
  br i1 %368, label %369, label %370

369:                                              ; preds = %366, %350
  store i32 9, ptr %15, align 4
  br label %441

370:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %371 = load double, ptr %46, align 8, !tbaa !9
  %372 = fsub double 1.000000e+00, %371
  %373 = fdiv double 1.000000e+00, %372
  store double %373, ptr %47, align 8, !tbaa !9
  %374 = load double, ptr %47, align 8, !tbaa !9
  %375 = fcmp ogt double %374, 1.000000e+06
  br i1 %375, label %376, label %377

376:                                              ; preds = %370
  store i32 9, ptr %15, align 4
  br label %440

377:                                              ; preds = %370
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %378 = load double, ptr %43, align 8, !tbaa !9
  %379 = load double, ptr %43, align 8, !tbaa !9
  %380 = fmul double %378, %379
  %381 = load double, ptr %9, align 8, !tbaa !9
  %382 = fmul double %380, %381
  store double %382, ptr %48, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %383 = load double, ptr %43, align 8, !tbaa !9
  %384 = load double, ptr %8, align 8, !tbaa !9
  %385 = fmul double %383, %384
  %386 = load double, ptr %47, align 8, !tbaa !9
  %387 = load double, ptr %45, align 8, !tbaa !9
  %388 = fneg double %387
  %389 = call double @llvm.fmuladd.f64(double %385, double %386, double %388)
  store double %389, ptr %49, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %390 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 19
  store ptr %390, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #9
  %391 = load ptr, ptr %50, align 8, !tbaa !5
  %392 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %391) #9
  %393 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %51, i32 0, i32 0
  store ptr %392, ptr %393, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %394 = load ptr, ptr %50, align 8, !tbaa !5
  %395 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %394) #9
  %396 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %52, i32 0, i32 0
  store ptr %395, ptr %396, align 8
  br label %397

397:                                              ; preds = %426, %377
  %398 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br i1 %398, label %400, label %399

399:                                              ; preds = %397
  store i32 10, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %428

400:                                              ; preds = %397
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #9
  %401 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  %402 = load i32, ptr %401, align 4, !tbaa !33
  store i32 %402, ptr %53, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %403 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %404 = load ptr, ptr %403, align 8, !tbaa !38
  %405 = load i32, ptr %53, align 4, !tbaa !33
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds double, ptr %404, i64 %406
  %408 = load double, ptr %407, align 8, !tbaa !9
  %409 = load double, ptr %43, align 8, !tbaa !9
  %410 = fmul double %408, %409
  store double %410, ptr %54, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %411 = load double, ptr %54, align 8, !tbaa !9
  %412 = fadd double %411, 0x3D06849B86A12B9B
  %413 = call noundef double @_ZL10fast_floord(double noundef %412)
  store double %413, ptr %55, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %414 = load double, ptr %54, align 8, !tbaa !9
  %415 = load double, ptr %55, align 8, !tbaa !9
  %416 = fsub double %414, %415
  store double %416, ptr %56, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  %417 = load double, ptr %55, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #9
  store double 0.000000e+00, ptr %58, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #9
  %418 = load double, ptr %56, align 8, !tbaa !9
  %419 = load double, ptr %46, align 8, !tbaa !9
  %420 = fsub double %418, %419
  store double %420, ptr %59, align 8, !tbaa !9
  %421 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59)
  %422 = load double, ptr %421, align 8, !tbaa !9
  %423 = fadd double %417, %422
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  store double %423, ptr %57, align 8, !tbaa !9
  %424 = load i32, ptr %53, align 4, !tbaa !33
  %425 = load double, ptr %57, align 8, !tbaa !9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %424, double noundef %425, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %48)
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #9
  br label %426

426:                                              ; preds = %400
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  br label %397

428:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #9
  %429 = load double, ptr %49, align 8, !tbaa !9
  %430 = load double, ptr %48, align 8, !tbaa !9
  %431 = call double @sqrt(double noundef %430) #9
  %432 = fdiv double %429, %431
  store double %432, ptr %60, align 8, !tbaa !9
  %433 = load double, ptr %60, align 8, !tbaa !9
  %434 = load double, ptr %38, align 8, !tbaa !9
  %435 = fcmp ogt double %433, %434
  br i1 %435, label %436, label %439

436:                                              ; preds = %428
  %437 = load double, ptr %42, align 8, !tbaa !9
  store double %437, ptr %37, align 8, !tbaa !9
  %438 = load double, ptr %60, align 8, !tbaa !9
  store double %438, ptr %38, align 8, !tbaa !9
  br label %439

439:                                              ; preds = %436, %428
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  store i32 0, ptr %15, align 4
  br label %440

440:                                              ; preds = %439, %376
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  br label %441

441:                                              ; preds = %440, %369
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  %442 = load i32, ptr %15, align 4
  switch i32 %442, label %444 [
    i32 0, label %443
  ]

443:                                              ; preds = %441
  store i32 0, ptr %15, align 4
  br label %444

444:                                              ; preds = %443, %441
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  %445 = load i32, ptr %15, align 4
  switch i32 %445, label %850 [
    i32 0, label %446
    i32 9, label %447
  ]

446:                                              ; preds = %444
  br label %447

447:                                              ; preds = %446, %444
  %448 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  br label %347

449:                                              ; preds = %349
  %450 = load double, ptr %37, align 8, !tbaa !9
  %451 = fcmp oeq double %450, -1.000000e+00
  br i1 %451, label %452, label %453

452:                                              ; preds = %449
  store i1 false, ptr %4, align 1
  store i32 1, ptr %15, align 4
  br label %847

453:                                              ; preds = %449
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #9
  store i32 1, ptr %61, align 4, !tbaa !33
  br label %454

454:                                              ; preds = %560, %453
  %455 = load i8, ptr %7, align 1, !tbaa !11, !range !35, !noundef !36
  %456 = trunc i8 %455 to i1
  br i1 %456, label %460, label %457

457:                                              ; preds = %454
  %458 = load i32, ptr %61, align 4, !tbaa !33
  %459 = icmp sle i32 %458, 3
  br label %460

460:                                              ; preds = %457, %454
  %461 = phi i1 [ false, %454 ], [ %459, %457 ]
  br i1 %461, label %463, label %462

462:                                              ; preds = %460
  store i32 12, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #9
  br label %563

463:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #9
  %464 = load double, ptr %37, align 8, !tbaa !9
  %465 = load i32, ptr %61, align 4, !tbaa !33
  %466 = shl i32 1, %465
  %467 = sitofp i32 %466 to double
  %468 = fmul double %464, %467
  store double %468, ptr %62, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #9
  %469 = load double, ptr %62, align 8, !tbaa !9
  %470 = fdiv double 1.000000e+00, %469
  store double %470, ptr %63, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %471 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 14
  %472 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %471)
  %473 = load double, ptr %63, align 8, !tbaa !9
  %474 = fmul double %472, %473
  store double %474, ptr %64, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %475 = load double, ptr %64, align 8, !tbaa !9
  %476 = call noundef double @_ZL10fast_floord(double noundef %475)
  store double %476, ptr %65, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  %477 = load double, ptr %64, align 8, !tbaa !9
  %478 = load double, ptr %65, align 8, !tbaa !9
  %479 = fsub double %477, %478
  store double %479, ptr %66, align 8, !tbaa !9
  %480 = load double, ptr %66, align 8, !tbaa !9
  %481 = fcmp olt double %480, 5.000000e-03
  br i1 %481, label %485, label %482

482:                                              ; preds = %463
  %483 = load double, ptr %66, align 8, !tbaa !9
  %484 = fcmp ogt double %483, 0x3FEFD70A3D70A3D7
  br i1 %484, label %485, label %486

485:                                              ; preds = %482, %463
  store i32 14, ptr %15, align 4
  br label %557

486:                                              ; preds = %482
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #9
  %487 = load double, ptr %66, align 8, !tbaa !9
  %488 = fsub double 1.000000e+00, %487
  %489 = fdiv double 1.000000e+00, %488
  store double %489, ptr %67, align 8, !tbaa !9
  %490 = load double, ptr %67, align 8, !tbaa !9
  %491 = fcmp ogt double %490, 1.000000e+06
  br i1 %491, label %492, label %493

492:                                              ; preds = %486
  store i32 14, ptr %15, align 4
  br label %556

493:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %494 = load double, ptr %63, align 8, !tbaa !9
  %495 = load double, ptr %63, align 8, !tbaa !9
  %496 = fmul double %494, %495
  %497 = load double, ptr %9, align 8, !tbaa !9
  %498 = fmul double %496, %497
  store double %498, ptr %68, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %499 = load double, ptr %63, align 8, !tbaa !9
  %500 = load double, ptr %8, align 8, !tbaa !9
  %501 = fmul double %499, %500
  %502 = load double, ptr %67, align 8, !tbaa !9
  %503 = load double, ptr %65, align 8, !tbaa !9
  %504 = fneg double %503
  %505 = call double @llvm.fmuladd.f64(double %501, double %502, double %504)
  store double %505, ptr %69, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #9
  %506 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 19
  store ptr %506, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  %507 = load ptr, ptr %70, align 8, !tbaa !5
  %508 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %507) #9
  %509 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %71, i32 0, i32 0
  store ptr %508, ptr %509, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #9
  %510 = load ptr, ptr %70, align 8, !tbaa !5
  %511 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %510) #9
  %512 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %72, i32 0, i32 0
  store ptr %511, ptr %512, align 8
  br label %513

513:                                              ; preds = %542, %493
  %514 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  br i1 %514, label %516, label %515

515:                                              ; preds = %513
  store i32 15, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  br label %544

516:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #9
  %517 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  %518 = load i32, ptr %517, align 4, !tbaa !33
  store i32 %518, ptr %73, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  %519 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %520 = load ptr, ptr %519, align 8, !tbaa !38
  %521 = load i32, ptr %73, align 4, !tbaa !33
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds double, ptr %520, i64 %522
  %524 = load double, ptr %523, align 8, !tbaa !9
  %525 = load double, ptr %63, align 8, !tbaa !9
  %526 = fmul double %524, %525
  store double %526, ptr %74, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #9
  %527 = load double, ptr %74, align 8, !tbaa !9
  %528 = fadd double %527, 0x3D06849B86A12B9B
  %529 = call noundef double @_ZL10fast_floord(double noundef %528)
  store double %529, ptr %75, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #9
  %530 = load double, ptr %74, align 8, !tbaa !9
  %531 = load double, ptr %75, align 8, !tbaa !9
  %532 = fsub double %530, %531
  store double %532, ptr %76, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #9
  %533 = load double, ptr %75, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #9
  store double 0.000000e+00, ptr %78, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #9
  %534 = load double, ptr %76, align 8, !tbaa !9
  %535 = load double, ptr %66, align 8, !tbaa !9
  %536 = fsub double %534, %535
  store double %536, ptr %79, align 8, !tbaa !9
  %537 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull align 8 dereferenceable(8) %79)
  %538 = load double, ptr %537, align 8, !tbaa !9
  %539 = fadd double %533, %538
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  store double %539, ptr %77, align 8, !tbaa !9
  %540 = load i32, ptr %73, align 4, !tbaa !33
  %541 = load double, ptr %77, align 8, !tbaa !9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %540, double noundef %541, ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %68)
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #9
  br label %542

542:                                              ; preds = %516
  %543 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  br label %513

544:                                              ; preds = %515
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #9
  %545 = load double, ptr %69, align 8, !tbaa !9
  %546 = load double, ptr %68, align 8, !tbaa !9
  %547 = call double @sqrt(double noundef %546) #9
  %548 = fdiv double %545, %547
  store double %548, ptr %80, align 8, !tbaa !9
  %549 = load double, ptr %80, align 8, !tbaa !9
  %550 = load double, ptr %38, align 8, !tbaa !9
  %551 = fcmp ogt double %549, %550
  br i1 %551, label %552, label %555

552:                                              ; preds = %544
  %553 = load double, ptr %62, align 8, !tbaa !9
  store double %553, ptr %37, align 8, !tbaa !9
  %554 = load double, ptr %80, align 8, !tbaa !9
  store double %554, ptr %38, align 8, !tbaa !9
  br label %555

555:                                              ; preds = %552, %544
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  store i32 0, ptr %15, align 4
  br label %556

556:                                              ; preds = %555, %492
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %557

557:                                              ; preds = %556, %485
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #9
  %558 = load i32, ptr %15, align 4
  switch i32 %558, label %850 [
    i32 0, label %559
    i32 14, label %560
  ]

559:                                              ; preds = %557
  br label %560

560:                                              ; preds = %559, %557
  %561 = load i32, ptr %61, align 4, !tbaa !33
  %562 = add nsw i32 %561, 1
  store i32 %562, ptr %61, align 4, !tbaa !33
  br label %454, !llvm.loop !43

563:                                              ; preds = %462
  %564 = load double, ptr %37, align 8, !tbaa !9
  %565 = fcmp une double %564, -1.000000e+00
  br i1 %565, label %566, label %567

566:                                              ; preds = %563
  br label %569

567:                                              ; preds = %563
  call void @__assert_fail(ptr noundef @.str.56, ptr noundef @.str.52, i32 noundef 642, ptr noundef @__PRETTY_FUNCTION__._ZN18HighsCutGeneration26cmirCutGenerationHeuristicEdb) #10
  unreachable

568:                                              ; No predecessors!
  br label %569

569:                                              ; preds = %568, %566
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #9
  %570 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 19
  store ptr %570, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #9
  %571 = load ptr, ptr %81, align 8, !tbaa !5
  %572 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %571) #9
  %573 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %82, i32 0, i32 0
  store ptr %572, ptr %573, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #9
  %574 = load ptr, ptr %81, align 8, !tbaa !5
  %575 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %574) #9
  %576 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %83, i32 0, i32 0
  store ptr %575, ptr %576, align 8
  br label %577

577:                                              ; preds = %700, %569
  %578 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %83) #9
  br i1 %578, label %580, label %579

579:                                              ; preds = %577
  store i32 17, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  br label %702

580:                                              ; preds = %577
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #9
  %581 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #9
  %582 = load i32, ptr %581, align 4, !tbaa !33
  store i32 %582, ptr %84, align 4, !tbaa !33
  %583 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 6
  %584 = load i32, ptr %84, align 4, !tbaa !33
  %585 = sext i32 %584 to i64
  %586 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %583, i64 noundef %585) #9
  %587 = load double, ptr %586, align 8, !tbaa !9
  %588 = fcmp oeq double %587, 0x7FF0000000000000
  br i1 %588, label %589, label %590

589:                                              ; preds = %580
  store i32 18, ptr %15, align 4
  br label %697

590:                                              ; preds = %580
  %591 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 7
  %592 = load i32, ptr %84, align 4, !tbaa !33
  %593 = sext i32 %592 to i64
  %594 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %591, i64 noundef %593) #9
  %595 = load double, ptr %594, align 8, !tbaa !9
  %596 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 10
  %597 = load double, ptr %596, align 8, !tbaa !37
  %598 = fcmp ole double %595, %597
  br i1 %598, label %599, label %600

599:                                              ; preds = %590
  store i32 18, ptr %15, align 4
  br label %697

600:                                              ; preds = %590
  %601 = load i32, ptr %84, align 4, !tbaa !33
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %601)
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #9
  %602 = load double, ptr %37, align 8, !tbaa !9
  store double %602, ptr %85, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #9
  %603 = load double, ptr %85, align 8, !tbaa !9
  %604 = fdiv double 1.000000e+00, %603
  store double %604, ptr %86, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #9
  %605 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 14
  %606 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %605)
  %607 = load double, ptr %86, align 8, !tbaa !9
  %608 = fmul double %606, %607
  store double %608, ptr %87, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #9
  %609 = load double, ptr %87, align 8, !tbaa !9
  %610 = call noundef double @_ZL10fast_floord(double noundef %609)
  store double %610, ptr %88, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #9
  %611 = load double, ptr %87, align 8, !tbaa !9
  %612 = load double, ptr %88, align 8, !tbaa !9
  %613 = fsub double %611, %612
  store double %613, ptr %89, align 8, !tbaa !9
  %614 = load double, ptr %89, align 8, !tbaa !9
  %615 = fcmp olt double %614, 5.000000e-03
  br i1 %615, label %619, label %616

616:                                              ; preds = %600
  %617 = load double, ptr %89, align 8, !tbaa !9
  %618 = fcmp ogt double %617, 0x3FEFD70A3D70A3D7
  br i1 %618, label %619, label %621

619:                                              ; preds = %616, %600
  %620 = load i32, ptr %84, align 4, !tbaa !33
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %620)
  store i32 18, ptr %15, align 4
  br label %694

621:                                              ; preds = %616
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #9
  %622 = load double, ptr %89, align 8, !tbaa !9
  %623 = fsub double 1.000000e+00, %622
  %624 = fdiv double 1.000000e+00, %623
  store double %624, ptr %90, align 8, !tbaa !9
  %625 = load double, ptr %90, align 8, !tbaa !9
  %626 = fcmp ogt double %625, 1.000000e+06
  br i1 %626, label %627, label %629

627:                                              ; preds = %621
  %628 = load i32, ptr %84, align 4, !tbaa !33
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %628)
  store i32 18, ptr %15, align 4
  br label %693

629:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #9
  %630 = load double, ptr %86, align 8, !tbaa !9
  %631 = load double, ptr %86, align 8, !tbaa !9
  %632 = fmul double %630, %631
  %633 = load double, ptr %9, align 8, !tbaa !9
  %634 = fmul double %632, %633
  store double %634, ptr %91, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %635 = load double, ptr %86, align 8, !tbaa !9
  %636 = load double, ptr %8, align 8, !tbaa !9
  %637 = fmul double %635, %636
  %638 = load double, ptr %90, align 8, !tbaa !9
  %639 = load double, ptr %88, align 8, !tbaa !9
  %640 = fneg double %639
  %641 = call double @llvm.fmuladd.f64(double %637, double %638, double %640)
  store double %641, ptr %92, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #9
  %642 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 19
  store ptr %642, ptr %93, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  %643 = load ptr, ptr %93, align 8, !tbaa !5
  %644 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %643) #9
  %645 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %94, i32 0, i32 0
  store ptr %644, ptr %645, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #9
  %646 = load ptr, ptr %93, align 8, !tbaa !5
  %647 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %646) #9
  %648 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %95, i32 0, i32 0
  store ptr %647, ptr %648, align 8
  br label %649

649:                                              ; preds = %678, %629
  %650 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95) #9
  br i1 %650, label %652, label %651

651:                                              ; preds = %649
  store i32 19, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  br label %680

652:                                              ; preds = %649
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #9
  %653 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #9
  %654 = load i32, ptr %653, align 4, !tbaa !33
  store i32 %654, ptr %96, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #9
  %655 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %656 = load ptr, ptr %655, align 8, !tbaa !38
  %657 = load i32, ptr %96, align 4, !tbaa !33
  %658 = sext i32 %657 to i64
  %659 = getelementptr inbounds double, ptr %656, i64 %658
  %660 = load double, ptr %659, align 8, !tbaa !9
  %661 = load double, ptr %86, align 8, !tbaa !9
  %662 = fmul double %660, %661
  store double %662, ptr %97, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %663 = load double, ptr %97, align 8, !tbaa !9
  %664 = fadd double %663, 0x3D06849B86A12B9B
  %665 = call noundef double @_ZL10fast_floord(double noundef %664)
  store double %665, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %666 = load double, ptr %97, align 8, !tbaa !9
  %667 = load double, ptr %98, align 8, !tbaa !9
  %668 = fsub double %666, %667
  store double %668, ptr %99, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #9
  %669 = load double, ptr %98, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  store double 0.000000e+00, ptr %101, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #9
  %670 = load double, ptr %99, align 8, !tbaa !9
  %671 = load double, ptr %89, align 8, !tbaa !9
  %672 = fsub double %670, %671
  store double %672, ptr %102, align 8, !tbaa !9
  %673 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %102)
  %674 = load double, ptr %673, align 8, !tbaa !9
  %675 = fadd double %669, %674
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  store double %675, ptr %100, align 8, !tbaa !9
  %676 = load i32, ptr %96, align 4, !tbaa !33
  %677 = load double, ptr %100, align 8, !tbaa !9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %676, double noundef %677, ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %91)
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #9
  br label %678

678:                                              ; preds = %652
  %679 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #9
  br label %649

680:                                              ; preds = %651
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #9
  %681 = load double, ptr %92, align 8, !tbaa !9
  %682 = load double, ptr %91, align 8, !tbaa !9
  %683 = call double @sqrt(double noundef %682) #9
  %684 = fdiv double %681, %683
  store double %684, ptr %103, align 8, !tbaa !9
  %685 = load double, ptr %103, align 8, !tbaa !9
  %686 = load double, ptr %38, align 8, !tbaa !9
  %687 = fcmp ogt double %685, %686
  br i1 %687, label %688, label %690

688:                                              ; preds = %680
  %689 = load double, ptr %103, align 8, !tbaa !9
  store double %689, ptr %38, align 8, !tbaa !9
  br label %692

690:                                              ; preds = %680
  %691 = load i32, ptr %84, align 4, !tbaa !33
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %122, i32 noundef %691)
  br label %692

692:                                              ; preds = %690, %688
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  store i32 0, ptr %15, align 4
  br label %693

693:                                              ; preds = %692, %627
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  br label %694

694:                                              ; preds = %693, %619
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #9
  %695 = load i32, ptr %15, align 4
  switch i32 %695, label %697 [
    i32 0, label %696
  ]

696:                                              ; preds = %694
  store i32 0, ptr %15, align 4
  br label %697

697:                                              ; preds = %696, %694, %599, %589
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #9
  %698 = load i32, ptr %15, align 4
  switch i32 %698, label %850 [
    i32 0, label %699
    i32 18, label %700
  ]

699:                                              ; preds = %697
  br label %700

700:                                              ; preds = %699, %697
  %701 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #9
  br label %577

702:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 16, ptr %104) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %105) #9
  %703 = load double, ptr %37, align 8, !tbaa !9
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %105, double noundef %703)
  %704 = call { double, double } @_ZdvdRK12HighsCDouble(double noundef 1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %105)
  %705 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 0
  %706 = extractvalue { double, double } %704, 0
  store double %706, ptr %705, align 8
  %707 = getelementptr inbounds { double, double }, ptr %104, i32 0, i32 1
  %708 = extractvalue { double, double } %704, 1
  store double %708, ptr %707, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %105) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #9
  %709 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 14
  %710 = call { double, double } @_ZNK12HighsCDoublemlERKS_(ptr noundef nonnull align 8 dereferenceable(16) %709, ptr noundef nonnull align 8 dereferenceable(16) %104)
  %711 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 0
  %712 = extractvalue { double, double } %710, 0
  store double %712, ptr %711, align 8
  %713 = getelementptr inbounds { double, double }, ptr %106, i32 0, i32 1
  %714 = extractvalue { double, double } %710, 1
  store double %714, ptr %713, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #9
  %715 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
  %716 = call double @llvm.floor.f64(double %715)
  store double %716, ptr %107, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %108) #9
  %717 = load double, ptr %107, align 8, !tbaa !9
  %718 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %106, double noundef %717)
  %719 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 0
  %720 = extractvalue { double, double } %718, 0
  store double %720, ptr %719, align 8
  %721 = getelementptr inbounds { double, double }, ptr %108, i32 0, i32 1
  %722 = extractvalue { double, double } %718, 1
  store double %722, ptr %721, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %109) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %110) #9
  %723 = call { double, double } @_ZmidRK12HighsCDouble(double noundef 1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %108)
  %724 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 0
  %725 = extractvalue { double, double } %723, 0
  store double %725, ptr %724, align 8
  %726 = getelementptr inbounds { double, double }, ptr %110, i32 0, i32 1
  %727 = extractvalue { double, double } %723, 1
  store double %727, ptr %726, align 8
  %728 = call { double, double } @_ZdvdRK12HighsCDouble(double noundef 1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %110)
  %729 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 0
  %730 = extractvalue { double, double } %728, 0
  store double %730, ptr %729, align 8
  %731 = getelementptr inbounds { double, double }, ptr %109, i32 0, i32 1
  %732 = extractvalue { double, double } %728, 1
  store double %732, ptr %731, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr %110) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %111) #9
  %733 = load double, ptr %107, align 8, !tbaa !9
  %734 = load double, ptr %37, align 8, !tbaa !9
  %735 = fmul double %733, %734
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %111, double noundef %735)
  %736 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 14
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %736, ptr align 8 %111, i64 16, i1 false), !tbaa.struct !44
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #9
  %737 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 15
  store i8 1, ptr %737, align 8, !tbaa !13
  %738 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 16
  store i8 0, ptr %738, align 1, !tbaa !31
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #9
  store i32 0, ptr %112, align 4, !tbaa !33
  br label %739

739:                                              ; preds = %843, %702
  %740 = load i32, ptr %112, align 4, !tbaa !33
  %741 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 17
  %742 = load i32, ptr %741, align 4, !tbaa !32
  %743 = icmp ne i32 %740, %742
  br i1 %743, label %745, label %744

744:                                              ; preds = %739
  store i32 21, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #9
  br label %846

745:                                              ; preds = %739
  %746 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %747 = load ptr, ptr %746, align 8, !tbaa !38
  %748 = load i32, ptr %112, align 4, !tbaa !33
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds double, ptr %747, i64 %749
  %751 = load double, ptr %750, align 8, !tbaa !9
  %752 = fcmp oeq double %751, 0.000000e+00
  br i1 %752, label %753, label %754

753:                                              ; preds = %745
  br label %843

754:                                              ; preds = %745
  %755 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 9
  %756 = load i32, ptr %112, align 4, !tbaa !33
  %757 = sext i32 %756 to i64
  %758 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %755, i64 noundef %757) #9
  %759 = load i8, ptr %758, align 1, !tbaa !34
  %760 = icmp ne i8 %759, 0
  br i1 %760, label %795, label %761

761:                                              ; preds = %754
  %762 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %763 = load ptr, ptr %762, align 8, !tbaa !38
  %764 = load i32, ptr %112, align 4, !tbaa !33
  %765 = sext i32 %764 to i64
  %766 = getelementptr inbounds double, ptr %763, i64 %765
  %767 = load double, ptr %766, align 8, !tbaa !9
  %768 = fcmp ogt double %767, 0.000000e+00
  br i1 %768, label %769, label %775

769:                                              ; preds = %761
  %770 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %771 = load ptr, ptr %770, align 8, !tbaa !38
  %772 = load i32, ptr %112, align 4, !tbaa !33
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds double, ptr %771, i64 %773
  store double 0.000000e+00, ptr %774, align 8, !tbaa !9
  br label %794

775:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 16, ptr %113) #9
  %776 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %777 = load ptr, ptr %776, align 8, !tbaa !38
  %778 = load i32, ptr %112, align 4, !tbaa !33
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds double, ptr %777, i64 %779
  %781 = load double, ptr %780, align 8, !tbaa !9
  %782 = call { double, double } @_ZmldRK12HighsCDouble(double noundef %781, ptr noundef nonnull align 8 dereferenceable(16) %109)
  %783 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 0
  %784 = extractvalue { double, double } %782, 0
  store double %784, ptr %783, align 8
  %785 = getelementptr inbounds { double, double }, ptr %113, i32 0, i32 1
  %786 = extractvalue { double, double } %782, 1
  store double %786, ptr %785, align 8
  %787 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %113)
  %788 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %789 = load ptr, ptr %788, align 8, !tbaa !38
  %790 = load i32, ptr %112, align 4, !tbaa !33
  %791 = sext i32 %790 to i64
  %792 = getelementptr inbounds double, ptr %789, i64 %791
  store double %787, ptr %792, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 16, ptr %113) #9
  %793 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 15
  store i8 0, ptr %793, align 8, !tbaa !13
  br label %794

794:                                              ; preds = %775, %769
  br label %842

795:                                              ; preds = %754
  call void @llvm.lifetime.start.p0(i64 16, ptr %114) #9
  %796 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %797 = load ptr, ptr %796, align 8, !tbaa !38
  %798 = load i32, ptr %112, align 4, !tbaa !33
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !9
  %802 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %104, double noundef %801)
  %803 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 0
  %804 = extractvalue { double, double } %802, 0
  store double %804, ptr %803, align 8
  %805 = getelementptr inbounds { double, double }, ptr %114, i32 0, i32 1
  %806 = extractvalue { double, double } %802, 1
  store double %806, ptr %805, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr %116) #9
  %807 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %114, double noundef 0x3D06849B86A12B9B)
  %808 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 0
  %809 = extractvalue { double, double } %807, 0
  store double %809, ptr %808, align 8
  %810 = getelementptr inbounds { double, double }, ptr %116, i32 0, i32 1
  %811 = extractvalue { double, double } %807, 1
  store double %811, ptr %810, align 8
  %812 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %116)
  %813 = call double @llvm.floor.f64(double %812)
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #9
  store double %813, ptr %115, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 16, ptr %117) #9
  %814 = load double, ptr %115, align 8, !tbaa !9
  %815 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %114, double noundef %814)
  %816 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 0
  %817 = extractvalue { double, double } %815, 0
  store double %817, ptr %816, align 8
  %818 = getelementptr inbounds { double, double }, ptr %117, i32 0, i32 1
  %819 = extractvalue { double, double } %815, 1
  store double %819, ptr %818, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr %118) #9
  %820 = load double, ptr %115, align 8, !tbaa !9
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %118, double noundef %820)
  %821 = call noundef zeroext i1 @_ZNK12HighsCDoublegtERKS_(ptr noundef nonnull align 8 dereferenceable(16) %117, ptr noundef nonnull align 8 dereferenceable(16) %108)
  br i1 %821, label %822, label %829

822:                                              ; preds = %795
  call void @llvm.lifetime.start.p0(i64 16, ptr %119) #9
  %823 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %117, ptr noundef nonnull align 8 dereferenceable(16) %108)
  %824 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 0
  %825 = extractvalue { double, double } %823, 0
  store double %825, ptr %824, align 8
  %826 = getelementptr inbounds { double, double }, ptr %119, i32 0, i32 1
  %827 = extractvalue { double, double } %823, 1
  store double %827, ptr %826, align 8
  %828 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLERKS_(ptr noundef nonnull align 8 dereferenceable(16) %118, ptr noundef nonnull align 8 dereferenceable(16) %119)
  call void @llvm.lifetime.end.p0(i64 16, ptr %119) #9
  br label %829

829:                                              ; preds = %822, %795
  call void @llvm.lifetime.start.p0(i64 16, ptr %120) #9
  %830 = load double, ptr %37, align 8, !tbaa !9
  %831 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %118, double noundef %830)
  %832 = getelementptr inbounds { double, double }, ptr %120, i32 0, i32 0
  %833 = extractvalue { double, double } %831, 0
  store double %833, ptr %832, align 8
  %834 = getelementptr inbounds { double, double }, ptr %120, i32 0, i32 1
  %835 = extractvalue { double, double } %831, 1
  store double %835, ptr %834, align 8
  %836 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %120)
  %837 = getelementptr inbounds %class.HighsCutGeneration, ptr %122, i32 0, i32 12
  %838 = load ptr, ptr %837, align 8, !tbaa !38
  %839 = load i32, ptr %112, align 4, !tbaa !33
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %838, i64 %840
  store double %836, ptr %841, align 8, !tbaa !9
  call void @llvm.lifetime.end.p0(i64 16, ptr %120) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %118) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %117) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %114) #9
  br label %842

842:                                              ; preds = %829, %794
  br label %843

843:                                              ; preds = %842, %753
  %844 = load i32, ptr %112, align 4, !tbaa !33
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %112, align 4, !tbaa !33
  br label %739, !llvm.loop !45

846:                                              ; preds = %744
  store i1 true, ptr %4, align 1
  store i32 1, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %104) #9
  br label %847

847:                                              ; preds = %846, %452
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %848

848:                                              ; preds = %847, %271
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %8) #9
  %849 = load i1, ptr %4, align 1
  ret i1 %849

850:                                              ; preds = %697, %557, %444, %201
  unreachable
}

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef double @_ZL10fast_floord(double noundef) #1

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPdSt6vectorIdSaIdEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #5

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

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #8

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

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

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

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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 "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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{!14, !12, i64 224}
!14 = !{!"_ZTS18HighsCutGeneration", !6, i64 0, !6, i64 8, !15, i64 16, !17, i64 24, !21, i64 48, !21, i64 64, !22, i64 80, !22, i64 104, !26, i64 128, !26, i64 152, !10, i64 176, !10, i64 184, !6, i64 192, !6, i64 200, !21, i64 208, !12, i64 224, !12, i64 225, !30, i64 228, !10, i64 232, !17, i64 240, !22, 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", !10, i64 0, !10, i64 8}
!22 = !{!"_ZTSSt6vectorIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorIhSaIhEE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"int", !7, i64 0}
!31 = !{!14, !12, i64 225}
!32 = !{!14, !30, i64 228}
!33 = !{!30, !30, i64 0}
!34 = !{!7, !7, i64 0}
!35 = !{i8 0, i8 2}
!36 = !{}
!37 = !{!14, !10, i64 176}
!38 = !{!14, !6, i64 192}
!39 = distinct !{!39, !40}
!40 = !{!"llvm.loop.mustprogress"}
!41 = !{!16, !16, i64 0}
!42 = distinct !{!42, !40}
!43 = distinct !{!43, !40}
!44 = !{i64 0, i64 8, !9, i64 8, i64 8, !9}
!45 = distinct !{!45, !40}


; 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.__gnu_cxx::__normal_iterator.361" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.360" = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%class.HighsCDouble = type { double, double }

@.str.52 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [16 x i8], align 1
@__PRETTY_FUNCTION__._ZN18HighsCutGeneration26cmirCutGenerationHeuristicEdb = external hidden unnamed_addr constant [66 x i8], align 1

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

; 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 @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 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 void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16), double noundef) unnamed_addr #1 align 2

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

; 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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #4

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) local_unnamed_addr #1 align 2

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

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

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

; 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 { double, double } @_ZmidRK12HighsCDouble(double noundef, ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16), double noundef) local_unnamed_addr #1 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZN18HighsCutGeneration26cmirCutGenerationHeuristicEdb(ptr noundef nonnull align 8 dereferenceable(288) %0, double noundef %1, i1 noundef zeroext %2) local_unnamed_addr #2 align 2 {
  %4 = alloca double, align 8
  %5 = alloca double, align 8
  %6 = alloca double, align 8
  %7 = alloca i32, align 4
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca double, align 8
  %12 = alloca double, align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.361", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %15 = alloca double, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.361", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.360", align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca %class.HighsCDouble, align 8
  %41 = alloca %class.HighsCDouble, align 8
  %42 = alloca %class.HighsCDouble, align 8
  %43 = alloca %class.HighsCDouble, align 8
  %44 = alloca %class.HighsCDouble, align 8
  %45 = alloca %class.HighsCDouble, align 8
  %46 = alloca %class.HighsCDouble, align 8
  %47 = alloca %class.HighsCDouble, align 8
  %48 = alloca %class.HighsCDouble, align 8
  %49 = alloca %class.HighsCDouble, align 8
  %50 = alloca %class.HighsCDouble, align 8
  %51 = alloca %class.HighsCDouble, align 8
  %52 = alloca %class.HighsCDouble, align 8
  %53 = alloca %class.HighsCDouble, align 8
  %54 = getelementptr inbounds i8, ptr %0, i64 224
  store i8 0, ptr %54, align 8, !tbaa !5
  %55 = getelementptr inbounds i8, ptr %0, i64 225
  store i8 0, ptr %55, align 1, !tbaa !28
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9
  store double 0.000000e+00, ptr %4, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %5) #9
  store double 0.000000e+00, ptr %5, align 8, !tbaa !29
  %56 = getelementptr inbounds i8, ptr %0, i64 264
  tail call void @_ZNSt6vectorIdSaIdEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %57 = getelementptr inbounds i8, ptr %0, i64 228
  %58 = load i32, ptr %57, align 4, !tbaa !30
  %59 = add nsw i32 %58, 3
  %60 = sext i32 %59 to i64
  tail call void @_ZNSt6vectorIdSaIdEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %60)
  %61 = getelementptr inbounds i8, ptr %0, i64 240
  tail call void @_ZNSt6vectorIiSaIiEE5clearEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  %62 = load i32, ptr %57, align 4, !tbaa !30
  %63 = sext i32 %62 to i64
  tail call void @_ZNSt6vectorIiSaIiEE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %61, i64 noundef %63)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  store double 0.000000e+00, ptr %6, align 8, !tbaa !29
  %64 = getelementptr inbounds i8, ptr %0, i64 128
  %65 = load i32, ptr %57, align 4, !tbaa !30
  %66 = sext i32 %65 to i64
  tail call void @_ZNSt6vectorIhSaIhEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(24) %64, i64 noundef %66)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #9
  store i32 0, ptr %7, align 4, !tbaa !31
  %67 = load i32, ptr %57, align 4, !tbaa !30
  %.not198 = icmp eq i32 %67, 0
  br i1 %.not198, label %._crit_edge.thread, label %.lr.ph

._crit_edge.thread:                               ; preds = %3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  br label %123

.lr.ph:                                           ; preds = %3
  %68 = getelementptr inbounds i8, ptr %0, i64 152
  %69 = getelementptr inbounds i8, ptr %0, i64 80
  %70 = getelementptr inbounds i8, ptr %0, i64 104
  %71 = getelementptr inbounds i8, ptr %0, i64 176
  %72 = getelementptr inbounds i8, ptr %0, i64 192
  br label %74

._crit_edge:                                      ; preds = %119
  %.pre = load double, ptr %5, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #9
  %73 = fcmp oeq double %.pre, 0.000000e+00
  br i1 %73, label %123, label %142

74:                                               ; preds = %.lr.ph, %119
  %storemerge199 = phi i32 [ 0, %.lr.ph ], [ %121, %119 ]
  %75 = sext i32 %storemerge199 to i64
  %76 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %68, i64 noundef %75) #9
  %77 = load i8, ptr %76, align 1, !tbaa !32
  %.not195 = icmp eq i8 %77, 0
  br i1 %.not195, label %113, label %78

78:                                               ; preds = %74
  call void @_ZNSt6vectorIiSaIiEE9push_backERKi(ptr noundef nonnull align 8 dereferenceable(24) %61, ptr noundef nonnull align 4 dereferenceable(4) %7)
  %79 = load i32, ptr %7, align 4, !tbaa !31
  %80 = sext i32 %79 to i64
  %81 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %69, i64 noundef %80) #9
  %82 = load double, ptr %81, align 8, !tbaa !29
  %83 = load i32, ptr %7, align 4, !tbaa !31
  %84 = sext i32 %83 to i64
  %85 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %84) #9
  %86 = load double, ptr %85, align 8, !tbaa !29
  %87 = fmul double %86, 2.000000e+00
  %88 = fcmp olt double %82, %87
  br i1 %88, label %89, label %91

89:                                               ; preds = %78
  %90 = load i32, ptr %7, align 4, !tbaa !31
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %90)
  br label %91

91:                                               ; preds = %89, %78
  br i1 %2, label %119, label %92

92:                                               ; preds = %91
  %93 = load i32, ptr %7, align 4, !tbaa !31
  %94 = sext i32 %93 to i64
  %95 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %70, i64 noundef %94) #9
  %96 = load double, ptr %95, align 8, !tbaa !29
  %97 = load double, ptr %71, align 8, !tbaa !33
  %98 = fcmp ogt double %96, %97
  br i1 %98, label %99, label %119

99:                                               ; preds = %92
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #9
  %100 = load ptr, ptr %72, align 8, !tbaa !34
  %101 = load i32, ptr %7, align 4, !tbaa !31
  %102 = sext i32 %101 to i64
  %103 = getelementptr inbounds double, ptr %100, i64 %102
  %104 = load double, ptr %103, align 8, !tbaa !29
  %105 = call noundef double @_ZSt3absd(double noundef %104)
  store double %105, ptr %8, align 8, !tbaa !29
  %106 = fcmp ole double %105, 1.000000e-04
  %107 = load double, ptr %6, align 8
  %108 = fcmp oeq double %105, %107
  %or.cond197 = select i1 %106, i1 true, i1 %108
  br i1 %or.cond197, label %112, label %109

109:                                              ; preds = %99
  %110 = 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) %8)
  %111 = load double, ptr %110, align 8, !tbaa !29
  store double %111, ptr %6, align 8, !tbaa !29
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(8) %8)
  br label %112

112:                                              ; preds = %99, %109
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #9
  br label %119

113:                                              ; preds = %74
  %114 = load i32, ptr %7, align 4, !tbaa !31
  %115 = load ptr, ptr %72, align 8, !tbaa !34
  %116 = sext i32 %114 to i64
  %117 = getelementptr inbounds double, ptr %115, i64 %116
  %118 = load double, ptr %117, align 8, !tbaa !29
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %114, double noundef %118, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5)
  br label %119

119:                                              ; preds = %112, %113, %92, %91
  %120 = load i32, ptr %7, align 4, !tbaa !31
  %121 = add nsw i32 %120, 1
  store i32 %121, ptr %7, align 4, !tbaa !31
  %122 = load i32, ptr %57, align 4, !tbaa !30
  %.not = icmp eq i32 %121, %122
  br i1 %.not, label %._crit_edge, label %74, !llvm.loop !35

123:                                              ; preds = %._crit_edge.thread, %._crit_edge
  %124 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %125 = icmp ugt i64 %124, 1
  br i1 %125, label %126, label %142

126:                                              ; preds = %123
  %127 = getelementptr inbounds i8, ptr %0, i64 176
  %128 = load double, ptr %127, align 8, !tbaa !33
  %129 = call noundef double @_ZN13HighsIntegers13integralScaleERKSt6vectorIdSaIdEEdd(ptr noundef nonnull align 8 dereferenceable(24) %56, double noundef %128, double noundef 0x3D06849B86A12B9B)
  %130 = fcmp une double %129, 0.000000e+00
  %131 = fcmp ole double %129, 1.000000e+04
  %or.cond = and i1 %130, %131
  br i1 %or.cond, label %132, label %142

132:                                              ; preds = %126
  %133 = getelementptr inbounds i8, ptr %0, i64 208
  %134 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %133)
  %135 = fmul double %129, %134
  %136 = call noundef double @_ZL10fast_floord(double noundef %135)
  %137 = fsub double %135, %136
  %138 = fcmp oge double %137, 5.000000e-03
  %139 = fcmp ole double %137, 0x3FEFD70A3D70A3D7
  %or.cond4 = and i1 %138, %139
  br i1 %or.cond4, label %140, label %142

140:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  %141 = fdiv double 1.000000e+00, %129
  store double %141, ptr %9, align 8, !tbaa !29
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  br label %142

142:                                              ; preds = %126, %140, %132, %123, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #9
  store double 1.000000e+00, ptr %10, align 8, !tbaa !29
  %143 = getelementptr inbounds i8, ptr %0, i64 232
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %143)
  call void @_ZNSt6vectorIdSaIdEE9push_backERKd(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(8) %144)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  br i1 %2, label %150, label %145

145:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %146 = load double, ptr %6, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  store double 1.000000e+00, ptr %12, align 8, !tbaa !29
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3minIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %143)
  %148 = load double, ptr %147, align 8, !tbaa !29
  %149 = fadd double %146, %148
  store double %149, ptr %11, align 8, !tbaa !29
  call void @_ZNSt6vectorIdSaIdEE9push_backEOd(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr noundef nonnull align 8 dereferenceable(8) %11)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  br label %150

150:                                              ; preds = %145, %142
  %151 = call noundef zeroext i1 @_ZNKSt6vectorIdSaIdEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  br i1 %151, label %533, label %152

152:                                              ; preds = %150
  %153 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %154 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  call void @_Z7pdqsortIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEEvT_S7_(ptr %153, ptr %154)
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef 0) #9
  %156 = load double, ptr %155, align 8, !tbaa !29
  %157 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %158 = icmp ugt i64 %157, 1
  br i1 %158, label %.lr.ph203, label %._crit_edge204

.lr.ph203:                                        ; preds = %152
  %159 = getelementptr inbounds i8, ptr %0, i64 176
  br label %172

._crit_edge204:                                   ; preds = %183, %152
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  %160 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %161 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  store double 0.000000e+00, ptr %15, align 8, !tbaa !29
  %162 = call ptr @_ZSt6removeIN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEEdET_S7_S7_RKT0_(ptr %160, ptr %161, ptr noundef nonnull align 8 dereferenceable(8) %15)
  store ptr %162, ptr %14, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEC2IPdvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  %163 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  store ptr %163, ptr %17, align 8
  call void @_ZN9__gnu_cxx17__normal_iteratorIPKdSt6vectorIdSaIdEEEC2IPdvEERKNS0_IT_S5_EE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  %164 = load ptr, ptr %13, align 8
  %165 = load ptr, ptr %16, align 8
  %166 = call ptr @_ZNSt6vectorIdSaIdEE5eraseEN9__gnu_cxx17__normal_iteratorIPKdS1_EES6_(ptr noundef nonnull align 8 dereferenceable(24) %56, ptr %164, ptr %165)
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  %167 = call ptr @_ZNSt6vectorIdSaIdEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  store ptr %167, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  %168 = call ptr @_ZNSt6vectorIdSaIdEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  store ptr %168, ptr %19, align 8
  %169 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPdSt6vectorIdSaIdEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br i1 %169, label %.lr.ph211, label %._crit_edge212.thread

._crit_edge212.thread:                            ; preds = %._crit_edge204
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br label %533

.lr.ph211:                                        ; preds = %._crit_edge204
  %170 = getelementptr inbounds i8, ptr %0, i64 208
  %171 = getelementptr inbounds i8, ptr %0, i64 192
  br label %198

172:                                              ; preds = %.lr.ph203, %183
  %.0163201 = phi double [ %156, %.lr.ph203 ], [ %.1164, %183 ]
  %.0165200 = phi i64 [ 1, %.lr.ph203 ], [ %184, %183 ]
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %.0165200) #9
  %174 = load double, ptr %173, align 8, !tbaa !29
  %175 = fsub double %174, %.0163201
  %176 = load double, ptr %159, align 8, !tbaa !33
  %177 = fmul double %176, 1.000000e+01
  %178 = fcmp ugt double %175, %177
  %179 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %56, i64 noundef %.0165200) #9
  br i1 %178, label %181, label %180

180:                                              ; preds = %172
  store double 0.000000e+00, ptr %179, align 8, !tbaa !29
  br label %183

181:                                              ; preds = %172
  %182 = load double, ptr %179, align 8, !tbaa !29
  br label %183

183:                                              ; preds = %180, %181
  %.1164 = phi double [ %.0163201, %180 ], [ %182, %181 ]
  %184 = add nuw i64 %.0165200, 1
  %185 = call noundef i64 @_ZNKSt6vectorIdSaIdEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #9
  %186 = icmp ult i64 %184, %185
  br i1 %186, label %172, label %._crit_edge204, !llvm.loop !37

._crit_edge212:                                   ; preds = %244
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  %187 = fcmp une double %.3169, -1.000000e+00
  br i1 %187, label %.preheader, label %533

.preheader:                                       ; preds = %._crit_edge212
  br i1 %2, label %._crit_edge221, label %.lr.ph220

.lr.ph220:                                        ; preds = %.preheader
  %188 = getelementptr inbounds i8, ptr %0, i64 208
  %189 = getelementptr inbounds i8, ptr %0, i64 192
  %190 = fmul double %.3169, 2.000000e+00
  %191 = fdiv double 1.000000e+00, %190
  %192 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %188)
  %193 = fmul double %191, %192
  %194 = call noundef double @_ZL10fast_floord(double noundef %193)
  %195 = fsub double %193, %194
  %196 = fcmp olt double %195, 5.000000e-03
  %197 = fcmp ogt double %195, 0x3FEFD70A3D70A3D7
  %or.cond8 = or i1 %196, %197
  br i1 %or.cond8, label %284, label %248

198:                                              ; preds = %.lr.ph211, %244
  %.0166209 = phi double [ -1.000000e+00, %.lr.ph211 ], [ %.3169, %244 ]
  %.0170208 = phi double [ %1, %.lr.ph211 ], [ %.3173, %244 ]
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  %200 = load double, ptr %199, align 8, !tbaa !29
  %201 = fdiv double 1.000000e+00, %200
  %202 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %170)
  %203 = fmul double %202, %201
  %204 = call noundef double @_ZL10fast_floord(double noundef %203)
  %205 = fsub double %203, %204
  %206 = fcmp olt double %205, 5.000000e-03
  %207 = fcmp ogt double %205, 0x3FEFD70A3D70A3D7
  %or.cond6 = or i1 %206, %207
  br i1 %or.cond6, label %244, label %208

208:                                              ; preds = %198
  %209 = fsub double 1.000000e+00, %205
  %210 = fdiv double 1.000000e+00, %209
  %211 = fcmp ogt double %210, 1.000000e+06
  br i1 %211, label %244, label %212

212:                                              ; preds = %208
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  %213 = fmul double %201, %201
  %214 = load double, ptr %5, align 8, !tbaa !29
  %215 = fmul double %213, %214
  store double %215, ptr %20, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %216 = load double, ptr %4, align 8, !tbaa !29
  %217 = fmul double %201, %216
  %218 = fneg double %204
  %219 = call double @llvm.fmuladd.f64(double %217, double %210, double %218)
  store double %219, ptr %21, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  %220 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %220, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  %221 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %221, ptr %23, align 8
  %222 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  br i1 %222, label %.lr.ph206, label %._crit_edge207

._crit_edge207:                                   ; preds = %.lr.ph206, %212
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  %223 = load double, ptr %21, align 8, !tbaa !29
  %224 = load double, ptr %20, align 8, !tbaa !29
  %225 = call double @sqrt(double noundef %224) #9
  %226 = fdiv double %223, %225
  %227 = fcmp ogt double %226, %.0170208
  %.1171 = select i1 %227, double %226, double %.0170208
  %.1167 = select i1 %227, double %200, double %.0166209
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  br label %244

.lr.ph206:                                        ; preds = %212, %.lr.ph206
  %228 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %229 = load i32, ptr %228, align 4, !tbaa !31
  %230 = load ptr, ptr %171, align 8, !tbaa !34
  %231 = sext i32 %229 to i64
  %232 = getelementptr inbounds double, ptr %230, i64 %231
  %233 = load double, ptr %232, align 8, !tbaa !29
  %234 = fmul double %201, %233
  %235 = fadd double %234, 0x3D06849B86A12B9B
  %236 = call noundef double @_ZL10fast_floord(double noundef %235)
  %237 = fsub double %234, %236
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  store double 0.000000e+00, ptr %24, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  %238 = fsub double %237, %205
  store double %238, ptr %25, align 8, !tbaa !29
  %239 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25)
  %240 = load double, ptr %239, align 8, !tbaa !29
  %241 = fadd double %236, %240
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %229, double noundef %241, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %20)
  %242 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  %243 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  br i1 %243, label %.lr.ph206, label %._crit_edge207

244:                                              ; preds = %._crit_edge207, %208, %198
  %.3173 = phi double [ %.0170208, %198 ], [ %.1171, %._crit_edge207 ], [ %.0170208, %208 ]
  %.3169 = phi double [ %.0166209, %198 ], [ %.1167, %._crit_edge207 ], [ %.0166209, %208 ]
  %245 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPdSt6vectorIdSaIdEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #9
  %246 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPdSt6vectorIdSaIdEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  br i1 %246, label %198, label %._crit_edge212

._crit_edge221:                                   ; preds = %329, %338, %._crit_edge216.2, %.preheader
  %.4174.lcssa = phi double [ %.3173, %.preheader ], [ %.7177.1, %329 ], [ %.5175.2, %._crit_edge216.2 ], [ %.7177.1, %338 ]
  %.4.lcssa = phi double [ %.3169, %.preheader ], [ %.7.1, %329 ], [ %.5.2, %._crit_edge216.2 ], [ %.7.1, %338 ]
  %247 = fcmp une double %.4.lcssa, -1.000000e+00
  br i1 %247, label %375, label %374

248:                                              ; preds = %.lr.ph220
  %249 = fsub double 1.000000e+00, %195
  %250 = fdiv double 1.000000e+00, %249
  %251 = fcmp ogt double %250, 1.000000e+06
  br i1 %251, label %284, label %252

252:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  %253 = fmul double %191, %191
  %254 = load double, ptr %5, align 8, !tbaa !29
  %255 = fmul double %253, %254
  store double %255, ptr %26, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %256 = load double, ptr %4, align 8, !tbaa !29
  %257 = fmul double %191, %256
  %258 = fneg double %194
  %259 = call double @llvm.fmuladd.f64(double %257, double %250, double %258)
  store double %259, ptr %27, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  %260 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %260, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %261 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %261, ptr %29, align 8
  %262 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %262, label %.lr.ph215, label %._crit_edge216

._crit_edge216:                                   ; preds = %.lr.ph215, %252
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  %263 = load double, ptr %27, align 8, !tbaa !29
  %264 = load double, ptr %26, align 8, !tbaa !29
  %265 = call double @sqrt(double noundef %264) #9
  %266 = fdiv double %263, %265
  %267 = fcmp ogt double %266, %.3173
  %.5175 = select i1 %267, double %266, double %.3173
  %.5 = select i1 %267, double %190, double %.3169
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  br label %284

.lr.ph215:                                        ; preds = %252, %.lr.ph215
  %268 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %269 = load i32, ptr %268, align 4, !tbaa !31
  %270 = load ptr, ptr %189, align 8, !tbaa !34
  %271 = sext i32 %269 to i64
  %272 = getelementptr inbounds double, ptr %270, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !29
  %274 = fmul double %191, %273
  %275 = fadd double %274, 0x3D06849B86A12B9B
  %276 = call noundef double @_ZL10fast_floord(double noundef %275)
  %277 = fsub double %274, %276
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  store double 0.000000e+00, ptr %30, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  %278 = fsub double %277, %195
  store double %278, ptr %31, align 8, !tbaa !29
  %279 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31)
  %280 = load double, ptr %279, align 8, !tbaa !29
  %281 = fadd double %276, %280
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %269, double noundef %281, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
  %282 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %283 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %283, label %.lr.ph215, label %._crit_edge216

284:                                              ; preds = %._crit_edge216, %248, %.lr.ph220
  %.7177 = phi double [ %.3173, %.lr.ph220 ], [ %.5175, %._crit_edge216 ], [ %.3173, %248 ]
  %.7 = phi double [ %.3169, %.lr.ph220 ], [ %.5, %._crit_edge216 ], [ %.3169, %248 ]
  %285 = fmul double %.7, 4.000000e+00
  %286 = fdiv double 1.000000e+00, %285
  %287 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %188)
  %288 = fmul double %286, %287
  %289 = call noundef double @_ZL10fast_floord(double noundef %288)
  %290 = fsub double %288, %289
  %291 = fcmp olt double %290, 5.000000e-03
  %292 = fcmp ogt double %290, 0x3FEFD70A3D70A3D7
  %or.cond8.1 = or i1 %291, %292
  br i1 %or.cond8.1, label %329, label %293

293:                                              ; preds = %284
  %294 = fsub double 1.000000e+00, %290
  %295 = fdiv double 1.000000e+00, %294
  %296 = fcmp ogt double %295, 1.000000e+06
  br i1 %296, label %329, label %297

297:                                              ; preds = %293
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  %298 = fmul double %286, %286
  %299 = load double, ptr %5, align 8, !tbaa !29
  %300 = fmul double %298, %299
  store double %300, ptr %26, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %301 = load double, ptr %4, align 8, !tbaa !29
  %302 = fmul double %286, %301
  %303 = fneg double %289
  %304 = call double @llvm.fmuladd.f64(double %302, double %295, double %303)
  store double %304, ptr %27, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  %305 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %305, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %306 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %306, ptr %29, align 8
  %307 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %307, label %.lr.ph215.1, label %._crit_edge216.1

.lr.ph215.1:                                      ; preds = %297, %.lr.ph215.1
  %308 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %309 = load i32, ptr %308, align 4, !tbaa !31
  %310 = load ptr, ptr %189, align 8, !tbaa !34
  %311 = sext i32 %309 to i64
  %312 = getelementptr inbounds double, ptr %310, i64 %311
  %313 = load double, ptr %312, align 8, !tbaa !29
  %314 = fmul double %286, %313
  %315 = fadd double %314, 0x3D06849B86A12B9B
  %316 = call noundef double @_ZL10fast_floord(double noundef %315)
  %317 = fsub double %314, %316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  store double 0.000000e+00, ptr %30, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  %318 = fsub double %317, %290
  store double %318, ptr %31, align 8, !tbaa !29
  %319 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31)
  %320 = load double, ptr %319, align 8, !tbaa !29
  %321 = fadd double %316, %320
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %309, double noundef %321, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
  %322 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %323 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %323, label %.lr.ph215.1, label %._crit_edge216.1

._crit_edge216.1:                                 ; preds = %.lr.ph215.1, %297
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  %324 = load double, ptr %27, align 8, !tbaa !29
  %325 = load double, ptr %26, align 8, !tbaa !29
  %326 = call double @sqrt(double noundef %325) #9
  %327 = fdiv double %324, %326
  %328 = fcmp ogt double %327, %.7177
  %.5175.1 = select i1 %328, double %327, double %.7177
  %.5.1 = select i1 %328, double %285, double %.7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  br label %329

329:                                              ; preds = %._crit_edge216.1, %293, %284
  %.7177.1 = phi double [ %.7177, %284 ], [ %.5175.1, %._crit_edge216.1 ], [ %.7177, %293 ]
  %.7.1 = phi double [ %.7, %284 ], [ %.5.1, %._crit_edge216.1 ], [ %.7, %293 ]
  %330 = fmul double %.7.1, 8.000000e+00
  %331 = fdiv double 1.000000e+00, %330
  %332 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %188)
  %333 = fmul double %331, %332
  %334 = call noundef double @_ZL10fast_floord(double noundef %333)
  %335 = fsub double %333, %334
  %336 = fcmp olt double %335, 5.000000e-03
  %337 = fcmp ogt double %335, 0x3FEFD70A3D70A3D7
  %or.cond8.2 = or i1 %336, %337
  br i1 %or.cond8.2, label %._crit_edge221, label %338

338:                                              ; preds = %329
  %339 = fsub double 1.000000e+00, %335
  %340 = fdiv double 1.000000e+00, %339
  %341 = fcmp ogt double %340, 1.000000e+06
  br i1 %341, label %._crit_edge221, label %342

342:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  %343 = fmul double %331, %331
  %344 = load double, ptr %5, align 8, !tbaa !29
  %345 = fmul double %343, %344
  store double %345, ptr %26, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %346 = load double, ptr %4, align 8, !tbaa !29
  %347 = fmul double %331, %346
  %348 = fneg double %334
  %349 = call double @llvm.fmuladd.f64(double %347, double %340, double %348)
  store double %349, ptr %27, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #9
  %350 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %350, ptr %28, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %351 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %351, ptr %29, align 8
  %352 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %352, label %.lr.ph215.2, label %._crit_edge216.2

.lr.ph215.2:                                      ; preds = %342, %.lr.ph215.2
  %353 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %354 = load i32, ptr %353, align 4, !tbaa !31
  %355 = load ptr, ptr %189, align 8, !tbaa !34
  %356 = sext i32 %354 to i64
  %357 = getelementptr inbounds double, ptr %355, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !29
  %359 = fmul double %331, %358
  %360 = fadd double %359, 0x3D06849B86A12B9B
  %361 = call noundef double @_ZL10fast_floord(double noundef %360)
  %362 = fsub double %359, %361
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  store double 0.000000e+00, ptr %30, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  %363 = fsub double %362, %335
  store double %363, ptr %31, align 8, !tbaa !29
  %364 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31)
  %365 = load double, ptr %364, align 8, !tbaa !29
  %366 = fadd double %361, %365
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %354, double noundef %366, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %26)
  %367 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %28) #9
  %368 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br i1 %368, label %.lr.ph215.2, label %._crit_edge216.2

._crit_edge216.2:                                 ; preds = %.lr.ph215.2, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #9
  %369 = load double, ptr %27, align 8, !tbaa !29
  %370 = load double, ptr %26, align 8, !tbaa !29
  %371 = call double @sqrt(double noundef %370) #9
  %372 = fdiv double %369, %371
  %373 = fcmp ogt double %372, %.7177.1
  %.5175.2 = select i1 %373, double %372, double %.7177.1
  %.5.2 = select i1 %373, double %330, double %.7.1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  br label %._crit_edge221

374:                                              ; preds = %._crit_edge221
  call void @__assert_fail(ptr noundef nonnull @.str.56, ptr noundef nonnull @.str.52, i32 noundef 642, ptr noundef nonnull @__PRETTY_FUNCTION__._ZN18HighsCutGeneration26cmirCutGenerationHeuristicEdb) #10
  unreachable

375:                                              ; preds = %._crit_edge221
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  %376 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %376, ptr %32, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  %377 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %377, ptr %33, align 8
  %378 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  br i1 %378, label %.lr.ph229, label %._crit_edge230

.lr.ph229:                                        ; preds = %375
  %379 = getelementptr inbounds i8, ptr %0, i64 80
  %380 = getelementptr inbounds i8, ptr %0, i64 104
  %381 = getelementptr inbounds i8, ptr %0, i64 176
  %382 = fdiv double 1.000000e+00, %.4.lcssa
  %383 = getelementptr inbounds i8, ptr %0, i64 208
  %384 = fmul double %382, %382
  %385 = getelementptr inbounds i8, ptr %0, i64 192
  br label %419

._crit_edge230:                                   ; preds = %477, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %40) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %41) #9
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %41, double noundef %.4.lcssa)
  %386 = call { double, double } @_ZdvdRK12HighsCDouble(double noundef 1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %41)
  %387 = extractvalue { double, double } %386, 0
  store double %387, ptr %40, align 8
  %388 = getelementptr inbounds i8, ptr %40, i64 8
  %389 = extractvalue { double, double } %386, 1
  store double %389, ptr %388, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %41) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %42) #9
  %390 = getelementptr inbounds i8, ptr %0, i64 208
  %391 = call { double, double } @_ZNK12HighsCDoublemlERKS_(ptr noundef nonnull align 8 dereferenceable(16) %390, ptr noundef nonnull align 8 dereferenceable(16) %40)
  %392 = extractvalue { double, double } %391, 0
  store double %392, ptr %42, align 8
  %393 = getelementptr inbounds i8, ptr %42, i64 8
  %394 = extractvalue { double, double } %391, 1
  store double %394, ptr %393, align 8
  %395 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %42)
  %396 = call double @llvm.floor.f64(double %395)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #9
  %397 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %42, double noundef %396)
  %398 = extractvalue { double, double } %397, 0
  store double %398, ptr %43, align 8
  %399 = getelementptr inbounds i8, ptr %43, i64 8
  %400 = extractvalue { double, double } %397, 1
  store double %400, ptr %399, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #9
  %401 = call { double, double } @_ZmidRK12HighsCDouble(double noundef 1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %43)
  %402 = extractvalue { double, double } %401, 0
  store double %402, ptr %45, align 8
  %403 = getelementptr inbounds i8, ptr %45, i64 8
  %404 = extractvalue { double, double } %401, 1
  store double %404, ptr %403, align 8
  %405 = call { double, double } @_ZdvdRK12HighsCDouble(double noundef 1.000000e+00, ptr noundef nonnull align 8 dereferenceable(16) %45)
  %406 = extractvalue { double, double } %405, 0
  store double %406, ptr %44, align 8
  %407 = getelementptr inbounds i8, ptr %44, i64 8
  %408 = extractvalue { double, double } %405, 1
  store double %408, ptr %407, align 8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %46) #9
  %409 = fmul double %.4.lcssa, %396
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %46, double noundef %409)
  call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %390, ptr noundef nonnull align 8 dereferenceable(16) %46, i64 16, i1 false), !tbaa.struct !38
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %46) #9
  store i8 1, ptr %54, align 8, !tbaa !5
  store i8 0, ptr %55, align 1, !tbaa !28
  %410 = load i32, ptr %57, align 4, !tbaa !30
  %.not193231 = icmp eq i32 %410, 0
  br i1 %.not193231, label %._crit_edge235, label %.lr.ph234

.lr.ph234:                                        ; preds = %._crit_edge230
  %411 = getelementptr inbounds i8, ptr %0, i64 192
  %412 = getelementptr inbounds i8, ptr %0, i64 152
  %413 = getelementptr inbounds i8, ptr %48, i64 8
  %414 = getelementptr inbounds i8, ptr %49, i64 8
  %415 = getelementptr inbounds i8, ptr %50, i64 8
  %416 = getelementptr inbounds i8, ptr %52, i64 8
  %417 = getelementptr inbounds i8, ptr %53, i64 8
  %418 = getelementptr inbounds i8, ptr %47, i64 8
  %.pre237 = load ptr, ptr %411, align 8, !tbaa !34
  br label %480

419:                                              ; preds = %.lr.ph229, %477
  %.8227 = phi double [ %.4174.lcssa, %.lr.ph229 ], [ %.12, %477 ]
  %420 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  %421 = load i32, ptr %420, align 4, !tbaa !31
  %422 = sext i32 %421 to i64
  %423 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %379, i64 noundef %422) #9
  %424 = load double, ptr %423, align 8, !tbaa !29
  %425 = fcmp oeq double %424, 0x7FF0000000000000
  br i1 %425, label %477, label %426

426:                                              ; preds = %419
  %427 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIdSaIdEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %380, i64 noundef %422) #9
  %428 = load double, ptr %427, align 8, !tbaa !29
  %429 = load double, ptr %381, align 8, !tbaa !33
  %430 = fcmp ugt double %428, %429
  br i1 %430, label %431, label %477

431:                                              ; preds = %426
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %421)
  %432 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %383)
  %433 = fmul double %382, %432
  %434 = call noundef double @_ZL10fast_floord(double noundef %433)
  %435 = fsub double %433, %434
  %436 = fcmp olt double %435, 5.000000e-03
  %437 = fcmp ogt double %435, 0x3FEFD70A3D70A3D7
  %or.cond10 = or i1 %436, %437
  br i1 %or.cond10, label %438, label %439

438:                                              ; preds = %431
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %421)
  br label %477

439:                                              ; preds = %431
  %440 = fsub double 1.000000e+00, %435
  %441 = fdiv double 1.000000e+00, %440
  %442 = fcmp ogt double %441, 1.000000e+06
  br i1 %442, label %443, label %444

443:                                              ; preds = %439
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %421)
  br label %477

444:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #9
  %445 = load double, ptr %5, align 8, !tbaa !29
  %446 = fmul double %384, %445
  store double %446, ptr %34, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  %447 = load double, ptr %4, align 8, !tbaa !29
  %448 = fmul double %382, %447
  %449 = fneg double %434
  %450 = call double @llvm.fmuladd.f64(double %448, double %441, double %449)
  store double %450, ptr %35, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #9
  %451 = call ptr @_ZNSt6vectorIiSaIiEE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %451, ptr %36, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #9
  %452 = call ptr @_ZNSt6vectorIiSaIiEE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  store ptr %452, ptr %37, align 8
  %453 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br i1 %453, label %.lr.ph225, label %._crit_edge226

._crit_edge226:                                   ; preds = %.lr.ph225, %444
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  %454 = load double, ptr %35, align 8, !tbaa !29
  %455 = load double, ptr %34, align 8, !tbaa !29
  %456 = call double @sqrt(double noundef %455) #9
  %457 = fdiv double %454, %456
  %458 = fcmp ogt double %457, %.8227
  br i1 %458, label %476, label %475

.lr.ph225:                                        ; preds = %444, %.lr.ph225
  %459 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  %460 = load i32, ptr %459, align 4, !tbaa !31
  %461 = load ptr, ptr %385, align 8, !tbaa !34
  %462 = sext i32 %460 to i64
  %463 = getelementptr inbounds double, ptr %461, i64 %462
  %464 = load double, ptr %463, align 8, !tbaa !29
  %465 = fmul double %382, %464
  %466 = fadd double %465, 0x3D06849B86A12B9B
  %467 = call noundef double @_ZL10fast_floord(double noundef %466)
  %468 = fsub double %465, %467
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  store double 0.000000e+00, ptr %38, align 8, !tbaa !29
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #9
  %469 = fsub double %468, %435
  store double %469, ptr %39, align 8, !tbaa !29
  %470 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3maxIdERKT_S2_S2_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %39)
  %471 = load double, ptr %470, align 8, !tbaa !29
  %472 = fadd double %467, %471
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  call void @_ZNK18HighsCutGeneration22updateViolationAndNormEidRdS0_(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %460, double noundef %472, ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %34)
  %473 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  %474 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  br i1 %474, label %.lr.ph225, label %._crit_edge226

475:                                              ; preds = %._crit_edge226
  call void @_ZN18HighsCutGeneration19flipComplementationEi(ptr noundef nonnull align 8 dereferenceable(288) %0, i32 noundef %421)
  br label %476

476:                                              ; preds = %._crit_edge226, %475
  %.9 = phi double [ %.8227, %475 ], [ %457, %._crit_edge226 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  br label %477

477:                                              ; preds = %438, %476, %443, %426, %419
  %.12 = phi double [ %.8227, %419 ], [ %.8227, %426 ], [ %.8227, %438 ], [ %.8227, %443 ], [ %.9, %476 ]
  %478 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPiSt6vectorIiSaIiEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  %479 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPiSt6vectorIiSaIiEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  br i1 %479, label %419, label %._crit_edge230

._crit_edge235:                                   ; preds = %529, %._crit_edge230
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %40) #9
  br label %533

480:                                              ; preds = %.lr.ph234, %529
  %481 = phi ptr [ %.pre237, %.lr.ph234 ], [ %530, %529 ]
  %indvars.iv = phi i64 [ 0, %.lr.ph234 ], [ %indvars.iv.next, %529 ]
  %482 = getelementptr inbounds double, ptr %481, i64 %indvars.iv
  %483 = load double, ptr %482, align 8, !tbaa !29
  %484 = fcmp oeq double %483, 0.000000e+00
  br i1 %484, label %529, label %485

485:                                              ; preds = %480
  %486 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNSt6vectorIhSaIhEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %412, i64 noundef %indvars.iv) #9
  %487 = load i8, ptr %486, align 1, !tbaa !32
  %.not194 = icmp eq i8 %487, 0
  br i1 %.not194, label %488, label %501

488:                                              ; preds = %485
  %489 = load ptr, ptr %411, align 8, !tbaa !34
  %490 = getelementptr inbounds double, ptr %489, i64 %indvars.iv
  %491 = load double, ptr %490, align 8, !tbaa !29
  %492 = fcmp ogt double %491, 0.000000e+00
  br i1 %492, label %493, label %494

493:                                              ; preds = %488
  store double 0.000000e+00, ptr %490, align 8, !tbaa !29
  br label %529

494:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #9
  %495 = call { double, double } @_ZmldRK12HighsCDouble(double noundef %491, ptr noundef nonnull align 8 dereferenceable(16) %44)
  %496 = extractvalue { double, double } %495, 0
  store double %496, ptr %47, align 8
  %497 = extractvalue { double, double } %495, 1
  store double %497, ptr %418, align 8
  %498 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %47)
  %499 = load ptr, ptr %411, align 8, !tbaa !34
  %500 = getelementptr inbounds double, ptr %499, i64 %indvars.iv
  store double %498, ptr %500, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #9
  store i8 0, ptr %54, align 8, !tbaa !5
  br label %529

501:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #9
  %502 = load ptr, ptr %411, align 8, !tbaa !34
  %503 = getelementptr inbounds double, ptr %502, i64 %indvars.iv
  %504 = load double, ptr %503, align 8, !tbaa !29
  %505 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %40, double noundef %504)
  %506 = extractvalue { double, double } %505, 0
  store double %506, ptr %48, align 8
  %507 = extractvalue { double, double } %505, 1
  store double %507, ptr %413, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %49) #9
  %508 = call { double, double } @_ZNK12HighsCDoubleplEd(ptr noundef nonnull align 8 dereferenceable(16) %48, double noundef 0x3D06849B86A12B9B)
  %509 = extractvalue { double, double } %508, 0
  store double %509, ptr %49, align 8
  %510 = extractvalue { double, double } %508, 1
  store double %510, ptr %414, align 8
  %511 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %49)
  %512 = call double @llvm.floor.f64(double %511)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %49) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %50) #9
  %513 = call { double, double } @_ZNK12HighsCDoublemiEd(ptr noundef nonnull align 8 dereferenceable(16) %48, double noundef %512)
  %514 = extractvalue { double, double } %513, 0
  store double %514, ptr %50, align 8
  %515 = extractvalue { double, double } %513, 1
  store double %515, ptr %415, align 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #9
  call void @_ZN12HighsCDoubleC2Ed(ptr noundef nonnull align 8 dereferenceable(16) %51, double noundef %512)
  %516 = call noundef zeroext i1 @_ZNK12HighsCDoublegtERKS_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %43)
  br i1 %516, label %517, label %522

517:                                              ; preds = %501
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %52) #9
  %518 = call { double, double } @_ZNK12HighsCDoublemiERKS_(ptr noundef nonnull align 8 dereferenceable(16) %50, ptr noundef nonnull align 8 dereferenceable(16) %43)
  %519 = extractvalue { double, double } %518, 0
  store double %519, ptr %52, align 8
  %520 = extractvalue { double, double } %518, 1
  store double %520, ptr %416, align 8
  %521 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN12HighsCDoublepLERKS_(ptr noundef nonnull align 8 dereferenceable(16) %51, ptr noundef nonnull align 8 dereferenceable(16) %52)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %52) #9
  br label %522

522:                                              ; preds = %517, %501
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %53) #9
  %523 = call { double, double } @_ZNK12HighsCDoublemlEd(ptr noundef nonnull align 8 dereferenceable(16) %51, double noundef %.4.lcssa)
  %524 = extractvalue { double, double } %523, 0
  store double %524, ptr %53, align 8
  %525 = extractvalue { double, double } %523, 1
  store double %525, ptr %417, align 8
  %526 = call noundef double @_ZNK12HighsCDoublecvdEv(ptr noundef nonnull align 8 dereferenceable(16) %53)
  %527 = load ptr, ptr %411, align 8, !tbaa !34
  %528 = getelementptr inbounds double, ptr %527, i64 %indvars.iv
  store double %526, ptr %528, align 8, !tbaa !29
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %50) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #9
  br label %529

529:                                              ; preds = %522, %494, %493, %480
  %530 = phi ptr [ %527, %522 ], [ %499, %494 ], [ %489, %493 ], [ %481, %480 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %531 = load i32, ptr %57, align 4, !tbaa !30
  %532 = zext i32 %531 to i64
  %.not193 = icmp eq i64 %indvars.iv.next, %532
  br i1 %.not193, label %._crit_edge235, label %480, !llvm.loop !39

533:                                              ; preds = %._crit_edge212.thread, %._crit_edge235, %._crit_edge212, %150
  %.1 = phi i1 [ false, %150 ], [ false, %._crit_edge212 ], [ true, %._crit_edge235 ], [ false, %._crit_edge212.thread ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9
  ret i1 %.1
}

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef double @_ZL10fast_floord(double noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPdSt6vectorIdSaIdEEEEbRKNS_17__normal_iteratorIT_T0_EESA_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #8

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

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

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

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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #4 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = { mustprogress nofree nounwind willreturn memory(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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !26, i64 224}
!6 = !{!"_ZTS18HighsCutGeneration", !7, i64 0, !7, i64 8, !10, i64 16, !12, i64 24, !16, i64 48, !16, i64 64, !18, i64 80, !18, i64 104, !22, i64 128, !22, i64 152, !17, i64 176, !17, i64 184, !7, i64 192, !7, i64 200, !16, i64 208, !26, i64 224, !26, i64 225, !27, i64 228, !17, i64 232, !12, i64 240, !18, i64 264}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTS11HighsRandom", !11, i64 0}
!11 = !{!"long", !8, i64 0}
!12 = !{!"_ZTSSt6vectorIiSaIiEE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!16 = !{!"_ZTS12HighsCDouble", !17, i64 0, !17, i64 8}
!17 = !{!"double", !8, i64 0}
!18 = !{!"_ZTSSt6vectorIdSaIdEE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!22 = !{!"_ZTSSt6vectorIhSaIhEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!26 = !{!"bool", !8, i64 0}
!27 = !{!"int", !8, i64 0}
!28 = !{!6, !26, i64 225}
!29 = !{!17, !17, i64 0}
!30 = !{!6, !27, i64 228}
!31 = !{!27, !27, i64 0}
!32 = !{!8, !8, i64 0}
!33 = !{!6, !17, i64 176}
!34 = !{!6, !7, i64 192}
!35 = distinct !{!35, !36}
!36 = !{!"llvm.loop.mustprogress"}
!37 = distinct !{!37, !36}
!38 = !{i64 0, i64 8, !29, i64 8, i64 8, !29}
!39 = distinct !{!39, !36}


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