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

; 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_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::__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::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
@__func__._Z14compute_U_initdddjPK11InputStruct = external hidden unnamed_addr constant [15 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [48 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.14 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [20 x i8], align 1

; Function Attrs: mustprogress uwtable
define dso_local noundef double @_Z14compute_U_initdddjPK11InputStruct(double noundef %0, double noundef %1, double noundef %2, i32 noundef %3, ptr noundef %4) #0 personality ptr @__gxx_personality_v0 {
  %6 = alloca double, align 8
  %7 = alloca double, align 8
  %8 = alloca double, align 8
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca double, align 8
  %12 = alloca double, 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 %"class.std::__cxx11::basic_stringstream", align 8
  %26 = alloca ptr, align 8
  %27 = alloca i32, align 4
  %28 = alloca %"class.std::__cxx11::basic_string", align 8
  %29 = alloca i1, align 1
  %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 double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %48 = alloca %"class.std::__cxx11::basic_string", align 8
  %49 = alloca i1, align 1
  %50 = alloca %"class.std::__cxx11::basic_stringstream", align 8
  %51 = alloca %"class.std::__cxx11::basic_string", align 8
  %52 = alloca i1, align 1
  store double %0, ptr %6, align 8, !tbaa !5
  store double %1, ptr %7, align 8, !tbaa !5
  store double %2, ptr %8, align 8, !tbaa !5
  store i32 %3, ptr %9, align 4, !tbaa !9
  store ptr %4, ptr %10, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #7
  store double 0.000000e+00, ptr %11, align 8, !tbaa !5
  %53 = load ptr, ptr %10, align 8, !tbaa !11
  %54 = getelementptr inbounds %struct.InputStruct, ptr %53, i32 0, i32 0
  %55 = load i32, ptr %54, align 8, !tbaa !13
  %56 = icmp eq i32 %55, 0
  br i1 %56, label %57, label %89

57:                                               ; preds = %5
  %58 = load ptr, ptr %10, align 8, !tbaa !11
  %59 = getelementptr inbounds %struct.InputStruct, ptr %58, i32 0, i32 4
  %60 = load i32, ptr %59, align 8, !tbaa !49
  %61 = icmp eq i32 %60, 2
  br i1 %61, label %62, label %70

62:                                               ; preds = %57
  %63 = load double, ptr %6, align 8, !tbaa !5
  %64 = fmul double 0x400921FB54442D18, %63
  %65 = call double @sin(double noundef %64) #7
  %66 = load double, ptr %7, align 8, !tbaa !5
  %67 = fmul double 0x400921FB54442D18, %66
  %68 = call double @sin(double noundef %67) #7
  %69 = fmul double %65, %68
  store double %69, ptr %11, align 8, !tbaa !5
  br label %88

70:                                               ; preds = %57
  %71 = load ptr, ptr %10, align 8, !tbaa !11
  %72 = getelementptr inbounds %struct.InputStruct, ptr %71, i32 0, i32 4
  %73 = load i32, ptr %72, align 8, !tbaa !49
  %74 = icmp eq i32 %73, 3
  br i1 %74, label %75, label %87

75:                                               ; preds = %70
  %76 = load double, ptr %6, align 8, !tbaa !5
  %77 = fmul double 0x400921FB54442D18, %76
  %78 = call double @sin(double noundef %77) #7
  %79 = load double, ptr %7, align 8, !tbaa !5
  %80 = fmul double 0x400921FB54442D18, %79
  %81 = call double @sin(double noundef %80) #7
  %82 = fmul double %78, %81
  %83 = load double, ptr %8, align 8, !tbaa !5
  %84 = fmul double 0x400921FB54442D18, %83
  %85 = call double @sin(double noundef %84) #7
  %86 = fmul double %82, %85
  store double %86, ptr %11, align 8, !tbaa !5
  br label %87

87:                                               ; preds = %75, %70
  br label %88

88:                                               ; preds = %87, %62
  br label %710

89:                                               ; preds = %5
  %90 = load ptr, ptr %10, align 8, !tbaa !11
  %91 = getelementptr inbounds %struct.InputStruct, ptr %90, i32 0, i32 0
  %92 = load i32, ptr %91, align 8, !tbaa !13
  %93 = icmp eq i32 %92, 1
  br i1 %93, label %94, label %673

94:                                               ; preds = %89
  %95 = load ptr, ptr %10, align 8, !tbaa !11
  %96 = getelementptr inbounds %struct.InputStruct, ptr %95, i32 0, i32 14
  %97 = load i32, ptr %96, align 8, !tbaa !50
  %98 = icmp eq i32 %97, 1
  br i1 %98, label %104, label %99

99:                                               ; preds = %94
  %100 = load ptr, ptr %10, align 8, !tbaa !11
  %101 = getelementptr inbounds %struct.InputStruct, ptr %100, i32 0, i32 14
  %102 = load i32, ptr %101, align 8, !tbaa !50
  %103 = icmp eq i32 %102, 3
  br i1 %103, label %104, label %310

104:                                              ; preds = %99, %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #7
  %105 = load ptr, ptr %10, align 8, !tbaa !11
  %106 = getelementptr inbounds %struct.InputStruct, ptr %105, i32 0, i32 14
  %107 = load i32, ptr %106, align 8, !tbaa !50
  %108 = icmp eq i32 %107, 1
  br i1 %108, label %109, label %167

109:                                              ; preds = %104
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  store double 5.000000e+00, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #7
  store double 1.000000e+00, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %110 = load double, ptr %6, align 8, !tbaa !5
  %111 = load double, ptr %6, align 8, !tbaa !5
  %112 = fneg double %110
  %113 = call double @llvm.fmuladd.f64(double %112, double %111, double 1.000000e+00)
  %114 = load double, ptr %7, align 8, !tbaa !5
  %115 = load double, ptr %7, align 8, !tbaa !5
  %116 = fneg double %114
  %117 = call double @llvm.fmuladd.f64(double %116, double %115, double %113)
  %118 = load double, ptr %17, align 8, !tbaa !5
  %119 = fdiv double %117, %118
  store double %119, ptr %18, align 8, !tbaa !5
  %120 = load double, ptr %16, align 8, !tbaa !5
  %121 = load double, ptr %16, align 8, !tbaa !5
  %122 = fmul double %120, %121
  %123 = load ptr, ptr %10, align 8, !tbaa !11
  %124 = getelementptr inbounds %struct.InputStruct, ptr %123, i32 0, i32 50
  %125 = load double, ptr %124, align 8, !tbaa !51
  %126 = fsub double %125, 1.000000e+00
  %127 = fmul double %122, %126
  %128 = load ptr, ptr %10, align 8, !tbaa !11
  %129 = getelementptr inbounds %struct.InputStruct, ptr %128, i32 0, i32 50
  %130 = load double, ptr %129, align 8, !tbaa !51
  %131 = fmul double 8.000000e+00, %130
  %132 = fmul double %131, 0x400921FB54442D18
  %133 = fmul double %132, 0x400921FB54442D18
  %134 = fdiv double %127, %133
  %135 = load double, ptr %18, align 8, !tbaa !5
  %136 = call double @exp(double noundef %135) #7
  %137 = fneg double %134
  %138 = call double @llvm.fmuladd.f64(double %137, double %136, double 1.000000e+00)
  %139 = load ptr, ptr %10, align 8, !tbaa !11
  %140 = getelementptr inbounds %struct.InputStruct, ptr %139, i32 0, i32 50
  %141 = load double, ptr %140, align 8, !tbaa !51
  %142 = fsub double %141, 1.000000e+00
  %143 = fdiv double 1.000000e+00, %142
  %144 = call double @pow(double noundef %138, double noundef %143) #7
  store double %144, ptr %12, align 8, !tbaa !5
  %145 = load double, ptr %16, align 8, !tbaa !5
  %146 = load double, ptr %7, align 8, !tbaa !5
  %147 = fmul double %145, %146
  %148 = fdiv double %147, 0x401921FB54442D18
  %149 = load double, ptr %18, align 8, !tbaa !5
  %150 = fmul double 5.000000e-01, %149
  %151 = call double @exp(double noundef %150) #7
  %152 = fneg double %148
  %153 = call double @llvm.fmuladd.f64(double %152, double %151, double 1.000000e+00)
  store double %153, ptr %13, align 8, !tbaa !5
  %154 = load double, ptr %16, align 8, !tbaa !5
  %155 = load double, ptr %6, align 8, !tbaa !5
  %156 = fmul double %154, %155
  %157 = fdiv double %156, 0x401921FB54442D18
  %158 = load double, ptr %18, align 8, !tbaa !5
  %159 = fmul double 5.000000e-01, %158
  %160 = call double @exp(double noundef %159) #7
  %161 = call double @llvm.fmuladd.f64(double %157, double %160, double 1.000000e+00)
  store double %161, ptr %14, align 8, !tbaa !5
  %162 = load double, ptr %12, align 8, !tbaa !5
  %163 = load ptr, ptr %10, align 8, !tbaa !11
  %164 = getelementptr inbounds %struct.InputStruct, ptr %163, i32 0, i32 50
  %165 = load double, ptr %164, align 8, !tbaa !51
  %166 = call double @pow(double noundef %162, double noundef %165) #7
  store double %166, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  br label %245

167:                                              ; preds = %104
  %168 = load ptr, ptr %10, align 8, !tbaa !11
  %169 = getelementptr inbounds %struct.InputStruct, ptr %168, i32 0, i32 14
  %170 = load i32, ptr %169, align 8, !tbaa !50
  %171 = icmp eq i32 %170, 3
  br i1 %171, label %172, label %244

172:                                              ; preds = %167
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #7
  store double 2.000000e+01, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  store double 1.350000e+01, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  store double 4.000000e-01, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  store double 1.500000e+00, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  %173 = load double, ptr %20, align 8, !tbaa !5
  %174 = load double, ptr %22, align 8, !tbaa !5
  %175 = fmul double 0x401921FB54442D18, %174
  %176 = fdiv double %173, %175
  store double %176, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  %177 = load double, ptr %6, align 8, !tbaa !5
  %178 = load double, ptr %6, align 8, !tbaa !5
  %179 = fneg double %177
  %180 = call double @llvm.fmuladd.f64(double %179, double %178, double 1.000000e+00)
  %181 = load double, ptr %7, align 8, !tbaa !5
  %182 = load double, ptr %7, align 8, !tbaa !5
  %183 = fneg double %181
  %184 = call double @llvm.fmuladd.f64(double %183, double %182, double %180)
  %185 = load double, ptr %22, align 8, !tbaa !5
  %186 = fmul double 2.000000e+00, %185
  %187 = load double, ptr %22, align 8, !tbaa !5
  %188 = fmul double %186, %187
  %189 = fdiv double %184, %188
  %190 = call double @exp(double noundef %189) #7
  store double %190, ptr %24, align 8, !tbaa !5
  %191 = load ptr, ptr %10, align 8, !tbaa !11
  %192 = getelementptr inbounds %struct.InputStruct, ptr %191, i32 0, i32 50
  %193 = load double, ptr %192, align 8, !tbaa !51
  %194 = fsub double %193, 1.000000e+00
  %195 = fmul double 5.000000e-01, %194
  %196 = load double, ptr %23, align 8, !tbaa !5
  %197 = fmul double %195, %196
  %198 = load double, ptr %23, align 8, !tbaa !5
  %199 = fmul double %197, %198
  %200 = load double, ptr %21, align 8, !tbaa !5
  %201 = fmul double %199, %200
  %202 = load double, ptr %21, align 8, !tbaa !5
  %203 = fmul double %201, %202
  %204 = load double, ptr %22, align 8, !tbaa !5
  %205 = fmul double %203, %204
  %206 = load double, ptr %22, align 8, !tbaa !5
  %207 = fmul double %205, %206
  %208 = load double, ptr %24, align 8, !tbaa !5
  %209 = fmul double %207, %208
  %210 = load double, ptr %24, align 8, !tbaa !5
  %211 = fneg double %209
  %212 = call double @llvm.fmuladd.f64(double %211, double %210, double 1.000000e+00)
  %213 = load ptr, ptr %10, align 8, !tbaa !11
  %214 = getelementptr inbounds %struct.InputStruct, ptr %213, i32 0, i32 50
  %215 = load double, ptr %214, align 8, !tbaa !51
  %216 = fsub double %215, 1.000000e+00
  %217 = fdiv double 1.000000e+00, %216
  %218 = call double @pow(double noundef %212, double noundef %217) #7
  store double %218, ptr %12, align 8, !tbaa !5
  %219 = load double, ptr %23, align 8, !tbaa !5
  %220 = fneg double %219
  %221 = load double, ptr %24, align 8, !tbaa !5
  %222 = fmul double %220, %221
  %223 = load double, ptr %7, align 8, !tbaa !5
  %224 = fmul double %222, %223
  store double %224, ptr %13, align 8, !tbaa !5
  %225 = load double, ptr %23, align 8, !tbaa !5
  %226 = load double, ptr %24, align 8, !tbaa !5
  %227 = fmul double %225, %226
  %228 = load double, ptr %6, align 8, !tbaa !5
  %229 = call double @llvm.fmuladd.f64(double %227, double %228, double 1.000000e+00)
  store double %229, ptr %14, align 8, !tbaa !5
  %230 = load ptr, ptr %10, align 8, !tbaa !11
  %231 = getelementptr inbounds %struct.InputStruct, ptr %230, i32 0, i32 50
  %232 = load double, ptr %231, align 8, !tbaa !51
  %233 = load double, ptr %21, align 8, !tbaa !5
  %234 = fmul double %232, %233
  %235 = load double, ptr %21, align 8, !tbaa !5
  %236 = fmul double %234, %235
  %237 = fdiv double 1.000000e+00, %236
  %238 = load double, ptr %12, align 8, !tbaa !5
  %239 = load ptr, ptr %10, align 8, !tbaa !11
  %240 = getelementptr inbounds %struct.InputStruct, ptr %239, i32 0, i32 50
  %241 = load double, ptr %240, align 8, !tbaa !51
  %242 = call double @pow(double noundef %238, double noundef %241) #7
  %243 = fmul double %237, %242
  store double %243, ptr %15, align 8, !tbaa !5
  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
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #7
  br label %244

244:                                              ; preds = %172, %167
  br label %245

245:                                              ; preds = %244, %109
  %246 = load ptr, ptr %10, align 8, !tbaa !11
  %247 = getelementptr inbounds %struct.InputStruct, ptr %246, i32 0, i32 4
  %248 = load i32, ptr %247, align 8, !tbaa !49
  %249 = icmp eq i32 %248, 2
  br i1 %249, label %250, label %279

250:                                              ; preds = %245
  %251 = load i32, ptr %9, align 4, !tbaa !9
  switch i32 %251, label %278 [
    i32 0, label %252
    i32 1, label %254
    i32 2, label %258
    i32 3, label %262
  ]

252:                                              ; preds = %250
  %253 = load double, ptr %12, align 8, !tbaa !5
  store double %253, ptr %11, align 8, !tbaa !5
  br label %278

254:                                              ; preds = %250
  %255 = load double, ptr %12, align 8, !tbaa !5
  %256 = load double, ptr %13, align 8, !tbaa !5
  %257 = fmul double %255, %256
  store double %257, ptr %11, align 8, !tbaa !5
  br label %278

258:                                              ; preds = %250
  %259 = load double, ptr %12, align 8, !tbaa !5
  %260 = load double, ptr %14, align 8, !tbaa !5
  %261 = fmul double %259, %260
  store double %261, ptr %11, align 8, !tbaa !5
  br label %278

262:                                              ; preds = %250
  %263 = load double, ptr %15, align 8, !tbaa !5
  %264 = load ptr, ptr %10, align 8, !tbaa !11
  %265 = getelementptr inbounds %struct.InputStruct, ptr %264, i32 0, i32 50
  %266 = load double, ptr %265, align 8, !tbaa !51
  %267 = fsub double %266, 1.000000e+00
  %268 = fdiv double %263, %267
  %269 = load double, ptr %12, align 8, !tbaa !5
  %270 = fmul double 5.000000e-01, %269
  %271 = load double, ptr %13, align 8, !tbaa !5
  %272 = load double, ptr %13, align 8, !tbaa !5
  %273 = load double, ptr %14, align 8, !tbaa !5
  %274 = load double, ptr %14, align 8, !tbaa !5
  %275 = fmul double %273, %274
  %276 = call double @llvm.fmuladd.f64(double %271, double %272, double %275)
  %277 = call double @llvm.fmuladd.f64(double %270, double %276, double %268)
  store double %277, ptr %11, align 8, !tbaa !5
  br label %278

278:                                              ; preds = %262, %258, %254, %252, %250
  br label %309

279:                                              ; preds = %245
  %280 = load i32, ptr %9, align 4, !tbaa !9
  switch i32 %280, label %308 [
    i32 0, label %281
    i32 1, label %283
    i32 2, label %287
    i32 3, label %291
    i32 4, label %292
  ]

281:                                              ; preds = %279
  %282 = load double, ptr %12, align 8, !tbaa !5
  store double %282, ptr %11, align 8, !tbaa !5
  br label %308

283:                                              ; preds = %279
  %284 = load double, ptr %12, align 8, !tbaa !5
  %285 = load double, ptr %13, align 8, !tbaa !5
  %286 = fmul double %284, %285
  store double %286, ptr %11, align 8, !tbaa !5
  br label %308

287:                                              ; preds = %279
  %288 = load double, ptr %12, align 8, !tbaa !5
  %289 = load double, ptr %14, align 8, !tbaa !5
  %290 = fmul double %288, %289
  store double %290, ptr %11, align 8, !tbaa !5
  br label %308

291:                                              ; preds = %279
  store double 0.000000e+00, ptr %11, align 8, !tbaa !5
  br label %308

292:                                              ; preds = %279
  %293 = load double, ptr %15, align 8, !tbaa !5
  %294 = load ptr, ptr %10, align 8, !tbaa !11
  %295 = getelementptr inbounds %struct.InputStruct, ptr %294, i32 0, i32 50
  %296 = load double, ptr %295, align 8, !tbaa !51
  %297 = fsub double %296, 1.000000e+00
  %298 = fdiv double %293, %297
  %299 = load double, ptr %12, align 8, !tbaa !5
  %300 = fmul double 5.000000e-01, %299
  %301 = load double, ptr %13, align 8, !tbaa !5
  %302 = load double, ptr %13, align 8, !tbaa !5
  %303 = load double, ptr %14, align 8, !tbaa !5
  %304 = load double, ptr %14, align 8, !tbaa !5
  %305 = fmul double %303, %304
  %306 = call double @llvm.fmuladd.f64(double %301, double %302, double %305)
  %307 = call double @llvm.fmuladd.f64(double %300, double %306, double %298)
  store double %307, ptr %11, align 8, !tbaa !5
  br label %308

308:                                              ; preds = %292, %291, %287, %283, %281, %279
  br label %309

309:                                              ; preds = %308, %278
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  br label %672

310:                                              ; preds = %99
  %311 = load ptr, ptr %10, align 8, !tbaa !11
  %312 = getelementptr inbounds %struct.InputStruct, ptr %311, i32 0, i32 14
  %313 = load i32, ptr %312, align 8, !tbaa !50
  %314 = icmp eq i32 %313, 4
  br i1 %314, label %315, label %466

315:                                              ; preds = %310
  %316 = load ptr, ptr %10, align 8, !tbaa !11
  %317 = getelementptr inbounds %struct.InputStruct, ptr %316, i32 0, i32 4
  %318 = load i32, ptr %317, align 8, !tbaa !49
  %319 = icmp eq i32 %318, 2
  br i1 %319, label %320, label %356

320:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 392, ptr %25) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %25)
  %321 = getelementptr inbounds i8, ptr %25, i64 16
  %322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef @.str)
          to label %323 unwind label %339

323:                                              ; preds = %320
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %322, ptr noundef @.str.11)
          to label %325 unwind label %339

325:                                              ; preds = %323
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %324, i32 noundef 129)
          to label %327 unwind label %339

327:                                              ; preds = %325
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef @.str.11)
          to label %329 unwind label %339

329:                                              ; preds = %327
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %328, ptr noundef @__func__._Z14compute_U_initdddjPK11InputStruct)
          to label %331 unwind label %339

331:                                              ; preds = %329
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef @.str.12)
          to label %333 unwind label %339

333:                                              ; preds = %331
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef @.str.13)
          to label %335 unwind label %339

335:                                              ; preds = %333
  store i1 true, ptr %29, align 1
  %336 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #7
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %28, ptr noundef nonnull align 8 dereferenceable(128) %25)
          to label %337 unwind label %343

337:                                              ; preds = %335
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %336, ptr noundef nonnull align 8 dereferenceable(32) %28)
          to label %338 unwind label %347

338:                                              ; preds = %337
  store i1 false, ptr %29, align 1
  invoke void @__cxa_throw(ptr %336, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %718 unwind label %347

339:                                              ; preds = %333, %331, %329, %327, %325, %323, %320
  %340 = landingpad { ptr, i32 }
          cleanup
  %341 = extractvalue { ptr, i32 } %340, 0
  store ptr %341, ptr %26, align 8
  %342 = extractvalue { ptr, i32 } %340, 1
  store i32 %342, ptr %27, align 4
  br label %355

343:                                              ; preds = %335
  %344 = landingpad { ptr, i32 }
          cleanup
  %345 = extractvalue { ptr, i32 } %344, 0
  store ptr %345, ptr %26, align 8
  %346 = extractvalue { ptr, i32 } %344, 1
  store i32 %346, ptr %27, align 4
  br label %351

347:                                              ; preds = %338, %337
  %348 = landingpad { ptr, i32 }
          cleanup
  %349 = extractvalue { ptr, i32 } %348, 0
  store ptr %349, ptr %26, align 8
  %350 = extractvalue { ptr, i32 } %348, 1
  store i32 %350, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #7
  br label %351

351:                                              ; preds = %347, %343
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #7
  %352 = load i1, ptr %29, align 1
  br i1 %352, label %353, label %354

353:                                              ; preds = %351
  call void @__cxa_free_exception(ptr %336) #7
  br label %354

354:                                              ; preds = %353, %351
  br label %355

355:                                              ; preds = %354, %339
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %25) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %25) #7
  br label %712

356:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %357 = load ptr, ptr %10, align 8, !tbaa !11
  %358 = getelementptr inbounds %struct.InputStruct, ptr %357, i32 0, i32 60
  %359 = load double, ptr %358, align 8, !tbaa !52
  store double %359, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %360 = load ptr, ptr %10, align 8, !tbaa !11
  %361 = getelementptr inbounds %struct.InputStruct, ptr %360, i32 0, i32 57
  %362 = load double, ptr %361, align 8, !tbaa !53
  store double %362, ptr %31, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %363 = load ptr, ptr %10, align 8, !tbaa !11
  %364 = getelementptr inbounds %struct.InputStruct, ptr %363, i32 0, i32 55
  %365 = load double, ptr %364, align 8, !tbaa !54
  store double %365, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %366 = load ptr, ptr %10, align 8, !tbaa !11
  %367 = getelementptr inbounds %struct.InputStruct, ptr %366, i32 0, i32 58
  %368 = load double, ptr %367, align 8, !tbaa !55
  store double %368, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %369 = load double, ptr %31, align 8, !tbaa !5
  %370 = load double, ptr %6, align 8, !tbaa !5
  %371 = load double, ptr %30, align 8, !tbaa !5
  %372 = fdiv double %370, %371
  %373 = call double @sin(double noundef %372) #7
  %374 = fmul double %369, %373
  %375 = load double, ptr %7, align 8, !tbaa !5
  %376 = load double, ptr %30, align 8, !tbaa !5
  %377 = fdiv double %375, %376
  %378 = call double @cos(double noundef %377) #7
  %379 = fmul double %374, %378
  %380 = load double, ptr %8, align 8, !tbaa !5
  %381 = load double, ptr %30, align 8, !tbaa !5
  %382 = fdiv double %380, %381
  %383 = call double @cos(double noundef %382) #7
  %384 = fmul double %379, %383
  store double %384, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %385 = load double, ptr %31, align 8, !tbaa !5
  %386 = fneg double %385
  %387 = load double, ptr %6, align 8, !tbaa !5
  %388 = load double, ptr %30, align 8, !tbaa !5
  %389 = fdiv double %387, %388
  %390 = call double @cos(double noundef %389) #7
  %391 = fmul double %386, %390
  %392 = load double, ptr %7, align 8, !tbaa !5
  %393 = load double, ptr %30, align 8, !tbaa !5
  %394 = fdiv double %392, %393
  %395 = call double @sin(double noundef %394) #7
  %396 = fmul double %391, %395
  %397 = load double, ptr %8, align 8, !tbaa !5
  %398 = load double, ptr %30, align 8, !tbaa !5
  %399 = fdiv double %397, %398
  %400 = call double @cos(double noundef %399) #7
  %401 = fmul double %396, %400
  store double %401, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %402 = load double, ptr %33, align 8, !tbaa !5
  %403 = load double, ptr %32, align 8, !tbaa !5
  %404 = load double, ptr %31, align 8, !tbaa !5
  %405 = fmul double %403, %404
  %406 = load double, ptr %31, align 8, !tbaa !5
  %407 = fmul double %405, %406
  %408 = fdiv double %407, 1.600000e+01
  %409 = load double, ptr %6, align 8, !tbaa !5
  %410 = fmul double 2.000000e+00, %409
  %411 = load double, ptr %30, align 8, !tbaa !5
  %412 = fdiv double %410, %411
  %413 = call double @cos(double noundef %412) #7
  %414 = load double, ptr %7, align 8, !tbaa !5
  %415 = fmul double 2.000000e+00, %414
  %416 = load double, ptr %30, align 8, !tbaa !5
  %417 = fdiv double %415, %416
  %418 = call double @cos(double noundef %417) #7
  %419 = fadd double %413, %418
  %420 = fmul double %408, %419
  %421 = load double, ptr %8, align 8, !tbaa !5
  %422 = fmul double 2.000000e+00, %421
  %423 = load double, ptr %30, align 8, !tbaa !5
  %424 = fdiv double %422, %423
  %425 = call double @cos(double noundef %424) #7
  %426 = fadd double %425, 2.000000e+00
  %427 = call double @llvm.fmuladd.f64(double %420, double %426, double %402)
  store double %427, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %428 = load double, ptr %36, align 8, !tbaa !5
  %429 = load ptr, ptr %10, align 8, !tbaa !11
  %430 = getelementptr inbounds %struct.InputStruct, ptr %429, i32 0, i32 53
  %431 = load double, ptr %430, align 8, !tbaa !56
  %432 = load ptr, ptr %10, align 8, !tbaa !11
  %433 = getelementptr inbounds %struct.InputStruct, ptr %432, i32 0, i32 61
  %434 = load double, ptr %433, align 8, !tbaa !57
  %435 = fmul double %431, %434
  %436 = fdiv double %428, %435
  store double %436, ptr %37, align 8, !tbaa !5
  %437 = load i32, ptr %9, align 4, !tbaa !9
  switch i32 %437, label %465 [
    i32 0, label %438
    i32 1, label %440
    i32 2, label %444
    i32 3, label %448
    i32 4, label %449
  ]

438:                                              ; preds = %356
  %439 = load double, ptr %37, align 8, !tbaa !5
  store double %439, ptr %11, align 8, !tbaa !5
  br label %465

440:                                              ; preds = %356
  %441 = load double, ptr %37, align 8, !tbaa !5
  %442 = load double, ptr %34, align 8, !tbaa !5
  %443 = fmul double %441, %442
  store double %443, ptr %11, align 8, !tbaa !5
  br label %465

444:                                              ; preds = %356
  %445 = load double, ptr %37, align 8, !tbaa !5
  %446 = load double, ptr %35, align 8, !tbaa !5
  %447 = fmul double %445, %446
  store double %447, ptr %11, align 8, !tbaa !5
  br label %465

448:                                              ; preds = %356
  store double 0.000000e+00, ptr %11, align 8, !tbaa !5
  br label %465

449:                                              ; preds = %356
  %450 = load double, ptr %36, align 8, !tbaa !5
  %451 = load ptr, ptr %10, align 8, !tbaa !11
  %452 = getelementptr inbounds %struct.InputStruct, ptr %451, i32 0, i32 50
  %453 = load double, ptr %452, align 8, !tbaa !51
  %454 = fsub double %453, 1.000000e+00
  %455 = fdiv double %450, %454
  %456 = load double, ptr %37, align 8, !tbaa !5
  %457 = fmul double 5.000000e-01, %456
  %458 = load double, ptr %34, align 8, !tbaa !5
  %459 = load double, ptr %34, align 8, !tbaa !5
  %460 = load double, ptr %35, align 8, !tbaa !5
  %461 = load double, ptr %35, align 8, !tbaa !5
  %462 = fmul double %460, %461
  %463 = call double @llvm.fmuladd.f64(double %458, double %459, double %462)
  %464 = call double @llvm.fmuladd.f64(double %457, double %463, double %455)
  store double %464, ptr %11, align 8, !tbaa !5
  br label %465

465:                                              ; preds = %449, %448, %444, %440, %438, %356
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  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
  br label %671

466:                                              ; preds = %310
  %467 = load ptr, ptr %10, align 8, !tbaa !11
  %468 = getelementptr inbounds %struct.InputStruct, ptr %467, i32 0, i32 14
  %469 = load i32, ptr %468, align 8, !tbaa !50
  %470 = icmp eq i32 %469, 2
  br i1 %470, label %471, label %634

471:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %472 = load ptr, ptr %10, align 8, !tbaa !11
  %473 = getelementptr inbounds %struct.InputStruct, ptr %472, i32 0, i32 50
  %474 = load double, ptr %473, align 8, !tbaa !51
  store double %474, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #7
  %475 = load ptr, ptr %10, align 8, !tbaa !11
  %476 = getelementptr inbounds %struct.InputStruct, ptr %475, i32 0, i32 51
  %477 = load double, ptr %476, align 8, !tbaa !58
  store double %477, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %478 = load ptr, ptr %10, align 8, !tbaa !11
  %479 = getelementptr inbounds %struct.InputStruct, ptr %478, i32 0, i32 58
  %480 = load double, ptr %479, align 8, !tbaa !55
  store double %480, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %481 = load ptr, ptr %10, align 8, !tbaa !11
  %482 = getelementptr inbounds %struct.InputStruct, ptr %481, i32 0, i32 53
  %483 = load double, ptr %482, align 8, !tbaa !56
  store double %483, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %484 = load ptr, ptr %10, align 8, !tbaa !11
  %485 = getelementptr inbounds %struct.InputStruct, ptr %484, i32 0, i32 47
  %486 = call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %485, i32 noundef 0)
  store double %486, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %487 = load ptr, ptr %10, align 8, !tbaa !11
  %488 = getelementptr inbounds %struct.InputStruct, ptr %487, i32 0, i32 68
  %489 = load double, ptr %488, align 8, !tbaa !59
  store double %489, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %490 = load double, ptr %38, align 8, !tbaa !5
  %491 = load double, ptr %41, align 8, !tbaa !5
  %492 = fmul double %490, %491
  %493 = load double, ptr %38, align 8, !tbaa !5
  %494 = fsub double %493, 1.000000e+00
  %495 = fdiv double %492, %494
  store double %495, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %496 = load double, ptr %38, align 8, !tbaa !5
  %497 = load double, ptr %38, align 8, !tbaa !5
  %498 = fsub double %497, 1.000000e+00
  %499 = fdiv double %496, %498
  %500 = load double, ptr %40, align 8, !tbaa !5
  %501 = fmul double 2.000000e+00, %500
  %502 = fmul double %499, %501
  %503 = load double, ptr %44, align 8, !tbaa !5
  %504 = fmul double 2.000000e+00, %503
  %505 = load double, ptr %43, align 8, !tbaa !5
  %506 = load double, ptr %39, align 8, !tbaa !5
  %507 = load double, ptr %42, align 8, !tbaa !5
  %508 = fmul double %506, %507
  %509 = load double, ptr %42, align 8, !tbaa !5
  %510 = fmul double %508, %509
  %511 = load double, ptr %7, align 8, !tbaa !5
  %512 = fmul double %510, %511
  %513 = load double, ptr %7, align 8, !tbaa !5
  %514 = fsub double 1.000000e+00, %513
  %515 = fmul double %512, %514
  %516 = call double @llvm.fmuladd.f64(double %504, double %505, double %515)
  %517 = fdiv double %502, %516
  store double %517, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %518 = load double, ptr %40, align 8, !tbaa !5
  %519 = load double, ptr %39, align 8, !tbaa !5
  %520 = load double, ptr %39, align 8, !tbaa !5
  %521 = load double, ptr %42, align 8, !tbaa !5
  %522 = fmul double %520, %521
  %523 = load double, ptr %42, align 8, !tbaa !5
  %524 = load double, ptr %44, align 8, !tbaa !5
  %525 = fmul double 8.000000e+00, %524
  %526 = load double, ptr %43, align 8, !tbaa !5
  %527 = fmul double %525, %526
  %528 = call double @llvm.fmuladd.f64(double %522, double %523, double %527)
  %529 = fmul double %519, %528
  %530 = call double @sqrt(double noundef %529) #7
  %531 = fmul double %518, %530
  %532 = load double, ptr %39, align 8, !tbaa !5
  %533 = load double, ptr %39, align 8, !tbaa !5
  %534 = load double, ptr %42, align 8, !tbaa !5
  %535 = fmul double %533, %534
  %536 = load double, ptr %42, align 8, !tbaa !5
  %537 = load double, ptr %44, align 8, !tbaa !5
  %538 = fmul double 8.000000e+00, %537
  %539 = load double, ptr %43, align 8, !tbaa !5
  %540 = fmul double %538, %539
  %541 = call double @llvm.fmuladd.f64(double %535, double %536, double %540)
  %542 = fmul double %532, %541
  %543 = call double @sqrt(double noundef %542) #7
  %544 = load double, ptr %39, align 8, !tbaa !5
  %545 = load double, ptr %42, align 8, !tbaa !5
  %546 = call double @llvm.fmuladd.f64(double %544, double %545, double %543)
  %547 = load double, ptr %39, align 8, !tbaa !5
  %548 = load double, ptr %39, align 8, !tbaa !5
  %549 = load double, ptr %42, align 8, !tbaa !5
  %550 = fmul double %548, %549
  %551 = load double, ptr %42, align 8, !tbaa !5
  %552 = load double, ptr %44, align 8, !tbaa !5
  %553 = fmul double 8.000000e+00, %552
  %554 = load double, ptr %43, align 8, !tbaa !5
  %555 = fmul double %553, %554
  %556 = call double @llvm.fmuladd.f64(double %550, double %551, double %555)
  %557 = fmul double %547, %556
  %558 = call double @sqrt(double noundef %557) #7
  %559 = load double, ptr %39, align 8, !tbaa !5
  %560 = load double, ptr %42, align 8, !tbaa !5
  %561 = fneg double %559
  %562 = call double @llvm.fmuladd.f64(double %561, double %560, double %558)
  %563 = fdiv double %546, %562
  %564 = call double @log(double noundef %563) #7
  %565 = fmul double %531, %564
  %566 = load double, ptr %38, align 8, !tbaa !5
  %567 = fmul double %565, %566
  %568 = fmul double 4.000000e+00, %567
  %569 = load double, ptr %39, align 8, !tbaa !5
  %570 = load double, ptr %42, align 8, !tbaa !5
  %571 = fmul double %569, %570
  %572 = load double, ptr %39, align 8, !tbaa !5
  %573 = load double, ptr %42, align 8, !tbaa !5
  %574 = fmul double %572, %573
  %575 = load double, ptr %42, align 8, !tbaa !5
  %576 = load double, ptr %44, align 8, !tbaa !5
  %577 = fmul double 8.000000e+00, %576
  %578 = load double, ptr %43, align 8, !tbaa !5
  %579 = fmul double %577, %578
  %580 = call double @llvm.fmuladd.f64(double %574, double %575, double %579)
  %581 = fmul double %571, %580
  %582 = load double, ptr %38, align 8, !tbaa !5
  %583 = fsub double %582, 1.000000e+00
  %584 = fmul double %581, %583
  %585 = fdiv double %568, %584
  store double %585, ptr %46, align 8, !tbaa !5
  %586 = load ptr, ptr %10, align 8, !tbaa !11
  %587 = getelementptr inbounds %struct.InputStruct, ptr %586, i32 0, i32 4
  %588 = load i32, ptr %587, align 8, !tbaa !49
  %589 = icmp eq i32 %588, 2
  br i1 %589, label %590, label %611

590:                                              ; preds = %471
  %591 = load i32, ptr %9, align 4, !tbaa !9
  switch i32 %591, label %610 [
    i32 0, label %592
    i32 1, label %594
    i32 2, label %598
    i32 3, label %599
  ]

592:                                              ; preds = %590
  %593 = load double, ptr %46, align 8, !tbaa !5
  store double %593, ptr %11, align 8, !tbaa !5
  br label %610

594:                                              ; preds = %590
  %595 = load double, ptr %46, align 8, !tbaa !5
  %596 = load double, ptr %42, align 8, !tbaa !5
  %597 = fmul double %595, %596
  store double %597, ptr %11, align 8, !tbaa !5
  br label %610

598:                                              ; preds = %590
  store double 0.000000e+00, ptr %11, align 8, !tbaa !5
  br label %610

599:                                              ; preds = %590
  %600 = load double, ptr %40, align 8, !tbaa !5
  %601 = load double, ptr %38, align 8, !tbaa !5
  %602 = fsub double %601, 1.000000e+00
  %603 = fdiv double %600, %602
  %604 = load double, ptr %46, align 8, !tbaa !5
  %605 = fmul double 5.000000e-01, %604
  %606 = load double, ptr %42, align 8, !tbaa !5
  %607 = fmul double %605, %606
  %608 = load double, ptr %42, align 8, !tbaa !5
  %609 = call double @llvm.fmuladd.f64(double %607, double %608, double %603)
  store double %609, ptr %11, align 8, !tbaa !5
  br label %610

610:                                              ; preds = %599, %598, %594, %592, %590
  br label %633

611:                                              ; preds = %471
  %612 = load i32, ptr %9, align 4, !tbaa !9
  switch i32 %612, label %632 [
    i32 0, label %613
    i32 1, label %615
    i32 2, label %619
    i32 3, label %620
    i32 4, label %621
  ]

613:                                              ; preds = %611
  %614 = load double, ptr %46, align 8, !tbaa !5
  store double %614, ptr %11, align 8, !tbaa !5
  br label %632

615:                                              ; preds = %611
  %616 = load double, ptr %46, align 8, !tbaa !5
  %617 = load double, ptr %42, align 8, !tbaa !5
  %618 = fmul double %616, %617
  store double %618, ptr %11, align 8, !tbaa !5
  br label %632

619:                                              ; preds = %611
  store double 0.000000e+00, ptr %11, align 8, !tbaa !5
  br label %632

620:                                              ; preds = %611
  store double 0.000000e+00, ptr %11, align 8, !tbaa !5
  br label %632

621:                                              ; preds = %611
  %622 = load double, ptr %40, align 8, !tbaa !5
  %623 = load double, ptr %38, align 8, !tbaa !5
  %624 = fsub double %623, 1.000000e+00
  %625 = fdiv double %622, %624
  %626 = load double, ptr %46, align 8, !tbaa !5
  %627 = fmul double 5.000000e-01, %626
  %628 = load double, ptr %42, align 8, !tbaa !5
  %629 = fmul double %627, %628
  %630 = load double, ptr %42, align 8, !tbaa !5
  %631 = call double @llvm.fmuladd.f64(double %629, double %630, double %625)
  store double %631, ptr %11, align 8, !tbaa !5
  br label %632

632:                                              ; preds = %621, %620, %619, %615, %613, %611
  br label %633

633:                                              ; preds = %632, %610
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %670

634:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 392, ptr %47) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %47)
  %635 = getelementptr inbounds i8, ptr %47, i64 16
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %635, ptr noundef @.str)
          to label %637 unwind label %653

637:                                              ; preds = %634
  %638 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef @.str.11)
          to label %639 unwind label %653

639:                                              ; preds = %637
  %640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %638, i32 noundef 205)
          to label %641 unwind label %653

641:                                              ; preds = %639
  %642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %640, ptr noundef @.str.11)
          to label %643 unwind label %653

643:                                              ; preds = %641
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %642, ptr noundef @__func__._Z14compute_U_initdddjPK11InputStruct)
          to label %645 unwind label %653

645:                                              ; preds = %643
  %646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %644, ptr noundef @.str.12)
          to label %647 unwind label %653

647:                                              ; preds = %645
  %648 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %646, ptr noundef @.str.14)
          to label %649 unwind label %653

649:                                              ; preds = %647
  store i1 true, ptr %49, align 1
  %650 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #7
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %48, ptr noundef nonnull align 8 dereferenceable(128) %47)
          to label %651 unwind label %657

651:                                              ; preds = %649
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %650, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %652 unwind label %661

652:                                              ; preds = %651
  store i1 false, ptr %49, align 1
  invoke void @__cxa_throw(ptr %650, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %718 unwind label %661

653:                                              ; preds = %647, %645, %643, %641, %639, %637, %634
  %654 = landingpad { ptr, i32 }
          cleanup
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %26, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %27, align 4
  br label %669

657:                                              ; preds = %649
  %658 = landingpad { ptr, i32 }
          cleanup
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %26, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %27, align 4
  br label %665

661:                                              ; preds = %652, %651
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %26, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  br label %665

665:                                              ; preds = %661, %657
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #7
  %666 = load i1, ptr %49, align 1
  br i1 %666, label %667, label %668

667:                                              ; preds = %665
  call void @__cxa_free_exception(ptr %650) #7
  br label %668

668:                                              ; preds = %667, %665
  br label %669

669:                                              ; preds = %668, %653
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %47) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %47) #7
  br label %712

670:                                              ; preds = %633
  br label %671

671:                                              ; preds = %670, %465
  br label %672

672:                                              ; preds = %671, %309
  br label %709

673:                                              ; preds = %89
  call void @llvm.lifetime.start.p0(i64 392, ptr %50) #7
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %50)
  %674 = getelementptr inbounds i8, ptr %50, i64 16
  %675 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %674, ptr noundef @.str)
          to label %676 unwind label %692

676:                                              ; preds = %673
  %677 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %675, ptr noundef @.str.11)
          to label %678 unwind label %692

678:                                              ; preds = %676
  %679 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %677, i32 noundef 210)
          to label %680 unwind label %692

680:                                              ; preds = %678
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %679, ptr noundef @.str.11)
          to label %682 unwind label %692

682:                                              ; preds = %680
  %683 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %681, ptr noundef @__func__._Z14compute_U_initdddjPK11InputStruct)
          to label %684 unwind label %692

684:                                              ; preds = %682
  %685 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %683, ptr noundef @.str.12)
          to label %686 unwind label %692

686:                                              ; preds = %684
  %687 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %685, ptr noundef @.str.15)
          to label %688 unwind label %692

688:                                              ; preds = %686
  store i1 true, ptr %52, align 1
  %689 = call ptr @__cxa_allocate_exception(i64 16) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr %51) #7
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %51, ptr noundef nonnull align 8 dereferenceable(128) %50)
          to label %690 unwind label %696

690:                                              ; preds = %688
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %689, ptr noundef nonnull align 8 dereferenceable(32) %51)
          to label %691 unwind label %700

691:                                              ; preds = %690
  store i1 false, ptr %52, align 1
  invoke void @__cxa_throw(ptr %689, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %718 unwind label %700

692:                                              ; preds = %686, %684, %682, %680, %678, %676, %673
  %693 = landingpad { ptr, i32 }
          cleanup
  %694 = extractvalue { ptr, i32 } %693, 0
  store ptr %694, ptr %26, align 8
  %695 = extractvalue { ptr, i32 } %693, 1
  store i32 %695, ptr %27, align 4
  br label %708

696:                                              ; preds = %688
  %697 = landingpad { ptr, i32 }
          cleanup
  %698 = extractvalue { ptr, i32 } %697, 0
  store ptr %698, ptr %26, align 8
  %699 = extractvalue { ptr, i32 } %697, 1
  store i32 %699, ptr %27, align 4
  br label %704

700:                                              ; preds = %691, %690
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %26, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %27, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #7
  br label %704

704:                                              ; preds = %700, %696
  call void @llvm.lifetime.end.p0(i64 32, ptr %51) #7
  %705 = load i1, ptr %52, align 1
  br i1 %705, label %706, label %707

706:                                              ; preds = %704
  call void @__cxa_free_exception(ptr %689) #7
  br label %707

707:                                              ; preds = %706, %704
  br label %708

708:                                              ; preds = %707, %692
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %50) #7
  call void @llvm.lifetime.end.p0(i64 392, ptr %50) #7
  br label %712

709:                                              ; preds = %672
  br label %710

710:                                              ; preds = %709, %88
  %711 = load double, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  ret double %711

712:                                              ; preds = %708, %669, %355
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #7
  br label %713

713:                                              ; preds = %712
  %714 = load ptr, ptr %26, align 8
  %715 = load i32, ptr %27, align 4
  %716 = insertvalue { ptr, i32 } poison, ptr %714, 0
  %717 = insertvalue { ptr, i32 } %716, i32 %715, 1
  resume { ptr, i32 } %717

718:                                              ; preds = %691, %652, %338
  unreachable
}

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

; Function Attrs: nounwind
declare double @sin(double noundef) #2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #0 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)) #0 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 #2

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: nounwind
declare double @cos(double noundef) #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: nounwind
declare double @sqrt(double noundef) #2

; Function Attrs: nounwind
declare double @log(double noundef) #2

attributes #0 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !10, i64 56}
!51 = !{!14, !6, i64 960}
!52 = !{!14, !6, i64 1040}
!53 = !{!14, !6, i64 1016}
!54 = !{!14, !6, i64 1000}
!55 = !{!14, !6, i64 1024}
!56 = !{!14, !6, i64 984}
!57 = !{!14, !6, i64 1048}
!58 = !{!14, !6, i64 968}
!59 = !{!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_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::__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::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
@__func__._Z14compute_U_initdddjPK11InputStruct = external hidden unnamed_addr constant [15 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [48 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.14 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [20 x i8], align 1

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

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

16:                                               ; preds = %13
  %17 = fmul double %0, 0x400921FB54442D18
  %18 = tail call double @sin(double noundef %17) #9
  %19 = fmul double %1, 0x400921FB54442D18
  %20 = tail call double @sin(double noundef %19) #9
  %21 = fmul double %18, %20
  br label %344

22:                                               ; preds = %13
  %23 = fmul double %0, 0x400921FB54442D18
  %24 = tail call double @sin(double noundef %23) #9
  %25 = fmul double %1, 0x400921FB54442D18
  %26 = tail call double @sin(double noundef %25) #9
  %27 = fmul double %24, %26
  %28 = fmul double %2, 0x400921FB54442D18
  %29 = tail call double @sin(double noundef %28) #9
  %30 = fmul double %27, %29
  br label %344

31:                                               ; preds = %5
  %32 = getelementptr inbounds i8, ptr %4, i64 56
  %33 = load i32, ptr %32, align 8, !tbaa !47
  switch i32 %33, label %290 [
    i32 2, label %233
    i32 4, label %141
    i32 1, label %34
    i32 3, label %65
  ]

34:                                               ; preds = %31
  %35 = fneg double %0
  %36 = tail call double @llvm.fmuladd.f64(double %35, double %0, double 1.000000e+00)
  %37 = fneg double %1
  %38 = tail call double @llvm.fmuladd.f64(double %37, double %1, double %36)
  %39 = getelementptr inbounds i8, ptr %4, i64 960
  %40 = load double, ptr %39, align 8, !tbaa !48
  %41 = fadd double %40, -1.000000e+00
  %42 = fmul double %40, 8.000000e+00
  %43 = fmul double %42, 0x400921FB54442D18
  %44 = fmul double %43, 0x400921FB54442D18
  %45 = tail call double @exp(double noundef %38) #9
  %46 = fmul double %41, -2.500000e+01
  %47 = fdiv double %46, %44
  %48 = tail call double @llvm.fmuladd.f64(double %47, double %45, double 1.000000e+00)
  %49 = load double, ptr %39, align 8, !tbaa !48
  %50 = fadd double %49, -1.000000e+00
  %51 = fdiv double 1.000000e+00, %50
  %52 = tail call double @pow(double noundef %48, double noundef %51) #9
  %53 = insertelement <2 x double> poison, double %1, i64 0
  %54 = insertelement <2 x double> %53, double %0, i64 1
  %55 = fmul <2 x double> %54, <double 5.000000e+00, double 5.000000e+00>
  %56 = fmul double %38, 5.000000e-01
  %57 = tail call double @exp(double noundef %56) #9
  %58 = fdiv <2 x double> %55, <double 0xC01921FB54442D18, double 0x401921FB54442D18>
  %59 = tail call double @exp(double noundef %56) #9
  %60 = insertelement <2 x double> poison, double %57, i64 0
  %61 = insertelement <2 x double> %60, double %59, i64 1
  %62 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %58, <2 x double> %61, <2 x double> <double 1.000000e+00, double 1.000000e+00>)
  %63 = load double, ptr %39, align 8, !tbaa !48
  %64 = tail call double @pow(double noundef %52, double noundef %63) #9
  br label %98

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

98:                                               ; preds = %65, %34
  %.0217 = phi double [ %64, %34 ], [ %95, %65 ]
  %.0214 = phi double [ %52, %34 ], [ %85, %65 ]
  %99 = phi <2 x double> [ %62, %34 ], [ %97, %65 ]
  %100 = getelementptr inbounds i8, ptr %4, i64 16
  %101 = load i32, ptr %100, align 8, !tbaa !46
  %102 = icmp eq i32 %101, 2
  br i1 %102, label %103, label %122

103:                                              ; preds = %98
  switch i32 %3, label %344 [
    i32 0, label %104
    i32 1, label %105
    i32 2, label %108
    i32 3, label %111
  ]

104:                                              ; preds = %103
  br label %344

105:                                              ; preds = %103
  %106 = extractelement <2 x double> %99, i64 0
  %107 = fmul double %106, %.0214
  br label %344

108:                                              ; preds = %103
  %109 = extractelement <2 x double> %99, i64 1
  %110 = fmul double %109, %.0214
  br label %344

111:                                              ; preds = %103
  %112 = getelementptr inbounds i8, ptr %4, i64 960
  %113 = load double, ptr %112, align 8, !tbaa !48
  %114 = fadd double %113, -1.000000e+00
  %115 = fdiv double %.0217, %114
  %116 = fmul double %.0214, 5.000000e-01
  %117 = fmul <2 x double> %99, %99
  %118 = extractelement <2 x double> %117, i64 1
  %119 = extractelement <2 x double> %99, i64 0
  %120 = tail call double @llvm.fmuladd.f64(double %119, double %119, double %118)
  %121 = tail call double @llvm.fmuladd.f64(double %116, double %120, double %115)
  br label %344

122:                                              ; preds = %98
  switch i32 %3, label %344 [
    i32 0, label %123
    i32 1, label %124
    i32 2, label %127
    i32 4, label %130
  ]

123:                                              ; preds = %122
  br label %344

124:                                              ; preds = %122
  %125 = extractelement <2 x double> %99, i64 0
  %126 = fmul double %125, %.0214
  br label %344

127:                                              ; preds = %122
  %128 = extractelement <2 x double> %99, i64 1
  %129 = fmul double %128, %.0214
  br label %344

130:                                              ; preds = %122
  %131 = getelementptr inbounds i8, ptr %4, i64 960
  %132 = load double, ptr %131, align 8, !tbaa !48
  %133 = fadd double %132, -1.000000e+00
  %134 = fdiv double %.0217, %133
  %135 = fmul double %.0214, 5.000000e-01
  %136 = fmul <2 x double> %99, %99
  %137 = extractelement <2 x double> %136, i64 1
  %138 = extractelement <2 x double> %99, i64 0
  %139 = tail call double @llvm.fmuladd.f64(double %138, double %138, double %137)
  %140 = tail call double @llvm.fmuladd.f64(double %135, double %139, double %134)
  br label %344

141:                                              ; preds = %31
  %142 = getelementptr inbounds i8, ptr %4, i64 16
  %143 = load i32, ptr %142, align 8, !tbaa !46
  %144 = icmp eq i32 %143, 2
  br i1 %144, label %145, label %172

145:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %6) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %6)
  %146 = getelementptr inbounds i8, ptr %6, i64 16
  %147 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef nonnull @.str)
          to label %148 unwind label %165

148:                                              ; preds = %145
  %149 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull @.str.11)
          to label %150 unwind label %165

150:                                              ; preds = %148
  %151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %149, i32 noundef 129)
          to label %152 unwind label %165

152:                                              ; preds = %150
  %153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull @.str.11)
          to label %154 unwind label %165

154:                                              ; preds = %152
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %153, ptr noundef nonnull @__func__._Z14compute_U_initdddjPK11InputStruct)
          to label %156 unwind label %165

156:                                              ; preds = %154
  %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef nonnull @.str.12)
          to label %158 unwind label %165

158:                                              ; preds = %156
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull @.str.13)
          to label %160 unwind label %165

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

162:                                              ; preds = %160
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %161, ptr noundef nonnull align 8 dereferenceable(32) %7)
          to label %164 unwind label %.thread247

.thread247:                                       ; preds = %162
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %170

164:                                              ; preds = %162
  invoke void @__cxa_throw(ptr nonnull %161, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %346 unwind label %168

165:                                              ; preds = %158, %156, %154, %152, %150, %148, %145
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %171

.thread:                                          ; preds = %160
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %170

168:                                              ; preds = %164
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %7) #9
  br label %171

170:                                              ; preds = %.thread247, %.thread
  %.pn240246 = phi { ptr, i32 } [ %167, %.thread ], [ %163, %.thread247 ]
  call void @__cxa_free_exception(ptr %161) #9
  br label %171

171:                                              ; preds = %168, %170, %165
  %.pn240.pn = phi { ptr, i32 } [ %.pn240246, %170 ], [ %169, %168 ], [ %166, %165 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %6) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %6) #9
  br label %345

172:                                              ; preds = %141
  %173 = getelementptr inbounds i8, ptr %4, i64 1040
  %174 = load double, ptr %173, align 8, !tbaa !49
  %175 = getelementptr inbounds i8, ptr %4, i64 1016
  %176 = load double, ptr %175, align 8, !tbaa !50
  %177 = getelementptr inbounds i8, ptr %4, i64 1000
  %178 = load double, ptr %177, align 8, !tbaa !51
  %179 = getelementptr inbounds i8, ptr %4, i64 1024
  %180 = load double, ptr %179, align 8, !tbaa !52
  %181 = fdiv double %0, %174
  %182 = tail call double @sin(double noundef %181) #9
  %183 = fmul double %176, %182
  %184 = fdiv double %1, %174
  %185 = tail call double @cos(double noundef %184) #9
  %186 = fmul double %183, %185
  %187 = fdiv double %2, %174
  %188 = tail call double @cos(double noundef %187) #9
  %189 = fmul double %186, %188
  %190 = fneg double %176
  %191 = tail call double @cos(double noundef %181) #9
  %192 = fmul double %191, %190
  %193 = tail call double @sin(double noundef %184) #9
  %194 = fmul double %192, %193
  %195 = tail call double @cos(double noundef %187) #9
  %196 = fmul double %194, %195
  %197 = fmul double %176, %178
  %198 = fmul double %176, %197
  %199 = fmul double %198, 6.250000e-02
  %200 = fmul double %0, 2.000000e+00
  %201 = fdiv double %200, %174
  %202 = tail call double @cos(double noundef %201) #9
  %203 = fmul double %1, 2.000000e+00
  %204 = fdiv double %203, %174
  %205 = tail call double @cos(double noundef %204) #9
  %206 = fadd double %202, %205
  %207 = fmul double %199, %206
  %208 = fmul double %2, 2.000000e+00
  %209 = fdiv double %208, %174
  %210 = tail call double @cos(double noundef %209) #9
  %211 = fadd double %210, 2.000000e+00
  %212 = tail call double @llvm.fmuladd.f64(double %207, double %211, double %180)
  %213 = getelementptr inbounds i8, ptr %4, i64 984
  %214 = load double, ptr %213, align 8, !tbaa !53
  %215 = getelementptr inbounds i8, ptr %4, i64 1048
  %216 = load double, ptr %215, align 8, !tbaa !54
  %217 = fmul double %214, %216
  %218 = fdiv double %212, %217
  switch i32 %3, label %344 [
    i32 0, label %219
    i32 1, label %220
    i32 2, label %222
    i32 4, label %224
  ]

219:                                              ; preds = %172
  br label %344

220:                                              ; preds = %172
  %221 = fmul double %189, %218
  br label %344

222:                                              ; preds = %172
  %223 = fmul double %196, %218
  br label %344

224:                                              ; preds = %172
  %225 = getelementptr inbounds i8, ptr %4, i64 960
  %226 = load double, ptr %225, align 8, !tbaa !48
  %227 = fadd double %226, -1.000000e+00
  %228 = fdiv double %212, %227
  %229 = fmul double %218, 5.000000e-01
  %230 = fmul double %196, %196
  %231 = tail call double @llvm.fmuladd.f64(double %189, double %189, double %230)
  %232 = tail call double @llvm.fmuladd.f64(double %229, double %231, double %228)
  br label %344

233:                                              ; preds = %31
  %234 = getelementptr inbounds i8, ptr %4, i64 960
  %235 = load double, ptr %234, align 8, !tbaa !48
  %236 = getelementptr inbounds i8, ptr %4, i64 968
  %237 = load double, ptr %236, align 8, !tbaa !55
  %238 = getelementptr inbounds i8, ptr %4, i64 1024
  %239 = load double, ptr %238, align 8, !tbaa !52
  %240 = getelementptr inbounds i8, ptr %4, i64 984
  %241 = load double, ptr %240, align 8, !tbaa !53
  %242 = getelementptr inbounds i8, ptr %4, i64 728
  %243 = tail call noundef double @_ZNK8mdvectorIdEclEj(ptr noundef nonnull align 8 dereferenceable(105) %242, i32 noundef 0)
  %244 = getelementptr inbounds i8, ptr %4, i64 1104
  %245 = load double, ptr %244, align 8, !tbaa !56
  %246 = fmul double %235, %241
  %247 = fadd double %235, -1.000000e+00
  %248 = fdiv double %246, %247
  %249 = fmul double %237, %243
  %250 = fmul double %248, 8.000000e+00
  %251 = fmul double %245, %250
  %252 = tail call double @llvm.fmuladd.f64(double %249, double %243, double %251)
  %253 = fmul double %237, %252
  %254 = tail call double @sqrt(double noundef %253) #9
  %255 = fmul double %239, %254
  %256 = tail call double @sqrt(double noundef %253) #9
  %257 = tail call double @llvm.fmuladd.f64(double %237, double %243, double %256)
  %258 = tail call double @sqrt(double noundef %253) #9
  %259 = fneg double %237
  %260 = tail call double @llvm.fmuladd.f64(double %259, double %243, double %258)
  %261 = fdiv double %257, %260
  %262 = tail call double @log(double noundef %261) #9
  %263 = fmul double %255, %262
  %264 = fmul double %235, %263
  %265 = fmul double %264, 4.000000e+00
  %266 = fmul double %249, %252
  %267 = fmul double %247, %266
  %268 = fdiv double %265, %267
  %269 = getelementptr inbounds i8, ptr %4, i64 16
  %270 = load i32, ptr %269, align 8, !tbaa !46
  %271 = icmp eq i32 %270, 2
  br i1 %271, label %272, label %281

272:                                              ; preds = %233
  switch i32 %3, label %344 [
    i32 0, label %273
    i32 1, label %274
    i32 3, label %276
  ]

273:                                              ; preds = %272
  br label %344

274:                                              ; preds = %272
  %275 = fmul double %243, %268
  br label %344

276:                                              ; preds = %272
  %277 = fdiv double %239, %247
  %278 = fmul double %268, 5.000000e-01
  %279 = fmul double %243, %278
  %280 = tail call double @llvm.fmuladd.f64(double %279, double %243, double %277)
  br label %344

281:                                              ; preds = %233
  switch i32 %3, label %344 [
    i32 0, label %282
    i32 1, label %283
    i32 4, label %285
  ]

282:                                              ; preds = %281
  br label %344

283:                                              ; preds = %281
  %284 = fmul double %243, %268
  br label %344

285:                                              ; preds = %281
  %286 = fdiv double %239, %247
  %287 = fmul double %268, 5.000000e-01
  %288 = fmul double %243, %287
  %289 = tail call double @llvm.fmuladd.f64(double %288, double %243, double %286)
  br label %344

290:                                              ; preds = %31
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %8) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %8)
  %291 = getelementptr inbounds i8, ptr %8, i64 16
  %292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull @.str)
          to label %293 unwind label %310

293:                                              ; preds = %290
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %292, ptr noundef nonnull @.str.11)
          to label %295 unwind label %310

295:                                              ; preds = %293
  %296 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %294, i32 noundef 205)
          to label %297 unwind label %310

297:                                              ; preds = %295
  %298 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %296, ptr noundef nonnull @.str.11)
          to label %299 unwind label %310

299:                                              ; preds = %297
  %300 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef nonnull @__func__._Z14compute_U_initdddjPK11InputStruct)
          to label %301 unwind label %310

301:                                              ; preds = %299
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef nonnull @.str.12)
          to label %303 unwind label %310

303:                                              ; preds = %301
  %304 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull @.str.14)
          to label %305 unwind label %310

305:                                              ; preds = %303
  %306 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %9) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %9, ptr noundef nonnull align 8 dereferenceable(128) %8)
          to label %307 unwind label %.thread249

307:                                              ; preds = %305
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %306, ptr noundef nonnull align 8 dereferenceable(32) %9)
          to label %309 unwind label %.thread253

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

309:                                              ; preds = %307
  invoke void @__cxa_throw(ptr nonnull %306, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %346 unwind label %313

310:                                              ; preds = %303, %301, %299, %297, %295, %293, %290
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %316

.thread249:                                       ; preds = %305
  %312 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %9) #9
  br label %315

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

315:                                              ; preds = %.thread253, %.thread249
  %.pn237252 = phi { ptr, i32 } [ %312, %.thread249 ], [ %308, %.thread253 ]
  call void @__cxa_free_exception(ptr %306) #9
  br label %316

316:                                              ; preds = %313, %315, %310
  %.pn237.pn = phi { ptr, i32 } [ %.pn237252, %315 ], [ %314, %313 ], [ %311, %310 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %8) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %8) #9
  br label %345

317:                                              ; preds = %5
  call void @llvm.lifetime.start.p0(i64 392, ptr nonnull %10) #9
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128) %10)
  %318 = getelementptr inbounds i8, ptr %10, i64 16
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %318, ptr noundef nonnull @.str)
          to label %320 unwind label %337

320:                                              ; preds = %317
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef nonnull @.str.11)
          to label %322 unwind label %337

322:                                              ; preds = %320
  %323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %321, i32 noundef 210)
          to label %324 unwind label %337

324:                                              ; preds = %322
  %325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %323, ptr noundef nonnull @.str.11)
          to label %326 unwind label %337

326:                                              ; preds = %324
  %327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %325, ptr noundef nonnull @__func__._Z14compute_U_initdddjPK11InputStruct)
          to label %328 unwind label %337

328:                                              ; preds = %326
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %327, ptr noundef nonnull @.str.12)
          to label %330 unwind label %337

330:                                              ; preds = %328
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull @.str.15)
          to label %332 unwind label %337

332:                                              ; preds = %330
  %333 = call ptr @__cxa_allocate_exception(i64 16) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #9
  invoke void @_ZNKSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %11, ptr noundef nonnull align 8 dereferenceable(128) %10)
          to label %334 unwind label %.thread255

334:                                              ; preds = %332
  invoke void @_ZNSt13runtime_errorC1ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(16) %333, ptr noundef nonnull align 8 dereferenceable(32) %11)
          to label %336 unwind label %.thread259

.thread259:                                       ; preds = %334
  %335 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  br label %342

336:                                              ; preds = %334
  invoke void @__cxa_throw(ptr nonnull %333, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %346 unwind label %340

337:                                              ; preds = %330, %328, %326, %324, %322, %320, %317
  %338 = landingpad { ptr, i32 }
          cleanup
  br label %343

.thread255:                                       ; preds = %332
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  br label %342

340:                                              ; preds = %336
  %341 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #9
  br label %343

342:                                              ; preds = %.thread259, %.thread255
  %.pn258 = phi { ptr, i32 } [ %339, %.thread255 ], [ %335, %.thread259 ]
  call void @__cxa_free_exception(ptr %333) #9
  br label %343

343:                                              ; preds = %340, %342, %337
  %.pn.pn = phi { ptr, i32 } [ %.pn258, %342 ], [ %341, %340 ], [ %338, %337 ]
  call void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(128) %10) #9
  call void @llvm.lifetime.end.p0(i64 392, ptr nonnull %10) #9
  br label %345

344:                                              ; preds = %276, %274, %273, %272, %285, %283, %282, %281, %172, %219, %220, %222, %224, %111, %108, %105, %104, %103, %130, %127, %124, %123, %122, %13, %16, %22
  %.3 = phi double [ %21, %16 ], [ %30, %22 ], [ 0.000000e+00, %13 ], [ 0.000000e+00, %103 ], [ %121, %111 ], [ %110, %108 ], [ %107, %105 ], [ %.0214, %104 ], [ %140, %130 ], [ %129, %127 ], [ %126, %124 ], [ %.0214, %123 ], [ 0.000000e+00, %122 ], [ %232, %224 ], [ %223, %222 ], [ %221, %220 ], [ %218, %219 ], [ 0.000000e+00, %172 ], [ %280, %276 ], [ %275, %274 ], [ %268, %273 ], [ %289, %285 ], [ %284, %283 ], [ %268, %282 ], [ 0.000000e+00, %272 ], [ 0.000000e+00, %281 ]
  ret double %.3

345:                                              ; preds = %343, %316, %171
  %.pn240.pn.pn = phi { ptr, i32 } [ %.pn240.pn, %171 ], [ %.pn237.pn, %316 ], [ %.pn.pn, %343 ]
  resume { ptr, i32 } %.pn240.pn.pn

346:                                              ; preds = %336, %309, %164
  unreachable
}

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(128)) unnamed_addr #0 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 #0 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 nofree nounwind willreturn memory(write)
declare double @cos(double noundef) local_unnamed_addr #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 nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #2

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

; 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 uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { 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 #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !7, i64 56}
!48 = !{!6, !19, i64 960}
!49 = !{!6, !19, i64 1040}
!50 = !{!6, !19, i64 1016}
!51 = !{!6, !19, i64 1000}
!52 = !{!6, !19, i64 1024}
!53 = !{!6, !19, i64 984}
!54 = !{!6, !19, i64 1048}
!55 = !{!6, !19, i64 968}
!56 = !{!6, !19, i64 1104}


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