; LLVM IR from bohanwang/libpgo :: src/core/nonlinearOptimization (lineSearch)

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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }
%class.LineSearch = type { i32, i32, %"class.std::function", double, double, double, i32, double, i32, %"class.std::vector", i32, ptr, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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 }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [7 x i8], align 1
@__PRETTY_FUNCTION__._ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_ = external hidden unnamed_addr constant [100 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [9 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: mustprogress uwtable
declare dso_local noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136), double noundef) #1 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #1 align 2 {
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %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 double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  store ptr %6, ptr %15, align 8, !tbaa !5
  %30 = load ptr, ptr %9, align 8
  %31 = load ptr, ptr %10, align 8, !tbaa !5
  %32 = load double, ptr %31, align 8, !tbaa !9
  %33 = load ptr, ptr %11, align 8, !tbaa !5
  %34 = load double, ptr %33, align 8, !tbaa !9
  %35 = fcmp une double %32, %34
  br i1 %35, label %36, label %37

36:                                               ; preds = %7
  br label %39

37:                                               ; preds = %7
  call void @__assert_fail(ptr noundef @.str.38, ptr noundef @.str.4, i32 noundef 466, ptr noundef @__PRETTY_FUNCTION__._ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_) #8
  unreachable

38:                                               ; No predecessors!
  br label %39

39:                                               ; preds = %38, %36
  %40 = load ptr, ptr %13, align 8, !tbaa !5
  %41 = load double, ptr %40, align 8, !tbaa !9
  %42 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %41)
  %43 = zext i1 %42 to i32
  %44 = icmp eq i32 %43, 0
  br i1 %44, label %45, label %51

45:                                               ; preds = %39
  %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.39)
  %47 = load ptr, ptr %13, align 8, !tbaa !5
  %48 = load double, ptr %47, align 8, !tbaa !9
  %49 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %46, double noundef %48)
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %51

51:                                               ; preds = %45, %39
  %52 = load ptr, ptr %13, align 8, !tbaa !5
  %53 = load double, ptr %52, align 8, !tbaa !9
  %54 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %53)
  br i1 %54, label %55, label %56

55:                                               ; preds = %51
  br label %58

56:                                               ; preds = %51
  call void @__assert_fail(ptr noundef @.str.16, ptr noundef @.str.4, i32 noundef 470, ptr noundef @__PRETTY_FUNCTION__._ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_) #8
  unreachable

57:                                               ; No predecessors!
  br label %58

58:                                               ; preds = %57, %55
  %59 = load ptr, ptr %14, align 8, !tbaa !5
  %60 = load double, ptr %59, align 8, !tbaa !9
  %61 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %60)
  %62 = zext i1 %61 to i32
  %63 = icmp eq i32 %62, 0
  br i1 %63, label %64, label %70

64:                                               ; preds = %58
  %65 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.39)
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = load double, ptr %66, align 8, !tbaa !9
  %68 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %65, double noundef %67)
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %70

70:                                               ; preds = %64, %58
  %71 = load ptr, ptr %14, align 8, !tbaa !5
  %72 = load double, ptr %71, align 8, !tbaa !9
  %73 = call noundef zeroext i1 @_ZSt8isfinited(double noundef %72)
  br i1 %73, label %74, label %75

74:                                               ; preds = %70
  br label %77

75:                                               ; preds = %70
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.4, i32 noundef 473, ptr noundef @__PRETTY_FUNCTION__._ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_) #8
  unreachable

76:                                               ; No predecessors!
  br label %77

77:                                               ; preds = %76, %74
  %78 = load ptr, ptr %13, align 8, !tbaa !5
  %79 = load double, ptr %78, align 8, !tbaa !9
  %80 = load ptr, ptr %14, align 8, !tbaa !5
  %81 = load double, ptr %80, align 8, !tbaa !9
  %82 = fcmp olt double %79, %81
  br i1 %82, label %83, label %88

83:                                               ; preds = %77
  %84 = load ptr, ptr %13, align 8, !tbaa !5
  %85 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %85) #9
  %86 = load ptr, ptr %10, align 8, !tbaa !5
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %87) #9
  br label %88

88:                                               ; preds = %83, %77
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = load double, ptr %89, align 8, !tbaa !9
  %91 = load ptr, ptr %11, align 8, !tbaa !5
  %92 = load double, ptr %91, align 8, !tbaa !9
  %93 = call noundef double @_ZL14takeGoldenStepdd(double noundef %90, double noundef %92)
  %94 = load ptr, ptr %12, align 8, !tbaa !5
  store double %93, ptr %94, align 8, !tbaa !9
  %95 = load ptr, ptr %12, align 8, !tbaa !5
  %96 = load double, ptr %95, align 8, !tbaa !9
  %97 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 3
  %98 = load double, ptr %97, align 8, !tbaa !11
  %99 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 4
  %100 = load double, ptr %99, align 8, !tbaa !20
  %101 = call noundef double @_ZL5clampddd(double noundef %96, double noundef %98, double noundef %100)
  %102 = load ptr, ptr %12, align 8, !tbaa !5
  store double %101, ptr %102, align 8, !tbaa !9
  %103 = load ptr, ptr %12, align 8, !tbaa !5
  %104 = load double, ptr %103, align 8, !tbaa !9
  %105 = load ptr, ptr %11, align 8, !tbaa !5
  %106 = load double, ptr %105, align 8, !tbaa !9
  %107 = fcmp oeq double %104, %106
  br i1 %107, label %108, label %112

108:                                              ; preds = %88
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = load ptr, ptr %15, align 8, !tbaa !5
  store double %110, ptr %111, align 8, !tbaa !9
  br label %117

112:                                              ; preds = %88
  %113 = load ptr, ptr %12, align 8, !tbaa !5
  %114 = load double, ptr %113, align 8, !tbaa !9
  %115 = call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %30, double noundef %114)
  %116 = load ptr, ptr %15, align 8, !tbaa !5
  store double %115, ptr %116, align 8, !tbaa !9
  br label %117

117:                                              ; preds = %112, %108
  %118 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 8
  %119 = load i32, ptr %118, align 8, !tbaa !21
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %147

121:                                              ; preds = %117
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.40)
  %123 = load ptr, ptr %10, align 8, !tbaa !5
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %122, double noundef %124)
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef @.str.41)
  %127 = load ptr, ptr %11, align 8, !tbaa !5
  %128 = load double, ptr %127, align 8, !tbaa !9
  %129 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %126, double noundef %128)
  %130 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef @.str.42)
  %131 = load ptr, ptr %12, align 8, !tbaa !5
  %132 = load double, ptr %131, align 8, !tbaa !9
  %133 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %130, double noundef %132)
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef @.str.43)
  %135 = load ptr, ptr %13, align 8, !tbaa !5
  %136 = load double, ptr %135, align 8, !tbaa !9
  %137 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %134, double noundef %136)
  %138 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef @.str.44)
  %139 = load ptr, ptr %14, align 8, !tbaa !5
  %140 = load double, ptr %139, align 8, !tbaa !9
  %141 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %138, double noundef %140)
  %142 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef @.str.45)
  %143 = load ptr, ptr %15, align 8, !tbaa !5
  %144 = load double, ptr %143, align 8, !tbaa !9
  %145 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %142, double noundef %144)
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %145, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %147

147:                                              ; preds = %121, %117
  %148 = load ptr, ptr %12, align 8, !tbaa !5
  %149 = load double, ptr %148, align 8, !tbaa !9
  %150 = load ptr, ptr %11, align 8, !tbaa !5
  %151 = load double, ptr %150, align 8, !tbaa !9
  %152 = fcmp oeq double %149, %151
  br i1 %152, label %153, label %202

153:                                              ; preds = %147
  %154 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 8
  %155 = load i32, ptr %154, align 8, !tbaa !21
  %156 = icmp ne i32 %155, 0
  br i1 %156, label %157, label %160

157:                                              ; preds = %153
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.46)
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %160

160:                                              ; preds = %157, %153
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #9
  store i32 10, ptr %16, align 4, !tbaa !22
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #9
  store i32 0, ptr %17, align 4, !tbaa !22
  br label %161

161:                                              ; preds = %195, %160
  %162 = load i32, ptr %17, align 4, !tbaa !22
  %163 = load i32, ptr %16, align 4, !tbaa !22
  %164 = icmp slt i32 %162, %163
  br i1 %164, label %166, label %165

165:                                              ; preds = %161
  store i32 2, ptr %18, align 4
  br label %198

166:                                              ; preds = %161
  %167 = load ptr, ptr %10, align 8, !tbaa !5
  %168 = load double, ptr %167, align 8, !tbaa !9
  %169 = load ptr, ptr %12, align 8, !tbaa !5
  %170 = load double, ptr %169, align 8, !tbaa !9
  %171 = fadd double %168, %170
  %172 = fdiv double %171, 2.000000e+00
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  store double %172, ptr %173, align 8, !tbaa !9
  %174 = load ptr, ptr %11, align 8, !tbaa !5
  %175 = load double, ptr %174, align 8, !tbaa !9
  %176 = call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %30, double noundef %175)
  %177 = load ptr, ptr %14, align 8, !tbaa !5
  store double %176, ptr %177, align 8, !tbaa !9
  %178 = load ptr, ptr %14, align 8, !tbaa !5
  %179 = load double, ptr %178, align 8, !tbaa !9
  %180 = load ptr, ptr %13, align 8, !tbaa !5
  %181 = load double, ptr %180, align 8, !tbaa !9
  %182 = fcmp ole double %179, %181
  br i1 %182, label %183, label %190

183:                                              ; preds = %166
  %184 = load ptr, ptr %14, align 8, !tbaa !5
  %185 = load double, ptr %184, align 8, !tbaa !9
  %186 = load ptr, ptr %15, align 8, !tbaa !5
  %187 = load double, ptr %186, align 8, !tbaa !9
  %188 = fcmp ole double %185, %187
  br i1 %188, label %189, label %190

189:                                              ; preds = %183
  store i32 0, ptr %8, align 4
  store i32 1, ptr %18, align 4
  br label %198

190:                                              ; preds = %183, %166
  %191 = load ptr, ptr %10, align 8, !tbaa !5
  %192 = load ptr, ptr %11, align 8, !tbaa !5
  call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %191, ptr noundef nonnull align 8 dereferenceable(8) %192) #9
  %193 = load ptr, ptr %13, align 8, !tbaa !5
  %194 = load ptr, ptr %14, align 8, !tbaa !5
  call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %193, ptr noundef nonnull align 8 dereferenceable(8) %194) #9
  br label %195

195:                                              ; preds = %190
  %196 = load i32, ptr %17, align 4, !tbaa !22
  %197 = add nsw i32 %196, 1
  store i32 %197, ptr %17, align 4, !tbaa !22
  br label %161, !llvm.loop !23

198:                                              ; preds = %189, %165
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #9
  %199 = load i32, ptr %18, align 4
  switch i32 %199, label %201 [
    i32 2, label %200
  ]

200:                                              ; preds = %198
  store i32 1, ptr %8, align 4
  store i32 1, ptr %18, align 4
  br label %201

201:                                              ; preds = %200, %198
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #9
  br label %494

202:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #9
  store i32 -1, ptr %19, align 4, !tbaa !22
  br label %203

203:                                              ; preds = %490, %202
  %204 = load ptr, ptr %15, align 8, !tbaa !5
  %205 = load double, ptr %204, align 8, !tbaa !9
  %206 = load ptr, ptr %14, align 8, !tbaa !5
  %207 = load double, ptr %206, align 8, !tbaa !9
  %208 = fcmp olt double %205, %207
  br i1 %208, label %209, label %492

209:                                              ; preds = %203
  %210 = load i32, ptr %19, align 4, !tbaa !22
  %211 = add nsw i32 %210, 1
  store i32 %211, ptr %19, align 4, !tbaa !22
  %212 = load i32, ptr %19, align 4, !tbaa !22
  %213 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 1
  %214 = load i32, ptr %213, align 4, !tbaa !25
  %215 = icmp sge i32 %212, %214
  br i1 %215, label %216, label %228

216:                                              ; preds = %209
  %217 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 8
  %218 = load i32, ptr %217, align 8, !tbaa !21
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %227

220:                                              ; preds = %216
  %221 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.47)
  %222 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 1
  %223 = load i32, ptr %222, align 4, !tbaa !25
  %224 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %221, i32 noundef %223)
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef @.str.48)
  %226 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %225, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %227

227:                                              ; preds = %220, %216
  store i32 1, ptr %8, align 4
  store i32 1, ptr %18, align 4
  br label %493

228:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %229 = load ptr, ptr %11, align 8, !tbaa !5
  %230 = load double, ptr %229, align 8, !tbaa !9
  %231 = load ptr, ptr %12, align 8, !tbaa !5
  %232 = load double, ptr %231, align 8, !tbaa !9
  %233 = fsub double %230, %232
  %234 = load ptr, ptr %14, align 8, !tbaa !5
  %235 = load double, ptr %234, align 8, !tbaa !9
  %236 = load ptr, ptr %13, align 8, !tbaa !5
  %237 = load double, ptr %236, align 8, !tbaa !9
  %238 = fsub double %235, %237
  %239 = fmul double %233, %238
  store double %239, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %240 = load ptr, ptr %11, align 8, !tbaa !5
  %241 = load double, ptr %240, align 8, !tbaa !9
  %242 = load ptr, ptr %10, align 8, !tbaa !5
  %243 = load double, ptr %242, align 8, !tbaa !9
  %244 = fsub double %241, %243
  %245 = load ptr, ptr %14, align 8, !tbaa !5
  %246 = load double, ptr %245, align 8, !tbaa !9
  %247 = load ptr, ptr %15, align 8, !tbaa !5
  %248 = load double, ptr %247, align 8, !tbaa !9
  %249 = fsub double %246, %248
  %250 = fmul double %244, %249
  store double %250, ptr %21, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %251 = load ptr, ptr %11, align 8, !tbaa !5
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = load ptr, ptr %12, align 8, !tbaa !5
  %254 = load double, ptr %253, align 8, !tbaa !9
  %255 = fadd double %252, %254
  %256 = load double, ptr %20, align 8, !tbaa !9
  %257 = load ptr, ptr %11, align 8, !tbaa !5
  %258 = load double, ptr %257, align 8, !tbaa !9
  %259 = load ptr, ptr %10, align 8, !tbaa !5
  %260 = load double, ptr %259, align 8, !tbaa !9
  %261 = fadd double %258, %260
  %262 = load double, ptr %21, align 8, !tbaa !9
  %263 = fmul double %261, %262
  %264 = fneg double %263
  %265 = call double @llvm.fmuladd.f64(double %255, double %256, double %264)
  store double %265, ptr %22, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  store double 0x3BC79CA10C924223, ptr %23, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #9
  %266 = load double, ptr %20, align 8, !tbaa !9
  %267 = load double, ptr %21, align 8, !tbaa !9
  %268 = fsub double %266, %267
  %269 = fmul double 2.000000e+00, %268
  %270 = call noundef double @_ZL13clampFromZerodd(double noundef %269, double noundef 0x3BC79CA10C924223)
  store double %270, ptr %24, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %271 = load double, ptr %22, align 8, !tbaa !9
  %272 = load double, ptr %24, align 8, !tbaa !9
  %273 = fdiv double %271, %272
  store double %273, ptr %25, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  store double 1.000000e+02, ptr %26, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %274 = load ptr, ptr %11, align 8, !tbaa !5
  %275 = load double, ptr %274, align 8, !tbaa !9
  %276 = load ptr, ptr %12, align 8, !tbaa !5
  %277 = load double, ptr %276, align 8, !tbaa !9
  %278 = load ptr, ptr %11, align 8, !tbaa !5
  %279 = load double, ptr %278, align 8, !tbaa !9
  %280 = fsub double %277, %279
  %281 = call double @llvm.fmuladd.f64(double %280, double 1.000000e+02, double %275)
  store double %281, ptr %27, align 8, !tbaa !9
  %282 = load double, ptr %25, align 8, !tbaa !9
  %283 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 3
  %284 = load double, ptr %283, align 8, !tbaa !11
  %285 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 4
  %286 = load double, ptr %285, align 8, !tbaa !20
  %287 = call noundef double @_ZL5clampddd(double noundef %282, double noundef %284, double noundef %286)
  store double %287, ptr %25, align 8, !tbaa !9
  %288 = load double, ptr %27, align 8, !tbaa !9
  %289 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 3
  %290 = load double, ptr %289, align 8, !tbaa !11
  %291 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 4
  %292 = load double, ptr %291, align 8, !tbaa !20
  %293 = call noundef double @_ZL5clampddd(double noundef %288, double noundef %290, double noundef %292)
  store double %293, ptr %27, align 8, !tbaa !9
  %294 = getelementptr inbounds %class.LineSearch, ptr %30, i32 0, i32 8
  %295 = load i32, ptr %294, align 8, !tbaa !21
  %296 = icmp ne i32 %295, 0
  br i1 %296, label %297, label %332

297:                                              ; preds = %228
  %298 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef @.str.49)
  %299 = load i32, ptr %19, align 4, !tbaa !22
  %300 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %298, i32 noundef %299)
  %301 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef @.str.50)
  %302 = load ptr, ptr %10, align 8, !tbaa !5
  %303 = load double, ptr %302, align 8, !tbaa !9
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %301, double noundef %303)
  %305 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef @.str.1)
  %306 = load ptr, ptr %11, align 8, !tbaa !5
  %307 = load double, ptr %306, align 8, !tbaa !9
  %308 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %305, double noundef %307)
  %309 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef @.str.1)
  %310 = load ptr, ptr %12, align 8, !tbaa !5
  %311 = load double, ptr %310, align 8, !tbaa !9
  %312 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %309, double noundef %311)
  %313 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %312, ptr noundef @.str.1)
  %314 = load ptr, ptr %13, align 8, !tbaa !5
  %315 = load double, ptr %314, align 8, !tbaa !9
  %316 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %313, double noundef %315)
  %317 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef @.str.1)
  %318 = load ptr, ptr %14, align 8, !tbaa !5
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %317, double noundef %319)
  %321 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %320, ptr noundef @.str.1)
  %322 = load ptr, ptr %15, align 8, !tbaa !5
  %323 = load double, ptr %322, align 8, !tbaa !9
  %324 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %321, double noundef %323)
  %325 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef @.str.51)
  %326 = load double, ptr %25, align 8, !tbaa !9
  %327 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %325, double noundef %326)
  %328 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef @.str.52)
  %329 = load double, ptr %27, align 8, !tbaa !9
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %328, double noundef %329)
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %332

332:                                              ; preds = %297, %228
  %333 = load double, ptr %25, align 8, !tbaa !9
  %334 = load ptr, ptr %11, align 8, !tbaa !5
  %335 = load double, ptr %334, align 8, !tbaa !9
  %336 = load ptr, ptr %12, align 8, !tbaa !5
  %337 = load double, ptr %336, align 8, !tbaa !9
  %338 = call noundef zeroext i1 @_ZL9inBetweenddd(double noundef %333, double noundef %335, double noundef %337)
  br i1 %338, label %339, label %390

339:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %340 = load double, ptr %25, align 8, !tbaa !9
  %341 = call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %30, double noundef %340)
  store double %341, ptr %28, align 8, !tbaa !9
  %342 = load double, ptr %28, align 8, !tbaa !9
  %343 = load ptr, ptr %15, align 8, !tbaa !5
  %344 = load double, ptr %343, align 8, !tbaa !9
  %345 = fcmp ole double %342, %344
  br i1 %345, label %346, label %357

346:                                              ; preds = %339
  %347 = load ptr, ptr %11, align 8, !tbaa !5
  %348 = load double, ptr %347, align 8, !tbaa !9
  %349 = load ptr, ptr %10, align 8, !tbaa !5
  store double %348, ptr %349, align 8, !tbaa !9
  %350 = load double, ptr %25, align 8, !tbaa !9
  %351 = load ptr, ptr %11, align 8, !tbaa !5
  store double %350, ptr %351, align 8, !tbaa !9
  %352 = load ptr, ptr %14, align 8, !tbaa !5
  %353 = load double, ptr %352, align 8, !tbaa !9
  %354 = load ptr, ptr %13, align 8, !tbaa !5
  store double %353, ptr %354, align 8, !tbaa !9
  %355 = load double, ptr %28, align 8, !tbaa !9
  %356 = load ptr, ptr %14, align 8, !tbaa !5
  store double %355, ptr %356, align 8, !tbaa !9
  store i32 0, ptr %8, align 4
  store i32 1, ptr %18, align 4
  br label %389

357:                                              ; preds = %339
  %358 = load double, ptr %28, align 8, !tbaa !9
  %359 = load ptr, ptr %14, align 8, !tbaa !5
  %360 = load double, ptr %359, align 8, !tbaa !9
  %361 = fcmp ole double %358, %360
  br i1 %361, label %362, label %384

362:                                              ; preds = %357
  %363 = load ptr, ptr %11, align 8, !tbaa !5
  %364 = load double, ptr %363, align 8, !tbaa !9
  %365 = load ptr, ptr %12, align 8, !tbaa !5
  %366 = load double, ptr %365, align 8, !tbaa !9
  %367 = call noundef double @_ZL14takeGoldenStepdd(double noundef %364, double noundef %366)
  store double %367, ptr %25, align 8, !tbaa !9
  %368 = load ptr, ptr %11, align 8, !tbaa !5
  %369 = load double, ptr %368, align 8, !tbaa !9
  %370 = load ptr, ptr %10, align 8, !tbaa !5
  store double %369, ptr %370, align 8, !tbaa !9
  %371 = load ptr, ptr %12, align 8, !tbaa !5
  %372 = load double, ptr %371, align 8, !tbaa !9
  %373 = load ptr, ptr %11, align 8, !tbaa !5
  store double %372, ptr %373, align 8, !tbaa !9
  %374 = load double, ptr %25, align 8, !tbaa !9
  %375 = load ptr, ptr %12, align 8, !tbaa !5
  store double %374, ptr %375, align 8, !tbaa !9
  %376 = load ptr, ptr %14, align 8, !tbaa !5
  %377 = load double, ptr %376, align 8, !tbaa !9
  %378 = load ptr, ptr %13, align 8, !tbaa !5
  store double %377, ptr %378, align 8, !tbaa !9
  %379 = load ptr, ptr %15, align 8, !tbaa !5
  %380 = load double, ptr %379, align 8, !tbaa !9
  %381 = load ptr, ptr %14, align 8, !tbaa !5
  store double %380, ptr %381, align 8, !tbaa !9
  %382 = load double, ptr %28, align 8, !tbaa !9
  %383 = load ptr, ptr %15, align 8, !tbaa !5
  store double %382, ptr %383, align 8, !tbaa !9
  store i32 5, ptr %18, align 4
  br label %389, !llvm.loop !26

384:                                              ; preds = %357
  %385 = load double, ptr %25, align 8, !tbaa !9
  %386 = load ptr, ptr %12, align 8, !tbaa !5
  store double %385, ptr %386, align 8, !tbaa !9
  %387 = load double, ptr %28, align 8, !tbaa !9
  %388 = load ptr, ptr %15, align 8, !tbaa !5
  store double %387, ptr %388, align 8, !tbaa !9
  store i32 0, ptr %8, align 4
  store i32 1, ptr %18, align 4
  br label %389

389:                                              ; preds = %384, %362, %346
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %490

390:                                              ; preds = %332
  %391 = load double, ptr %25, align 8, !tbaa !9
  %392 = load ptr, ptr %12, align 8, !tbaa !5
  %393 = load double, ptr %392, align 8, !tbaa !9
  %394 = load double, ptr %27, align 8, !tbaa !9
  %395 = call noundef zeroext i1 @_ZL9inBetweenddd(double noundef %391, double noundef %393, double noundef %394)
  br i1 %395, label %396, label %442

396:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %397 = load double, ptr %25, align 8, !tbaa !9
  %398 = call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %30, double noundef %397)
  store double %398, ptr %29, align 8, !tbaa !9
  %399 = load double, ptr %29, align 8, !tbaa !9
  %400 = load ptr, ptr %15, align 8, !tbaa !5
  %401 = load double, ptr %400, align 8, !tbaa !9
  %402 = fcmp oge double %399, %401
  br i1 %402, label %403, label %420

403:                                              ; preds = %396
  %404 = load ptr, ptr %11, align 8, !tbaa !5
  %405 = load double, ptr %404, align 8, !tbaa !9
  %406 = load ptr, ptr %10, align 8, !tbaa !5
  store double %405, ptr %406, align 8, !tbaa !9
  %407 = load ptr, ptr %12, align 8, !tbaa !5
  %408 = load double, ptr %407, align 8, !tbaa !9
  %409 = load ptr, ptr %11, align 8, !tbaa !5
  store double %408, ptr %409, align 8, !tbaa !9
  %410 = load double, ptr %25, align 8, !tbaa !9
  %411 = load ptr, ptr %12, align 8, !tbaa !5
  store double %410, ptr %411, align 8, !tbaa !9
  %412 = load ptr, ptr %14, align 8, !tbaa !5
  %413 = load double, ptr %412, align 8, !tbaa !9
  %414 = load ptr, ptr %13, align 8, !tbaa !5
  store double %413, ptr %414, align 8, !tbaa !9
  %415 = load ptr, ptr %15, align 8, !tbaa !5
  %416 = load double, ptr %415, align 8, !tbaa !9
  %417 = load ptr, ptr %14, align 8, !tbaa !5
  store double %416, ptr %417, align 8, !tbaa !9
  %418 = load double, ptr %29, align 8, !tbaa !9
  %419 = load ptr, ptr %15, align 8, !tbaa !5
  store double %418, ptr %419, align 8, !tbaa !9
  store i32 0, ptr %8, align 4
  store i32 1, ptr %18, align 4
  br label %441

420:                                              ; preds = %396
  %421 = load ptr, ptr %12, align 8, !tbaa !5
  %422 = load double, ptr %421, align 8, !tbaa !9
  %423 = load ptr, ptr %10, align 8, !tbaa !5
  store double %422, ptr %423, align 8, !tbaa !9
  %424 = load double, ptr %25, align 8, !tbaa !9
  %425 = load ptr, ptr %11, align 8, !tbaa !5
  store double %424, ptr %425, align 8, !tbaa !9
  %426 = load ptr, ptr %15, align 8, !tbaa !5
  %427 = load double, ptr %426, align 8, !tbaa !9
  %428 = load ptr, ptr %13, align 8, !tbaa !5
  store double %427, ptr %428, align 8, !tbaa !9
  %429 = load double, ptr %29, align 8, !tbaa !9
  %430 = load ptr, ptr %14, align 8, !tbaa !5
  store double %429, ptr %430, align 8, !tbaa !9
  %431 = load ptr, ptr %10, align 8, !tbaa !5
  %432 = load double, ptr %431, align 8, !tbaa !9
  %433 = load ptr, ptr %11, align 8, !tbaa !5
  %434 = load double, ptr %433, align 8, !tbaa !9
  %435 = call noundef double @_ZL14takeGoldenStepdd(double noundef %432, double noundef %434)
  %436 = load ptr, ptr %12, align 8, !tbaa !5
  store double %435, ptr %436, align 8, !tbaa !9
  %437 = load ptr, ptr %12, align 8, !tbaa !5
  %438 = load double, ptr %437, align 8, !tbaa !9
  %439 = call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %30, double noundef %438)
  %440 = load ptr, ptr %15, align 8, !tbaa !5
  store double %439, ptr %440, align 8, !tbaa !9
  store i32 5, ptr %18, align 4
  br label %441, !llvm.loop !26

441:                                              ; preds = %420, %403
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %490

442:                                              ; preds = %390
  %443 = load double, ptr %27, align 8, !tbaa !9
  %444 = load ptr, ptr %12, align 8, !tbaa !5
  %445 = load double, ptr %444, align 8, !tbaa !9
  %446 = load double, ptr %25, align 8, !tbaa !9
  %447 = call noundef zeroext i1 @_ZL9inBetweenddd(double noundef %443, double noundef %445, double noundef %446)
  br i1 %447, label %448, label %467

448:                                              ; preds = %442
  %449 = load ptr, ptr %11, align 8, !tbaa !5
  %450 = load double, ptr %449, align 8, !tbaa !9
  %451 = load ptr, ptr %10, align 8, !tbaa !5
  store double %450, ptr %451, align 8, !tbaa !9
  %452 = load ptr, ptr %12, align 8, !tbaa !5
  %453 = load double, ptr %452, align 8, !tbaa !9
  %454 = load ptr, ptr %11, align 8, !tbaa !5
  store double %453, ptr %454, align 8, !tbaa !9
  %455 = load double, ptr %27, align 8, !tbaa !9
  %456 = load ptr, ptr %12, align 8, !tbaa !5
  store double %455, ptr %456, align 8, !tbaa !9
  %457 = load ptr, ptr %14, align 8, !tbaa !5
  %458 = load double, ptr %457, align 8, !tbaa !9
  %459 = load ptr, ptr %13, align 8, !tbaa !5
  store double %458, ptr %459, align 8, !tbaa !9
  %460 = load ptr, ptr %15, align 8, !tbaa !5
  %461 = load double, ptr %460, align 8, !tbaa !9
  %462 = load ptr, ptr %14, align 8, !tbaa !5
  store double %461, ptr %462, align 8, !tbaa !9
  %463 = load ptr, ptr %12, align 8, !tbaa !5
  %464 = load double, ptr %463, align 8, !tbaa !9
  %465 = call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %30, double noundef %464)
  %466 = load ptr, ptr %15, align 8, !tbaa !5
  store double %465, ptr %466, align 8, !tbaa !9
  store i32 5, ptr %18, align 4
  br label %490, !llvm.loop !26

467:                                              ; preds = %442
  %468 = load ptr, ptr %11, align 8, !tbaa !5
  %469 = load double, ptr %468, align 8, !tbaa !9
  %470 = load ptr, ptr %10, align 8, !tbaa !5
  store double %469, ptr %470, align 8, !tbaa !9
  %471 = load ptr, ptr %12, align 8, !tbaa !5
  %472 = load double, ptr %471, align 8, !tbaa !9
  %473 = load ptr, ptr %11, align 8, !tbaa !5
  store double %472, ptr %473, align 8, !tbaa !9
  %474 = load ptr, ptr %10, align 8, !tbaa !5
  %475 = load double, ptr %474, align 8, !tbaa !9
  %476 = load ptr, ptr %11, align 8, !tbaa !5
  %477 = load double, ptr %476, align 8, !tbaa !9
  %478 = call noundef double @_ZL14takeGoldenStepdd(double noundef %475, double noundef %477)
  %479 = load ptr, ptr %12, align 8, !tbaa !5
  store double %478, ptr %479, align 8, !tbaa !9
  %480 = load ptr, ptr %14, align 8, !tbaa !5
  %481 = load double, ptr %480, align 8, !tbaa !9
  %482 = load ptr, ptr %13, align 8, !tbaa !5
  store double %481, ptr %482, align 8, !tbaa !9
  %483 = load ptr, ptr %15, align 8, !tbaa !5
  %484 = load double, ptr %483, align 8, !tbaa !9
  %485 = load ptr, ptr %14, align 8, !tbaa !5
  store double %484, ptr %485, align 8, !tbaa !9
  %486 = load ptr, ptr %12, align 8, !tbaa !5
  %487 = load double, ptr %486, align 8, !tbaa !9
  %488 = call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %30, double noundef %487)
  %489 = load ptr, ptr %15, align 8, !tbaa !5
  store double %488, ptr %489, align 8, !tbaa !9
  store i32 5, ptr %18, align 4
  br label %490, !llvm.loop !26

490:                                              ; preds = %467, %448, %441, %389
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  %491 = load i32, ptr %18, align 4
  switch i32 %491, label %493 [
    i32 5, label %203
  ]

492:                                              ; preds = %203
  store i32 0, ptr %8, align 4
  store i32 1, ptr %18, align 4
  br label %493

493:                                              ; preds = %492, %490, %227
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #9
  br label %494

494:                                              ; preds = %493, %201
  %495 = load i32, ptr %8, align 4
  ret i32 %495
}

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinited(double noundef) #7

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef double @_ZL5clampddd(double noundef, double noundef, double noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef double @_ZL13clampFromZerodd(double noundef, double noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef double @_ZL14takeGoldenStepdd(double noundef, double noundef) #4

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9inBetweenddd(double noundef, double noundef, double noundef) #4

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { 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 #3 = { 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 #4 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { noreturn nounwind }
attributes #9 = { 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, !10, i64 40}
!12 = !{!"_ZTS10LineSearch", !13, i64 0, !13, i64 4, !14, i64 8, !10, i64 40, !10, i64 48, !10, i64 56, !13, i64 64, !10, i64 72, !13, i64 80, !16, i64 88, !13, i64 112, !6, i64 120, !6, i64 128}
!13 = !{!"int", !7, i64 0}
!14 = !{!"_ZTSSt8functionIFiPKdPdS2_EE", !15, i64 0, !6, i64 24}
!15 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!16 = !{!"_ZTSSt6vectorIdSaIdEE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!12, !10, i64 48}
!21 = !{!12, !13, i64 80}
!22 = !{!13, !13, i64 0}
!23 = distinct !{!23, !24}
!24 = !{!"llvm.loop.mustprogress"}
!25 = !{!12, !13, i64 4}
!26 = distinct !{!26, !24}


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

%"class.std::basic_ostream" = type { ptr, %"class.std::basic_ios" }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"class.std::locale" = type { ptr }

@_ZSt4cout = external global %"class.std::basic_ostream", align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [96 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [7 x i8], align 1
@__PRETTY_FUNCTION__._ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_ = external hidden unnamed_addr constant [100 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [60 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.45 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [46 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [9 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_(ptr noundef nonnull align 8 dereferenceable(136) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr nocapture noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5, ptr nocapture noundef nonnull align 8 dereferenceable(8) %6) local_unnamed_addr #0 align 2 {
  %8 = load double, ptr %1, align 8, !tbaa !5
  %9 = load double, ptr %2, align 8, !tbaa !5
  %10 = fcmp une double %8, %9
  br i1 %10, label %12, label %11

11:                                               ; preds = %7
  tail call void @__assert_fail(ptr noundef nonnull @.str.38, ptr noundef nonnull @.str.4, i32 noundef 466, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_) #7
  unreachable

12:                                               ; preds = %7
  %13 = load double, ptr %4, align 8, !tbaa !5
  %14 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %13)
  br i1 %14, label %20, label %15

15:                                               ; preds = %12
  %16 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.39)
  %17 = load double, ptr %4, align 8, !tbaa !5
  %18 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %16, double noundef %17)
  %19 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %20

20:                                               ; preds = %15, %12
  %21 = load double, ptr %4, align 8, !tbaa !5
  %22 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %21)
  br i1 %22, label %24, label %23

23:                                               ; preds = %20
  tail call void @__assert_fail(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.4, i32 noundef 470, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_) #7
  unreachable

24:                                               ; preds = %20
  %25 = load double, ptr %5, align 8, !tbaa !5
  %26 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %25)
  br i1 %26, label %32, label %27

27:                                               ; preds = %24
  %28 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.39)
  %29 = load double, ptr %5, align 8, !tbaa !5
  %30 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %28, double noundef %29)
  %31 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %32

32:                                               ; preds = %27, %24
  %33 = load double, ptr %5, align 8, !tbaa !5
  %34 = tail call noundef zeroext i1 @_ZSt8isfinited(double noundef %33)
  br i1 %34, label %36, label %35

35:                                               ; preds = %32
  tail call void @__assert_fail(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.4, i32 noundef 473, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK10LineSearch17initializeTripletERdS0_S0_S0_S0_S0_) #7
  unreachable

36:                                               ; preds = %32
  %37 = load double, ptr %4, align 8, !tbaa !5
  %38 = load double, ptr %5, align 8, !tbaa !5
  %39 = fcmp olt double %37, %38
  br i1 %39, label %40, label %41

40:                                               ; preds = %36
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  br label %41

41:                                               ; preds = %40, %36
  %42 = load double, ptr %1, align 8, !tbaa !5
  %43 = load double, ptr %2, align 8, !tbaa !5
  %44 = tail call noundef double @_ZL14takeGoldenStepdd(double noundef %42, double noundef %43)
  store double %44, ptr %3, align 8, !tbaa !5
  %45 = getelementptr inbounds i8, ptr %0, i64 40
  %46 = load double, ptr %45, align 8, !tbaa !9
  %47 = getelementptr inbounds i8, ptr %0, i64 48
  %48 = load double, ptr %47, align 8, !tbaa !19
  %49 = tail call noundef double @_ZL5clampddd(double noundef %44, double noundef %46, double noundef %48)
  store double %49, ptr %3, align 8, !tbaa !5
  %50 = load double, ptr %2, align 8, !tbaa !5
  %51 = fcmp oeq double %49, %50
  br i1 %51, label %52, label %54

52:                                               ; preds = %41
  %53 = load double, ptr %5, align 8, !tbaa !5
  br label %56

54:                                               ; preds = %41
  %55 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %49)
  br label %56

56:                                               ; preds = %54, %52
  %storemerge = phi double [ %55, %54 ], [ %53, %52 ]
  store double %storemerge, ptr %6, align 8, !tbaa !5
  %57 = getelementptr inbounds i8, ptr %0, i64 80
  %58 = load i32, ptr %57, align 8, !tbaa !20
  %.not = icmp eq i32 %58, 0
  br i1 %.not, label %79, label %59

59:                                               ; preds = %56
  %60 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.40)
  %61 = load double, ptr %1, align 8, !tbaa !5
  %62 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %60, double noundef %61)
  %63 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull @.str.41)
  %64 = load double, ptr %2, align 8, !tbaa !5
  %65 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %63, double noundef %64)
  %66 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull @.str.42)
  %67 = load double, ptr %3, align 8, !tbaa !5
  %68 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %66, double noundef %67)
  %69 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull @.str.43)
  %70 = load double, ptr %4, align 8, !tbaa !5
  %71 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %69, double noundef %70)
  %72 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull @.str.44)
  %73 = load double, ptr %5, align 8, !tbaa !5
  %74 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %72, double noundef %73)
  %75 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull @.str.45)
  %76 = load double, ptr %6, align 8, !tbaa !5
  %77 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %75, double noundef %76)
  %78 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %79

79:                                               ; preds = %59, %56
  %80 = load double, ptr %3, align 8, !tbaa !5
  %81 = load double, ptr %2, align 8, !tbaa !5
  %82 = fcmp oeq double %80, %81
  br i1 %82, label %84, label %.preheader

.preheader:                                       ; preds = %79
  %83 = getelementptr inbounds i8, ptr %0, i64 4
  %.pre = load double, ptr %6, align 8, !tbaa !5
  br label %190

84:                                               ; preds = %79
  %85 = load i32, ptr %57, align 8, !tbaa !20
  %.not200 = icmp eq i32 %85, 0
  br i1 %.not200, label %89, label %86

86:                                               ; preds = %84
  %87 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.46)
  %88 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  %.pre216 = load double, ptr %3, align 8, !tbaa !5
  br label %89

89:                                               ; preds = %86, %84
  %90 = phi double [ %.pre216, %86 ], [ %80, %84 ]
  %91 = load double, ptr %1, align 8, !tbaa !5
  %92 = fadd double %91, %90
  %93 = fmul double %92, 5.000000e-01
  store double %93, ptr %2, align 8, !tbaa !5
  %94 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %93)
  store double %94, ptr %5, align 8, !tbaa !5
  %95 = load double, ptr %4, align 8, !tbaa !5
  %96 = fcmp ugt double %94, %95
  %97 = load double, ptr %6, align 8
  %98 = fcmp ugt double %94, %97
  %or.cond = select i1 %96, i1 true, i1 %98
  br i1 %or.cond, label %99, label %.thread

99:                                               ; preds = %89
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %100 = load double, ptr %1, align 8, !tbaa !5
  %101 = load double, ptr %3, align 8, !tbaa !5
  %102 = fadd double %100, %101
  %103 = fmul double %102, 5.000000e-01
  store double %103, ptr %2, align 8, !tbaa !5
  %104 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %103)
  store double %104, ptr %5, align 8, !tbaa !5
  %105 = load double, ptr %4, align 8, !tbaa !5
  %106 = fcmp ugt double %104, %105
  %107 = load double, ptr %6, align 8
  %108 = fcmp ugt double %104, %107
  %or.cond.1 = select i1 %106, i1 true, i1 %108
  br i1 %or.cond.1, label %109, label %.thread

109:                                              ; preds = %99
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %110 = load double, ptr %1, align 8, !tbaa !5
  %111 = load double, ptr %3, align 8, !tbaa !5
  %112 = fadd double %110, %111
  %113 = fmul double %112, 5.000000e-01
  store double %113, ptr %2, align 8, !tbaa !5
  %114 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %113)
  store double %114, ptr %5, align 8, !tbaa !5
  %115 = load double, ptr %4, align 8, !tbaa !5
  %116 = fcmp ugt double %114, %115
  %117 = load double, ptr %6, align 8
  %118 = fcmp ugt double %114, %117
  %or.cond.2 = select i1 %116, i1 true, i1 %118
  br i1 %or.cond.2, label %119, label %.thread

119:                                              ; preds = %109
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %120 = load double, ptr %1, align 8, !tbaa !5
  %121 = load double, ptr %3, align 8, !tbaa !5
  %122 = fadd double %120, %121
  %123 = fmul double %122, 5.000000e-01
  store double %123, ptr %2, align 8, !tbaa !5
  %124 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %123)
  store double %124, ptr %5, align 8, !tbaa !5
  %125 = load double, ptr %4, align 8, !tbaa !5
  %126 = fcmp ugt double %124, %125
  %127 = load double, ptr %6, align 8
  %128 = fcmp ugt double %124, %127
  %or.cond.3 = select i1 %126, i1 true, i1 %128
  br i1 %or.cond.3, label %129, label %.thread

129:                                              ; preds = %119
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %130 = load double, ptr %1, align 8, !tbaa !5
  %131 = load double, ptr %3, align 8, !tbaa !5
  %132 = fadd double %130, %131
  %133 = fmul double %132, 5.000000e-01
  store double %133, ptr %2, align 8, !tbaa !5
  %134 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %133)
  store double %134, ptr %5, align 8, !tbaa !5
  %135 = load double, ptr %4, align 8, !tbaa !5
  %136 = fcmp ugt double %134, %135
  %137 = load double, ptr %6, align 8
  %138 = fcmp ugt double %134, %137
  %or.cond.4 = select i1 %136, i1 true, i1 %138
  br i1 %or.cond.4, label %139, label %.thread

139:                                              ; preds = %129
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %140 = load double, ptr %1, align 8, !tbaa !5
  %141 = load double, ptr %3, align 8, !tbaa !5
  %142 = fadd double %140, %141
  %143 = fmul double %142, 5.000000e-01
  store double %143, ptr %2, align 8, !tbaa !5
  %144 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %143)
  store double %144, ptr %5, align 8, !tbaa !5
  %145 = load double, ptr %4, align 8, !tbaa !5
  %146 = fcmp ugt double %144, %145
  %147 = load double, ptr %6, align 8
  %148 = fcmp ugt double %144, %147
  %or.cond.5 = select i1 %146, i1 true, i1 %148
  br i1 %or.cond.5, label %149, label %.thread

149:                                              ; preds = %139
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %150 = load double, ptr %1, align 8, !tbaa !5
  %151 = load double, ptr %3, align 8, !tbaa !5
  %152 = fadd double %150, %151
  %153 = fmul double %152, 5.000000e-01
  store double %153, ptr %2, align 8, !tbaa !5
  %154 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %153)
  store double %154, ptr %5, align 8, !tbaa !5
  %155 = load double, ptr %4, align 8, !tbaa !5
  %156 = fcmp ugt double %154, %155
  %157 = load double, ptr %6, align 8
  %158 = fcmp ugt double %154, %157
  %or.cond.6 = select i1 %156, i1 true, i1 %158
  br i1 %or.cond.6, label %159, label %.thread

159:                                              ; preds = %149
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %160 = load double, ptr %1, align 8, !tbaa !5
  %161 = load double, ptr %3, align 8, !tbaa !5
  %162 = fadd double %160, %161
  %163 = fmul double %162, 5.000000e-01
  store double %163, ptr %2, align 8, !tbaa !5
  %164 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %163)
  store double %164, ptr %5, align 8, !tbaa !5
  %165 = load double, ptr %4, align 8, !tbaa !5
  %166 = fcmp ugt double %164, %165
  %167 = load double, ptr %6, align 8
  %168 = fcmp ugt double %164, %167
  %or.cond.7 = select i1 %166, i1 true, i1 %168
  br i1 %or.cond.7, label %169, label %.thread

169:                                              ; preds = %159
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %170 = load double, ptr %1, align 8, !tbaa !5
  %171 = load double, ptr %3, align 8, !tbaa !5
  %172 = fadd double %170, %171
  %173 = fmul double %172, 5.000000e-01
  store double %173, ptr %2, align 8, !tbaa !5
  %174 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %173)
  store double %174, ptr %5, align 8, !tbaa !5
  %175 = load double, ptr %4, align 8, !tbaa !5
  %176 = fcmp ugt double %174, %175
  %177 = load double, ptr %6, align 8
  %178 = fcmp ugt double %174, %177
  %or.cond.8 = select i1 %176, i1 true, i1 %178
  br i1 %or.cond.8, label %179, label %.thread

179:                                              ; preds = %169
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  %180 = load double, ptr %1, align 8, !tbaa !5
  %181 = load double, ptr %3, align 8, !tbaa !5
  %182 = fadd double %180, %181
  %183 = fmul double %182, 5.000000e-01
  store double %183, ptr %2, align 8, !tbaa !5
  %184 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %183)
  store double %184, ptr %5, align 8, !tbaa !5
  %185 = load double, ptr %4, align 8, !tbaa !5
  %186 = fcmp ugt double %184, %185
  %187 = load double, ptr %6, align 8
  %188 = fcmp ugt double %184, %187
  %or.cond.9 = select i1 %186, i1 true, i1 %188
  br i1 %or.cond.9, label %189, label %.thread

189:                                              ; preds = %179
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #8
  tail call void @_ZSt4swapIdENSt9enable_ifIXsr6__and_ISt6__not_ISt15__is_tuple_likeIT_EESt21is_move_constructibleIS3_ESt18is_move_assignableIS3_EEE5valueEvE4typeERS3_SC_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %5) #8
  br label %.thread

190:                                              ; preds = %.preheader, %321
  %191 = phi double [ %.sink, %321 ], [ %.pre, %.preheader ]
  %.0187 = phi i32 [ %195, %321 ], [ -1, %.preheader ]
  %192 = load double, ptr %5, align 8, !tbaa !5
  %193 = fcmp olt double %191, %192
  br i1 %193, label %194, label %.thread

194:                                              ; preds = %190
  %195 = add nsw i32 %.0187, 1
  %196 = load i32, ptr %83, align 4, !tbaa !21
  %.not196 = icmp slt i32 %195, %196
  br i1 %.not196, label %205, label %197

197:                                              ; preds = %194
  %198 = load i32, ptr %57, align 8, !tbaa !20
  %.not199 = icmp eq i32 %198, 0
  br i1 %.not199, label %.thread, label %199

199:                                              ; preds = %197
  %200 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.47)
  %201 = load i32, ptr %83, align 4, !tbaa !21
  %202 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %200, i32 noundef %201)
  %203 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull @.str.48)
  %204 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %.thread

205:                                              ; preds = %194
  %206 = load double, ptr %2, align 8, !tbaa !5
  %207 = load double, ptr %3, align 8, !tbaa !5
  %208 = fsub double %206, %207
  %209 = load double, ptr %4, align 8, !tbaa !5
  %210 = fsub double %192, %209
  %211 = fmul double %208, %210
  %212 = load double, ptr %1, align 8, !tbaa !5
  %213 = fsub double %206, %212
  %214 = fsub double %192, %191
  %215 = fmul double %214, %213
  %216 = fadd double %206, %207
  %217 = fadd double %206, %212
  %218 = fneg double %217
  %219 = fmul double %215, %218
  %220 = tail call double @llvm.fmuladd.f64(double %216, double %211, double %219)
  %221 = fsub double %211, %215
  %222 = fmul double %221, 2.000000e+00
  %223 = tail call noundef double @_ZL13clampFromZerodd(double noundef %222, double noundef 0x3BC79CA10C924223)
  %224 = fdiv double %220, %223
  %225 = load double, ptr %2, align 8, !tbaa !5
  %226 = load double, ptr %3, align 8, !tbaa !5
  %227 = fsub double %226, %225
  %228 = tail call double @llvm.fmuladd.f64(double %227, double 1.000000e+02, double %225)
  %229 = load double, ptr %45, align 8, !tbaa !9
  %230 = load double, ptr %47, align 8, !tbaa !19
  %231 = tail call noundef double @_ZL5clampddd(double noundef %224, double noundef %229, double noundef %230)
  %232 = load double, ptr %45, align 8, !tbaa !9
  %233 = load double, ptr %47, align 8, !tbaa !19
  %234 = tail call noundef double @_ZL5clampddd(double noundef %228, double noundef %232, double noundef %233)
  %235 = load i32, ptr %57, align 8, !tbaa !20
  %.not197 = icmp eq i32 %235, 0
  br i1 %.not197, label %262, label %236

236:                                              ; preds = %205
  %237 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) @_ZSt4cout, ptr noundef nonnull @.str.49)
  %238 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %237, i32 noundef %195)
  %239 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull @.str.50)
  %240 = load double, ptr %1, align 8, !tbaa !5
  %241 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %239, double noundef %240)
  %242 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef nonnull @.str.1)
  %243 = load double, ptr %2, align 8, !tbaa !5
  %244 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %242, double noundef %243)
  %245 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull @.str.1)
  %246 = load double, ptr %3, align 8, !tbaa !5
  %247 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %245, double noundef %246)
  %248 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull @.str.1)
  %249 = load double, ptr %4, align 8, !tbaa !5
  %250 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %248, double noundef %249)
  %251 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull @.str.1)
  %252 = load double, ptr %5, align 8, !tbaa !5
  %253 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %251, double noundef %252)
  %254 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull @.str.1)
  %255 = load double, ptr %6, align 8, !tbaa !5
  %256 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %254, double noundef %255)
  %257 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull @.str.51)
  %258 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %257, double noundef %231)
  %259 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %258, ptr noundef nonnull @.str.52)
  %260 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEd(ptr noundef nonnull align 8 dereferenceable(8) %259, double noundef %234)
  %261 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %262

262:                                              ; preds = %236, %205
  %263 = load double, ptr %2, align 8, !tbaa !5
  %264 = load double, ptr %3, align 8, !tbaa !5
  %265 = tail call noundef zeroext i1 @_ZL9inBetweenddd(double noundef %231, double noundef %263, double noundef %264)
  br i1 %265, label %266, label %285

266:                                              ; preds = %262
  %267 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %231)
  %268 = load double, ptr %6, align 8, !tbaa !5
  %269 = fcmp ugt double %267, %268
  br i1 %269, label %273, label %270

270:                                              ; preds = %266
  %271 = load double, ptr %2, align 8, !tbaa !5
  store double %271, ptr %1, align 8, !tbaa !5
  store double %231, ptr %2, align 8, !tbaa !5
  %272 = load double, ptr %5, align 8, !tbaa !5
  store double %272, ptr %4, align 8, !tbaa !5
  store double %267, ptr %5, align 8, !tbaa !5
  br label %.thread

273:                                              ; preds = %266
  %274 = load double, ptr %5, align 8, !tbaa !5
  %275 = fcmp ugt double %267, %274
  br i1 %275, label %284, label %276

276:                                              ; preds = %273
  %277 = load double, ptr %2, align 8, !tbaa !5
  %278 = load double, ptr %3, align 8, !tbaa !5
  %279 = tail call noundef double @_ZL14takeGoldenStepdd(double noundef %277, double noundef %278)
  %280 = load double, ptr %2, align 8, !tbaa !5
  store double %280, ptr %1, align 8, !tbaa !5
  %281 = load double, ptr %3, align 8, !tbaa !5
  store double %281, ptr %2, align 8, !tbaa !5
  store double %279, ptr %3, align 8, !tbaa !5
  %282 = load double, ptr %5, align 8, !tbaa !5
  store double %282, ptr %4, align 8, !tbaa !5
  %283 = load double, ptr %6, align 8, !tbaa !5
  store double %283, ptr %5, align 8, !tbaa !5
  br label %321, !llvm.loop !22

284:                                              ; preds = %273
  store double %231, ptr %3, align 8, !tbaa !5
  store double %267, ptr %6, align 8, !tbaa !5
  br label %.thread

285:                                              ; preds = %262
  %286 = load double, ptr %3, align 8, !tbaa !5
  %287 = tail call noundef zeroext i1 @_ZL9inBetweenddd(double noundef %231, double noundef %286, double noundef %234)
  br i1 %287, label %288, label %304

288:                                              ; preds = %285
  %289 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %231)
  %290 = load double, ptr %6, align 8, !tbaa !5
  %291 = fcmp ult double %289, %290
  br i1 %291, label %297, label %292

292:                                              ; preds = %288
  %293 = load double, ptr %2, align 8, !tbaa !5
  store double %293, ptr %1, align 8, !tbaa !5
  %294 = load double, ptr %3, align 8, !tbaa !5
  store double %294, ptr %2, align 8, !tbaa !5
  store double %231, ptr %3, align 8, !tbaa !5
  %295 = load double, ptr %5, align 8, !tbaa !5
  store double %295, ptr %4, align 8, !tbaa !5
  %296 = load double, ptr %6, align 8, !tbaa !5
  store double %296, ptr %5, align 8, !tbaa !5
  br label %321

297:                                              ; preds = %288
  %298 = load double, ptr %3, align 8, !tbaa !5
  store double %298, ptr %1, align 8, !tbaa !5
  store double %231, ptr %2, align 8, !tbaa !5
  %299 = load double, ptr %6, align 8, !tbaa !5
  store double %299, ptr %4, align 8, !tbaa !5
  store double %289, ptr %5, align 8, !tbaa !5
  %300 = load double, ptr %1, align 8, !tbaa !5
  %301 = load double, ptr %2, align 8, !tbaa !5
  %302 = tail call noundef double @_ZL14takeGoldenStepdd(double noundef %300, double noundef %301)
  store double %302, ptr %3, align 8, !tbaa !5
  %303 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %302)
  br label %321, !llvm.loop !22

304:                                              ; preds = %285
  %305 = load double, ptr %3, align 8, !tbaa !5
  %306 = tail call noundef zeroext i1 @_ZL9inBetweenddd(double noundef %234, double noundef %305, double noundef %231)
  %307 = load double, ptr %2, align 8, !tbaa !5
  store double %307, ptr %1, align 8, !tbaa !5
  %308 = load double, ptr %3, align 8, !tbaa !5
  store double %308, ptr %2, align 8, !tbaa !5
  br i1 %306, label %309, label %314

309:                                              ; preds = %304
  store double %234, ptr %3, align 8, !tbaa !5
  %310 = load double, ptr %5, align 8, !tbaa !5
  store double %310, ptr %4, align 8, !tbaa !5
  %311 = load double, ptr %6, align 8, !tbaa !5
  store double %311, ptr %5, align 8, !tbaa !5
  %312 = load double, ptr %3, align 8, !tbaa !5
  %313 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %312)
  br label %321, !llvm.loop !22

314:                                              ; preds = %304
  %315 = load double, ptr %1, align 8, !tbaa !5
  %316 = tail call noundef double @_ZL14takeGoldenStepdd(double noundef %315, double noundef %308)
  store double %316, ptr %3, align 8, !tbaa !5
  %317 = load double, ptr %5, align 8, !tbaa !5
  store double %317, ptr %4, align 8, !tbaa !5
  %318 = load double, ptr %6, align 8, !tbaa !5
  store double %318, ptr %5, align 8, !tbaa !5
  %319 = load double, ptr %3, align 8, !tbaa !5
  %320 = tail call noundef double @_ZNK10LineSearch3f1DEd(ptr noundef nonnull align 8 dereferenceable(136) %0, double noundef %319)
  br label %321, !llvm.loop !22

321:                                              ; preds = %292, %297, %276, %314, %309
  %.sink = phi double [ %267, %276 ], [ %320, %314 ], [ %313, %309 ], [ %303, %297 ], [ %289, %292 ]
  %cond = phi i1 [ true, %276 ], [ true, %314 ], [ true, %309 ], [ true, %297 ], [ false, %292 ]
  store double %.sink, ptr %6, align 8, !tbaa !5
  br i1 %cond, label %190, label %.thread

.thread:                                          ; preds = %321, %190, %89, %99, %109, %119, %129, %139, %149, %159, %169, %179, %189, %284, %270, %199, %197
  %.7 = phi i32 [ 1, %199 ], [ 1, %197 ], [ 0, %270 ], [ 0, %284 ], [ 0, %89 ], [ 0, %99 ], [ 0, %109 ], [ 0, %119 ], [ 0, %129 ], [ 0, %139 ], [ 0, %149 ], [ 0, %159 ], [ 0, %169 ], [ 0, %179 ], [ 1, %189 ], [ 0, %190 ], [ 0, %321 ]
  ret i32 %.7
}

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #5

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSt8isfinited(double noundef) local_unnamed_addr #6

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef double @_ZL5clampddd(double noundef, double noundef, double noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef double @_ZL13clampFromZerodd(double noundef, double noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef double @_ZL14takeGoldenStepdd(double noundef, double noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef zeroext i1 @_ZL9inBetweenddd(double noundef, double noundef, double noundef) local_unnamed_addr #3

attributes #0 = { 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 #1 = { 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 #2 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { "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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { noreturn nounwind }
attributes #8 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 40}
!10 = !{!"_ZTS10LineSearch", !11, i64 0, !11, i64 4, !12, i64 8, !6, i64 40, !6, i64 48, !6, i64 56, !11, i64 64, !6, i64 72, !11, i64 80, !15, i64 88, !11, i64 112, !14, i64 120, !14, i64 128}
!11 = !{!"int", !7, i64 0}
!12 = !{!"_ZTSSt8functionIFiPKdPdS2_EE", !13, i64 0, !14, i64 24}
!13 = !{!"_ZTSSt14_Function_base", !7, i64 0, !14, i64 16}
!14 = !{!"any pointer", !7, i64 0}
!15 = !{!"_ZTSSt6vectorIdSaIdEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !14, i64 0, !14, i64 8, !14, i64 16}
!19 = !{!10, !6, i64 48}
!20 = !{!10, !11, i64 80}
!21 = !{!10, !11, i64 4}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.mustprogress"}


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