; LLVM IR from romerojosh/zefr :: src/funcs.ll (Z14compute_U_trueddddjPK11InputStruct)

; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"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 }
%struct.InputStruct = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string", i8, i8, i8, i8, i8, i8, i8, i8, %"class.std::vector", %"class.std::vector", i32, i32, double, double, double, double, double, double, double, double, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, %class.mdvector, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, double, double, double, double, double, double, double, i32, i32, double, double, i32, double, double, double, double, double, double, double, double, i16, i16, i16, i16, i32, i32, i32, %"class.std::__cxx11::basic_string", i8, i8, i8, i8, i32, i32, i8, i8, i8, i8, i32, i32, i32, i32, %"class.std::vector.11", %"class.std::vector.16", double, double, double, double, double, double, [3 x double], double, [3 x double], [3 x double], [3 x double], [3 x double], double, [3 x double], [3 x double], double, [9 x double], %"class.std::map.21", i8, i8, i8, i8, i8, i8, i8, i8, double, double, double, double, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8, double, double, %class.Timer }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.mdvector = type <{ i32, [4 x i8], i64, i64, %"struct.std::array", %"struct.std::array", %"class.std::vector.6", ptr, i8, [7 x i8] }>
%"struct.std::array" = type { [6 x i32] }
%"class.std::vector.6" = type { %"struct.std::_Vector_base.7" }
%"struct.std::_Vector_base.7" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl" = type { %"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" }
%"struct.std::_Vector_base<double, std::allocator<double>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.11" = type { %"struct.std::_Vector_base.12" }
%"struct.std::_Vector_base.12" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.16" = type { %"struct.std::_Vector_base.17" }
%"struct.std::_Vector_base.17" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl" = type { %"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<int, std::allocator<int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.21" = type { %"class.std::_Rb_tree.22" }
%"class.std::_Rb_tree.22" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, std::__cxx11::basic_string<char>>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.Timer = type { %"class.std::chrono::time_point", %"class.std::chrono::time_point", double, %"class.std::__cxx11::basic_string" }
%"class.std::chrono::time_point" = type { %"class.std::chrono::duration" }
%"class.std::chrono::duration" = type { i64 }

@.str = external hidden unnamed_addr constant [63 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.15 = external hidden unnamed_addr constant [20 x i8], align 1
@__func__._Z14compute_U_trueddddjPK11InputStruct = external hidden unnamed_addr constant [15 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [64 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: nounwind
declare double @sin(double noundef) #1

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

; Function Attrs: nounwind
declare double @pow(double noundef, double noundef) #1

; Function Attrs: nounwind
declare double @exp(double noundef) #1

; 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
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #3 align 2

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

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_allocate_exception(i64)

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) #3 align 2

declare void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #1

declare void @__cxa_throw(ptr, ptr, ptr)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

declare void @__cxa_free_exception(ptr)

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105), i32 noundef) #6 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_Z14compute_U_trueddddjPK11InputStruct(double noundef %0, double noundef %1, double noundef %2, double noundef %3, i32 noundef %4, ptr noundef %5) #3 personality ptr @__gxx_personality_v0 {
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca double, align 8
  %10 = alloca double, align 8
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca double, align 8
  %14 = alloca double, align 8
  %15 = alloca double, align 8
  %16 = alloca double, align 8
  %17 = alloca double, align 8
  %18 = alloca double, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %36 = alloca ptr, align 8
  %37 = alloca i32, align 4
  %38 = alloca %"class.std::__cxx11::basic_string", align 8
  %39 = alloca i1, align 1
  %40 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %41 = alloca %"class.std::__cxx11::basic_string", align 8
  %42 = alloca i1, align 1
  store double %0, ptr %7, align 8, !tbaa !5
  store double %1, ptr %8, align 8, !tbaa !5
  store double %2, ptr %9, align 8, !tbaa !5
  store double %3, ptr %10, align 8, !tbaa !5
  store i32 %4, ptr %11, align 4, !tbaa !9
  store ptr %5, ptr %12, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  store double 0.000000e+00, ptr %13, align 8, !tbaa !5
  %43 = load ptr, ptr %12, align 8, !tbaa !11
  %44 = getelementptr inbounds %struct.InputStruct, ptr %43, i32 0, i32 0
  %45 = load i32, ptr %44, align 8, !tbaa !13
  %46 = icmp eq i32 %45, 0
  br i1 %46, label %47, label %129

47:                                               ; preds = %6
  %48 = load ptr, ptr %12, align 8, !tbaa !11
  %49 = getelementptr inbounds %struct.InputStruct, ptr %48, i32 0, i32 4
  %50 = load i32, ptr %49, align 8, !tbaa !49
  %51 = icmp eq i32 %50, 2
  br i1 %51, label %52, label %82

52:                                               ; preds = %47
  %53 = load ptr, ptr %12, align 8, !tbaa !11
  %54 = getelementptr inbounds %struct.InputStruct, ptr %53, i32 0, i32 39
  %55 = load double, ptr %54, align 8, !tbaa !50
  %56 = fmul double -2.000000e+00, %55
  %57 = fmul double %56, 0x400921FB54442D18
  %58 = fmul double %57, 0x400921FB54442D18
  %59 = load double, ptr %10, align 8, !tbaa !5
  %60 = fmul double %58, %59
  %61 = call double @exp(double noundef %60) #7
  %62 = load double, ptr %7, align 8, !tbaa !5
  %63 = load ptr, ptr %12, align 8, !tbaa !11
  %64 = getelementptr inbounds %struct.InputStruct, ptr %63, i32 0, i32 44
  %65 = call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %64, i32 noundef 0)
  %66 = load double, ptr %10, align 8, !tbaa !5
  %67 = fneg double %65
  %68 = call double @llvm.fmuladd.f64(double %67, double %66, double %62)
  %69 = fmul double 0x400921FB54442D18, %68
  %70 = call double @sin(double noundef %69) #7
  %71 = fmul double %61, %70
  %72 = load double, ptr %8, align 8, !tbaa !5
  %73 = load ptr, ptr %12, align 8, !tbaa !11
  %74 = getelementptr inbounds %struct.InputStruct, ptr %73, i32 0, i32 44
  %75 = call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %74, i32 noundef 1)
  %76 = load double, ptr %10, align 8, !tbaa !5
  %77 = fneg double %75
  %78 = call double @llvm.fmuladd.f64(double %77, double %76, double %72)
  %79 = fmul double 0x400921FB54442D18, %78
  %80 = call double @sin(double noundef %79) #7
  %81 = fmul double %71, %80
  store double %81, ptr %13, align 8, !tbaa !5
  br label %128

82:                                               ; preds = %47
  %83 = load ptr, ptr %12, align 8, !tbaa !11
  %84 = getelementptr inbounds %struct.InputStruct, ptr %83, i32 0, i32 4
  %85 = load i32, ptr %84, align 8, !tbaa !49
  %86 = icmp eq i32 %85, 3
  br i1 %86, label %87, label %127

87:                                               ; preds = %82
  %88 = load ptr, ptr %12, align 8, !tbaa !11
  %89 = getelementptr inbounds %struct.InputStruct, ptr %88, i32 0, i32 39
  %90 = load double, ptr %89, align 8, !tbaa !50
  %91 = fmul double -2.000000e+00, %90
  %92 = fmul double %91, 0x400921FB54442D18
  %93 = fmul double %92, 0x400921FB54442D18
  %94 = load double, ptr %10, align 8, !tbaa !5
  %95 = fmul double %93, %94
  %96 = call double @exp(double noundef %95) #7
  %97 = load double, ptr %7, align 8, !tbaa !5
  %98 = load ptr, ptr %12, align 8, !tbaa !11
  %99 = getelementptr inbounds %struct.InputStruct, ptr %98, i32 0, i32 44
  %100 = call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %99, i32 noundef 0)
  %101 = load double, ptr %10, align 8, !tbaa !5
  %102 = fneg double %100
  %103 = call double @llvm.fmuladd.f64(double %102, double %101, double %97)
  %104 = fmul double 0x400921FB54442D18, %103
  %105 = call double @sin(double noundef %104) #7
  %106 = fmul double %96, %105
  %107 = load double, ptr %8, align 8, !tbaa !5
  %108 = load ptr, ptr %12, align 8, !tbaa !11
  %109 = getelementptr inbounds %struct.InputStruct, ptr %108, i32 0, i32 44
  %110 = call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %109, i32 noundef 1)
  %111 = load double, ptr %10, align 8, !tbaa !5
  %112 = fneg double %110
  %113 = call double @llvm.fmuladd.f64(double %112, double %111, double %107)
  %114 = fmul double 0x400921FB54442D18, %113
  %115 = call double @sin(double noundef %114) #7
  %116 = fmul double %106, %115
  %117 = load double, ptr %9, align 8, !tbaa !5
  %118 = load ptr, ptr %12, align 8, !tbaa !11
  %119 = getelementptr inbounds %struct.InputStruct, ptr %118, i32 0, i32 44
  %120 = call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %119, i32 noundef 2)
  %121 = load double, ptr %10, align 8, !tbaa !5
  %122 = fneg double %120
  %123 = call double @llvm.fmuladd.f64(double %122, double %121, double %117)
  %124 = fmul double 0x400921FB54442D18, %123
  %125 = call double @sin(double noundef %124) #7
  %126 = fmul double %116, %125
  store double %126, ptr %13, align 8, !tbaa !5
  br label %127

127:                                              ; preds = %87, %82
  br label %128

128:                                              ; preds = %127, %52
  br label %585

129:                                              ; preds = %6
  %130 = load ptr, ptr %12, align 8, !tbaa !11
  %131 = getelementptr inbounds %struct.InputStruct, ptr %130, i32 0, i32 0
  %132 = load i32, ptr %131, align 8, !tbaa !13
  %133 = icmp eq i32 %132, 1
  br i1 %133, label %134, label %548

134:                                              ; preds = %129
  %135 = load ptr, ptr %12, align 8, !tbaa !11
  %136 = getelementptr inbounds %struct.InputStruct, ptr %135, i32 0, i32 14
  %137 = load i32, ptr %136, align 8, !tbaa !51
  %138 = icmp eq i32 %137, 1
  br i1 %138, label %144, label %139

139:                                              ; preds = %134
  %140 = load ptr, ptr %12, align 8, !tbaa !11
  %141 = getelementptr inbounds %struct.InputStruct, ptr %140, i32 0, i32 14
  %142 = load i32, ptr %141, align 8, !tbaa !51
  %143 = icmp eq i32 %142, 3
  br i1 %143, label %144, label %350

144:                                              ; preds = %139, %134
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  %145 = load ptr, ptr %12, align 8, !tbaa !11
  %146 = getelementptr inbounds %struct.InputStruct, ptr %145, i32 0, i32 14
  %147 = load i32, ptr %146, align 8, !tbaa !51
  %148 = icmp eq i32 %147, 1
  br i1 %148, label %149, label %207

149:                                              ; preds = %144
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  store double 5.000000e+00, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  store double 1.000000e+00, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %150 = load double, ptr %7, align 8, !tbaa !5
  %151 = load double, ptr %7, align 8, !tbaa !5
  %152 = fneg double %150
  %153 = call double @llvm.fmuladd.f64(double %152, double %151, double 1.000000e+00)
  %154 = load double, ptr %8, align 8, !tbaa !5
  %155 = load double, ptr %8, align 8, !tbaa !5
  %156 = fneg double %154
  %157 = call double @llvm.fmuladd.f64(double %156, double %155, double %153)
  %158 = load double, ptr %19, align 8, !tbaa !5
  %159 = fdiv double %157, %158
  store double %159, ptr %20, align 8, !tbaa !5
  %160 = load double, ptr %18, align 8, !tbaa !5
  %161 = load double, ptr %18, align 8, !tbaa !5
  %162 = fmul double %160, %161
  %163 = load ptr, ptr %12, align 8, !tbaa !11
  %164 = getelementptr inbounds %struct.InputStruct, ptr %163, i32 0, i32 50
  %165 = load double, ptr %164, align 8, !tbaa !52
  %166 = fsub double %165, 1.000000e+00
  %167 = fmul double %162, %166
  %168 = load ptr, ptr %12, align 8, !tbaa !11
  %169 = getelementptr inbounds %struct.InputStruct, ptr %168, i32 0, i32 50
  %170 = load double, ptr %169, align 8, !tbaa !52
  %171 = fmul double 8.000000e+00, %170
  %172 = fmul double %171, 0x400921FB54442D18
  %173 = fmul double %172, 0x400921FB54442D18
  %174 = fdiv double %167, %173
  %175 = load double, ptr %20, align 8, !tbaa !5
  %176 = call double @exp(double noundef %175) #7
  %177 = fneg double %174
  %178 = call double @llvm.fmuladd.f64(double %177, double %176, double 1.000000e+00)
  %179 = load ptr, ptr %12, align 8, !tbaa !11
  %180 = getelementptr inbounds %struct.InputStruct, ptr %179, i32 0, i32 50
  %181 = load double, ptr %180, align 8, !tbaa !52
  %182 = fsub double %181, 1.000000e+00
  %183 = fdiv double 1.000000e+00, %182
  %184 = call double @pow(double noundef %178, double noundef %183) #7
  store double %184, ptr %14, align 8, !tbaa !5
  %185 = load double, ptr %18, align 8, !tbaa !5
  %186 = load double, ptr %8, align 8, !tbaa !5
  %187 = fmul double %185, %186
  %188 = fdiv double %187, 0x401921FB54442D18
  %189 = load double, ptr %20, align 8, !tbaa !5
  %190 = fmul double 5.000000e-01, %189
  %191 = call double @exp(double noundef %190) #7
  %192 = fneg double %188
  %193 = call double @llvm.fmuladd.f64(double %192, double %191, double 1.000000e+00)
  store double %193, ptr %15, align 8, !tbaa !5
  %194 = load double, ptr %18, align 8, !tbaa !5
  %195 = load double, ptr %7, align 8, !tbaa !5
  %196 = fmul double %194, %195
  %197 = fdiv double %196, 0x401921FB54442D18
  %198 = load double, ptr %20, align 8, !tbaa !5
  %199 = fmul double 5.000000e-01, %198
  %200 = call double @exp(double noundef %199) #7
  %201 = call double @llvm.fmuladd.f64(double %197, double %200, double 1.000000e+00)
  store double %201, ptr %16, align 8, !tbaa !5
  %202 = load double, ptr %14, align 8, !tbaa !5
  %203 = load ptr, ptr %12, align 8, !tbaa !11
  %204 = getelementptr inbounds %struct.InputStruct, ptr %203, i32 0, i32 50
  %205 = load double, ptr %204, align 8, !tbaa !52
  %206 = call double @pow(double noundef %202, double noundef %205) #7
  store double %206, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  br label %285

207:                                              ; preds = %144
  %208 = load ptr, ptr %12, align 8, !tbaa !11
  %209 = getelementptr inbounds %struct.InputStruct, ptr %208, i32 0, i32 14
  %210 = load i32, ptr %209, align 8, !tbaa !51
  %211 = icmp eq i32 %210, 3
  br i1 %211, label %212, label %284

212:                                              ; preds = %207
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  store double 2.000000e+01, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  store double 1.350000e+01, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  store double 4.000000e-01, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  store double 1.500000e+00, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %213 = load double, ptr %22, align 8, !tbaa !5
  %214 = load double, ptr %24, align 8, !tbaa !5
  %215 = fmul double 0x401921FB54442D18, %214
  %216 = fdiv double %213, %215
  store double %216, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %217 = load double, ptr %7, align 8, !tbaa !5
  %218 = load double, ptr %7, align 8, !tbaa !5
  %219 = fneg double %217
  %220 = call double @llvm.fmuladd.f64(double %219, double %218, double 1.000000e+00)
  %221 = load double, ptr %8, align 8, !tbaa !5
  %222 = load double, ptr %8, align 8, !tbaa !5
  %223 = fneg double %221
  %224 = call double @llvm.fmuladd.f64(double %223, double %222, double %220)
  %225 = load double, ptr %24, align 8, !tbaa !5
  %226 = fmul double 2.000000e+00, %225
  %227 = load double, ptr %24, align 8, !tbaa !5
  %228 = fmul double %226, %227
  %229 = fdiv double %224, %228
  %230 = call double @exp(double noundef %229) #7
  store double %230, ptr %26, align 8, !tbaa !5
  %231 = load ptr, ptr %12, align 8, !tbaa !11
  %232 = getelementptr inbounds %struct.InputStruct, ptr %231, i32 0, i32 50
  %233 = load double, ptr %232, align 8, !tbaa !52
  %234 = fsub double %233, 1.000000e+00
  %235 = fmul double 5.000000e-01, %234
  %236 = load double, ptr %25, align 8, !tbaa !5
  %237 = fmul double %235, %236
  %238 = load double, ptr %25, align 8, !tbaa !5
  %239 = fmul double %237, %238
  %240 = load double, ptr %23, align 8, !tbaa !5
  %241 = fmul double %239, %240
  %242 = load double, ptr %23, align 8, !tbaa !5
  %243 = fmul double %241, %242
  %244 = load double, ptr %24, align 8, !tbaa !5
  %245 = fmul double %243, %244
  %246 = load double, ptr %24, align 8, !tbaa !5
  %247 = fmul double %245, %246
  %248 = load double, ptr %26, align 8, !tbaa !5
  %249 = fmul double %247, %248
  %250 = load double, ptr %26, align 8, !tbaa !5
  %251 = fneg double %249
  %252 = call double @llvm.fmuladd.f64(double %251, double %250, double 1.000000e+00)
  %253 = load ptr, ptr %12, align 8, !tbaa !11
  %254 = getelementptr inbounds %struct.InputStruct, ptr %253, i32 0, i32 50
  %255 = load double, ptr %254, align 8, !tbaa !52
  %256 = fsub double %255, 1.000000e+00
  %257 = fdiv double 1.000000e+00, %256
  %258 = call double @pow(double noundef %252, double noundef %257) #7
  store double %258, ptr %14, align 8, !tbaa !5
  %259 = load double, ptr %25, align 8, !tbaa !5
  %260 = fneg double %259
  %261 = load double, ptr %26, align 8, !tbaa !5
  %262 = fmul double %260, %261
  %263 = load double, ptr %8, align 8, !tbaa !5
  %264 = fmul double %262, %263
  store double %264, ptr %15, align 8, !tbaa !5
  %265 = load double, ptr %25, align 8, !tbaa !5
  %266 = load double, ptr %26, align 8, !tbaa !5
  %267 = fmul double %265, %266
  %268 = load double, ptr %7, align 8, !tbaa !5
  %269 = call double @llvm.fmuladd.f64(double %267, double %268, double 1.000000e+00)
  store double %269, ptr %16, align 8, !tbaa !5
  %270 = load ptr, ptr %12, align 8, !tbaa !11
  %271 = getelementptr inbounds %struct.InputStruct, ptr %270, i32 0, i32 50
  %272 = load double, ptr %271, align 8, !tbaa !52
  %273 = load double, ptr %23, align 8, !tbaa !5
  %274 = fmul double %272, %273
  %275 = load double, ptr %23, align 8, !tbaa !5
  %276 = fmul double %274, %275
  %277 = fdiv double 1.000000e+00, %276
  %278 = load double, ptr %14, align 8, !tbaa !5
  %279 = load ptr, ptr %12, align 8, !tbaa !11
  %280 = getelementptr inbounds %struct.InputStruct, ptr %279, i32 0, i32 50
  %281 = load double, ptr %280, align 8, !tbaa !52
  %282 = call double @pow(double noundef %278, double noundef %281) #7
  %283 = fmul double %277, %282
  store double %283, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %284

284:                                              ; preds = %212, %207
  br label %285

285:                                              ; preds = %284, %149
  %286 = load ptr, ptr %12, align 8, !tbaa !11
  %287 = getelementptr inbounds %struct.InputStruct, ptr %286, i32 0, i32 4
  %288 = load i32, ptr %287, align 8, !tbaa !49
  %289 = icmp eq i32 %288, 2
  br i1 %289, label %290, label %319

290:                                              ; preds = %285
  %291 = load i32, ptr %11, align 4, !tbaa !9
  switch i32 %291, label %318 [
    i32 0, label %292
    i32 1, label %294
    i32 2, label %298
    i32 3, label %302
  ]

292:                                              ; preds = %290
  %293 = load double, ptr %14, align 8, !tbaa !5
  store double %293, ptr %13, align 8, !tbaa !5
  br label %318

294:                                              ; preds = %290
  %295 = load double, ptr %14, align 8, !tbaa !5
  %296 = load double, ptr %15, align 8, !tbaa !5
  %297 = fmul double %295, %296
  store double %297, ptr %13, align 8, !tbaa !5
  br label %318

298:                                              ; preds = %290
  %299 = load double, ptr %14, align 8, !tbaa !5
  %300 = load double, ptr %16, align 8, !tbaa !5
  %301 = fmul double %299, %300
  store double %301, ptr %13, align 8, !tbaa !5
  br label %318

302:                                              ; preds = %290
  %303 = load double, ptr %17, align 8, !tbaa !5
  %304 = load ptr, ptr %12, align 8, !tbaa !11
  %305 = getelementptr inbounds %struct.InputStruct, ptr %304, i32 0, i32 50
  %306 = load double, ptr %305, align 8, !tbaa !52
  %307 = fsub double %306, 1.000000e+00
  %308 = fdiv double %303, %307
  %309 = load double, ptr %14, align 8, !tbaa !5
  %310 = fmul double 5.000000e-01, %309
  %311 = load double, ptr %15, align 8, !tbaa !5
  %312 = load double, ptr %15, align 8, !tbaa !5
  %313 = load double, ptr %16, align 8, !tbaa !5
  %314 = load double, ptr %16, align 8, !tbaa !5
  %315 = fmul double %313, %314
  %316 = call double @llvm.fmuladd.f64(double %311, double %312, double %315)
  %317 = call double @llvm.fmuladd.f64(double %310, double %316, double %308)
  store double %317, ptr %13, align 8, !tbaa !5
  br label %318

318:                                              ; preds = %302, %298, %294, %292, %290
  br label %349

319:                                              ; preds = %285
  %320 = load i32, ptr %11, align 4, !tbaa !9
  switch i32 %320, label %348 [
    i32 0, label %321
    i32 1, label %323
    i32 2, label %327
    i32 3, label %331
    i32 4, label %332
  ]

321:                                              ; preds = %319
  %322 = load double, ptr %14, align 8, !tbaa !5
  store double %322, ptr %13, align 8, !tbaa !5
  br label %348

323:                                              ; preds = %319
  %324 = load double, ptr %14, align 8, !tbaa !5
  %325 = load double, ptr %15, align 8, !tbaa !5
  %326 = fmul double %324, %325
  store double %326, ptr %13, align 8, !tbaa !5
  br label %348

327:                                              ; preds = %319
  %328 = load double, ptr %14, align 8, !tbaa !5
  %329 = load double, ptr %16, align 8, !tbaa !5
  %330 = fmul double %328, %329
  store double %330, ptr %13, align 8, !tbaa !5
  br label %348

331:                                              ; preds = %319
  store double 0.000000e+00, ptr %13, align 8, !tbaa !5
  br label %348

332:                                              ; preds = %319
  %333 = load double, ptr %17, align 8, !tbaa !5
  %334 = load ptr, ptr %12, align 8, !tbaa !11
  %335 = getelementptr inbounds %struct.InputStruct, ptr %334, i32 0, i32 50
  %336 = load double, ptr %335, align 8, !tbaa !52
  %337 = fsub double %336, 1.000000e+00
  %338 = fdiv double %333, %337
  %339 = load double, ptr %14, align 8, !tbaa !5
  %340 = fmul double 5.000000e-01, %339
  %341 = load double, ptr %15, align 8, !tbaa !5
  %342 = load double, ptr %15, align 8, !tbaa !5
  %343 = load double, ptr %16, align 8, !tbaa !5
  %344 = load double, ptr %16, align 8, !tbaa !5
  %345 = fmul double %343, %344
  %346 = call double @llvm.fmuladd.f64(double %341, double %342, double %345)
  %347 = call double @llvm.fmuladd.f64(double %340, double %346, double %338)
  store double %347, ptr %13, align 8, !tbaa !5
  br label %348

348:                                              ; preds = %332, %331, %327, %323, %321, %319
  br label %349

349:                                              ; preds = %348, %318
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  br label %547

350:                                              ; preds = %139
  %351 = load ptr, ptr %12, align 8, !tbaa !11
  %352 = getelementptr inbounds %struct.InputStruct, ptr %351, i32 0, i32 14
  %353 = load i32, ptr %352, align 8, !tbaa !51
  %354 = icmp eq i32 %353, 2
  br i1 %354, label %355, label %504

355:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %356 = load ptr, ptr %12, align 8, !tbaa !11
  %357 = getelementptr inbounds %struct.InputStruct, ptr %356, i32 0, i32 50
  %358 = load double, ptr %357, align 8, !tbaa !52
  store double %358, ptr %27, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %359 = load ptr, ptr %12, align 8, !tbaa !11
  %360 = getelementptr inbounds %struct.InputStruct, ptr %359, i32 0, i32 51
  %361 = load double, ptr %360, align 8, !tbaa !53
  store double %361, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %362 = load ptr, ptr %12, align 8, !tbaa !11
  %363 = getelementptr inbounds %struct.InputStruct, ptr %362, i32 0, i32 58
  %364 = load double, ptr %363, align 8, !tbaa !54
  store double %364, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %365 = load ptr, ptr %12, align 8, !tbaa !11
  %366 = getelementptr inbounds %struct.InputStruct, ptr %365, i32 0, i32 53
  %367 = load double, ptr %366, align 8, !tbaa !55
  store double %367, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %368 = load ptr, ptr %12, align 8, !tbaa !11
  %369 = getelementptr inbounds %struct.InputStruct, ptr %368, i32 0, i32 47
  %370 = call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %369, i32 noundef 0)
  store double %370, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %371 = load ptr, ptr %12, align 8, !tbaa !11
  %372 = getelementptr inbounds %struct.InputStruct, ptr %371, i32 0, i32 68
  %373 = load double, ptr %372, align 8, !tbaa !56
  store double %373, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %374 = load double, ptr %27, align 8, !tbaa !5
  %375 = load double, ptr %30, align 8, !tbaa !5
  %376 = fmul double %374, %375
  %377 = load double, ptr %27, align 8, !tbaa !5
  %378 = fsub double %377, 1.000000e+00
  %379 = fdiv double %376, %378
  store double %379, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %380 = load double, ptr %27, align 8, !tbaa !5
  %381 = load double, ptr %27, align 8, !tbaa !5
  %382 = fsub double %381, 1.000000e+00
  %383 = fdiv double %380, %382
  %384 = load double, ptr %29, align 8, !tbaa !5
  %385 = fmul double 2.000000e+00, %384
  %386 = fmul double %383, %385
  %387 = load double, ptr %33, align 8, !tbaa !5
  %388 = fmul double 2.000000e+00, %387
  %389 = load double, ptr %32, align 8, !tbaa !5
  %390 = load double, ptr %28, align 8, !tbaa !5
  %391 = load double, ptr %31, align 8, !tbaa !5
  %392 = fmul double %390, %391
  %393 = load double, ptr %31, align 8, !tbaa !5
  %394 = fmul double %392, %393
  %395 = load double, ptr %8, align 8, !tbaa !5
  %396 = fmul double %394, %395
  %397 = load double, ptr %8, align 8, !tbaa !5
  %398 = fsub double 1.000000e+00, %397
  %399 = fmul double %396, %398
  %400 = call double @llvm.fmuladd.f64(double %388, double %389, double %399)
  %401 = fdiv double %386, %400
  store double %401, ptr %34, align 8, !tbaa !5
  %402 = load ptr, ptr %12, align 8, !tbaa !11
  %403 = getelementptr inbounds %struct.InputStruct, ptr %402, i32 0, i32 4
  %404 = load i32, ptr %403, align 8, !tbaa !49
  %405 = icmp eq i32 %404, 2
  br i1 %405, label %406, label %454

406:                                              ; preds = %355
  %407 = load i32, ptr %11, align 4, !tbaa !9
  switch i32 %407, label %453 [
    i32 0, label %408
    i32 1, label %410
    i32 2, label %416
    i32 3, label %417
  ]

408:                                              ; preds = %406
  %409 = load double, ptr %34, align 8, !tbaa !5
  store double %409, ptr %13, align 8, !tbaa !5
  br label %453

410:                                              ; preds = %406
  %411 = load double, ptr %34, align 8, !tbaa !5
  %412 = load double, ptr %31, align 8, !tbaa !5
  %413 = load double, ptr %8, align 8, !tbaa !5
  %414 = fmul double %412, %413
  %415 = fmul double %411, %414
  store double %415, ptr %13, align 8, !tbaa !5
  br label %453

416:                                              ; preds = %406
  store double 0.000000e+00, ptr %13, align 8, !tbaa !5
  br label %453

417:                                              ; preds = %406
  %418 = load double, ptr %29, align 8, !tbaa !5
  %419 = load double, ptr %27, align 8, !tbaa !5
  %420 = fsub double %419, 1.000000e+00
  %421 = fdiv double %418, %420
  %422 = load double, ptr %27, align 8, !tbaa !5
  %423 = load double, ptr %27, align 8, !tbaa !5
  %424 = fsub double %423, 1.000000e+00
  %425 = fdiv double %422, %424
  %426 = fmul double %425, 2.000000e+00
  %427 = load double, ptr %29, align 8, !tbaa !5
  %428 = fmul double %426, %427
  %429 = load double, ptr %33, align 8, !tbaa !5
  %430 = fmul double 2.000000e+00, %429
  %431 = load double, ptr %32, align 8, !tbaa !5
  %432 = load double, ptr %28, align 8, !tbaa !5
  %433 = load double, ptr %31, align 8, !tbaa !5
  %434 = fmul double %432, %433
  %435 = load double, ptr %31, align 8, !tbaa !5
  %436 = fmul double %434, %435
  %437 = load double, ptr %8, align 8, !tbaa !5
  %438 = fmul double %436, %437
  %439 = load double, ptr %8, align 8, !tbaa !5
  %440 = fsub double 1.000000e+00, %439
  %441 = fmul double %438, %440
  %442 = call double @llvm.fmuladd.f64(double %430, double %431, double %441)
  %443 = fdiv double %428, %442
  %444 = fmul double 5.000000e-01, %443
  %445 = load double, ptr %31, align 8, !tbaa !5
  %446 = fmul double %444, %445
  %447 = load double, ptr %31, align 8, !tbaa !5
  %448 = fmul double %446, %447
  %449 = load double, ptr %8, align 8, !tbaa !5
  %450 = fmul double %448, %449
  %451 = load double, ptr %8, align 8, !tbaa !5
  %452 = call double @llvm.fmuladd.f64(double %450, double %451, double %421)
  store double %452, ptr %13, align 8, !tbaa !5
  br label %453

453:                                              ; preds = %417, %416, %410, %408, %406
  br label %503

454:                                              ; preds = %355
  %455 = load i32, ptr %11, align 4, !tbaa !9
  switch i32 %455, label %502 [
    i32 0, label %456
    i32 1, label %458
    i32 2, label %464
    i32 3, label %465
    i32 4, label %466
  ]

456:                                              ; preds = %454
  %457 = load double, ptr %34, align 8, !tbaa !5
  store double %457, ptr %13, align 8, !tbaa !5
  br label %502

458:                                              ; preds = %454
  %459 = load double, ptr %34, align 8, !tbaa !5
  %460 = load double, ptr %31, align 8, !tbaa !5
  %461 = load double, ptr %8, align 8, !tbaa !5
  %462 = fmul double %460, %461
  %463 = fmul double %459, %462
  store double %463, ptr %13, align 8, !tbaa !5
  br label %502

464:                                              ; preds = %454
  store double 0.000000e+00, ptr %13, align 8, !tbaa !5
  br label %502

465:                                              ; preds = %454
  store double 0.000000e+00, ptr %13, align 8, !tbaa !5
  br label %502

466:                                              ; preds = %454
  %467 = load double, ptr %29, align 8, !tbaa !5
  %468 = load double, ptr %27, align 8, !tbaa !5
  %469 = fsub double %468, 1.000000e+00
  %470 = fdiv double %467, %469
  %471 = load double, ptr %27, align 8, !tbaa !5
  %472 = load double, ptr %27, align 8, !tbaa !5
  %473 = fsub double %472, 1.000000e+00
  %474 = fdiv double %471, %473
  %475 = fmul double %474, 2.000000e+00
  %476 = load double, ptr %29, align 8, !tbaa !5
  %477 = fmul double %475, %476
  %478 = load double, ptr %33, align 8, !tbaa !5
  %479 = fmul double 2.000000e+00, %478
  %480 = load double, ptr %32, align 8, !tbaa !5
  %481 = load double, ptr %28, align 8, !tbaa !5
  %482 = load double, ptr %31, align 8, !tbaa !5
  %483 = fmul double %481, %482
  %484 = load double, ptr %31, align 8, !tbaa !5
  %485 = fmul double %483, %484
  %486 = load double, ptr %8, align 8, !tbaa !5
  %487 = fmul double %485, %486
  %488 = load double, ptr %8, align 8, !tbaa !5
  %489 = fsub double 1.000000e+00, %488
  %490 = fmul double %487, %489
  %491 = call double @llvm.fmuladd.f64(double %479, double %480, double %490)
  %492 = fdiv double %477, %491
  %493 = fmul double 5.000000e-01, %492
  %494 = load double, ptr %31, align 8, !tbaa !5
  %495 = fmul double %493, %494
  %496 = load double, ptr %31, align 8, !tbaa !5
  %497 = fmul double %495, %496
  %498 = load double, ptr %8, align 8, !tbaa !5
  %499 = fmul double %497, %498
  %500 = load double, ptr %8, align 8, !tbaa !5
  %501 = call double @llvm.fmuladd.f64(double %499, double %500, double %470)
  store double %501, ptr %13, align 8, !tbaa !5
  br label %502

502:                                              ; preds = %466, %465, %464, %458, %456, %454
  br label %503

503:                                              ; preds = %502, %453
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  br label %546

504:                                              ; preds = %350
  %505 = load ptr, ptr %12, align 8, !tbaa !11
  %506 = getelementptr inbounds %struct.InputStruct, ptr %505, i32 0, i32 14
  %507 = load i32, ptr %506, align 8, !tbaa !51
  %508 = icmp eq i32 %507, 4
  br i1 %508, label %509, label %545

509:                                              ; preds = %504
  call void @llvm.lifetime.start.p0(i64 392, ptr %35) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %35)
  %510 = getelementptr inbounds i8, ptr %35, i64 16
  %511 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %510, ptr noundef @.str)
          to label %512 unwind label %528

512:                                              ; preds = %509
  %513 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %511, ptr noundef @.str.11)
          to label %514 unwind label %528

514:                                              ; preds = %512
  %515 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %513, i32 noundef 362)
          to label %516 unwind label %528

516:                                              ; preds = %514
  %517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %515, ptr noundef @.str.11)
          to label %518 unwind label %528

518:                                              ; preds = %516
  %519 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef @__func__._Z14compute_U_trueddddjPK11InputStruct)
          to label %520 unwind label %528

520:                                              ; preds = %518
  %521 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %519, ptr noundef @.str.12)
          to label %522 unwind label %528

522:                                              ; preds = %520
  %523 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %521, ptr noundef @.str.16)
          to label %524 unwind label %528

524:                                              ; preds = %522
  store i1 true, ptr %39, align 1
  %525 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %38) #7
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %38, ptr noundef nonnull align 8 dereferenceable(128) %35)
          to label %526 unwind label %532

526:                                              ; preds = %524
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %525, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %527 unwind label %536

527:                                              ; preds = %526
  store i1 false, ptr %39, align 1
  invoke void @__cxa_throw(ptr %525, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %593 unwind label %536

528:                                              ; preds = %522, %520, %518, %516, %514, %512, %509
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %36, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %37, align 4
  br label %544

532:                                              ; preds = %524
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %36, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %37, align 4
  br label %540

536:                                              ; preds = %527, %526
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %36, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %37, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %540

540:                                              ; preds = %536, %532
  call void @llvm.lifetime.end.p0(i64 32, ptr %38) #7
  %541 = load i1, ptr %39, align 1
  br i1 %541, label %542, label %543

542:                                              ; preds = %540
  call void @__cxa_free_exception(ptr %525) #7
  br label %543

543:                                              ; preds = %542, %540
  br label %544

544:                                              ; preds = %543, %528
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %35) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %35) #7
  br label %587

545:                                              ; preds = %504
  br label %546

546:                                              ; preds = %545, %503
  br label %547

547:                                              ; preds = %546, %349
  br label %584

548:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 392, ptr %40) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %40)
  %549 = getelementptr inbounds i8, ptr %40, i64 16
  %550 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %549, ptr noundef @.str)
          to label %551 unwind label %567

551:                                              ; preds = %548
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %550, ptr noundef @.str.11)
          to label %553 unwind label %567

553:                                              ; preds = %551
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %552, i32 noundef 367)
          to label %555 unwind label %567

555:                                              ; preds = %553
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %554, ptr noundef @.str.11)
          to label %557 unwind label %567

557:                                              ; preds = %555
  %558 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %556, ptr noundef @__func__._Z14compute_U_trueddddjPK11InputStruct)
          to label %559 unwind label %567

559:                                              ; preds = %557
  %560 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %558, ptr noundef @.str.12)
          to label %561 unwind label %567

561:                                              ; preds = %559
  %562 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %560, ptr noundef @.str.15)
          to label %563 unwind label %567

563:                                              ; preds = %561
  store i1 true, ptr %42, align 1
  %564 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %41) #7
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %41, ptr noundef nonnull align 8 dereferenceable(128) %40)
          to label %565 unwind label %571

565:                                              ; preds = %563
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %564, ptr noundef nonnull align 8 dereferenceable(32) %41)
          to label %566 unwind label %575

566:                                              ; preds = %565
  store i1 false, ptr %42, align 1
  invoke void @__cxa_throw(ptr %564, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %593 unwind label %575

567:                                              ; preds = %561, %559, %557, %555, %553, %551, %548
  %568 = landingpad { ptr, i32 }
          cleanup
  %569 = extractvalue { ptr, i32 } %568, 0
  store ptr %569, ptr %36, align 8
  %570 = extractvalue { ptr, i32 } %568, 1
  store i32 %570, ptr %37, align 4
  br label %583

571:                                              ; preds = %563
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %36, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %37, align 4
  br label %579

575:                                              ; preds = %566, %565
  %576 = landingpad { ptr, i32 }
          cleanup
  %577 = extractvalue { ptr, i32 } %576, 0
  store ptr %577, ptr %36, align 8
  %578 = extractvalue { ptr, i32 } %576, 1
  store i32 %578, ptr %37, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #7
  br label %579

579:                                              ; preds = %575, %571
  call void @llvm.lifetime.end.p0(i64 32, ptr %41) #7
  %580 = load i1, ptr %42, align 1
  br i1 %580, label %581, label %582

581:                                              ; preds = %579
  call void @__cxa_free_exception(ptr %564) #7
  br label %582

582:                                              ; preds = %581, %579
  br label %583

583:                                              ; preds = %582, %567
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %40) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %40) #7
  br label %587

584:                                              ; preds = %547
  br label %585

585:                                              ; preds = %584, %128
  %586 = load double, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  ret double %586

587:                                              ; preds = %583, %544
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  br label %588

588:                                              ; preds = %587
  %589 = load ptr, ptr %36, align 8
  %590 = load i32, ptr %37, align 4
  %591 = insertvalue { ptr, i32 } poison, ptr %589, 0
  %592 = insertvalue { ptr, i32 } %591, i32 %590, 1
  resume { ptr, i32 } %592

593:                                              ; preds = %566, %527
  unreachable
}

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

!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, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"any pointer", !7, i64 0}
!13 = !{!14, !10, i64 0}
!14 = !{!"_ZTS11InputStruct", !10, i64 0, !10, i64 4, !10, i64 8, !10, i64 12, !10, i64 16, !10, i64 20, !10, i64 24, !10, i64 28, !10, i64 32, !10, i64 36, !10, i64 40, !10, i64 44, !10, i64 48, !10, i64 52, !10, i64 56, !10, i64 60, !10, i64 64, !10, i64 68, !15, i64 72, !15, i64 104, !15, i64 136, !15, i64 168, !15, i64 200, !15, i64 232, !18, i64 264, !18, i64 265, !18, i64 266, !18, i64 267, !18, i64 268, !18, i64 269, !18, i64 270, !18, i64 271, !19, i64 272, !19, i64 296, !10, i64 320, !10, i64 324, !6, i64 328, !6, i64 336, !6, i64 344, !6, i64 352, !6, i64 360, !6, i64 368, !6, i64 376, !6, i64 384, !23, i64 392, !23, i64 504, !23, i64 616, !23, i64 728, !23, i64 840, !6, i64 952, !6, i64 960, !6, i64 968, !6, i64 976, !6, i64 984, !6, i64 992, !6, i64 1000, !6, i64 1008, !6, i64 1016, !6, i64 1024, !6, i64 1032, !6, i64 1040, !6, i64 1048, !6, i64 1056, !6, i64 1064, !6, i64 1072, !6, i64 1080, !6, i64 1088, !6, i64 1096, !6, i64 1104, !6, i64 1112, !6, i64 1120, !6, i64 1128, !6, i64 1136, !6, i64 1144, !6, i64 1152, !6, i64 1160, !6, i64 1168, !6, i64 1176, !6, i64 1184, !6, i64 1192, !6, i64 1200, !6, i64 1208, !6, i64 1216, !10, i64 1224, !10, i64 1228, !10, i64 1232, !10, i64 1236, !10, i64 1240, !10, i64 1244, !10, i64 1248, !10, i64 1252, !10, i64 1256, !10, i64 1260, !6, i64 1264, !6, i64 1272, !6, i64 1280, !6, i64 1288, !6, i64 1296, !6, i64 1304, !6, i64 1312, !10, i64 1320, !10, i64 1324, !6, i64 1328, !6, i64 1336, !10, i64 1344, !6, i64 1352, !6, i64 1360, !6, i64 1368, !6, i64 1376, !6, i64 1384, !6, i64 1392, !6, i64 1400, !6, i64 1408, !29, i64 1416, !29, i64 1418, !29, i64 1420, !29, i64 1422, !10, i64 1424, !10, i64 1428, !10, i64 1432, !15, i64 1440, !18, i64 1472, !18, i64 1473, !18, i64 1474, !18, i64 1475, !10, i64 1476, !10, i64 1480, !18, i64 1484, !18, i64 1485, !18, i64 1486, !18, i64 1487, !10, i64 1488, !10, i64 1492, !10, i64 1496, !10, i64 1500, !30, i64 1504, !34, i64 1528, !6, i64 1552, !6, i64 1560, !6, i64 1568, !6, i64 1576, !6, i64 1584, !6, i64 1592, !7, i64 1600, !6, i64 1624, !7, i64 1632, !7, i64 1656, !7, i64 1680, !7, i64 1704, !6, i64 1728, !7, i64 1736, !7, i64 1760, !6, i64 1784, !7, i64 1792, !38, i64 1864, !18, i64 1912, !18, i64 1913, !18, i64 1914, !18, i64 1915, !18, i64 1916, !18, i64 1917, !18, i64 1918, !18, i64 1919, !6, i64 1920, !6, i64 1928, !6, i64 1936, !6, i64 1944, !10, i64 1952, !10, i64 1956, !10, i64 1960, !10, i64 1964, !10, i64 1968, !10, i64 1972, !10, i64 1976, !10, i64 1980, !10, i64 1984, !18, i64 1988, !6, i64 1992, !6, i64 2000, !46, i64 2008}
!15 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !16, i64 0, !17, i64 8, !7, i64 16}
!16 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!17 = !{!"long", !7, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!"_ZTSSt6vectorIjSaIjEE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!23 = !{!"_ZTS8mdvectorIdE", !10, i64 0, !17, i64 8, !17, i64 16, !24, i64 24, !24, i64 48, !25, i64 72, !12, i64 96, !18, i64 104}
!24 = !{!"_ZTSSt5arrayIjLm6EE", !7, i64 0}
!25 = !{!"_ZTSSt6vectorIdSaIdEE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!29 = !{!"short", !7, i64 0}
!30 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!34 = !{!"_ZTSSt6vectorIiSaIiEE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!38 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !39, i64 0}
!39 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !40, i64 0}
!40 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !41, i64 0, !43, i64 8}
!41 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !42, i64 0}
!42 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!43 = !{!"_ZTSSt15_Rb_tree_header", !44, i64 0, !17, i64 32}
!44 = !{!"_ZTSSt18_Rb_tree_node_base", !45, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!45 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!46 = !{!"_ZTS5Timer", !47, i64 0, !47, i64 8, !6, i64 16, !15, i64 24}
!47 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !48, i64 0}
!48 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !17, i64 0}
!49 = !{!14, !10, i64 16}
!50 = !{!14, !6, i64 352}
!51 = !{!14, !10, i64 56}
!52 = !{!14, !6, i64 960}
!53 = !{!14, !6, i64 968}
!54 = !{!14, !6, i64 1024}
!55 = !{!14, !6, i64 984}
!56 = !{!14, !6, i64 1104}


; 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::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_stringstream" = type { %"class.std::basic_iostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_iostream.base" = type { %"class.std::basic_istream.base", %"class.std::basic_ostream.base" }
%"class.std::basic_istream.base" = type { ptr, i64 }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"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 }

@.str = external hidden unnamed_addr constant [63 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.15 = external hidden unnamed_addr constant [20 x i8], align 1
@__func__._Z14compute_U_trueddddjPK11InputStruct = external hidden unnamed_addr constant [15 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [64 x i8], align 1

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

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

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @pow(double noundef, double noundef) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #3 align 2

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

declare i32 @__gxx_personality_v0(...)

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #3 align 2

declare void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #5

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #6

declare void @__cxa_throw(ptr, ptr, ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #7 align 2

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #7 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105), i32 noundef) local_unnamed_addr #7 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_Z14compute_U_trueddddjPK11InputStruct(double noundef %0, double noundef %1, double noundef %2, double noundef %3, i32 noundef %4, ptr noundef %5) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %8 = alloca %"class.std::__cxx11::basic_string", align 8
  %9 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %10 = alloca %"class.std::__cxx11::basic_string", align 8
  %11 = load i32, ptr %5, align 8, !tbaa !5
  switch i32 %11, label %260 [
    i32 0, label %12
    i32 1, label %63
  ]

12:                                               ; preds = %6
  %13 = getelementptr inbounds i8, ptr %5, i64 16
  %14 = load i32, ptr %13, align 8, !tbaa !46
  switch i32 %14, label %287 [
    i32 2, label %15
    i32 3, label %36
  ]

15:                                               ; preds = %12
  %16 = getelementptr inbounds i8, ptr %5, i64 352
  %17 = load double, ptr %16, align 8, !tbaa !47
  %18 = fmul double %17, -2.000000e+00
  %19 = fmul double %18, 0x400921FB54442D18
  %20 = fmul double %19, 0x400921FB54442D18
  %21 = fmul double %20, %3
  %22 = tail call double @exp(double noundef %21) #9
  %23 = getelementptr inbounds i8, ptr %5, i64 392
  %24 = tail call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %23, i32 noundef 0)
  %25 = fneg double %24
  %26 = tail call double @llvm.fmuladd.f64(double %25, double %3, double %0)
  %27 = fmul double %26, 0x400921FB54442D18
  %28 = tail call double @sin(double noundef %27) #9
  %29 = fmul double %22, %28
  %30 = tail call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %23, i32 noundef 1)
  %31 = fneg double %30
  %32 = tail call double @llvm.fmuladd.f64(double %31, double %3, double %1)
  %33 = fmul double %32, 0x400921FB54442D18
  %34 = tail call double @sin(double noundef %33) #9
  %35 = fmul double %29, %34
  br label %287

36:                                               ; preds = %12
  %37 = getelementptr inbounds i8, ptr %5, i64 352
  %38 = load double, ptr %37, align 8, !tbaa !47
  %39 = fmul double %38, -2.000000e+00
  %40 = fmul double %39, 0x400921FB54442D18
  %41 = fmul double %40, 0x400921FB54442D18
  %42 = fmul double %41, %3
  %43 = tail call double @exp(double noundef %42) #9
  %44 = getelementptr inbounds i8, ptr %5, i64 392
  %45 = tail call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %44, i32 noundef 0)
  %46 = fneg double %45
  %47 = tail call double @llvm.fmuladd.f64(double %46, double %3, double %0)
  %48 = fmul double %47, 0x400921FB54442D18
  %49 = tail call double @sin(double noundef %48) #9
  %50 = fmul double %43, %49
  %51 = tail call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %44, i32 noundef 1)
  %52 = fneg double %51
  %53 = tail call double @llvm.fmuladd.f64(double %52, double %3, double %1)
  %54 = fmul double %53, 0x400921FB54442D18
  %55 = tail call double @sin(double noundef %54) #9
  %56 = fmul double %50, %55
  %57 = tail call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %44, i32 noundef 2)
  %58 = fneg double %57
  %59 = tail call double @llvm.fmuladd.f64(double %58, double %3, double %2)
  %60 = fmul double %59, 0x400921FB54442D18
  %61 = tail call double @sin(double noundef %60) #9
  %62 = fmul double %56, %61
  br label %287

63:                                               ; preds = %6
  %64 = getelementptr inbounds i8, ptr %5, i64 56
  %65 = load i32, ptr %64, align 8, !tbaa !48
  switch i32 %65, label %287 [
    i32 4, label %233
    i32 2, label %173
    i32 1, label %66
    i32 3, label %97
  ]

66:                                               ; preds = %63
  %67 = fneg double %0
  %68 = tail call double @llvm.fmuladd.f64(double %67, double %0, double 1.000000e+00)
  %69 = fneg double %1
  %70 = tail call double @llvm.fmuladd.f64(double %69, double %1, double %68)
  %71 = getelementptr inbounds i8, ptr %5, i64 960
  %72 = load double, ptr %71, align 8, !tbaa !49
  %73 = fadd double %72, -1.000000e+00
  %74 = fmul double %72, 8.000000e+00
  %75 = fmul double %74, 0x400921FB54442D18
  %76 = fmul double %75, 0x400921FB54442D18
  %77 = tail call double @exp(double noundef %70) #9
  %78 = fmul double %73, -2.500000e+01
  %79 = fdiv double %78, %76
  %80 = tail call double @llvm.fmuladd.f64(double %79, double %77, double 1.000000e+00)
  %81 = load double, ptr %71, align 8, !tbaa !49
  %82 = fadd double %81, -1.000000e+00
  %83 = fdiv double 1.000000e+00, %82
  %84 = tail call double @pow(double noundef %80, double noundef %83) #9
  %85 = insertelement <2 x double> poison, double %1, i64 0
  %86 = insertelement <2 x double> %85, double %0, i64 1
  %87 = fmul <2 x double> %86, <double 5.000000e+00, double 5.000000e+00>
  %88 = fmul double %70, 5.000000e-01
  %89 = tail call double @exp(double noundef %88) #9
  %90 = fdiv <2 x double> %87, <double 0xC01921FB54442D18, double 0x401921FB54442D18>
  %91 = tail call double @exp(double noundef %88) #9
  %92 = insertelement <2 x double> poison, double %89, i64 0
  %93 = insertelement <2 x double> %92, double %91, i64 1
  %94 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %90, <2 x double> %93, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %95 = load double, ptr %71, align 8, !tbaa !49
  %96 = tail call double @pow(double noundef %84, double noundef %95) #9
  br label %130

97:                                               ; preds = %63
  %98 = fneg double %0
  %99 = tail call double @llvm.fmuladd.f64(double %98, double %0, double 1.000000e+00)
  %100 = fneg double %1
  %101 = tail call double @llvm.fmuladd.f64(double %100, double %1, double %99)
  %102 = fdiv double %101, 4.500000e+00
  %103 = tail call double @exp(double noundef %102) #9
  %104 = getelementptr inbounds i8, ptr %5, i64 960
  %105 = load double, ptr %104, align 8, !tbaa !49
  %106 = fadd double %105, -1.000000e+00
  %107 = fmul double %106, 5.000000e-01
  %108 = fmul double %107, 0x3FF6EB167B830193
  %109 = fmul double %108, 0x3FF6EB167B830193
  %110 = fmul double %109, 4.000000e-01
  %111 = fmul double %110, 4.000000e-01
  %112 = fmul double %111, 1.500000e+00
  %113 = fmul double %112, -1.500000e+00
  %114 = fmul double %103, %113
  %115 = tail call double @llvm.fmuladd.f64(double %114, double %103, double 1.000000e+00)
  %116 = fdiv double 1.000000e+00, %106
  %117 = tail call double @pow(double noundef %115, double noundef %116) #9
  %118 = fmul double %103, 0xBFF6EB167B830193
  %119 = fmul double %118, %1
  %120 = fmul double %103, 0x3FF6EB167B830193
  %121 = tail call double @llvm.fmuladd.f64(double %120, double %0, double 1.000000e+00)
  %122 = load double, ptr %104, align 8, !tbaa !49
  %123 = fmul double %122, 4.000000e-01
  %124 = fmul double %123, 4.000000e-01
  %125 = fdiv double 1.000000e+00, %124
  %126 = tail call double @pow(double noundef %117, double noundef %122) #9
  %127 = fmul double %126, %125
  %128 = insertelement <2 x double> poison, double %119, i64 0
  %129 = insertelement <2 x double> %128, double %121, i64 1
  br label %130

130:                                              ; preds = %97, %66
  %.0185 = phi double [ %96, %66 ], [ %127, %97 ]
  %.0182 = phi double [ %84, %66 ], [ %117, %97 ]
  %131 = phi <2 x double> [ %94, %66 ], [ %129, %97 ]
  %132 = getelementptr inbounds i8, ptr %5, i64 16
  %133 = load i32, ptr %132, align 8, !tbaa !46
  %134 = icmp eq i32 %133, 2
  br i1 %134, label %135, label %154

135:                                              ; preds = %130
  switch i32 %4, label %287 [
    i32 0, label %136
    i32 1, label %137
    i32 2, label %140
    i32 3, label %143
  ]

136:                                              ; preds = %135
  br label %287

137:                                              ; preds = %135
  %138 = extractelement <2 x double> %131, i64 0
  %139 = fmul double %138, %.0182
  br label %287

140:                                              ; preds = %135
  %141 = extractelement <2 x double> %131, i64 1
  %142 = fmul double %141, %.0182
  br label %287

143:                                              ; preds = %135
  %144 = getelementptr inbounds i8, ptr %5, i64 960
  %145 = load double, ptr %144, align 8, !tbaa !49
  %146 = fadd double %145, -1.000000e+00
  %147 = fdiv double %.0185, %146
  %148 = fmul double %.0182, 5.000000e-01
  %149 = fmul <2 x double> %131, %131
  %150 = extractelement <2 x double> %149, i64 1
  %151 = extractelement <2 x double> %131, i64 0
  %152 = tail call double @llvm.fmuladd.f64(double %151, double %151, double %150)
  %153 = tail call double @llvm.fmuladd.f64(double %148, double %152, double %147)
  br label %287

154:                                              ; preds = %130
  switch i32 %4, label %287 [
    i32 0, label %155
    i32 1, label %156
    i32 2, label %159
    i32 4, label %162
  ]

155:                                              ; preds = %154
  br label %287

156:                                              ; preds = %154
  %157 = extractelement <2 x double> %131, i64 0
  %158 = fmul double %157, %.0182
  br label %287

159:                                              ; preds = %154
  %160 = extractelement <2 x double> %131, i64 1
  %161 = fmul double %160, %.0182
  br label %287

162:                                              ; preds = %154
  %163 = getelementptr inbounds i8, ptr %5, i64 960
  %164 = load double, ptr %163, align 8, !tbaa !49
  %165 = fadd double %164, -1.000000e+00
  %166 = fdiv double %.0185, %165
  %167 = fmul double %.0182, 5.000000e-01
  %168 = fmul <2 x double> %131, %131
  %169 = extractelement <2 x double> %168, i64 1
  %170 = extractelement <2 x double> %131, i64 0
  %171 = tail call double @llvm.fmuladd.f64(double %170, double %170, double %169)
  %172 = tail call double @llvm.fmuladd.f64(double %167, double %171, double %166)
  br label %287

173:                                              ; preds = %63
  %174 = getelementptr inbounds i8, ptr %5, i64 960
  %175 = load double, ptr %174, align 8, !tbaa !49
  %176 = getelementptr inbounds i8, ptr %5, i64 968
  %177 = load double, ptr %176, align 8, !tbaa !50
  %178 = getelementptr inbounds i8, ptr %5, i64 1024
  %179 = load double, ptr %178, align 8, !tbaa !51
  %180 = getelementptr inbounds i8, ptr %5, i64 984
  %181 = load double, ptr %180, align 8, !tbaa !52
  %182 = getelementptr inbounds i8, ptr %5, i64 728
  %183 = tail call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %182, i32 noundef 0)
  %184 = getelementptr inbounds i8, ptr %5, i64 1104
  %185 = load double, ptr %184, align 8, !tbaa !53
  %186 = fmul double %175, %181
  %187 = fadd double %175, -1.000000e+00
  %188 = fdiv double %186, %187
  %189 = fdiv double %175, %187
  %190 = fmul double %179, 2.000000e+00
  %191 = fmul double %189, %190
  %192 = fmul double %188, 2.000000e+00
  %193 = fmul double %177, %183
  %194 = fmul double %183, %193
  %195 = fmul double %194, %1
  %196 = fsub double 1.000000e+00, %1
  %197 = fmul double %196, %195
  %198 = tail call double @llvm.fmuladd.f64(double %192, double %185, double %197)
  %199 = fdiv double %191, %198
  %200 = getelementptr inbounds i8, ptr %5, i64 16
  %201 = load i32, ptr %200, align 8, !tbaa !46
  %202 = icmp eq i32 %201, 2
  br i1 %202, label %203, label %218

203:                                              ; preds = %173
  switch i32 %4, label %287 [
    i32 0, label %204
    i32 1, label %205
    i32 3, label %208
  ]

204:                                              ; preds = %203
  br label %287

205:                                              ; preds = %203
  %206 = fmul double %183, %1
  %207 = fmul double %206, %199
  br label %287

208:                                              ; preds = %203
  %209 = fdiv double %179, %187
  %210 = fmul double %189, 2.000000e+00
  %211 = fmul double %179, %210
  %212 = fdiv double %211, %198
  %213 = fmul double %212, 5.000000e-01
  %214 = fmul double %183, %213
  %215 = fmul double %183, %214
  %216 = fmul double %215, %1
  %217 = tail call double @llvm.fmuladd.f64(double %216, double %1, double %209)
  br label %287

218:                                              ; preds = %173
  switch i32 %4, label %287 [
    i32 0, label %219
    i32 1, label %220
    i32 4, label %223
  ]

219:                                              ; preds = %218
  br label %287

220:                                              ; preds = %218
  %221 = fmul double %183, %1
  %222 = fmul double %221, %199
  br label %287

223:                                              ; preds = %218
  %224 = fdiv double %179, %187
  %225 = fmul double %189, 2.000000e+00
  %226 = fmul double %179, %225
  %227 = fdiv double %226, %198
  %228 = fmul double %227, 5.000000e-01
  %229 = fmul double %183, %228
  %230 = fmul double %183, %229
  %231 = fmul double %230, %1
  %232 = tail call double @llvm.fmuladd.f64(double %231, double %1, double %224)
  br label %287

233:                                              ; preds = %63
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %7) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %7)
  %234 = getelementptr inbounds i8, ptr %7, i64 16
  %235 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef nonnull @.str)
          to label %236 unwind label %253

236:                                              ; preds = %233
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %235, ptr noundef nonnull @.str.11)
          to label %238 unwind label %253

238:                                              ; preds = %236
  %239 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %237, i32 noundef 362)
          to label %240 unwind label %253

240:                                              ; preds = %238
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %239, ptr noundef nonnull @.str.11)
          to label %242 unwind label %253

242:                                              ; preds = %240
  %243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef nonnull @__func__._Z14compute_U_trueddddjPK11InputStruct)
          to label %244 unwind label %253

244:                                              ; preds = %242
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull @.str.12)
          to label %246 unwind label %253

246:                                              ; preds = %244
  %247 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef nonnull @.str.16)
          to label %248 unwind label %253

248:                                              ; preds = %246
  %249 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %8) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %8, ptr noundef nonnull align 8 dereferenceable(128) %7)
          to label %250 unwind label %.thread

250:                                              ; preds = %248
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %249, ptr noundef nonnull align 8 dereferenceable(32) %8)
          to label %252 unwind label %.thread199

.thread199:                                       ; preds = %250
  %251 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %258

252:                                              ; preds = %250
  invoke void @__cxa_throw(ptr nonnull %249, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %289 unwind label %256

253:                                              ; preds = %246, %244, %242, %240, %238, %236, %233
  %254 = landingpad { ptr, i32 }
          cleanup
  br label %259

.thread:                                          ; preds = %248
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %258

256:                                              ; preds = %252
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %8) #9
  br label %259

258:                                              ; preds = %.thread199, %.thread
  %.pn192198 = phi { ptr, i32 } [ %255, %.thread ], [ %251, %.thread199 ]
  call void @__cxa_free_exception(ptr %249) #9
  br label %259

259:                                              ; preds = %256, %258, %253
  %.pn192.pn = phi { ptr, i32 } [ %.pn192198, %258 ], [ %257, %256 ], [ %254, %253 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %7) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %7) #9
  br label %288

260:                                              ; preds = %6
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %9) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %9)
  %261 = getelementptr inbounds i8, ptr %9, i64 16
  %262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull @.str)
          to label %263 unwind label %280

263:                                              ; preds = %260
  %264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %262, ptr noundef nonnull @.str.11)
          to label %265 unwind label %280

265:                                              ; preds = %263
  %266 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %264, i32 noundef 367)
          to label %267 unwind label %280

267:                                              ; preds = %265
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull @.str.11)
          to label %269 unwind label %280

269:                                              ; preds = %267
  %270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef nonnull @__func__._Z14compute_U_trueddddjPK11InputStruct)
          to label %271 unwind label %280

271:                                              ; preds = %269
  %272 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull @.str.12)
          to label %273 unwind label %280

273:                                              ; preds = %271
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %272, ptr noundef nonnull @.str.15)
          to label %275 unwind label %280

275:                                              ; preds = %273
  %276 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %10, ptr noundef nonnull align 8 dereferenceable(128) %9)
          to label %277 unwind label %.thread201

277:                                              ; preds = %275
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %276, ptr noundef nonnull align 8 dereferenceable(32) %10)
          to label %279 unwind label %.thread205

.thread205:                                       ; preds = %277
  %278 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %285

279:                                              ; preds = %277
  invoke void @__cxa_throw(ptr nonnull %276, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %289 unwind label %283

280:                                              ; preds = %273, %271, %269, %267, %265, %263, %260
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %286

.thread201:                                       ; preds = %275
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %285

283:                                              ; preds = %279
  %284 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #9
  br label %286

285:                                              ; preds = %.thread205, %.thread201
  %.pn204 = phi { ptr, i32 } [ %282, %.thread201 ], [ %278, %.thread205 ]
  call void @__cxa_free_exception(ptr %276) #9
  br label %286

286:                                              ; preds = %283, %285, %280
  %.pn.pn = phi { ptr, i32 } [ %.pn204, %285 ], [ %284, %283 ], [ %281, %280 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %9) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %9) #9
  br label %288

287:                                              ; preds = %63, %208, %205, %204, %203, %223, %220, %219, %218, %143, %140, %137, %136, %135, %162, %159, %156, %155, %154, %12, %15, %36
  %.2181 = phi double [ %35, %15 ], [ %62, %36 ], [ 0.000000e+00, %12 ], [ 0.000000e+00, %135 ], [ %153, %143 ], [ %142, %140 ], [ %139, %137 ], [ %.0182, %136 ], [ %172, %162 ], [ %161, %159 ], [ %158, %156 ], [ %.0182, %155 ], [ 0.000000e+00, %154 ], [ %217, %208 ], [ %207, %205 ], [ %199, %204 ], [ %232, %223 ], [ %222, %220 ], [ %199, %219 ], [ 0.000000e+00, %203 ], [ 0.000000e+00, %218 ], [ 0.000000e+00, %63 ]
  ret double %.2181

288:                                              ; preds = %286, %259
  %.pn192.pn.pn = phi { ptr, i32 } [ %.pn192.pn, %259 ], [ %.pn.pn, %286 ]
  resume { ptr, i32 } %.pn192.pn.pn

289:                                              ; preds = %279, %252
  unreachable
}

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #8

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !7, i64 0}
!6 = !{!"_ZTS11InputStruct", !7, i64 0, !7, i64 4, !7, i64 8, !7, i64 12, !7, i64 16, !7, i64 20, !7, i64 24, !7, i64 28, !7, i64 32, !7, i64 36, !7, i64 40, !7, i64 44, !7, i64 48, !7, i64 52, !7, i64 56, !7, i64 60, !7, i64 64, !7, i64 68, !10, i64 72, !10, i64 104, !10, i64 136, !10, i64 168, !10, i64 200, !10, i64 232, !14, i64 264, !14, i64 265, !14, i64 266, !14, i64 267, !14, i64 268, !14, i64 269, !14, i64 270, !14, i64 271, !15, i64 272, !15, i64 296, !7, i64 320, !7, i64 324, !19, i64 328, !19, i64 336, !19, i64 344, !19, i64 352, !19, i64 360, !19, i64 368, !19, i64 376, !19, i64 384, !20, i64 392, !20, i64 504, !20, i64 616, !20, i64 728, !20, i64 840, !19, i64 952, !19, i64 960, !19, i64 968, !19, i64 976, !19, i64 984, !19, i64 992, !19, i64 1000, !19, i64 1008, !19, i64 1016, !19, i64 1024, !19, i64 1032, !19, i64 1040, !19, i64 1048, !19, i64 1056, !19, i64 1064, !19, i64 1072, !19, i64 1080, !19, i64 1088, !19, i64 1096, !19, i64 1104, !19, i64 1112, !19, i64 1120, !19, i64 1128, !19, i64 1136, !19, i64 1144, !19, i64 1152, !19, i64 1160, !19, i64 1168, !19, i64 1176, !19, i64 1184, !19, i64 1192, !19, i64 1200, !19, i64 1208, !19, i64 1216, !7, i64 1224, !7, i64 1228, !7, i64 1232, !7, i64 1236, !7, i64 1240, !7, i64 1244, !7, i64 1248, !7, i64 1252, !7, i64 1256, !7, i64 1260, !19, i64 1264, !19, i64 1272, !19, i64 1280, !19, i64 1288, !19, i64 1296, !19, i64 1304, !19, i64 1312, !7, i64 1320, !7, i64 1324, !19, i64 1328, !19, i64 1336, !7, i64 1344, !19, i64 1352, !19, i64 1360, !19, i64 1368, !19, i64 1376, !19, i64 1384, !19, i64 1392, !19, i64 1400, !19, i64 1408, !26, i64 1416, !26, i64 1418, !26, i64 1420, !26, i64 1422, !7, i64 1424, !7, i64 1428, !7, i64 1432, !10, i64 1440, !14, i64 1472, !14, i64 1473, !14, i64 1474, !14, i64 1475, !7, i64 1476, !7, i64 1480, !14, i64 1484, !14, i64 1485, !14, i64 1486, !14, i64 1487, !7, i64 1488, !7, i64 1492, !7, i64 1496, !7, i64 1500, !27, i64 1504, !31, i64 1528, !19, i64 1552, !19, i64 1560, !19, i64 1568, !19, i64 1576, !19, i64 1584, !19, i64 1592, !8, i64 1600, !19, i64 1624, !8, i64 1632, !8, i64 1656, !8, i64 1680, !8, i64 1704, !19, i64 1728, !8, i64 1736, !8, i64 1760, !19, i64 1784, !8, i64 1792, !35, i64 1864, !14, i64 1912, !14, i64 1913, !14, i64 1914, !14, i64 1915, !14, i64 1916, !14, i64 1917, !14, i64 1918, !14, i64 1919, !19, i64 1920, !19, i64 1928, !19, i64 1936, !19, i64 1944, !7, i64 1952, !7, i64 1956, !7, i64 1960, !7, i64 1964, !7, i64 1968, !7, i64 1972, !7, i64 1976, !7, i64 1980, !7, i64 1984, !14, i64 1988, !19, i64 1992, !19, i64 2000, !43, i64 2008}
!7 = !{!"int", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !11, i64 0, !13, i64 8, !8, i64 16}
!11 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !12, i64 0}
!12 = !{!"any pointer", !8, i64 0}
!13 = !{!"long", !8, i64 0}
!14 = !{!"bool", !8, i64 0}
!15 = !{!"_ZTSSt6vectorIjSaIjEE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!19 = !{!"double", !8, i64 0}
!20 = !{!"_ZTS8mdvectorIdE", !7, i64 0, !13, i64 8, !13, i64 16, !21, i64 24, !21, i64 48, !22, i64 72, !12, i64 96, !14, i64 104}
!21 = !{!"_ZTSSt5arrayIjLm6EE", !8, i64 0}
!22 = !{!"_ZTSSt6vectorIdSaIdEE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIdSaIdEE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIdSaIdEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!26 = !{!"short", !8, i64 0}
!27 = !{!"_ZTSSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!31 = !{!"_ZTSSt6vectorIiSaIiEE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIiSaIiEE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIiSaIiEE17_Vector_impl_dataE", !12, i64 0, !12, i64 8, !12, i64 16}
!35 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_St4lessIS5_ESaISt4pairIKS5_S5_EEE", !36, i64 0}
!36 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE", !37, i64 0}
!37 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_S5_ESt10_Select1stIS8_ESt4lessIS5_ESaIS8_EE13_Rb_tree_implISC_Lb1EEE", !38, i64 0, !40, i64 8}
!38 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !39, i64 0}
!39 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!40 = !{!"_ZTSSt15_Rb_tree_header", !41, i64 0, !13, i64 32}
!41 = !{!"_ZTSSt18_Rb_tree_node_base", !42, i64 0, !12, i64 8, !12, i64 16, !12, i64 24}
!42 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!43 = !{!"_ZTS5Timer", !44, i64 0, !44, i64 8, !19, i64 16, !10, i64 24}
!44 = !{!"_ZTSNSt6chrono10time_pointINS_3_V212system_clockENS_8durationIlSt5ratioILl1ELl1000000000EEEEEE", !45, i64 0}
!45 = !{!"_ZTSNSt6chrono8durationIlSt5ratioILl1ELl1000000000EEEE", !13, i64 0}
!46 = !{!6, !7, i64 16}
!47 = !{!6, !19, i64 352}
!48 = !{!6, !7, i64 56}
!49 = !{!6, !19, i64 960}
!50 = !{!6, !19, i64 968}
!51 = !{!6, !19, i64 1024}
!52 = !{!6, !19, i64 984}
!53 = !{!6, !19, i64 1104}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass