; LLVM IR from buresjan/optim_lbm :: nomad/examples/advanced/library/Restart_VNS/problems/7_WILD3/bb.ll (Z6dfoveciiPKdiPd)

; 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"

@_ZL5SQRT5 = external hidden global double, align 8
@_ZL6SQRT10 = external hidden global double, align 8
@_ZL2Y1 = external hidden constant [15 x double], align 16
@_ZL1V = external hidden constant [11 x double], align 16
@_ZL2Y2 = external hidden constant [11 x double], align 16
@_ZL2Y3 = external hidden constant [16 x double], align 16
@_ZL2Y4 = external hidden constant [33 x double], align 16
@_ZL2Y5 = external hidden constant [65 x double], align 16

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

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

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

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

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

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

; Function Attrs: nounwind
declare double @cos(double noundef) #0

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z6dfoveciiPKdiPd(i32 noundef %0, i32 noundef %1, ptr noundef %2, i32 noundef %3, ptr noundef %4) #4 {
  %6 = alloca i1, align 1
  %7 = alloca i32, align 4
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %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 i32, align 4
  store i32 %0, ptr %7, align 4, !tbaa !5
  store i32 %1, ptr %8, align 4, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !9
  store i32 %3, ptr %10, align 4, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #5
  store double 0.000000e+00, ptr %20, align 8, !tbaa !11
  %22 = load i32, ptr %10, align 4, !tbaa !5
  %23 = icmp eq i32 %22, 1
  br i1 %23, label %24, label %78

24:                                               ; preds = %5
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %25

25:                                               ; preds = %37, %24
  %26 = load i32, ptr %13, align 4, !tbaa !5
  %27 = load i32, ptr %8, align 4, !tbaa !5
  %28 = icmp slt i32 %26, %27
  br i1 %28, label %29, label %40

29:                                               ; preds = %25
  %30 = load ptr, ptr %9, align 8, !tbaa !9
  %31 = load i32, ptr %13, align 4, !tbaa !5
  %32 = sext i32 %31 to i64
  %33 = getelementptr inbounds double, ptr %30, i64 %32
  %34 = load double, ptr %33, align 8, !tbaa !11
  %35 = load double, ptr %20, align 8, !tbaa !11
  %36 = fadd double %35, %34
  store double %36, ptr %20, align 8, !tbaa !11
  br label %37

37:                                               ; preds = %29
  %38 = load i32, ptr %13, align 4, !tbaa !5
  %39 = add nsw i32 %38, 1
  store i32 %39, ptr %13, align 4, !tbaa !5
  br label %25, !llvm.loop !13

40:                                               ; preds = %25
  %41 = load double, ptr %20, align 8, !tbaa !11
  %42 = fmul double 2.000000e+00, %41
  %43 = load i32, ptr %7, align 4, !tbaa !5
  %44 = sitofp i32 %43 to double
  %45 = fdiv double %42, %44
  %46 = fadd double %45, 1.000000e+00
  store double %46, ptr %14, align 8, !tbaa !11
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %47

47:                                               ; preds = %74, %40
  %48 = load i32, ptr %12, align 4, !tbaa !5
  %49 = load i32, ptr %7, align 4, !tbaa !5
  %50 = icmp slt i32 %48, %49
  br i1 %50, label %51, label %77

51:                                               ; preds = %47
  %52 = load double, ptr %14, align 8, !tbaa !11
  %53 = fneg double %52
  %54 = load ptr, ptr %11, align 8, !tbaa !9
  %55 = load i32, ptr %12, align 4, !tbaa !5
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds double, ptr %54, i64 %56
  store double %53, ptr %57, align 8, !tbaa !11
  %58 = load i32, ptr %12, align 4, !tbaa !5
  %59 = load i32, ptr %8, align 4, !tbaa !5
  %60 = icmp slt i32 %58, %59
  br i1 %60, label %61, label %73

61:                                               ; preds = %51
  %62 = load ptr, ptr %9, align 8, !tbaa !9
  %63 = load i32, ptr %12, align 4, !tbaa !5
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds double, ptr %62, i64 %64
  %66 = load double, ptr %65, align 8, !tbaa !11
  %67 = load ptr, ptr %11, align 8, !tbaa !9
  %68 = load i32, ptr %12, align 4, !tbaa !5
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds double, ptr %67, i64 %69
  %71 = load double, ptr %70, align 8, !tbaa !11
  %72 = fadd double %71, %66
  store double %72, ptr %70, align 8, !tbaa !11
  br label %73

73:                                               ; preds = %61, %51
  br label %74

74:                                               ; preds = %73
  %75 = load i32, ptr %12, align 4, !tbaa !5
  %76 = add nsw i32 %75, 1
  store i32 %76, ptr %12, align 4, !tbaa !5
  br label %47, !llvm.loop !15

77:                                               ; preds = %47
  br label %1674

78:                                               ; preds = %5
  %79 = load i32, ptr %10, align 4, !tbaa !5
  %80 = icmp eq i32 %79, 2
  br i1 %80, label %81, label %119

81:                                               ; preds = %78
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %82

82:                                               ; preds = %97, %81
  %83 = load i32, ptr %13, align 4, !tbaa !5
  %84 = load i32, ptr %8, align 4, !tbaa !5
  %85 = icmp sle i32 %83, %84
  br i1 %85, label %86, label %100

86:                                               ; preds = %82
  %87 = load i32, ptr %13, align 4, !tbaa !5
  %88 = sitofp i32 %87 to double
  %89 = load ptr, ptr %9, align 8, !tbaa !9
  %90 = load i32, ptr %13, align 4, !tbaa !5
  %91 = sub nsw i32 %90, 1
  %92 = sext i32 %91 to i64
  %93 = getelementptr inbounds double, ptr %89, i64 %92
  %94 = load double, ptr %93, align 8, !tbaa !11
  %95 = load double, ptr %20, align 8, !tbaa !11
  %96 = call double @llvm.fmuladd.f64(double %88, double %94, double %95)
  store double %96, ptr %20, align 8, !tbaa !11
  br label %97

97:                                               ; preds = %86
  %98 = load i32, ptr %13, align 4, !tbaa !5
  %99 = add nsw i32 %98, 1
  store i32 %99, ptr %13, align 4, !tbaa !5
  br label %82, !llvm.loop !16

100:                                              ; preds = %82
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %101

101:                                              ; preds = %115, %100
  %102 = load i32, ptr %12, align 4, !tbaa !5
  %103 = load i32, ptr %7, align 4, !tbaa !5
  %104 = icmp sle i32 %102, %103
  br i1 %104, label %105, label %118

105:                                              ; preds = %101
  %106 = load i32, ptr %12, align 4, !tbaa !5
  %107 = sitofp i32 %106 to double
  %108 = load double, ptr %20, align 8, !tbaa !11
  %109 = call double @llvm.fmuladd.f64(double %107, double %108, double -1.000000e+00)
  %110 = load ptr, ptr %11, align 8, !tbaa !9
  %111 = load i32, ptr %12, align 4, !tbaa !5
  %112 = sub nsw i32 %111, 1
  %113 = sext i32 %112 to i64
  %114 = getelementptr inbounds double, ptr %110, i64 %113
  store double %109, ptr %114, align 8, !tbaa !11
  br label %115

115:                                              ; preds = %105
  %116 = load i32, ptr %12, align 4, !tbaa !5
  %117 = add nsw i32 %116, 1
  store i32 %117, ptr %12, align 4, !tbaa !5
  br label %101, !llvm.loop !17

118:                                              ; preds = %101
  br label %1673

119:                                              ; preds = %78
  %120 = load i32, ptr %10, align 4, !tbaa !5
  %121 = icmp eq i32 %120, 3
  br i1 %121, label %122, label %165

122:                                              ; preds = %119
  store i32 2, ptr %13, align 4, !tbaa !5
  br label %123

123:                                              ; preds = %138, %122
  %124 = load i32, ptr %13, align 4, !tbaa !5
  %125 = load i32, ptr %8, align 4, !tbaa !5
  %126 = icmp slt i32 %124, %125
  br i1 %126, label %127, label %141

127:                                              ; preds = %123
  %128 = load i32, ptr %13, align 4, !tbaa !5
  %129 = sitofp i32 %128 to double
  %130 = load ptr, ptr %9, align 8, !tbaa !9
  %131 = load i32, ptr %13, align 4, !tbaa !5
  %132 = sub nsw i32 %131, 1
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds double, ptr %130, i64 %133
  %135 = load double, ptr %134, align 8, !tbaa !11
  %136 = load double, ptr %20, align 8, !tbaa !11
  %137 = call double @llvm.fmuladd.f64(double %129, double %135, double %136)
  store double %137, ptr %20, align 8, !tbaa !11
  br label %138

138:                                              ; preds = %127
  %139 = load i32, ptr %13, align 4, !tbaa !5
  %140 = add nsw i32 %139, 1
  store i32 %140, ptr %13, align 4, !tbaa !5
  br label %123, !llvm.loop !18

141:                                              ; preds = %123
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %142

142:                                              ; preds = %156, %141
  %143 = load i32, ptr %12, align 4, !tbaa !5
  %144 = load i32, ptr %7, align 4, !tbaa !5
  %145 = sub nsw i32 %144, 1
  %146 = icmp slt i32 %143, %145
  br i1 %146, label %147, label %159

147:                                              ; preds = %142
  %148 = load i32, ptr %12, align 4, !tbaa !5
  %149 = sitofp i32 %148 to double
  %150 = load double, ptr %20, align 8, !tbaa !11
  %151 = call double @llvm.fmuladd.f64(double %149, double %150, double -1.000000e+00)
  %152 = load ptr, ptr %11, align 8, !tbaa !9
  %153 = load i32, ptr %12, align 4, !tbaa !5
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds double, ptr %152, i64 %154
  store double %151, ptr %155, align 8, !tbaa !11
  br label %156

156:                                              ; preds = %147
  %157 = load i32, ptr %12, align 4, !tbaa !5
  %158 = add nsw i32 %157, 1
  store i32 %158, ptr %12, align 4, !tbaa !5
  br label %142, !llvm.loop !19

159:                                              ; preds = %142
  %160 = load ptr, ptr %11, align 8, !tbaa !9
  %161 = load i32, ptr %7, align 4, !tbaa !5
  %162 = sub nsw i32 %161, 1
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds double, ptr %160, i64 %163
  store double -1.000000e+00, ptr %164, align 8, !tbaa !11
  br label %1672

165:                                              ; preds = %119
  %166 = load i32, ptr %10, align 4, !tbaa !5
  %167 = icmp eq i32 %166, 4
  br i1 %167, label %168, label %189

168:                                              ; preds = %165
  %169 = load ptr, ptr %9, align 8, !tbaa !9
  %170 = getelementptr inbounds double, ptr %169, i64 1
  %171 = load double, ptr %170, align 8, !tbaa !11
  %172 = load ptr, ptr %9, align 8, !tbaa !9
  %173 = getelementptr inbounds double, ptr %172, i64 0
  %174 = load double, ptr %173, align 8, !tbaa !11
  %175 = load ptr, ptr %9, align 8, !tbaa !9
  %176 = getelementptr inbounds double, ptr %175, i64 0
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = fneg double %174
  %179 = call double @llvm.fmuladd.f64(double %178, double %177, double %171)
  %180 = fmul double 1.000000e+01, %179
  %181 = load ptr, ptr %11, align 8, !tbaa !9
  %182 = getelementptr inbounds double, ptr %181, i64 0
  store double %180, ptr %182, align 8, !tbaa !11
  %183 = load ptr, ptr %9, align 8, !tbaa !9
  %184 = getelementptr inbounds double, ptr %183, i64 0
  %185 = load double, ptr %184, align 8, !tbaa !11
  %186 = fsub double 1.000000e+00, %185
  %187 = load ptr, ptr %11, align 8, !tbaa !9
  %188 = getelementptr inbounds double, ptr %187, i64 1
  store double %186, ptr %188, align 8, !tbaa !11
  br label %1671

189:                                              ; preds = %165
  %190 = load i32, ptr %10, align 4, !tbaa !5
  %191 = icmp eq i32 %190, 5
  br i1 %191, label %192, label %258

192:                                              ; preds = %189
  %193 = load ptr, ptr %9, align 8, !tbaa !9
  %194 = getelementptr inbounds double, ptr %193, i64 0
  %195 = load double, ptr %194, align 8, !tbaa !11
  %196 = fcmp ogt double %195, 0.000000e+00
  br i1 %196, label %197, label %207

197:                                              ; preds = %192
  %198 = load ptr, ptr %9, align 8, !tbaa !9
  %199 = getelementptr inbounds double, ptr %198, i64 1
  %200 = load double, ptr %199, align 8, !tbaa !11
  %201 = load ptr, ptr %9, align 8, !tbaa !9
  %202 = getelementptr inbounds double, ptr %201, i64 0
  %203 = load double, ptr %202, align 8, !tbaa !11
  %204 = fdiv double %200, %203
  %205 = call double @atan(double noundef %204) #5
  %206 = fdiv double %205, 0x401921FB54442D18
  store double %206, ptr %14, align 8, !tbaa !11
  br label %225

207:                                              ; preds = %192
  %208 = load ptr, ptr %9, align 8, !tbaa !9
  %209 = getelementptr inbounds double, ptr %208, i64 0
  %210 = load double, ptr %209, align 8, !tbaa !11
  %211 = fcmp olt double %210, 0.000000e+00
  br i1 %211, label %212, label %223

212:                                              ; preds = %207
  %213 = load ptr, ptr %9, align 8, !tbaa !9
  %214 = getelementptr inbounds double, ptr %213, i64 1
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = load ptr, ptr %9, align 8, !tbaa !9
  %217 = getelementptr inbounds double, ptr %216, i64 0
  %218 = load double, ptr %217, align 8, !tbaa !11
  %219 = fdiv double %215, %218
  %220 = call double @atan(double noundef %219) #5
  %221 = fdiv double %220, 0x401921FB54442D18
  %222 = fadd double %221, 5.000000e-01
  store double %222, ptr %14, align 8, !tbaa !11
  br label %224

223:                                              ; preds = %207
  store double 2.500000e-01, ptr %14, align 8, !tbaa !11
  br label %224

224:                                              ; preds = %223, %212
  br label %225

225:                                              ; preds = %224, %197
  %226 = load ptr, ptr %9, align 8, !tbaa !9
  %227 = getelementptr inbounds double, ptr %226, i64 2
  %228 = load double, ptr %227, align 8, !tbaa !11
  %229 = load double, ptr %14, align 8, !tbaa !11
  %230 = call double @llvm.fmuladd.f64(double -1.000000e+01, double %229, double %228)
  %231 = fmul double 1.000000e+01, %230
  %232 = load ptr, ptr %11, align 8, !tbaa !9
  %233 = getelementptr inbounds double, ptr %232, i64 0
  store double %231, ptr %233, align 8, !tbaa !11
  %234 = load ptr, ptr %9, align 8, !tbaa !9
  %235 = getelementptr inbounds double, ptr %234, i64 0
  %236 = load double, ptr %235, align 8, !tbaa !11
  %237 = load ptr, ptr %9, align 8, !tbaa !9
  %238 = getelementptr inbounds double, ptr %237, i64 0
  %239 = load double, ptr %238, align 8, !tbaa !11
  %240 = load ptr, ptr %9, align 8, !tbaa !9
  %241 = getelementptr inbounds double, ptr %240, i64 1
  %242 = load double, ptr %241, align 8, !tbaa !11
  %243 = load ptr, ptr %9, align 8, !tbaa !9
  %244 = getelementptr inbounds double, ptr %243, i64 1
  %245 = load double, ptr %244, align 8, !tbaa !11
  %246 = fmul double %242, %245
  %247 = call double @llvm.fmuladd.f64(double %236, double %239, double %246)
  %248 = call double @sqrt(double noundef %247) #5
  %249 = fsub double %248, 1.000000e+00
  %250 = fmul double 1.000000e+01, %249
  %251 = load ptr, ptr %11, align 8, !tbaa !9
  %252 = getelementptr inbounds double, ptr %251, i64 1
  store double %250, ptr %252, align 8, !tbaa !11
  %253 = load ptr, ptr %9, align 8, !tbaa !9
  %254 = getelementptr inbounds double, ptr %253, i64 2
  %255 = load double, ptr %254, align 8, !tbaa !11
  %256 = load ptr, ptr %11, align 8, !tbaa !9
  %257 = getelementptr inbounds double, ptr %256, i64 2
  store double %255, ptr %257, align 8, !tbaa !11
  br label %1670

258:                                              ; preds = %189
  %259 = load i32, ptr %10, align 4, !tbaa !5
  %260 = icmp eq i32 %259, 6
  br i1 %260, label %261, label %304

261:                                              ; preds = %258
  %262 = load ptr, ptr %9, align 8, !tbaa !9
  %263 = getelementptr inbounds double, ptr %262, i64 0
  %264 = load double, ptr %263, align 8, !tbaa !11
  %265 = load ptr, ptr %9, align 8, !tbaa !9
  %266 = getelementptr inbounds double, ptr %265, i64 1
  %267 = load double, ptr %266, align 8, !tbaa !11
  %268 = call double @llvm.fmuladd.f64(double 1.000000e+01, double %267, double %264)
  %269 = load ptr, ptr %11, align 8, !tbaa !9
  %270 = getelementptr inbounds double, ptr %269, i64 0
  store double %268, ptr %270, align 8, !tbaa !11
  %271 = load double, ptr @_ZL5SQRT5, align 8, !tbaa !11
  %272 = load ptr, ptr %9, align 8, !tbaa !9
  %273 = getelementptr inbounds double, ptr %272, i64 2
  %274 = load double, ptr %273, align 8, !tbaa !11
  %275 = load ptr, ptr %9, align 8, !tbaa !9
  %276 = getelementptr inbounds double, ptr %275, i64 3
  %277 = load double, ptr %276, align 8, !tbaa !11
  %278 = fsub double %274, %277
  %279 = fmul double %271, %278
  %280 = load ptr, ptr %11, align 8, !tbaa !9
  %281 = getelementptr inbounds double, ptr %280, i64 1
  store double %279, ptr %281, align 8, !tbaa !11
  %282 = load ptr, ptr %9, align 8, !tbaa !9
  %283 = getelementptr inbounds double, ptr %282, i64 1
  %284 = load double, ptr %283, align 8, !tbaa !11
  %285 = load ptr, ptr %9, align 8, !tbaa !9
  %286 = getelementptr inbounds double, ptr %285, i64 2
  %287 = load double, ptr %286, align 8, !tbaa !11
  %288 = call double @llvm.fmuladd.f64(double -2.000000e+00, double %287, double %284)
  %289 = call double @pow(double noundef %288, double noundef 2.000000e+00) #5
  %290 = load ptr, ptr %11, align 8, !tbaa !9
  %291 = getelementptr inbounds double, ptr %290, i64 2
  store double %289, ptr %291, align 8, !tbaa !11
  %292 = load double, ptr @_ZL6SQRT10, align 8, !tbaa !11
  %293 = load ptr, ptr %9, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %293, i64 0
  %295 = load double, ptr %294, align 8, !tbaa !11
  %296 = load ptr, ptr %9, align 8, !tbaa !9
  %297 = getelementptr inbounds double, ptr %296, i64 3
  %298 = load double, ptr %297, align 8, !tbaa !11
  %299 = fsub double %295, %298
  %300 = call double @pow(double noundef %299, double noundef 2.000000e+00) #5
  %301 = fmul double %292, %300
  %302 = load ptr, ptr %11, align 8, !tbaa !9
  %303 = getelementptr inbounds double, ptr %302, i64 3
  store double %301, ptr %303, align 8, !tbaa !11
  br label %1669

304:                                              ; preds = %258
  %305 = load i32, ptr %10, align 4, !tbaa !5
  %306 = icmp eq i32 %305, 7
  br i1 %306, label %307, label %344

307:                                              ; preds = %304
  %308 = load ptr, ptr %9, align 8, !tbaa !9
  %309 = getelementptr inbounds double, ptr %308, i64 0
  %310 = load double, ptr %309, align 8, !tbaa !11
  %311 = fadd double -1.300000e+01, %310
  %312 = load ptr, ptr %9, align 8, !tbaa !9
  %313 = getelementptr inbounds double, ptr %312, i64 1
  %314 = load double, ptr %313, align 8, !tbaa !11
  %315 = fsub double 5.000000e+00, %314
  %316 = load ptr, ptr %9, align 8, !tbaa !9
  %317 = getelementptr inbounds double, ptr %316, i64 1
  %318 = load double, ptr %317, align 8, !tbaa !11
  %319 = call double @llvm.fmuladd.f64(double %315, double %318, double -2.000000e+00)
  %320 = load ptr, ptr %9, align 8, !tbaa !9
  %321 = getelementptr inbounds double, ptr %320, i64 1
  %322 = load double, ptr %321, align 8, !tbaa !11
  %323 = call double @llvm.fmuladd.f64(double %319, double %322, double %311)
  %324 = load ptr, ptr %11, align 8, !tbaa !9
  %325 = getelementptr inbounds double, ptr %324, i64 0
  store double %323, ptr %325, align 8, !tbaa !11
  %326 = load ptr, ptr %9, align 8, !tbaa !9
  %327 = getelementptr inbounds double, ptr %326, i64 0
  %328 = load double, ptr %327, align 8, !tbaa !11
  %329 = fadd double -2.900000e+01, %328
  %330 = load ptr, ptr %9, align 8, !tbaa !9
  %331 = getelementptr inbounds double, ptr %330, i64 1
  %332 = load double, ptr %331, align 8, !tbaa !11
  %333 = fadd double 1.000000e+00, %332
  %334 = load ptr, ptr %9, align 8, !tbaa !9
  %335 = getelementptr inbounds double, ptr %334, i64 1
  %336 = load double, ptr %335, align 8, !tbaa !11
  %337 = call double @llvm.fmuladd.f64(double %333, double %336, double -1.400000e+01)
  %338 = load ptr, ptr %9, align 8, !tbaa !9
  %339 = getelementptr inbounds double, ptr %338, i64 1
  %340 = load double, ptr %339, align 8, !tbaa !11
  %341 = call double @llvm.fmuladd.f64(double %337, double %340, double %329)
  %342 = load ptr, ptr %11, align 8, !tbaa !9
  %343 = getelementptr inbounds double, ptr %342, i64 1
  store double %341, ptr %343, align 8, !tbaa !11
  br label %1668

344:                                              ; preds = %304
  %345 = load i32, ptr %10, align 4, !tbaa !5
  %346 = icmp eq i32 %345, 8
  br i1 %346, label %347, label %399

347:                                              ; preds = %344
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %348

348:                                              ; preds = %395, %347
  %349 = load i32, ptr %12, align 4, !tbaa !5
  %350 = icmp sle i32 %349, 15
  br i1 %350, label %351, label %398

351:                                              ; preds = %348
  %352 = load i32, ptr %12, align 4, !tbaa !5
  %353 = sitofp i32 %352 to double
  store double %353, ptr %15, align 8, !tbaa !11
  %354 = load i32, ptr %12, align 4, !tbaa !5
  %355 = sub nsw i32 16, %354
  %356 = sitofp i32 %355 to double
  store double %356, ptr %16, align 8, !tbaa !11
  %357 = load double, ptr %15, align 8, !tbaa !11
  store double %357, ptr %17, align 8, !tbaa !11
  %358 = load i32, ptr %12, align 4, !tbaa !5
  %359 = icmp sgt i32 %358, 8
  br i1 %359, label %360, label %362

360:                                              ; preds = %351
  %361 = load double, ptr %16, align 8, !tbaa !11
  store double %361, ptr %17, align 8, !tbaa !11
  br label %362

362:                                              ; preds = %360, %351
  %363 = load ptr, ptr %9, align 8, !tbaa !9
  %364 = getelementptr inbounds double, ptr %363, i64 1
  %365 = load double, ptr %364, align 8, !tbaa !11
  %366 = load double, ptr %16, align 8, !tbaa !11
  %367 = load ptr, ptr %9, align 8, !tbaa !9
  %368 = getelementptr inbounds double, ptr %367, i64 2
  %369 = load double, ptr %368, align 8, !tbaa !11
  %370 = load double, ptr %17, align 8, !tbaa !11
  %371 = fmul double %369, %370
  %372 = call double @llvm.fmuladd.f64(double %365, double %366, double %371)
  store double %372, ptr %19, align 8, !tbaa !11
  %373 = load double, ptr %19, align 8, !tbaa !11
  %374 = fcmp oeq double %373, 0.000000e+00
  br i1 %374, label %375, label %376

375:                                              ; preds = %362
  store i1 false, ptr %6, align 1
  store i32 1, ptr %21, align 4
  br label %1675

376:                                              ; preds = %362
  %377 = load i32, ptr %12, align 4, !tbaa !5
  %378 = sub nsw i32 %377, 1
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds [15 x double], ptr @_ZL2Y1, i64 0, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !11
  %382 = load ptr, ptr %9, align 8, !tbaa !9
  %383 = getelementptr inbounds double, ptr %382, i64 0
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = load double, ptr %15, align 8, !tbaa !11
  %386 = load double, ptr %19, align 8, !tbaa !11
  %387 = fdiv double %385, %386
  %388 = fadd double %384, %387
  %389 = fsub double %381, %388
  %390 = load ptr, ptr %11, align 8, !tbaa !9
  %391 = load i32, ptr %12, align 4, !tbaa !5
  %392 = sub nsw i32 %391, 1
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds double, ptr %390, i64 %393
  store double %389, ptr %394, align 8, !tbaa !11
  br label %395

395:                                              ; preds = %376
  %396 = load i32, ptr %12, align 4, !tbaa !5
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %12, align 4, !tbaa !5
  br label %348, !llvm.loop !20

398:                                              ; preds = %348
  br label %1667

399:                                              ; preds = %344
  %400 = load i32, ptr %10, align 4, !tbaa !5
  %401 = icmp eq i32 %400, 9
  br i1 %401, label %402, label %460

402:                                              ; preds = %399
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %403

403:                                              ; preds = %456, %402
  %404 = load i32, ptr %12, align 4, !tbaa !5
  %405 = icmp slt i32 %404, 11
  br i1 %405, label %406, label %459

406:                                              ; preds = %403
  %407 = load i32, ptr %12, align 4, !tbaa !5
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds [11 x double], ptr @_ZL1V, i64 0, i64 %408
  %410 = load double, ptr %409, align 8, !tbaa !11
  %411 = load i32, ptr %12, align 4, !tbaa !5
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds [11 x double], ptr @_ZL1V, i64 0, i64 %412
  %414 = load double, ptr %413, align 8, !tbaa !11
  %415 = load ptr, ptr %9, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %415, i64 1
  %417 = load double, ptr %416, align 8, !tbaa !11
  %418 = fadd double %414, %417
  %419 = fmul double %410, %418
  store double %419, ptr %15, align 8, !tbaa !11
  %420 = load i32, ptr %12, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds [11 x double], ptr @_ZL1V, i64 0, i64 %421
  %423 = load double, ptr %422, align 8, !tbaa !11
  %424 = load i32, ptr %12, align 4, !tbaa !5
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds [11 x double], ptr @_ZL1V, i64 0, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !11
  %428 = load ptr, ptr %9, align 8, !tbaa !9
  %429 = getelementptr inbounds double, ptr %428, i64 2
  %430 = load double, ptr %429, align 8, !tbaa !11
  %431 = fadd double %427, %430
  %432 = load ptr, ptr %9, align 8, !tbaa !9
  %433 = getelementptr inbounds double, ptr %432, i64 3
  %434 = load double, ptr %433, align 8, !tbaa !11
  %435 = call double @llvm.fmuladd.f64(double %423, double %431, double %434)
  store double %435, ptr %16, align 8, !tbaa !11
  %436 = load double, ptr %16, align 8, !tbaa !11
  %437 = fcmp oeq double %436, 0.000000e+00
  br i1 %437, label %438, label %439

438:                                              ; preds = %406
  store i1 false, ptr %6, align 1
  store i32 1, ptr %21, align 4
  br label %1675

439:                                              ; preds = %406
  %440 = load i32, ptr %12, align 4, !tbaa !5
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds [11 x double], ptr @_ZL2Y2, i64 0, i64 %441
  %443 = load double, ptr %442, align 8, !tbaa !11
  %444 = load ptr, ptr %9, align 8, !tbaa !9
  %445 = getelementptr inbounds double, ptr %444, i64 0
  %446 = load double, ptr %445, align 8, !tbaa !11
  %447 = load double, ptr %15, align 8, !tbaa !11
  %448 = fmul double %446, %447
  %449 = load double, ptr %16, align 8, !tbaa !11
  %450 = fdiv double %448, %449
  %451 = fsub double %443, %450
  %452 = load ptr, ptr %11, align 8, !tbaa !9
  %453 = load i32, ptr %12, align 4, !tbaa !5
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds double, ptr %452, i64 %454
  store double %451, ptr %455, align 8, !tbaa !11
  br label %456

456:                                              ; preds = %439
  %457 = load i32, ptr %12, align 4, !tbaa !5
  %458 = add nsw i32 %457, 1
  store i32 %458, ptr %12, align 4, !tbaa !5
  br label %403, !llvm.loop !21

459:                                              ; preds = %403
  br label %1666

460:                                              ; preds = %399
  %461 = load i32, ptr %10, align 4, !tbaa !5
  %462 = icmp eq i32 %461, 10
  br i1 %462, label %463, label %504

463:                                              ; preds = %460
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %464

464:                                              ; preds = %500, %463
  %465 = load i32, ptr %12, align 4, !tbaa !5
  %466 = icmp slt i32 %465, 16
  br i1 %466, label %467, label %503

467:                                              ; preds = %464
  %468 = load i32, ptr %12, align 4, !tbaa !5
  %469 = add nsw i32 %468, 1
  %470 = mul nsw i32 5, %469
  %471 = sitofp i32 %470 to double
  %472 = fadd double %471, 4.500000e+01
  %473 = load ptr, ptr %9, align 8, !tbaa !9
  %474 = getelementptr inbounds double, ptr %473, i64 2
  %475 = load double, ptr %474, align 8, !tbaa !11
  %476 = fadd double %472, %475
  store double %476, ptr %19, align 8, !tbaa !11
  %477 = load double, ptr %19, align 8, !tbaa !11
  %478 = fcmp oeq double %477, 0.000000e+00
  br i1 %478, label %479, label %480

479:                                              ; preds = %467
  store i1 false, ptr %6, align 1
  store i32 1, ptr %21, align 4
  br label %1675

480:                                              ; preds = %467
  %481 = load ptr, ptr %9, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %481, i64 0
  %483 = load double, ptr %482, align 8, !tbaa !11
  %484 = load ptr, ptr %9, align 8, !tbaa !9
  %485 = getelementptr inbounds double, ptr %484, i64 1
  %486 = load double, ptr %485, align 8, !tbaa !11
  %487 = load double, ptr %19, align 8, !tbaa !11
  %488 = fdiv double %486, %487
  %489 = call double @exp(double noundef %488) #5
  %490 = load i32, ptr %12, align 4, !tbaa !5
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds [16 x double], ptr @_ZL2Y3, i64 0, i64 %491
  %493 = load double, ptr %492, align 8, !tbaa !11
  %494 = fneg double %493
  %495 = call double @llvm.fmuladd.f64(double %483, double %489, double %494)
  %496 = load ptr, ptr %11, align 8, !tbaa !9
  %497 = load i32, ptr %12, align 4, !tbaa !5
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %496, i64 %498
  store double %495, ptr %499, align 8, !tbaa !11
  br label %500

500:                                              ; preds = %480
  %501 = load i32, ptr %12, align 4, !tbaa !5
  %502 = add nsw i32 %501, 1
  store i32 %502, ptr %12, align 4, !tbaa !5
  br label %464, !llvm.loop !22

503:                                              ; preds = %464
  br label %1665

504:                                              ; preds = %460
  %505 = load i32, ptr %10, align 4, !tbaa !5
  %506 = icmp eq i32 %505, 11
  br i1 %506, label %507, label %595

507:                                              ; preds = %504
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %508

508:                                              ; preds = %572, %507
  %509 = load i32, ptr %12, align 4, !tbaa !5
  %510 = icmp sle i32 %509, 29
  br i1 %510, label %511, label %575

511:                                              ; preds = %508
  %512 = load i32, ptr %12, align 4, !tbaa !5
  %513 = sitofp i32 %512 to double
  %514 = fdiv double %513, 2.900000e+01
  store double %514, ptr %14, align 8, !tbaa !11
  store double 0.000000e+00, ptr %15, align 8, !tbaa !11
  store double 1.000000e+00, ptr %17, align 8, !tbaa !11
  store i32 2, ptr %13, align 4, !tbaa !5
  br label %515

515:                                              ; preds = %536, %511
  %516 = load i32, ptr %13, align 4, !tbaa !5
  %517 = load i32, ptr %8, align 4, !tbaa !5
  %518 = icmp sle i32 %516, %517
  br i1 %518, label %519, label %539

519:                                              ; preds = %515
  %520 = load i32, ptr %13, align 4, !tbaa !5
  %521 = sub nsw i32 %520, 1
  %522 = sitofp i32 %521 to double
  %523 = load double, ptr %17, align 8, !tbaa !11
  %524 = fmul double %522, %523
  %525 = load ptr, ptr %9, align 8, !tbaa !9
  %526 = load i32, ptr %13, align 4, !tbaa !5
  %527 = sub nsw i32 %526, 1
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds double, ptr %525, i64 %528
  %530 = load double, ptr %529, align 8, !tbaa !11
  %531 = load double, ptr %15, align 8, !tbaa !11
  %532 = call double @llvm.fmuladd.f64(double %524, double %530, double %531)
  store double %532, ptr %15, align 8, !tbaa !11
  %533 = load double, ptr %14, align 8, !tbaa !11
  %534 = load double, ptr %17, align 8, !tbaa !11
  %535 = fmul double %534, %533
  store double %535, ptr %17, align 8, !tbaa !11
  br label %536

536:                                              ; preds = %519
  %537 = load i32, ptr %13, align 4, !tbaa !5
  %538 = add nsw i32 %537, 1
  store i32 %538, ptr %13, align 4, !tbaa !5
  br label %515, !llvm.loop !23

539:                                              ; preds = %515
  store double 0.000000e+00, ptr %16, align 8, !tbaa !11
  store double 1.000000e+00, ptr %17, align 8, !tbaa !11
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %540

540:                                              ; preds = %557, %539
  %541 = load i32, ptr %13, align 4, !tbaa !5
  %542 = load i32, ptr %8, align 4, !tbaa !5
  %543 = icmp sle i32 %541, %542
  br i1 %543, label %544, label %560

544:                                              ; preds = %540
  %545 = load double, ptr %17, align 8, !tbaa !11
  %546 = load ptr, ptr %9, align 8, !tbaa !9
  %547 = load i32, ptr %13, align 4, !tbaa !5
  %548 = sub nsw i32 %547, 1
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds double, ptr %546, i64 %549
  %551 = load double, ptr %550, align 8, !tbaa !11
  %552 = load double, ptr %16, align 8, !tbaa !11
  %553 = call double @llvm.fmuladd.f64(double %545, double %551, double %552)
  store double %553, ptr %16, align 8, !tbaa !11
  %554 = load double, ptr %14, align 8, !tbaa !11
  %555 = load double, ptr %17, align 8, !tbaa !11
  %556 = fmul double %555, %554
  store double %556, ptr %17, align 8, !tbaa !11
  br label %557

557:                                              ; preds = %544
  %558 = load i32, ptr %13, align 4, !tbaa !5
  %559 = add nsw i32 %558, 1
  store i32 %559, ptr %13, align 4, !tbaa !5
  br label %540, !llvm.loop !24

560:                                              ; preds = %540
  %561 = load double, ptr %15, align 8, !tbaa !11
  %562 = load double, ptr %16, align 8, !tbaa !11
  %563 = load double, ptr %16, align 8, !tbaa !11
  %564 = fneg double %562
  %565 = call double @llvm.fmuladd.f64(double %564, double %563, double %561)
  %566 = fsub double %565, 1.000000e+00
  %567 = load ptr, ptr %11, align 8, !tbaa !9
  %568 = load i32, ptr %12, align 4, !tbaa !5
  %569 = sub nsw i32 %568, 1
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds double, ptr %567, i64 %570
  store double %566, ptr %571, align 8, !tbaa !11
  br label %572

572:                                              ; preds = %560
  %573 = load i32, ptr %12, align 4, !tbaa !5
  %574 = add nsw i32 %573, 1
  store i32 %574, ptr %12, align 4, !tbaa !5
  br label %508, !llvm.loop !25

575:                                              ; preds = %508
  %576 = load ptr, ptr %9, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %576, i64 0
  %578 = load double, ptr %577, align 8, !tbaa !11
  %579 = load ptr, ptr %11, align 8, !tbaa !9
  %580 = getelementptr inbounds double, ptr %579, i64 29
  store double %578, ptr %580, align 8, !tbaa !11
  %581 = load ptr, ptr %9, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %581, i64 1
  %583 = load double, ptr %582, align 8, !tbaa !11
  %584 = load ptr, ptr %9, align 8, !tbaa !9
  %585 = getelementptr inbounds double, ptr %584, i64 0
  %586 = load double, ptr %585, align 8, !tbaa !11
  %587 = load ptr, ptr %9, align 8, !tbaa !9
  %588 = getelementptr inbounds double, ptr %587, i64 0
  %589 = load double, ptr %588, align 8, !tbaa !11
  %590 = fneg double %586
  %591 = call double @llvm.fmuladd.f64(double %590, double %589, double %583)
  %592 = fsub double %591, 1.000000e+00
  %593 = load ptr, ptr %11, align 8, !tbaa !9
  %594 = getelementptr inbounds double, ptr %593, i64 30
  store double %592, ptr %594, align 8, !tbaa !11
  br label %1664

595:                                              ; preds = %504
  %596 = load i32, ptr %10, align 4, !tbaa !5
  %597 = icmp eq i32 %596, 12
  br i1 %597, label %598, label %643

598:                                              ; preds = %595
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %599

599:                                              ; preds = %639, %598
  %600 = load i32, ptr %12, align 4, !tbaa !5
  %601 = load i32, ptr %7, align 4, !tbaa !5
  %602 = icmp sle i32 %600, %601
  br i1 %602, label %603, label %642

603:                                              ; preds = %599
  %604 = load i32, ptr %12, align 4, !tbaa !5
  %605 = sitofp i32 %604 to double
  store double %605, ptr %14, align 8, !tbaa !11
  %606 = load double, ptr %14, align 8, !tbaa !11
  %607 = fdiv double %606, 1.000000e+01
  store double %607, ptr %15, align 8, !tbaa !11
  %608 = load double, ptr %15, align 8, !tbaa !11
  %609 = fneg double %608
  %610 = load ptr, ptr %9, align 8, !tbaa !9
  %611 = getelementptr inbounds double, ptr %610, i64 0
  %612 = load double, ptr %611, align 8, !tbaa !11
  %613 = fmul double %609, %612
  %614 = call double @exp(double noundef %613) #5
  %615 = load double, ptr %15, align 8, !tbaa !11
  %616 = fneg double %615
  %617 = load ptr, ptr %9, align 8, !tbaa !9
  %618 = getelementptr inbounds double, ptr %617, i64 1
  %619 = load double, ptr %618, align 8, !tbaa !11
  %620 = fmul double %616, %619
  %621 = call double @exp(double noundef %620) #5
  %622 = fsub double %614, %621
  %623 = load double, ptr %14, align 8, !tbaa !11
  %624 = fneg double %623
  %625 = call double @exp(double noundef %624) #5
  %626 = load double, ptr %15, align 8, !tbaa !11
  %627 = fneg double %626
  %628 = call double @exp(double noundef %627) #5
  %629 = fsub double %625, %628
  %630 = load ptr, ptr %9, align 8, !tbaa !9
  %631 = getelementptr inbounds double, ptr %630, i64 2
  %632 = load double, ptr %631, align 8, !tbaa !11
  %633 = call double @llvm.fmuladd.f64(double %629, double %632, double %622)
  %634 = load ptr, ptr %11, align 8, !tbaa !9
  %635 = load i32, ptr %12, align 4, !tbaa !5
  %636 = sub nsw i32 %635, 1
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds double, ptr %634, i64 %637
  store double %633, ptr %638, align 8, !tbaa !11
  br label %639

639:                                              ; preds = %603
  %640 = load i32, ptr %12, align 4, !tbaa !5
  %641 = add nsw i32 %640, 1
  store i32 %641, ptr %12, align 4, !tbaa !5
  br label %599, !llvm.loop !26

642:                                              ; preds = %599
  br label %1663

643:                                              ; preds = %595
  %644 = load i32, ptr %10, align 4, !tbaa !5
  %645 = icmp eq i32 %644, 13
  br i1 %645, label %646, label %681

646:                                              ; preds = %643
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %647

647:                                              ; preds = %677, %646
  %648 = load i32, ptr %12, align 4, !tbaa !5
  %649 = load i32, ptr %7, align 4, !tbaa !5
  %650 = icmp sle i32 %648, %649
  br i1 %650, label %651, label %680

651:                                              ; preds = %647
  %652 = load i32, ptr %12, align 4, !tbaa !5
  %653 = mul nsw i32 2, %652
  %654 = add nsw i32 2, %653
  %655 = sitofp i32 %654 to double
  %656 = load i32, ptr %12, align 4, !tbaa !5
  %657 = sitofp i32 %656 to double
  %658 = load ptr, ptr %9, align 8, !tbaa !9
  %659 = getelementptr inbounds double, ptr %658, i64 0
  %660 = load double, ptr %659, align 8, !tbaa !11
  %661 = fmul double %657, %660
  %662 = call double @exp(double noundef %661) #5
  %663 = fsub double %655, %662
  %664 = load i32, ptr %12, align 4, !tbaa !5
  %665 = sitofp i32 %664 to double
  %666 = load ptr, ptr %9, align 8, !tbaa !9
  %667 = getelementptr inbounds double, ptr %666, i64 1
  %668 = load double, ptr %667, align 8, !tbaa !11
  %669 = fmul double %665, %668
  %670 = call double @exp(double noundef %669) #5
  %671 = fsub double %663, %670
  %672 = load ptr, ptr %11, align 8, !tbaa !9
  %673 = load i32, ptr %12, align 4, !tbaa !5
  %674 = sub nsw i32 %673, 1
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds double, ptr %672, i64 %675
  store double %671, ptr %676, align 8, !tbaa !11
  br label %677

677:                                              ; preds = %651
  %678 = load i32, ptr %12, align 4, !tbaa !5
  %679 = add nsw i32 %678, 1
  store i32 %679, ptr %12, align 4, !tbaa !5
  br label %647, !llvm.loop !27

680:                                              ; preds = %647
  br label %1662

681:                                              ; preds = %643
  %682 = load i32, ptr %10, align 4, !tbaa !5
  %683 = icmp eq i32 %682, 14
  br i1 %683, label %684, label %731

684:                                              ; preds = %681
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %685

685:                                              ; preds = %727, %684
  %686 = load i32, ptr %12, align 4, !tbaa !5
  %687 = load i32, ptr %7, align 4, !tbaa !5
  %688 = icmp sle i32 %686, %687
  br i1 %688, label %689, label %730

689:                                              ; preds = %685
  %690 = load i32, ptr %12, align 4, !tbaa !5
  %691 = sitofp i32 %690 to double
  %692 = fdiv double %691, 5.000000e+00
  store double %692, ptr %14, align 8, !tbaa !11
  %693 = load ptr, ptr %9, align 8, !tbaa !9
  %694 = getelementptr inbounds double, ptr %693, i64 0
  %695 = load double, ptr %694, align 8, !tbaa !11
  %696 = load double, ptr %14, align 8, !tbaa !11
  %697 = load ptr, ptr %9, align 8, !tbaa !9
  %698 = getelementptr inbounds double, ptr %697, i64 1
  %699 = load double, ptr %698, align 8, !tbaa !11
  %700 = call double @llvm.fmuladd.f64(double %696, double %699, double %695)
  %701 = load double, ptr %14, align 8, !tbaa !11
  %702 = call double @exp(double noundef %701) #5
  %703 = fsub double %700, %702
  store double %703, ptr %15, align 8, !tbaa !11
  %704 = load ptr, ptr %9, align 8, !tbaa !9
  %705 = getelementptr inbounds double, ptr %704, i64 2
  %706 = load double, ptr %705, align 8, !tbaa !11
  %707 = load double, ptr %14, align 8, !tbaa !11
  %708 = call double @sin(double noundef %707) #5
  %709 = load ptr, ptr %9, align 8, !tbaa !9
  %710 = getelementptr inbounds double, ptr %709, i64 3
  %711 = load double, ptr %710, align 8, !tbaa !11
  %712 = call double @llvm.fmuladd.f64(double %708, double %711, double %706)
  %713 = load double, ptr %14, align 8, !tbaa !11
  %714 = call double @cos(double noundef %713) #5
  %715 = fsub double %712, %714
  store double %715, ptr %16, align 8, !tbaa !11
  %716 = load double, ptr %15, align 8, !tbaa !11
  %717 = load double, ptr %15, align 8, !tbaa !11
  %718 = load double, ptr %16, align 8, !tbaa !11
  %719 = load double, ptr %16, align 8, !tbaa !11
  %720 = fmul double %718, %719
  %721 = call double @llvm.fmuladd.f64(double %716, double %717, double %720)
  %722 = load ptr, ptr %11, align 8, !tbaa !9
  %723 = load i32, ptr %12, align 4, !tbaa !5
  %724 = sub nsw i32 %723, 1
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds double, ptr %722, i64 %725
  store double %721, ptr %726, align 8, !tbaa !11
  br label %727

727:                                              ; preds = %689
  %728 = load i32, ptr %12, align 4, !tbaa !5
  %729 = add nsw i32 %728, 1
  store i32 %729, ptr %12, align 4, !tbaa !5
  br label %685, !llvm.loop !28

730:                                              ; preds = %685
  br label %1661

731:                                              ; preds = %681
  %732 = load i32, ptr %10, align 4, !tbaa !5
  %733 = icmp eq i32 %732, 15
  br i1 %733, label %734, label %825

734:                                              ; preds = %731
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %735

735:                                              ; preds = %744, %734
  %736 = load i32, ptr %12, align 4, !tbaa !5
  %737 = load i32, ptr %7, align 4, !tbaa !5
  %738 = icmp slt i32 %736, %737
  br i1 %738, label %739, label %747

739:                                              ; preds = %735
  %740 = load ptr, ptr %11, align 8, !tbaa !9
  %741 = load i32, ptr %12, align 4, !tbaa !5
  %742 = sext i32 %741 to i64
  %743 = getelementptr inbounds double, ptr %740, i64 %742
  store double 0.000000e+00, ptr %743, align 8, !tbaa !11
  br label %744

744:                                              ; preds = %739
  %745 = load i32, ptr %12, align 4, !tbaa !5
  %746 = add nsw i32 %745, 1
  store i32 %746, ptr %12, align 4, !tbaa !5
  br label %735, !llvm.loop !29

747:                                              ; preds = %735
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %748

748:                                              ; preds = %784, %747
  %749 = load i32, ptr %13, align 4, !tbaa !5
  %750 = load i32, ptr %8, align 4, !tbaa !5
  %751 = icmp slt i32 %749, %750
  br i1 %751, label %752, label %787

752:                                              ; preds = %748
  store double 1.000000e+00, ptr %15, align 8, !tbaa !11
  %753 = load ptr, ptr %9, align 8, !tbaa !9
  %754 = load i32, ptr %13, align 4, !tbaa !5
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %753, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !11
  %758 = call double @llvm.fmuladd.f64(double 2.000000e+00, double %757, double -1.000000e+00)
  store double %758, ptr %16, align 8, !tbaa !11
  %759 = load double, ptr %16, align 8, !tbaa !11
  %760 = fmul double 2.000000e+00, %759
  store double %760, ptr %17, align 8, !tbaa !11
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %761

761:                                              ; preds = %780, %752
  %762 = load i32, ptr %12, align 4, !tbaa !5
  %763 = load i32, ptr %7, align 4, !tbaa !5
  %764 = icmp slt i32 %762, %763
  br i1 %764, label %765, label %783

765:                                              ; preds = %761
  %766 = load double, ptr %16, align 8, !tbaa !11
  %767 = load ptr, ptr %11, align 8, !tbaa !9
  %768 = load i32, ptr %12, align 4, !tbaa !5
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds double, ptr %767, i64 %769
  %771 = load double, ptr %770, align 8, !tbaa !11
  %772 = fadd double %771, %766
  store double %772, ptr %770, align 8, !tbaa !11
  %773 = load double, ptr %17, align 8, !tbaa !11
  %774 = load double, ptr %16, align 8, !tbaa !11
  %775 = load double, ptr %15, align 8, !tbaa !11
  %776 = fneg double %775
  %777 = call double @llvm.fmuladd.f64(double %773, double %774, double %776)
  store double %777, ptr %14, align 8, !tbaa !11
  %778 = load double, ptr %16, align 8, !tbaa !11
  store double %778, ptr %15, align 8, !tbaa !11
  %779 = load double, ptr %14, align 8, !tbaa !11
  store double %779, ptr %16, align 8, !tbaa !11
  br label %780

780:                                              ; preds = %765
  %781 = load i32, ptr %12, align 4, !tbaa !5
  %782 = add nsw i32 %781, 1
  store i32 %782, ptr %12, align 4, !tbaa !5
  br label %761, !llvm.loop !30

783:                                              ; preds = %761
  br label %784

784:                                              ; preds = %783
  %785 = load i32, ptr %13, align 4, !tbaa !5
  %786 = add nsw i32 %785, 1
  store i32 %786, ptr %13, align 4, !tbaa !5
  br label %748, !llvm.loop !31

787:                                              ; preds = %748
  store double -1.000000e+00, ptr %14, align 8, !tbaa !11
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %788

788:                                              ; preds = %821, %787
  %789 = load i32, ptr %12, align 4, !tbaa !5
  %790 = load i32, ptr %7, align 4, !tbaa !5
  %791 = icmp sle i32 %789, %790
  br i1 %791, label %792, label %824

792:                                              ; preds = %788
  %793 = load i32, ptr %8, align 4, !tbaa !5
  %794 = sitofp i32 %793 to double
  %795 = load ptr, ptr %11, align 8, !tbaa !9
  %796 = load i32, ptr %12, align 4, !tbaa !5
  %797 = sub nsw i32 %796, 1
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds double, ptr %795, i64 %798
  %800 = load double, ptr %799, align 8, !tbaa !11
  %801 = fdiv double %800, %794
  store double %801, ptr %799, align 8, !tbaa !11
  %802 = load double, ptr %14, align 8, !tbaa !11
  %803 = fcmp ogt double %802, 0.000000e+00
  br i1 %803, label %804, label %818

804:                                              ; preds = %792
  %805 = load i32, ptr %12, align 4, !tbaa !5
  %806 = load i32, ptr %12, align 4, !tbaa !5
  %807 = mul nsw i32 %805, %806
  %808 = sub nsw i32 %807, 1
  %809 = sitofp i32 %808 to double
  %810 = fdiv double 1.000000e+00, %809
  %811 = load ptr, ptr %11, align 8, !tbaa !9
  %812 = load i32, ptr %12, align 4, !tbaa !5
  %813 = sub nsw i32 %812, 1
  %814 = sext i32 %813 to i64
  %815 = getelementptr inbounds double, ptr %811, i64 %814
  %816 = load double, ptr %815, align 8, !tbaa !11
  %817 = fadd double %816, %810
  store double %817, ptr %815, align 8, !tbaa !11
  br label %818

818:                                              ; preds = %804, %792
  %819 = load double, ptr %14, align 8, !tbaa !11
  %820 = fneg double %819
  store double %820, ptr %14, align 8, !tbaa !11
  br label %821

821:                                              ; preds = %818
  %822 = load i32, ptr %12, align 4, !tbaa !5
  %823 = add nsw i32 %822, 1
  store i32 %823, ptr %12, align 4, !tbaa !5
  br label %788, !llvm.loop !32

824:                                              ; preds = %788
  br label %1660

825:                                              ; preds = %731
  %826 = load i32, ptr %10, align 4, !tbaa !5
  %827 = icmp eq i32 %826, 16
  br i1 %827, label %828, label %884

828:                                              ; preds = %825
  %829 = load i32, ptr %8, align 4, !tbaa !5
  %830 = sub nsw i32 0, %829
  %831 = sub nsw i32 %830, 1
  %832 = sitofp i32 %831 to double
  store double %832, ptr %20, align 8, !tbaa !11
  store double 1.000000e+00, ptr %14, align 8, !tbaa !11
  store i32 0, ptr %13, align 4, !tbaa !5
  br label %833

833:                                              ; preds = %852, %828
  %834 = load i32, ptr %13, align 4, !tbaa !5
  %835 = load i32, ptr %8, align 4, !tbaa !5
  %836 = icmp slt i32 %834, %835
  br i1 %836, label %837, label %855

837:                                              ; preds = %833
  %838 = load ptr, ptr %9, align 8, !tbaa !9
  %839 = load i32, ptr %13, align 4, !tbaa !5
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds double, ptr %838, i64 %840
  %842 = load double, ptr %841, align 8, !tbaa !11
  %843 = load double, ptr %20, align 8, !tbaa !11
  %844 = fadd double %843, %842
  store double %844, ptr %20, align 8, !tbaa !11
  %845 = load ptr, ptr %9, align 8, !tbaa !9
  %846 = load i32, ptr %13, align 4, !tbaa !5
  %847 = sext i32 %846 to i64
  %848 = getelementptr inbounds double, ptr %845, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !11
  %850 = load double, ptr %14, align 8, !tbaa !11
  %851 = fmul double %850, %849
  store double %851, ptr %14, align 8, !tbaa !11
  br label %852

852:                                              ; preds = %837
  %853 = load i32, ptr %13, align 4, !tbaa !5
  %854 = add nsw i32 %853, 1
  store i32 %854, ptr %13, align 4, !tbaa !5
  br label %833, !llvm.loop !33

855:                                              ; preds = %833
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %856

856:                                              ; preds = %873, %855
  %857 = load i32, ptr %12, align 4, !tbaa !5
  %858 = load i32, ptr %8, align 4, !tbaa !5
  %859 = sub nsw i32 %858, 1
  %860 = icmp slt i32 %857, %859
  br i1 %860, label %861, label %876

861:                                              ; preds = %856
  %862 = load ptr, ptr %9, align 8, !tbaa !9
  %863 = load i32, ptr %12, align 4, !tbaa !5
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds double, ptr %862, i64 %864
  %866 = load double, ptr %865, align 8, !tbaa !11
  %867 = load double, ptr %20, align 8, !tbaa !11
  %868 = fadd double %866, %867
  %869 = load ptr, ptr %11, align 8, !tbaa !9
  %870 = load i32, ptr %12, align 4, !tbaa !5
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds double, ptr %869, i64 %871
  store double %868, ptr %872, align 8, !tbaa !11
  br label %873

873:                                              ; preds = %861
  %874 = load i32, ptr %12, align 4, !tbaa !5
  %875 = add nsw i32 %874, 1
  store i32 %875, ptr %12, align 4, !tbaa !5
  br label %856, !llvm.loop !34

876:                                              ; preds = %856
  %877 = load double, ptr %14, align 8, !tbaa !11
  %878 = fsub double %877, 1.000000e+00
  %879 = load ptr, ptr %11, align 8, !tbaa !9
  %880 = load i32, ptr %8, align 4, !tbaa !5
  %881 = sub nsw i32 %880, 1
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds double, ptr %879, i64 %882
  store double %878, ptr %883, align 8, !tbaa !11
  br label %1659

884:                                              ; preds = %825
  %885 = load i32, ptr %10, align 4, !tbaa !5
  %886 = icmp eq i32 %885, 17
  br i1 %886, label %887, label %938

887:                                              ; preds = %884
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %888

888:                                              ; preds = %934, %887
  %889 = load i32, ptr %12, align 4, !tbaa !5
  %890 = icmp sle i32 %889, 33
  br i1 %890, label %891, label %937

891:                                              ; preds = %888
  %892 = load i32, ptr %12, align 4, !tbaa !5
  %893 = sub nsw i32 %892, 1
  %894 = mul nsw i32 10, %893
  %895 = sitofp i32 %894 to double
  store double %895, ptr %14, align 8, !tbaa !11
  %896 = load ptr, ptr %9, align 8, !tbaa !9
  %897 = getelementptr inbounds double, ptr %896, i64 3
  %898 = load double, ptr %897, align 8, !tbaa !11
  %899 = fneg double %898
  %900 = load double, ptr %14, align 8, !tbaa !11
  %901 = fmul double %899, %900
  %902 = call double @exp(double noundef %901) #5
  store double %902, ptr %15, align 8, !tbaa !11
  %903 = load ptr, ptr %9, align 8, !tbaa !9
  %904 = getelementptr inbounds double, ptr %903, i64 4
  %905 = load double, ptr %904, align 8, !tbaa !11
  %906 = fneg double %905
  %907 = load double, ptr %14, align 8, !tbaa !11
  %908 = fmul double %906, %907
  %909 = call double @exp(double noundef %908) #5
  store double %909, ptr %16, align 8, !tbaa !11
  %910 = load i32, ptr %12, align 4, !tbaa !5
  %911 = sub nsw i32 %910, 1
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds [33 x double], ptr @_ZL2Y4, i64 0, i64 %912
  %914 = load double, ptr %913, align 8, !tbaa !11
  %915 = load ptr, ptr %9, align 8, !tbaa !9
  %916 = getelementptr inbounds double, ptr %915, i64 0
  %917 = load double, ptr %916, align 8, !tbaa !11
  %918 = load ptr, ptr %9, align 8, !tbaa !9
  %919 = getelementptr inbounds double, ptr %918, i64 1
  %920 = load double, ptr %919, align 8, !tbaa !11
  %921 = load double, ptr %15, align 8, !tbaa !11
  %922 = call double @llvm.fmuladd.f64(double %920, double %921, double %917)
  %923 = load ptr, ptr %9, align 8, !tbaa !9
  %924 = getelementptr inbounds double, ptr %923, i64 2
  %925 = load double, ptr %924, align 8, !tbaa !11
  %926 = load double, ptr %16, align 8, !tbaa !11
  %927 = call double @llvm.fmuladd.f64(double %925, double %926, double %922)
  %928 = fsub double %914, %927
  %929 = load ptr, ptr %11, align 8, !tbaa !9
  %930 = load i32, ptr %12, align 4, !tbaa !5
  %931 = sub nsw i32 %930, 1
  %932 = sext i32 %931 to i64
  %933 = getelementptr inbounds double, ptr %929, i64 %932
  store double %928, ptr %933, align 8, !tbaa !11
  br label %934

934:                                              ; preds = %891
  %935 = load i32, ptr %12, align 4, !tbaa !5
  %936 = add nsw i32 %935, 1
  store i32 %936, ptr %12, align 4, !tbaa !5
  br label %888, !llvm.loop !35

937:                                              ; preds = %888
  br label %1658

938:                                              ; preds = %884
  %939 = load i32, ptr %10, align 4, !tbaa !5
  %940 = icmp eq i32 %939, 18
  br i1 %940, label %941, label %1025

941:                                              ; preds = %938
  store i32 0, ptr %12, align 4, !tbaa !5
  br label %942

942:                                              ; preds = %1021, %941
  %943 = load i32, ptr %12, align 4, !tbaa !5
  %944 = icmp slt i32 %943, 65
  br i1 %944, label %945, label %1024

945:                                              ; preds = %942
  %946 = load i32, ptr %12, align 4, !tbaa !5
  %947 = sitofp i32 %946 to double
  %948 = fdiv double %947, 1.000000e+01
  store double %948, ptr %14, align 8, !tbaa !11
  %949 = load ptr, ptr %9, align 8, !tbaa !9
  %950 = getelementptr inbounds double, ptr %949, i64 4
  %951 = load double, ptr %950, align 8, !tbaa !11
  %952 = fneg double %951
  %953 = load double, ptr %14, align 8, !tbaa !11
  %954 = fmul double %952, %953
  %955 = call double @exp(double noundef %954) #5
  store double %955, ptr %15, align 8, !tbaa !11
  %956 = load ptr, ptr %9, align 8, !tbaa !9
  %957 = getelementptr inbounds double, ptr %956, i64 5
  %958 = load double, ptr %957, align 8, !tbaa !11
  %959 = fneg double %958
  %960 = load double, ptr %14, align 8, !tbaa !11
  %961 = load ptr, ptr %9, align 8, !tbaa !9
  %962 = getelementptr inbounds double, ptr %961, i64 8
  %963 = load double, ptr %962, align 8, !tbaa !11
  %964 = fsub double %960, %963
  %965 = call double @pow(double noundef %964, double noundef 2.000000e+00) #5
  %966 = fmul double %959, %965
  %967 = call double @exp(double noundef %966) #5
  store double %967, ptr %16, align 8, !tbaa !11
  %968 = load ptr, ptr %9, align 8, !tbaa !9
  %969 = getelementptr inbounds double, ptr %968, i64 6
  %970 = load double, ptr %969, align 8, !tbaa !11
  %971 = fneg double %970
  %972 = load double, ptr %14, align 8, !tbaa !11
  %973 = load ptr, ptr %9, align 8, !tbaa !9
  %974 = getelementptr inbounds double, ptr %973, i64 9
  %975 = load double, ptr %974, align 8, !tbaa !11
  %976 = fsub double %972, %975
  %977 = call double @pow(double noundef %976, double noundef 2.000000e+00) #5
  %978 = fmul double %971, %977
  %979 = call double @exp(double noundef %978) #5
  store double %979, ptr %17, align 8, !tbaa !11
  %980 = load ptr, ptr %9, align 8, !tbaa !9
  %981 = getelementptr inbounds double, ptr %980, i64 7
  %982 = load double, ptr %981, align 8, !tbaa !11
  %983 = fneg double %982
  %984 = load double, ptr %14, align 8, !tbaa !11
  %985 = load ptr, ptr %9, align 8, !tbaa !9
  %986 = getelementptr inbounds double, ptr %985, i64 10
  %987 = load double, ptr %986, align 8, !tbaa !11
  %988 = fsub double %984, %987
  %989 = call double @pow(double noundef %988, double noundef 2.000000e+00) #5
  %990 = fmul double %983, %989
  %991 = call double @exp(double noundef %990) #5
  store double %991, ptr %18, align 8, !tbaa !11
  %992 = load i32, ptr %12, align 4, !tbaa !5
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds [65 x double], ptr @_ZL2Y5, i64 0, i64 %993
  %995 = load double, ptr %994, align 8, !tbaa !11
  %996 = load ptr, ptr %9, align 8, !tbaa !9
  %997 = getelementptr inbounds double, ptr %996, i64 0
  %998 = load double, ptr %997, align 8, !tbaa !11
  %999 = load double, ptr %15, align 8, !tbaa !11
  %1000 = load ptr, ptr %9, align 8, !tbaa !9
  %1001 = getelementptr inbounds double, ptr %1000, i64 1
  %1002 = load double, ptr %1001, align 8, !tbaa !11
  %1003 = load double, ptr %16, align 8, !tbaa !11
  %1004 = fmul double %1002, %1003
  %1005 = call double @llvm.fmuladd.f64(double %998, double %999, double %1004)
  %1006 = load ptr, ptr %9, align 8, !tbaa !9
  %1007 = getelementptr inbounds double, ptr %1006, i64 2
  %1008 = load double, ptr %1007, align 8, !tbaa !11
  %1009 = load double, ptr %17, align 8, !tbaa !11
  %1010 = call double @llvm.fmuladd.f64(double %1008, double %1009, double %1005)
  %1011 = load ptr, ptr %9, align 8, !tbaa !9
  %1012 = getelementptr inbounds double, ptr %1011, i64 3
  %1013 = load double, ptr %1012, align 8, !tbaa !11
  %1014 = load double, ptr %18, align 8, !tbaa !11
  %1015 = call double @llvm.fmuladd.f64(double %1013, double %1014, double %1010)
  %1016 = fsub double %995, %1015
  %1017 = load ptr, ptr %11, align 8, !tbaa !9
  %1018 = load i32, ptr %12, align 4, !tbaa !5
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds double, ptr %1017, i64 %1019
  store double %1016, ptr %1020, align 8, !tbaa !11
  br label %1021

1021:                                             ; preds = %945
  %1022 = load i32, ptr %12, align 4, !tbaa !5
  %1023 = add nsw i32 %1022, 1
  store i32 %1023, ptr %12, align 4, !tbaa !5
  br label %942, !llvm.loop !36

1024:                                             ; preds = %942
  br label %1657

1025:                                             ; preds = %938
  %1026 = load i32, ptr %10, align 4, !tbaa !5
  %1027 = icmp eq i32 %1026, 19
  br i1 %1027, label %1028, label %1125

1028:                                             ; preds = %1025
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1029

1029:                                             ; preds = %1121, %1028
  %1030 = load i32, ptr %12, align 4, !tbaa !5
  %1031 = load i32, ptr %8, align 4, !tbaa !5
  %1032 = sub nsw i32 %1031, 4
  %1033 = icmp sle i32 %1030, %1032
  br i1 %1033, label %1034, label %1124

1034:                                             ; preds = %1029
  %1035 = load ptr, ptr %9, align 8, !tbaa !9
  %1036 = load i32, ptr %12, align 4, !tbaa !5
  %1037 = sub nsw i32 %1036, 1
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds double, ptr %1035, i64 %1038
  %1040 = load double, ptr %1039, align 8, !tbaa !11
  %1041 = call double @llvm.fmuladd.f64(double -4.000000e+00, double %1040, double 3.000000e+00)
  %1042 = load ptr, ptr %11, align 8, !tbaa !9
  %1043 = load i32, ptr %12, align 4, !tbaa !5
  %1044 = sub nsw i32 %1043, 1
  %1045 = sext i32 %1044 to i64
  %1046 = getelementptr inbounds double, ptr %1042, i64 %1045
  store double %1041, ptr %1046, align 8, !tbaa !11
  %1047 = load ptr, ptr %9, align 8, !tbaa !9
  %1048 = load i32, ptr %12, align 4, !tbaa !5
  %1049 = sub nsw i32 %1048, 1
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds double, ptr %1047, i64 %1050
  %1052 = load double, ptr %1051, align 8, !tbaa !11
  %1053 = load ptr, ptr %9, align 8, !tbaa !9
  %1054 = load i32, ptr %12, align 4, !tbaa !5
  %1055 = sub nsw i32 %1054, 1
  %1056 = sext i32 %1055 to i64
  %1057 = getelementptr inbounds double, ptr %1053, i64 %1056
  %1058 = load double, ptr %1057, align 8, !tbaa !11
  %1059 = load ptr, ptr %9, align 8, !tbaa !9
  %1060 = load i32, ptr %12, align 4, !tbaa !5
  %1061 = sext i32 %1060 to i64
  %1062 = getelementptr inbounds double, ptr %1059, i64 %1061
  %1063 = load double, ptr %1062, align 8, !tbaa !11
  %1064 = fmul double 2.000000e+00, %1063
  %1065 = load ptr, ptr %9, align 8, !tbaa !9
  %1066 = load i32, ptr %12, align 4, !tbaa !5
  %1067 = sext i32 %1066 to i64
  %1068 = getelementptr inbounds double, ptr %1065, i64 %1067
  %1069 = load double, ptr %1068, align 8, !tbaa !11
  %1070 = fmul double %1064, %1069
  %1071 = call double @llvm.fmuladd.f64(double %1052, double %1058, double %1070)
  %1072 = load ptr, ptr %9, align 8, !tbaa !9
  %1073 = load i32, ptr %12, align 4, !tbaa !5
  %1074 = add nsw i32 %1073, 1
  %1075 = sext i32 %1074 to i64
  %1076 = getelementptr inbounds double, ptr %1072, i64 %1075
  %1077 = load double, ptr %1076, align 8, !tbaa !11
  %1078 = fmul double 3.000000e+00, %1077
  %1079 = load ptr, ptr %9, align 8, !tbaa !9
  %1080 = load i32, ptr %12, align 4, !tbaa !5
  %1081 = add nsw i32 %1080, 1
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds double, ptr %1079, i64 %1082
  %1084 = load double, ptr %1083, align 8, !tbaa !11
  %1085 = call double @llvm.fmuladd.f64(double %1078, double %1084, double %1071)
  %1086 = load ptr, ptr %9, align 8, !tbaa !9
  %1087 = load i32, ptr %12, align 4, !tbaa !5
  %1088 = add nsw i32 %1087, 2
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds double, ptr %1086, i64 %1089
  %1091 = load double, ptr %1090, align 8, !tbaa !11
  %1092 = fmul double 4.000000e+00, %1091
  %1093 = load ptr, ptr %9, align 8, !tbaa !9
  %1094 = load i32, ptr %12, align 4, !tbaa !5
  %1095 = add nsw i32 %1094, 2
  %1096 = sext i32 %1095 to i64
  %1097 = getelementptr inbounds double, ptr %1093, i64 %1096
  %1098 = load double, ptr %1097, align 8, !tbaa !11
  %1099 = call double @llvm.fmuladd.f64(double %1092, double %1098, double %1085)
  %1100 = load ptr, ptr %9, align 8, !tbaa !9
  %1101 = load i32, ptr %8, align 4, !tbaa !5
  %1102 = sub nsw i32 %1101, 1
  %1103 = sext i32 %1102 to i64
  %1104 = getelementptr inbounds double, ptr %1100, i64 %1103
  %1105 = load double, ptr %1104, align 8, !tbaa !11
  %1106 = fmul double 5.000000e+00, %1105
  %1107 = load ptr, ptr %9, align 8, !tbaa !9
  %1108 = load i32, ptr %8, align 4, !tbaa !5
  %1109 = sub nsw i32 %1108, 1
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds double, ptr %1107, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !11
  %1113 = call double @llvm.fmuladd.f64(double %1106, double %1112, double %1099)
  %1114 = load ptr, ptr %11, align 8, !tbaa !9
  %1115 = load i32, ptr %8, align 4, !tbaa !5
  %1116 = sub nsw i32 %1115, 5
  %1117 = load i32, ptr %12, align 4, !tbaa !5
  %1118 = add nsw i32 %1116, %1117
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %1114, i64 %1119
  store double %1113, ptr %1120, align 8, !tbaa !11
  br label %1121

1121:                                             ; preds = %1034
  %1122 = load i32, ptr %12, align 4, !tbaa !5
  %1123 = add nsw i32 %1122, 1
  store i32 %1123, ptr %12, align 4, !tbaa !5
  br label %1029, !llvm.loop !37

1124:                                             ; preds = %1029
  br label %1656

1125:                                             ; preds = %1025
  %1126 = load i32, ptr %10, align 4, !tbaa !5
  %1127 = icmp eq i32 %1126, 20
  br i1 %1127, label %1128, label %1162

1128:                                             ; preds = %1125
  %1129 = load ptr, ptr %9, align 8, !tbaa !9
  %1130 = getelementptr inbounds double, ptr %1129, i64 0
  %1131 = load double, ptr %1130, align 8, !tbaa !11
  %1132 = fsub double %1131, 1.000000e+00
  %1133 = load ptr, ptr %11, align 8, !tbaa !9
  %1134 = getelementptr inbounds double, ptr %1133, i64 0
  store double %1132, ptr %1134, align 8, !tbaa !11
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1135

1135:                                             ; preds = %1158, %1128
  %1136 = load i32, ptr %12, align 4, !tbaa !5
  %1137 = load i32, ptr %8, align 4, !tbaa !5
  %1138 = icmp slt i32 %1136, %1137
  br i1 %1138, label %1139, label %1161

1139:                                             ; preds = %1135
  %1140 = load ptr, ptr %9, align 8, !tbaa !9
  %1141 = load i32, ptr %12, align 4, !tbaa !5
  %1142 = sext i32 %1141 to i64
  %1143 = getelementptr inbounds double, ptr %1140, i64 %1142
  %1144 = load double, ptr %1143, align 8, !tbaa !11
  %1145 = load ptr, ptr %9, align 8, !tbaa !9
  %1146 = load i32, ptr %12, align 4, !tbaa !5
  %1147 = sub nsw i32 %1146, 1
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds double, ptr %1145, i64 %1148
  %1150 = load double, ptr %1149, align 8, !tbaa !11
  %1151 = call double @pow(double noundef %1150, double noundef 3.000000e+00) #5
  %1152 = fsub double %1144, %1151
  %1153 = fmul double 1.000000e+01, %1152
  %1154 = load ptr, ptr %11, align 8, !tbaa !9
  %1155 = load i32, ptr %12, align 4, !tbaa !5
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds double, ptr %1154, i64 %1156
  store double %1153, ptr %1157, align 8, !tbaa !11
  br label %1158

1158:                                             ; preds = %1139
  %1159 = load i32, ptr %12, align 4, !tbaa !5
  %1160 = add nsw i32 %1159, 1
  store i32 %1160, ptr %12, align 4, !tbaa !5
  br label %1135, !llvm.loop !38

1161:                                             ; preds = %1135
  br label %1655

1162:                                             ; preds = %1125
  %1163 = load i32, ptr %10, align 4, !tbaa !5
  %1164 = icmp eq i32 %1163, 21
  br i1 %1164, label %1165, label %1233

1165:                                             ; preds = %1162
  store i32 1, ptr %12, align 4, !tbaa !5
  br label %1166

1166:                                             ; preds = %1229, %1165
  %1167 = load i32, ptr %12, align 4, !tbaa !5
  %1168 = load i32, ptr %8, align 4, !tbaa !5
  %1169 = icmp sle i32 %1167, %1168
  br i1 %1169, label %1170, label %1232

1170:                                             ; preds = %1166
  store double 0.000000e+00, ptr %15, align 8, !tbaa !11
  store i32 1, ptr %13, align 4, !tbaa !5
  br label %1171

1171:                                             ; preds = %1208, %1170
  %1172 = load i32, ptr %13, align 4, !tbaa !5
  %1173 = load i32, ptr %8, align 4, !tbaa !5
  %1174 = icmp sle i32 %1172, %1173
  br i1 %1174, label %1175, label %1211

1175:                                             ; preds = %1171
  %1176 = load i32, ptr %12, align 4, !tbaa !5
  %1177 = sitofp i32 %1176 to double
  store double %1177, ptr %17, align 8, !tbaa !11
  %1178 = load ptr, ptr %9, align 8, !tbaa !9
  %1179 = load i32, ptr %12, align 4, !tbaa !5
  %1180 = sub nsw i32 %1179, 1
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds double, ptr %1178, i64 %1181
  %1183 = load double, ptr %1182, align 8, !tbaa !11
  %1184 = load ptr, ptr %9, align 8, !tbaa !9
  %1185 = load i32, ptr %12, align 4, !tbaa !5
  %1186 = sub nsw i32 %1185, 1
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds double, ptr %1184, i64 %1187
  %1189 = load double, ptr %1188, align 8, !tbaa !11
  %1190 = load double, ptr %17, align 8, !tbaa !11
  %1191 = load i32, ptr %13, align 4, !tbaa !5
  %1192 = sitofp i32 %1191 to double
  %1193 = fdiv double %1190, %1192
  %1194 = call double @llvm.fmuladd.f64(double %1183, double %1189, double %1193)
  %1195 = call double @sqrt(double noundef %1194) #5
  store double %1195, ptr %16, align 8, !tbaa !11
  %1196 = load double, ptr %16, align 8, !tbaa !11
  %1197 = load double, ptr %16, align 8, !tbaa !11
  %1198 = call double @log(double noundef %1197) #5
  %1199 = call double @sin(double noundef %1198) #5
  %1200 = call double @pow(double noundef %1199, double noundef 5.000000e+00) #5
  %1201 = load double, ptr %16, align 8, !tbaa !11
  %1202 = call double @log(double noundef %1201) #5
  %1203 = call double @cos(double noundef %1202) #5
  %1204 = call double @pow(double noundef %1203, double noundef 5.000000e+00) #5
  %1205 = fadd double %1200, %1204
  %1206 = load double, ptr %15, align 8, !tbaa !11
  %1207 = call double @llvm.fmuladd.f64(double %1196, double %1205, double %1206)
  store double %1207, ptr %15, align 8, !tbaa !11
  br label %1208

1208:                                             ; preds = %1175
  %1209 = load i32, ptr %13, align 4, !tbaa !5
  %1210 = add nsw i32 %1209, 1
  store i32 %1210, ptr %13, align 4, !tbaa !5
  br label %1171, !llvm.loop !39

1211:                                             ; preds = %1171
  %1212 = load ptr, ptr %9, align 8, !tbaa !9
  %1213 = load i32, ptr %12, align 4, !tbaa !5
  %1214 = sub nsw i32 %1213, 1
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds double, ptr %1212, i64 %1215
  %1217 = load double, ptr %1216, align 8, !tbaa !11
  %1218 = load i32, ptr %12, align 4, !tbaa !5
  %1219 = sub nsw i32 %1218, 50
  %1220 = call noundef double @_ZSt3powIidEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(i32 noundef %1219, double noundef 3.000000e+00)
  %1221 = call double @llvm.fmuladd.f64(double 1.400000e+03, double %1217, double %1220)
  %1222 = load double, ptr %15, align 8, !tbaa !11
  %1223 = fadd double %1221, %1222
  %1224 = load ptr, ptr %11, align 8, !tbaa !9
  %1225 = load i32, ptr %12, align 4, !tbaa !5
  %1226 = sub nsw i32 %1225, 1
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds double, ptr %1224, i64 %1227
  store double %1223, ptr %1228, align 8, !tbaa !11
  br label %1229

1229:                                             ; preds = %1211
  %1230 = load i32, ptr %12, align 4, !tbaa !5
  %1231 = add nsw i32 %1230, 1
  store i32 %1231, ptr %12, align 4, !tbaa !5
  br label %1166, !llvm.loop !40

1232:                                             ; preds = %1166
  br label %1654

1233:                                             ; preds = %1162
  %1234 = load i32, ptr %10, align 4, !tbaa !5
  %1235 = icmp eq i32 %1234, 22
  br i1 %1235, label %1236, label %1653

1236:                                             ; preds = %1233
  %1237 = load ptr, ptr %9, align 8, !tbaa !9
  %1238 = getelementptr inbounds double, ptr %1237, i64 0
  %1239 = load double, ptr %1238, align 8, !tbaa !11
  %1240 = load ptr, ptr %9, align 8, !tbaa !9
  %1241 = getelementptr inbounds double, ptr %1240, i64 1
  %1242 = load double, ptr %1241, align 8, !tbaa !11
  %1243 = fadd double %1239, %1242
  %1244 = fadd double %1243, 6.900000e-01
  %1245 = load ptr, ptr %11, align 8, !tbaa !9
  %1246 = getelementptr inbounds double, ptr %1245, i64 0
  store double %1244, ptr %1246, align 8, !tbaa !11
  %1247 = load ptr, ptr %9, align 8, !tbaa !9
  %1248 = getelementptr inbounds double, ptr %1247, i64 2
  %1249 = load double, ptr %1248, align 8, !tbaa !11
  %1250 = load ptr, ptr %9, align 8, !tbaa !9
  %1251 = getelementptr inbounds double, ptr %1250, i64 3
  %1252 = load double, ptr %1251, align 8, !tbaa !11
  %1253 = fadd double %1249, %1252
  %1254 = fadd double %1253, 4.400000e-02
  %1255 = load ptr, ptr %11, align 8, !tbaa !9
  %1256 = getelementptr inbounds double, ptr %1255, i64 1
  store double %1254, ptr %1256, align 8, !tbaa !11
  %1257 = load ptr, ptr %9, align 8, !tbaa !9
  %1258 = getelementptr inbounds double, ptr %1257, i64 4
  %1259 = load double, ptr %1258, align 8, !tbaa !11
  %1260 = load ptr, ptr %9, align 8, !tbaa !9
  %1261 = getelementptr inbounds double, ptr %1260, i64 0
  %1262 = load double, ptr %1261, align 8, !tbaa !11
  %1263 = load ptr, ptr %9, align 8, !tbaa !9
  %1264 = getelementptr inbounds double, ptr %1263, i64 5
  %1265 = load double, ptr %1264, align 8, !tbaa !11
  %1266 = load ptr, ptr %9, align 8, !tbaa !9
  %1267 = getelementptr inbounds double, ptr %1266, i64 1
  %1268 = load double, ptr %1267, align 8, !tbaa !11
  %1269 = fmul double %1265, %1268
  %1270 = call double @llvm.fmuladd.f64(double %1259, double %1262, double %1269)
  %1271 = load ptr, ptr %9, align 8, !tbaa !9
  %1272 = getelementptr inbounds double, ptr %1271, i64 6
  %1273 = load double, ptr %1272, align 8, !tbaa !11
  %1274 = load ptr, ptr %9, align 8, !tbaa !9
  %1275 = getelementptr inbounds double, ptr %1274, i64 2
  %1276 = load double, ptr %1275, align 8, !tbaa !11
  %1277 = fneg double %1273
  %1278 = call double @llvm.fmuladd.f64(double %1277, double %1276, double %1270)
  %1279 = load ptr, ptr %9, align 8, !tbaa !9
  %1280 = getelementptr inbounds double, ptr %1279, i64 7
  %1281 = load double, ptr %1280, align 8, !tbaa !11
  %1282 = load ptr, ptr %9, align 8, !tbaa !9
  %1283 = getelementptr inbounds double, ptr %1282, i64 3
  %1284 = load double, ptr %1283, align 8, !tbaa !11
  %1285 = fneg double %1281
  %1286 = call double @llvm.fmuladd.f64(double %1285, double %1284, double %1278)
  %1287 = fadd double %1286, 1.570000e+00
  %1288 = load ptr, ptr %11, align 8, !tbaa !9
  %1289 = getelementptr inbounds double, ptr %1288, i64 2
  store double %1287, ptr %1289, align 8, !tbaa !11
  %1290 = load ptr, ptr %9, align 8, !tbaa !9
  %1291 = getelementptr inbounds double, ptr %1290, i64 6
  %1292 = load double, ptr %1291, align 8, !tbaa !11
  %1293 = load ptr, ptr %9, align 8, !tbaa !9
  %1294 = getelementptr inbounds double, ptr %1293, i64 0
  %1295 = load double, ptr %1294, align 8, !tbaa !11
  %1296 = load ptr, ptr %9, align 8, !tbaa !9
  %1297 = getelementptr inbounds double, ptr %1296, i64 7
  %1298 = load double, ptr %1297, align 8, !tbaa !11
  %1299 = load ptr, ptr %9, align 8, !tbaa !9
  %1300 = getelementptr inbounds double, ptr %1299, i64 1
  %1301 = load double, ptr %1300, align 8, !tbaa !11
  %1302 = fmul double %1298, %1301
  %1303 = call double @llvm.fmuladd.f64(double %1292, double %1295, double %1302)
  %1304 = load ptr, ptr %9, align 8, !tbaa !9
  %1305 = getelementptr inbounds double, ptr %1304, i64 4
  %1306 = load double, ptr %1305, align 8, !tbaa !11
  %1307 = load ptr, ptr %9, align 8, !tbaa !9
  %1308 = getelementptr inbounds double, ptr %1307, i64 2
  %1309 = load double, ptr %1308, align 8, !tbaa !11
  %1310 = call double @llvm.fmuladd.f64(double %1306, double %1309, double %1303)
  %1311 = load ptr, ptr %9, align 8, !tbaa !9
  %1312 = getelementptr inbounds double, ptr %1311, i64 5
  %1313 = load double, ptr %1312, align 8, !tbaa !11
  %1314 = load ptr, ptr %9, align 8, !tbaa !9
  %1315 = getelementptr inbounds double, ptr %1314, i64 3
  %1316 = load double, ptr %1315, align 8, !tbaa !11
  %1317 = call double @llvm.fmuladd.f64(double %1313, double %1316, double %1310)
  %1318 = fadd double %1317, 1.310000e+00
  %1319 = load ptr, ptr %11, align 8, !tbaa !9
  %1320 = getelementptr inbounds double, ptr %1319, i64 3
  store double %1318, ptr %1320, align 8, !tbaa !11
  %1321 = load ptr, ptr %9, align 8, !tbaa !9
  %1322 = getelementptr inbounds double, ptr %1321, i64 0
  %1323 = load double, ptr %1322, align 8, !tbaa !11
  %1324 = load ptr, ptr %9, align 8, !tbaa !9
  %1325 = getelementptr inbounds double, ptr %1324, i64 4
  %1326 = load double, ptr %1325, align 8, !tbaa !11
  %1327 = load ptr, ptr %9, align 8, !tbaa !9
  %1328 = getelementptr inbounds double, ptr %1327, i64 4
  %1329 = load double, ptr %1328, align 8, !tbaa !11
  %1330 = load ptr, ptr %9, align 8, !tbaa !9
  %1331 = getelementptr inbounds double, ptr %1330, i64 6
  %1332 = load double, ptr %1331, align 8, !tbaa !11
  %1333 = load ptr, ptr %9, align 8, !tbaa !9
  %1334 = getelementptr inbounds double, ptr %1333, i64 6
  %1335 = load double, ptr %1334, align 8, !tbaa !11
  %1336 = fmul double %1332, %1335
  %1337 = fneg double %1336
  %1338 = call double @llvm.fmuladd.f64(double %1326, double %1329, double %1337)
  %1339 = load ptr, ptr %9, align 8, !tbaa !9
  %1340 = getelementptr inbounds double, ptr %1339, i64 2
  %1341 = load double, ptr %1340, align 8, !tbaa !11
  %1342 = fmul double 2.000000e+00, %1341
  %1343 = load ptr, ptr %9, align 8, !tbaa !9
  %1344 = getelementptr inbounds double, ptr %1343, i64 4
  %1345 = load double, ptr %1344, align 8, !tbaa !11
  %1346 = fmul double %1342, %1345
  %1347 = load ptr, ptr %9, align 8, !tbaa !9
  %1348 = getelementptr inbounds double, ptr %1347, i64 6
  %1349 = load double, ptr %1348, align 8, !tbaa !11
  %1350 = fmul double %1346, %1349
  %1351 = fneg double %1350
  %1352 = call double @llvm.fmuladd.f64(double %1323, double %1338, double %1351)
  %1353 = load ptr, ptr %9, align 8, !tbaa !9
  %1354 = getelementptr inbounds double, ptr %1353, i64 1
  %1355 = load double, ptr %1354, align 8, !tbaa !11
  %1356 = load ptr, ptr %9, align 8, !tbaa !9
  %1357 = getelementptr inbounds double, ptr %1356, i64 5
  %1358 = load double, ptr %1357, align 8, !tbaa !11
  %1359 = load ptr, ptr %9, align 8, !tbaa !9
  %1360 = getelementptr inbounds double, ptr %1359, i64 5
  %1361 = load double, ptr %1360, align 8, !tbaa !11
  %1362 = load ptr, ptr %9, align 8, !tbaa !9
  %1363 = getelementptr inbounds double, ptr %1362, i64 7
  %1364 = load double, ptr %1363, align 8, !tbaa !11
  %1365 = load ptr, ptr %9, align 8, !tbaa !9
  %1366 = getelementptr inbounds double, ptr %1365, i64 7
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = fmul double %1364, %1367
  %1369 = fneg double %1368
  %1370 = call double @llvm.fmuladd.f64(double %1358, double %1361, double %1369)
  %1371 = call double @llvm.fmuladd.f64(double %1355, double %1370, double %1352)
  %1372 = load ptr, ptr %9, align 8, !tbaa !9
  %1373 = getelementptr inbounds double, ptr %1372, i64 3
  %1374 = load double, ptr %1373, align 8, !tbaa !11
  %1375 = fmul double 2.000000e+00, %1374
  %1376 = load ptr, ptr %9, align 8, !tbaa !9
  %1377 = getelementptr inbounds double, ptr %1376, i64 5
  %1378 = load double, ptr %1377, align 8, !tbaa !11
  %1379 = fmul double %1375, %1378
  %1380 = load ptr, ptr %9, align 8, !tbaa !9
  %1381 = getelementptr inbounds double, ptr %1380, i64 7
  %1382 = load double, ptr %1381, align 8, !tbaa !11
  %1383 = fneg double %1379
  %1384 = call double @llvm.fmuladd.f64(double %1383, double %1382, double %1371)
  %1385 = fadd double %1384, 2.650000e+00
  %1386 = load ptr, ptr %11, align 8, !tbaa !9
  %1387 = getelementptr inbounds double, ptr %1386, i64 4
  store double %1385, ptr %1387, align 8, !tbaa !11
  %1388 = load ptr, ptr %9, align 8, !tbaa !9
  %1389 = getelementptr inbounds double, ptr %1388, i64 2
  %1390 = load double, ptr %1389, align 8, !tbaa !11
  %1391 = load ptr, ptr %9, align 8, !tbaa !9
  %1392 = getelementptr inbounds double, ptr %1391, i64 4
  %1393 = load double, ptr %1392, align 8, !tbaa !11
  %1394 = load ptr, ptr %9, align 8, !tbaa !9
  %1395 = getelementptr inbounds double, ptr %1394, i64 4
  %1396 = load double, ptr %1395, align 8, !tbaa !11
  %1397 = load ptr, ptr %9, align 8, !tbaa !9
  %1398 = getelementptr inbounds double, ptr %1397, i64 6
  %1399 = load double, ptr %1398, align 8, !tbaa !11
  %1400 = load ptr, ptr %9, align 8, !tbaa !9
  %1401 = getelementptr inbounds double, ptr %1400, i64 6
  %1402 = load double, ptr %1401, align 8, !tbaa !11
  %1403 = fmul double %1399, %1402
  %1404 = fneg double %1403
  %1405 = call double @llvm.fmuladd.f64(double %1393, double %1396, double %1404)
  %1406 = load ptr, ptr %9, align 8, !tbaa !9
  %1407 = getelementptr inbounds double, ptr %1406, i64 0
  %1408 = load double, ptr %1407, align 8, !tbaa !11
  %1409 = fmul double 2.000000e+00, %1408
  %1410 = load ptr, ptr %9, align 8, !tbaa !9
  %1411 = getelementptr inbounds double, ptr %1410, i64 4
  %1412 = load double, ptr %1411, align 8, !tbaa !11
  %1413 = fmul double %1409, %1412
  %1414 = load ptr, ptr %9, align 8, !tbaa !9
  %1415 = getelementptr inbounds double, ptr %1414, i64 6
  %1416 = load double, ptr %1415, align 8, !tbaa !11
  %1417 = fmul double %1413, %1416
  %1418 = call double @llvm.fmuladd.f64(double %1390, double %1405, double %1417)
  %1419 = load ptr, ptr %9, align 8, !tbaa !9
  %1420 = getelementptr inbounds double, ptr %1419, i64 3
  %1421 = load double, ptr %1420, align 8, !tbaa !11
  %1422 = load ptr, ptr %9, align 8, !tbaa !9
  %1423 = getelementptr inbounds double, ptr %1422, i64 5
  %1424 = load double, ptr %1423, align 8, !tbaa !11
  %1425 = load ptr, ptr %9, align 8, !tbaa !9
  %1426 = getelementptr inbounds double, ptr %1425, i64 5
  %1427 = load double, ptr %1426, align 8, !tbaa !11
  %1428 = load ptr, ptr %9, align 8, !tbaa !9
  %1429 = getelementptr inbounds double, ptr %1428, i64 7
  %1430 = load double, ptr %1429, align 8, !tbaa !11
  %1431 = load ptr, ptr %9, align 8, !tbaa !9
  %1432 = getelementptr inbounds double, ptr %1431, i64 7
  %1433 = load double, ptr %1432, align 8, !tbaa !11
  %1434 = fmul double %1430, %1433
  %1435 = fneg double %1434
  %1436 = call double @llvm.fmuladd.f64(double %1424, double %1427, double %1435)
  %1437 = call double @llvm.fmuladd.f64(double %1421, double %1436, double %1418)
  %1438 = load ptr, ptr %9, align 8, !tbaa !9
  %1439 = getelementptr inbounds double, ptr %1438, i64 1
  %1440 = load double, ptr %1439, align 8, !tbaa !11
  %1441 = fmul double 2.000000e+00, %1440
  %1442 = load ptr, ptr %9, align 8, !tbaa !9
  %1443 = getelementptr inbounds double, ptr %1442, i64 5
  %1444 = load double, ptr %1443, align 8, !tbaa !11
  %1445 = fmul double %1441, %1444
  %1446 = load ptr, ptr %9, align 8, !tbaa !9
  %1447 = getelementptr inbounds double, ptr %1446, i64 7
  %1448 = load double, ptr %1447, align 8, !tbaa !11
  %1449 = call double @llvm.fmuladd.f64(double %1445, double %1448, double %1437)
  %1450 = fsub double %1449, 2.000000e+00
  %1451 = load ptr, ptr %11, align 8, !tbaa !9
  %1452 = getelementptr inbounds double, ptr %1451, i64 5
  store double %1450, ptr %1452, align 8, !tbaa !11
  %1453 = load ptr, ptr %9, align 8, !tbaa !9
  %1454 = getelementptr inbounds double, ptr %1453, i64 0
  %1455 = load double, ptr %1454, align 8, !tbaa !11
  %1456 = load ptr, ptr %9, align 8, !tbaa !9
  %1457 = getelementptr inbounds double, ptr %1456, i64 4
  %1458 = load double, ptr %1457, align 8, !tbaa !11
  %1459 = fmul double %1455, %1458
  %1460 = load ptr, ptr %9, align 8, !tbaa !9
  %1461 = getelementptr inbounds double, ptr %1460, i64 4
  %1462 = load double, ptr %1461, align 8, !tbaa !11
  %1463 = load ptr, ptr %9, align 8, !tbaa !9
  %1464 = getelementptr inbounds double, ptr %1463, i64 4
  %1465 = load double, ptr %1464, align 8, !tbaa !11
  %1466 = load ptr, ptr %9, align 8, !tbaa !9
  %1467 = getelementptr inbounds double, ptr %1466, i64 6
  %1468 = load double, ptr %1467, align 8, !tbaa !11
  %1469 = fmul double 3.000000e+00, %1468
  %1470 = load ptr, ptr %9, align 8, !tbaa !9
  %1471 = getelementptr inbounds double, ptr %1470, i64 6
  %1472 = load double, ptr %1471, align 8, !tbaa !11
  %1473 = fmul double %1469, %1472
  %1474 = fneg double %1473
  %1475 = call double @llvm.fmuladd.f64(double %1462, double %1465, double %1474)
  %1476 = load ptr, ptr %9, align 8, !tbaa !9
  %1477 = getelementptr inbounds double, ptr %1476, i64 2
  %1478 = load double, ptr %1477, align 8, !tbaa !11
  %1479 = load ptr, ptr %9, align 8, !tbaa !9
  %1480 = getelementptr inbounds double, ptr %1479, i64 6
  %1481 = load double, ptr %1480, align 8, !tbaa !11
  %1482 = fmul double %1478, %1481
  %1483 = load ptr, ptr %9, align 8, !tbaa !9
  %1484 = getelementptr inbounds double, ptr %1483, i64 6
  %1485 = load double, ptr %1484, align 8, !tbaa !11
  %1486 = load ptr, ptr %9, align 8, !tbaa !9
  %1487 = getelementptr inbounds double, ptr %1486, i64 6
  %1488 = load double, ptr %1487, align 8, !tbaa !11
  %1489 = load ptr, ptr %9, align 8, !tbaa !9
  %1490 = getelementptr inbounds double, ptr %1489, i64 4
  %1491 = load double, ptr %1490, align 8, !tbaa !11
  %1492 = fmul double 3.000000e+00, %1491
  %1493 = load ptr, ptr %9, align 8, !tbaa !9
  %1494 = getelementptr inbounds double, ptr %1493, i64 4
  %1495 = load double, ptr %1494, align 8, !tbaa !11
  %1496 = fmul double %1492, %1495
  %1497 = fneg double %1496
  %1498 = call double @llvm.fmuladd.f64(double %1485, double %1488, double %1497)
  %1499 = fmul double %1482, %1498
  %1500 = call double @llvm.fmuladd.f64(double %1459, double %1475, double %1499)
  %1501 = load ptr, ptr %9, align 8, !tbaa !9
  %1502 = getelementptr inbounds double, ptr %1501, i64 1
  %1503 = load double, ptr %1502, align 8, !tbaa !11
  %1504 = load ptr, ptr %9, align 8, !tbaa !9
  %1505 = getelementptr inbounds double, ptr %1504, i64 5
  %1506 = load double, ptr %1505, align 8, !tbaa !11
  %1507 = fmul double %1503, %1506
  %1508 = load ptr, ptr %9, align 8, !tbaa !9
  %1509 = getelementptr inbounds double, ptr %1508, i64 5
  %1510 = load double, ptr %1509, align 8, !tbaa !11
  %1511 = load ptr, ptr %9, align 8, !tbaa !9
  %1512 = getelementptr inbounds double, ptr %1511, i64 5
  %1513 = load double, ptr %1512, align 8, !tbaa !11
  %1514 = load ptr, ptr %9, align 8, !tbaa !9
  %1515 = getelementptr inbounds double, ptr %1514, i64 7
  %1516 = load double, ptr %1515, align 8, !tbaa !11
  %1517 = fmul double 3.000000e+00, %1516
  %1518 = load ptr, ptr %9, align 8, !tbaa !9
  %1519 = getelementptr inbounds double, ptr %1518, i64 7
  %1520 = load double, ptr %1519, align 8, !tbaa !11
  %1521 = fmul double %1517, %1520
  %1522 = fneg double %1521
  %1523 = call double @llvm.fmuladd.f64(double %1510, double %1513, double %1522)
  %1524 = call double @llvm.fmuladd.f64(double %1507, double %1523, double %1500)
  %1525 = load ptr, ptr %9, align 8, !tbaa !9
  %1526 = getelementptr inbounds double, ptr %1525, i64 3
  %1527 = load double, ptr %1526, align 8, !tbaa !11
  %1528 = load ptr, ptr %9, align 8, !tbaa !9
  %1529 = getelementptr inbounds double, ptr %1528, i64 7
  %1530 = load double, ptr %1529, align 8, !tbaa !11
  %1531 = fmul double %1527, %1530
  %1532 = load ptr, ptr %9, align 8, !tbaa !9
  %1533 = getelementptr inbounds double, ptr %1532, i64 7
  %1534 = load double, ptr %1533, align 8, !tbaa !11
  %1535 = load ptr, ptr %9, align 8, !tbaa !9
  %1536 = getelementptr inbounds double, ptr %1535, i64 7
  %1537 = load double, ptr %1536, align 8, !tbaa !11
  %1538 = load ptr, ptr %9, align 8, !tbaa !9
  %1539 = getelementptr inbounds double, ptr %1538, i64 5
  %1540 = load double, ptr %1539, align 8, !tbaa !11
  %1541 = fmul double 3.000000e+00, %1540
  %1542 = load ptr, ptr %9, align 8, !tbaa !9
  %1543 = getelementptr inbounds double, ptr %1542, i64 5
  %1544 = load double, ptr %1543, align 8, !tbaa !11
  %1545 = fmul double %1541, %1544
  %1546 = fneg double %1545
  %1547 = call double @llvm.fmuladd.f64(double %1534, double %1537, double %1546)
  %1548 = call double @llvm.fmuladd.f64(double %1531, double %1547, double %1524)
  %1549 = fadd double %1548, 1.260000e+01
  %1550 = load ptr, ptr %11, align 8, !tbaa !9
  %1551 = getelementptr inbounds double, ptr %1550, i64 6
  store double %1549, ptr %1551, align 8, !tbaa !11
  %1552 = load ptr, ptr %9, align 8, !tbaa !9
  %1553 = getelementptr inbounds double, ptr %1552, i64 2
  %1554 = load double, ptr %1553, align 8, !tbaa !11
  %1555 = load ptr, ptr %9, align 8, !tbaa !9
  %1556 = getelementptr inbounds double, ptr %1555, i64 4
  %1557 = load double, ptr %1556, align 8, !tbaa !11
  %1558 = fmul double %1554, %1557
  %1559 = load ptr, ptr %9, align 8, !tbaa !9
  %1560 = getelementptr inbounds double, ptr %1559, i64 4
  %1561 = load double, ptr %1560, align 8, !tbaa !11
  %1562 = load ptr, ptr %9, align 8, !tbaa !9
  %1563 = getelementptr inbounds double, ptr %1562, i64 4
  %1564 = load double, ptr %1563, align 8, !tbaa !11
  %1565 = load ptr, ptr %9, align 8, !tbaa !9
  %1566 = getelementptr inbounds double, ptr %1565, i64 6
  %1567 = load double, ptr %1566, align 8, !tbaa !11
  %1568 = fmul double 3.000000e+00, %1567
  %1569 = load ptr, ptr %9, align 8, !tbaa !9
  %1570 = getelementptr inbounds double, ptr %1569, i64 6
  %1571 = load double, ptr %1570, align 8, !tbaa !11
  %1572 = fmul double %1568, %1571
  %1573 = fneg double %1572
  %1574 = call double @llvm.fmuladd.f64(double %1561, double %1564, double %1573)
  %1575 = load ptr, ptr %9, align 8, !tbaa !9
  %1576 = getelementptr inbounds double, ptr %1575, i64 0
  %1577 = load double, ptr %1576, align 8, !tbaa !11
  %1578 = load ptr, ptr %9, align 8, !tbaa !9
  %1579 = getelementptr inbounds double, ptr %1578, i64 6
  %1580 = load double, ptr %1579, align 8, !tbaa !11
  %1581 = fmul double %1577, %1580
  %1582 = load ptr, ptr %9, align 8, !tbaa !9
  %1583 = getelementptr inbounds double, ptr %1582, i64 6
  %1584 = load double, ptr %1583, align 8, !tbaa !11
  %1585 = load ptr, ptr %9, align 8, !tbaa !9
  %1586 = getelementptr inbounds double, ptr %1585, i64 6
  %1587 = load double, ptr %1586, align 8, !tbaa !11
  %1588 = load ptr, ptr %9, align 8, !tbaa !9
  %1589 = getelementptr inbounds double, ptr %1588, i64 4
  %1590 = load double, ptr %1589, align 8, !tbaa !11
  %1591 = fmul double 3.000000e+00, %1590
  %1592 = load ptr, ptr %9, align 8, !tbaa !9
  %1593 = getelementptr inbounds double, ptr %1592, i64 4
  %1594 = load double, ptr %1593, align 8, !tbaa !11
  %1595 = fmul double %1591, %1594
  %1596 = fneg double %1595
  %1597 = call double @llvm.fmuladd.f64(double %1584, double %1587, double %1596)
  %1598 = fmul double %1581, %1597
  %1599 = fneg double %1598
  %1600 = call double @llvm.fmuladd.f64(double %1558, double %1574, double %1599)
  %1601 = load ptr, ptr %9, align 8, !tbaa !9
  %1602 = getelementptr inbounds double, ptr %1601, i64 3
  %1603 = load double, ptr %1602, align 8, !tbaa !11
  %1604 = load ptr, ptr %9, align 8, !tbaa !9
  %1605 = getelementptr inbounds double, ptr %1604, i64 5
  %1606 = load double, ptr %1605, align 8, !tbaa !11
  %1607 = fmul double %1603, %1606
  %1608 = load ptr, ptr %9, align 8, !tbaa !9
  %1609 = getelementptr inbounds double, ptr %1608, i64 5
  %1610 = load double, ptr %1609, align 8, !tbaa !11
  %1611 = load ptr, ptr %9, align 8, !tbaa !9
  %1612 = getelementptr inbounds double, ptr %1611, i64 5
  %1613 = load double, ptr %1612, align 8, !tbaa !11
  %1614 = load ptr, ptr %9, align 8, !tbaa !9
  %1615 = getelementptr inbounds double, ptr %1614, i64 7
  %1616 = load double, ptr %1615, align 8, !tbaa !11
  %1617 = fmul double 3.000000e+00, %1616
  %1618 = load ptr, ptr %9, align 8, !tbaa !9
  %1619 = getelementptr inbounds double, ptr %1618, i64 7
  %1620 = load double, ptr %1619, align 8, !tbaa !11
  %1621 = fmul double %1617, %1620
  %1622 = fneg double %1621
  %1623 = call double @llvm.fmuladd.f64(double %1610, double %1613, double %1622)
  %1624 = call double @llvm.fmuladd.f64(double %1607, double %1623, double %1600)
  %1625 = load ptr, ptr %9, align 8, !tbaa !9
  %1626 = getelementptr inbounds double, ptr %1625, i64 1
  %1627 = load double, ptr %1626, align 8, !tbaa !11
  %1628 = load ptr, ptr %9, align 8, !tbaa !9
  %1629 = getelementptr inbounds double, ptr %1628, i64 7
  %1630 = load double, ptr %1629, align 8, !tbaa !11
  %1631 = fmul double %1627, %1630
  %1632 = load ptr, ptr %9, align 8, !tbaa !9
  %1633 = getelementptr inbounds double, ptr %1632, i64 7
  %1634 = load double, ptr %1633, align 8, !tbaa !11
  %1635 = load ptr, ptr %9, align 8, !tbaa !9
  %1636 = getelementptr inbounds double, ptr %1635, i64 7
  %1637 = load double, ptr %1636, align 8, !tbaa !11
  %1638 = load ptr, ptr %9, align 8, !tbaa !9
  %1639 = getelementptr inbounds double, ptr %1638, i64 5
  %1640 = load double, ptr %1639, align 8, !tbaa !11
  %1641 = fmul double 3.000000e+00, %1640
  %1642 = load ptr, ptr %9, align 8, !tbaa !9
  %1643 = getelementptr inbounds double, ptr %1642, i64 5
  %1644 = load double, ptr %1643, align 8, !tbaa !11
  %1645 = fmul double %1641, %1644
  %1646 = fneg double %1645
  %1647 = call double @llvm.fmuladd.f64(double %1634, double %1637, double %1646)
  %1648 = fneg double %1631
  %1649 = call double @llvm.fmuladd.f64(double %1648, double %1647, double %1624)
  %1650 = fsub double %1649, 9.480000e+00
  %1651 = load ptr, ptr %11, align 8, !tbaa !9
  %1652 = getelementptr inbounds double, ptr %1651, i64 7
  store double %1650, ptr %1652, align 8, !tbaa !11
  br label %1653

1653:                                             ; preds = %1236, %1233
  br label %1654

1654:                                             ; preds = %1653, %1232
  br label %1655

1655:                                             ; preds = %1654, %1161
  br label %1656

1656:                                             ; preds = %1655, %1124
  br label %1657

1657:                                             ; preds = %1656, %1024
  br label %1658

1658:                                             ; preds = %1657, %937
  br label %1659

1659:                                             ; preds = %1658, %876
  br label %1660

1660:                                             ; preds = %1659, %824
  br label %1661

1661:                                             ; preds = %1660, %730
  br label %1662

1662:                                             ; preds = %1661, %680
  br label %1663

1663:                                             ; preds = %1662, %642
  br label %1664

1664:                                             ; preds = %1663, %575
  br label %1665

1665:                                             ; preds = %1664, %503
  br label %1666

1666:                                             ; preds = %1665, %459
  br label %1667

1667:                                             ; preds = %1666, %398
  br label %1668

1668:                                             ; preds = %1667, %307
  br label %1669

1669:                                             ; preds = %1668, %261
  br label %1670

1670:                                             ; preds = %1669, %225
  br label %1671

1671:                                             ; preds = %1670, %168
  br label %1672

1672:                                             ; preds = %1671, %159
  br label %1673

1673:                                             ; preds = %1672, %118
  br label %1674

1674:                                             ; preds = %1673, %77
  store i1 true, ptr %6, align 1
  store i32 1, ptr %21, align 4
  br label %1675

1675:                                             ; preds = %1674, %479, %438, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #5
  %1676 = load i1, ptr %6, align 1
  ret i1 %1676
}

; Function Attrs: nounwind
declare double @atan(double noundef) #0

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !14}
!35 = distinct !{!35, !14}
!36 = distinct !{!36, !14}
!37 = distinct !{!37, !14}
!38 = distinct !{!38, !14}
!39 = distinct !{!39, !14}
!40 = distinct !{!40, !14}


; 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"

@_ZL5SQRT5 = external hidden local_unnamed_addr global double, align 8
@_ZL6SQRT10 = external hidden local_unnamed_addr global double, align 8
@_ZL2Y1 = external hidden local_unnamed_addr constant [15 x double], align 16
@_ZL1V = external hidden local_unnamed_addr constant [11 x double], align 16
@_ZL2Y2 = external hidden local_unnamed_addr constant [11 x double], align 16
@_ZL2Y3 = external hidden local_unnamed_addr constant [16 x double], align 16
@_ZL2Y4 = external hidden local_unnamed_addr constant [33 x double], align 16
@_ZL2Y5 = external hidden local_unnamed_addr constant [65 x double], align 16

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef double @_ZSt3powIidEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(i32 noundef, double noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
define dso_local noundef zeroext i1 @_Z6dfoveciiPKdiPd(i32 noundef %0, i32 noundef %1, ptr noundef readonly %2, i32 noundef %3, ptr nocapture noundef %4) local_unnamed_addr #3 {
  %6 = ptrtoint ptr %2 to i64
  %7 = ptrtoint ptr %4 to i64
  switch i32 %3, label %.loopexit [
    i32 1, label %.preheader
    i32 2, label %.preheader558
    i32 3, label %.preheader560
    i32 4, label %209
    i32 5, label %219
    i32 6, label %252
    i32 7, label %275
    i32 8, label %.preheader561
    i32 9, label %.preheader563
    i32 10, label %.preheader566
    i32 11, label %.preheader570
    i32 12, label %.preheader571
    i32 13, label %.preheader573
    i32 14, label %.preheader575
    i32 15, label %.preheader580
    i32 16, label %634
    i32 17, label %.preheader582
    i32 18, label %.preheader584
    i32 19, label %.preheader586
    i32 20, label %778
    i32 21, label %.preheader590
    i32 22, label %825
  ]

.preheader590:                                    ; preds = %5
  %.not596 = icmp slt i32 %1, 1
  br i1 %.not596, label %.loopexit, label %.preheader589.lr.ph

.preheader589.lr.ph:                              ; preds = %.preheader590
  %invariant.gep = getelementptr i8, ptr %2, i64 -8
  %8 = add nuw i32 %1, 1
  %wide.trip.count = zext i32 %8 to i64
  br label %.lr.ph

.preheader586:                                    ; preds = %5
  %.not542603 = icmp slt i32 %1, 5
  br i1 %.not542603, label %.loopexit, label %.lr.ph605

.lr.ph605:                                        ; preds = %.preheader586
  %invariant.gep601 = getelementptr i8, ptr %2, i64 -8
  %9 = zext nneg i32 %1 to i64
  %gep602 = getelementptr double, ptr %invariant.gep601, i64 %9
  %10 = add nsw i32 %1, -3
  %wide.trip.count734 = zext i32 %10 to i64
  %11 = zext nneg i32 %1 to i64
  %invariant.gep866 = getelementptr double, ptr %4, i64 %11
  %invariant.gep868 = getelementptr i8, ptr %invariant.gep866, i64 -40
  %12 = add nsw i64 %wide.trip.count734, -1
  %min.iters.check = icmp ult i64 %12, 14
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph605
  %indvars.iv731.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph605 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

vector.memcheck:                                  ; preds = %.lr.ph605
  %13 = shl nuw nsw i64 %wide.trip.count734, 3
  %14 = add nsw i64 %13, -8
  %scevgep = getelementptr i8, ptr %4, i64 %14
  %15 = shl nuw nsw i64 %9, 3
  %16 = getelementptr i8, ptr %4, i64 %15
  %scevgep890 = getelementptr i8, ptr %16, i64 -32
  %17 = getelementptr i8, ptr %4, i64 %15
  %18 = getelementptr i8, ptr %17, i64 %13
  %scevgep891 = getelementptr i8, ptr %18, i64 -40
  %scevgep892 = getelementptr i8, ptr %2, i64 %14
  %scevgep893 = getelementptr i8, ptr %2, i64 8
  %scevgep894 = getelementptr i8, ptr %2, i64 %13
  %scevgep895 = getelementptr i8, ptr %2, i64 16
  %19 = getelementptr i8, ptr %2, i64 %13
  %scevgep896 = getelementptr i8, ptr %19, i64 8
  %scevgep897 = getelementptr i8, ptr %2, i64 24
  %20 = getelementptr i8, ptr %2, i64 %13
  %scevgep898 = getelementptr i8, ptr %20, i64 16
  %scevgep899 = getelementptr i8, ptr %2, i64 %15
  %bound0 = icmp ugt ptr %scevgep891, %4
  %bound1 = icmp ult ptr %scevgep890, %scevgep
  %found.conflict = and i1 %bound0, %bound1
  %bound0900 = icmp ugt ptr %scevgep892, %4
  %bound1901 = icmp ugt ptr %scevgep, %2
  %found.conflict902 = and i1 %bound0900, %bound1901
  %conflict.rdx = or i1 %found.conflict, %found.conflict902
  %bound0903 = icmp ugt ptr %scevgep894, %4
  %bound1904 = icmp ult ptr %scevgep893, %scevgep
  %found.conflict905 = and i1 %bound0903, %bound1904
  %conflict.rdx906 = or i1 %conflict.rdx, %found.conflict905
  %bound0907 = icmp ugt ptr %scevgep896, %4
  %bound1908 = icmp ult ptr %scevgep895, %scevgep
  %found.conflict909 = and i1 %bound0907, %bound1908
  %conflict.rdx910 = or i1 %conflict.rdx906, %found.conflict909
  %bound0911 = icmp ugt ptr %scevgep898, %4
  %bound1912 = icmp ult ptr %scevgep897, %scevgep
  %found.conflict913 = and i1 %bound0911, %bound1912
  %conflict.rdx914 = or i1 %conflict.rdx910, %found.conflict913
  %bound0915 = icmp ugt ptr %scevgep899, %4
  %bound1916 = icmp ult ptr %gep602, %scevgep
  %found.conflict917 = and i1 %bound0915, %bound1916
  %conflict.rdx918 = or i1 %conflict.rdx914, %found.conflict917
  %bound0919 = icmp ult ptr %scevgep890, %scevgep892
  %bound1920 = icmp ugt ptr %scevgep891, %2
  %found.conflict921 = and i1 %bound0919, %bound1920
  %conflict.rdx922 = or i1 %conflict.rdx918, %found.conflict921
  %bound0923 = icmp ult ptr %scevgep890, %scevgep894
  %bound1924 = icmp ult ptr %scevgep893, %scevgep891
  %found.conflict925 = and i1 %bound0923, %bound1924
  %conflict.rdx926 = or i1 %conflict.rdx922, %found.conflict925
  %bound0927 = icmp ult ptr %scevgep890, %scevgep896
  %bound1928 = icmp ult ptr %scevgep895, %scevgep891
  %found.conflict929 = and i1 %bound0927, %bound1928
  %conflict.rdx930 = or i1 %conflict.rdx926, %found.conflict929
  %bound0931 = icmp ult ptr %scevgep890, %scevgep898
  %bound1932 = icmp ult ptr %scevgep897, %scevgep891
  %found.conflict933 = and i1 %bound0931, %bound1932
  %conflict.rdx934 = or i1 %conflict.rdx930, %found.conflict933
  %bound0935 = icmp ult ptr %scevgep890, %scevgep899
  %bound1936 = icmp ult ptr %gep602, %scevgep891
  %found.conflict937 = and i1 %bound0935, %bound1936
  %conflict.rdx938 = or i1 %conflict.rdx934, %found.conflict937
  br i1 %conflict.rdx938, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %12, -2
  %ind.end = or i64 %12, 1
  %invariant.gep1083 = getelementptr i8, ptr %2, i64 16
  %21 = load double, ptr %gep602, align 8, !tbaa !5, !alias.scope !9
  %broadcast.splatinsert = insertelement <2 x double> poison, double %21, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %22 = fmul <2 x double> %broadcast.splat, <double 5.000000e+00, double 5.000000e+00>
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %23 = getelementptr inbounds double, ptr %2, i64 %index
  %wide.load = load <2 x double>, ptr %23, align 8, !tbaa !5, !alias.scope !12
  %24 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load, <2 x double> <double -4.000000e+00, double -4.000000e+00>, <2 x double> <double 3.000000e+00, double 3.000000e+00>)
  %25 = getelementptr inbounds double, ptr %4, i64 %index
  store <2 x double> %24, ptr %25, align 8, !tbaa !5, !alias.scope !14, !noalias !16
  %26 = getelementptr inbounds double, ptr %2, i64 %offset.idx
  %wide.load940 = load <2 x double>, ptr %26, align 8, !tbaa !5, !alias.scope !21
  %27 = fmul <2 x double> %wide.load940, <double 2.000000e+00, double 2.000000e+00>
  %28 = fmul <2 x double> %wide.load940, %27
  %29 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %wide.load, <2 x double> %wide.load, <2 x double> %28)
  %gep1084 = getelementptr double, ptr %invariant.gep1083, i64 %index
  %wide.load941 = load <2 x double>, ptr %gep1084, align 8, !tbaa !5, !alias.scope !22
  %30 = fmul <2 x double> %wide.load941, <double 3.000000e+00, double 3.000000e+00>
  %31 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %30, <2 x double> %wide.load941, <2 x double> %29)
  %32 = getelementptr inbounds i8, ptr %26, i64 16
  %wide.load942 = load <2 x double>, ptr %32, align 8, !tbaa !5, !alias.scope !23
  %33 = fmul <2 x double> %wide.load942, <double 4.000000e+00, double 4.000000e+00>
  %34 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %33, <2 x double> %wide.load942, <2 x double> %31)
  %35 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %22, <2 x double> %broadcast.splat, <2 x double> %34)
  %36 = getelementptr double, ptr %invariant.gep868, i64 %offset.idx
  store <2 x double> %35, ptr %36, align 8, !tbaa !5, !alias.scope !24, !noalias !25
  %index.next = add nuw i64 %index, 2
  %37 = icmp eq i64 %index.next, %n.vec
  br i1 %37, label %middle.block, label %vector.body, !llvm.loop !26

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %12, %n.vec
  br i1 %cmp.n, label %.loopexit, label %scalar.ph.preheader

.preheader584:                                    ; preds = %5
  %38 = getelementptr inbounds i8, ptr %2, i64 32
  %39 = getelementptr inbounds i8, ptr %2, i64 40
  %40 = getelementptr inbounds i8, ptr %2, i64 64
  %41 = getelementptr inbounds i8, ptr %2, i64 48
  %42 = getelementptr inbounds i8, ptr %2, i64 72
  %43 = getelementptr inbounds i8, ptr %2, i64 56
  %44 = getelementptr inbounds i8, ptr %2, i64 80
  %45 = getelementptr inbounds i8, ptr %2, i64 8
  %46 = getelementptr inbounds i8, ptr %2, i64 16
  %47 = getelementptr inbounds i8, ptr %2, i64 24
  br label %718

.preheader582:                                    ; preds = %5
  %48 = getelementptr inbounds i8, ptr %2, i64 24
  %49 = getelementptr inbounds i8, ptr %2, i64 32
  %50 = getelementptr inbounds i8, ptr %2, i64 8
  %51 = getelementptr inbounds i8, ptr %2, i64 16
  br label %696

.preheader580:                                    ; preds = %5
  %52 = icmp sgt i32 %0, 0
  br i1 %52, label %.lr.ph620.preheader, label %.preheader579

.lr.ph620.preheader:                              ; preds = %.preheader580
  %53 = zext nneg i32 %0 to i64
  %54 = shl nuw nsw i64 %53, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %4, i8 0, i64 %54, i1 false), !tbaa !5
  br label %.preheader579

.preheader575:                                    ; preds = %5
  %invariant.gep635 = getelementptr i8, ptr %4, i64 -8
  %.not546637 = icmp slt i32 %0, 1
  br i1 %.not546637, label %.loopexit, label %.lr.ph639

.lr.ph639:                                        ; preds = %.preheader575
  %55 = getelementptr inbounds i8, ptr %2, i64 8
  %56 = getelementptr inbounds i8, ptr %2, i64 16
  %57 = getelementptr inbounds i8, ptr %2, i64 24
  %58 = add nuw i32 %0, 1
  %wide.trip.count775 = zext i32 %58 to i64
  br label %582

.preheader573:                                    ; preds = %5
  %invariant.gep640 = getelementptr i8, ptr %4, i64 -8
  %.not547642 = icmp slt i32 %0, 1
  br i1 %.not547642, label %.loopexit, label %.lr.ph644

.lr.ph644:                                        ; preds = %.preheader573
  %59 = getelementptr inbounds i8, ptr %2, i64 8
  %60 = add nuw i32 %0, 1
  %wide.trip.count780 = zext i32 %60 to i64
  br label %568

.preheader571:                                    ; preds = %5
  %invariant.gep645 = getelementptr i8, ptr %4, i64 -8
  %.not548647 = icmp slt i32 %0, 1
  br i1 %.not548647, label %.loopexit, label %.lr.ph649

.lr.ph649:                                        ; preds = %.preheader571
  %61 = getelementptr inbounds i8, ptr %2, i64 8
  %62 = getelementptr inbounds i8, ptr %2, i64 16
  %63 = add nuw i32 %0, 1
  %wide.trip.count785 = zext i32 %63 to i64
  br label %551

.preheader570:                                    ; preds = %5
  %.not549650 = icmp slt i32 %1, 2
  %invariant.gep657 = getelementptr i8, ptr %2, i64 -8
  %.not550659 = icmp slt i32 %1, 1
  %invariant.gep666 = getelementptr i8, ptr %4, i64 -8
  %64 = add i32 %1, 1
  %wide.trip.count790 = zext i32 %64 to i64
  %65 = add nsw i64 %wide.trip.count790, -2
  %66 = add nsw i64 %wide.trip.count790, -1
  %xtraiter1029 = and i64 %wide.trip.count790, 1
  %67 = icmp eq i32 %64, 3
  %unroll_iter1033 = and i64 %65, -2
  %lcmp.mod1031.not = icmp eq i64 %xtraiter1029, 0
  %xtraiter1035 = and i64 %66, 3
  %68 = icmp ult i64 %65, 3
  %unroll_iter1039 = and i64 %66, -4
  %invariant.gep1085 = getelementptr i8, ptr %invariant.gep657, i64 16
  %invariant.gep1087 = getelementptr i8, ptr %invariant.gep657, i64 24
  %lcmp.mod1037.not = icmp eq i64 %xtraiter1035, 0
  br label %498

.preheader566:                                    ; preds = %5
  %69 = getelementptr inbounds i8, ptr %2, i64 16
  %70 = getelementptr inbounds i8, ptr %2, i64 8
  br label %480

.preheader563:                                    ; preds = %5
  %71 = getelementptr inbounds i8, ptr %2, i64 16
  %72 = getelementptr inbounds i8, ptr %2, i64 24
  %73 = getelementptr inbounds i8, ptr %2, i64 8
  %74 = load double, ptr @_ZL1V, align 16, !tbaa !5
  %75 = load double, ptr %71, align 8, !tbaa !5
  %76 = fadd double %74, %75
  %77 = load double, ptr %72, align 8, !tbaa !5
  %78 = tail call double @llvm.fmuladd.f64(double %74, double %76, double %77)
  %79 = fcmp oeq double %78, 0.000000e+00
  br i1 %79, label %.loopexit, label %311

.preheader561:                                    ; preds = %5
  %80 = getelementptr inbounds i8, ptr %2, i64 8
  %81 = getelementptr inbounds i8, ptr %2, i64 16
  br label %290

.preheader560:                                    ; preds = %5
  %invariant.gep672 = getelementptr i8, ptr %2, i64 -8
  %82 = icmp sgt i32 %1, 2
  br i1 %82, label %.lr.ph676.preheader, label %.preheader559

.lr.ph676.preheader:                              ; preds = %.preheader560
  %wide.trip.count816 = zext nneg i32 %1 to i64
  %83 = add nsw i64 %wide.trip.count816, -2
  %84 = add nsw i64 %wide.trip.count816, -3
  %xtraiter1041 = and i64 %83, 3
  %85 = icmp ult i64 %84, 3
  br i1 %85, label %.preheader559.loopexit.unr-lcssa, label %.lr.ph676.preheader.new

.lr.ph676.preheader.new:                          ; preds = %.lr.ph676.preheader
  %unroll_iter1045 = and i64 %83, -4
  br label %.lr.ph676

.preheader558:                                    ; preds = %5
  %invariant.gep682 = getelementptr i8, ptr %2, i64 -8
  %.not553684 = icmp slt i32 %1, 1
  br i1 %.not553684, label %.preheader556, label %.lr.ph687.preheader

.lr.ph687.preheader:                              ; preds = %.preheader558
  %86 = zext nneg i32 %1 to i64
  %xtraiter1047 = and i64 %86, 3
  %87 = icmp ult i32 %1, 4
  br i1 %87, label %.preheader556.loopexit.unr-lcssa, label %.lr.ph687.preheader.new

.lr.ph687.preheader.new:                          ; preds = %.lr.ph687.preheader
  %unroll_iter1051 = and i64 %86, 2147483644
  br label %.lr.ph687

.preheader:                                       ; preds = %5
  %88 = icmp sgt i32 %1, 0
  br i1 %88, label %.lr.ph696.preheader, label %._crit_edge697

.lr.ph696.preheader:                              ; preds = %.preheader
  %wide.trip.count836 = zext nneg i32 %1 to i64
  %xtraiter1053 = and i64 %wide.trip.count836, 7
  %89 = icmp ult i32 %1, 8
  br i1 %89, label %._crit_edge697.loopexit.unr-lcssa, label %.lr.ph696.preheader.new

.lr.ph696.preheader.new:                          ; preds = %.lr.ph696.preheader
  %unroll_iter1057 = and i64 %wide.trip.count836, 2147483640
  br label %.lr.ph696

.lr.ph696:                                        ; preds = %.lr.ph696, %.lr.ph696.preheader.new
  %indvars.iv833 = phi i64 [ 0, %.lr.ph696.preheader.new ], [ %indvars.iv.next834.7, %.lr.ph696 ]
  %.0695 = phi double [ 0.000000e+00, %.lr.ph696.preheader.new ], [ %113, %.lr.ph696 ]
  %niter1058 = phi i64 [ 0, %.lr.ph696.preheader.new ], [ %niter1058.next.7, %.lr.ph696 ]
  %90 = getelementptr inbounds double, ptr %2, i64 %indvars.iv833
  %91 = load double, ptr %90, align 8, !tbaa !5
  %92 = fadd double %.0695, %91
  %indvars.iv.next834 = or disjoint i64 %indvars.iv833, 1
  %93 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next834
  %94 = load double, ptr %93, align 8, !tbaa !5
  %95 = fadd double %92, %94
  %indvars.iv.next834.1 = or disjoint i64 %indvars.iv833, 2
  %96 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next834.1
  %97 = load double, ptr %96, align 8, !tbaa !5
  %98 = fadd double %95, %97
  %indvars.iv.next834.2 = or disjoint i64 %indvars.iv833, 3
  %99 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next834.2
  %100 = load double, ptr %99, align 8, !tbaa !5
  %101 = fadd double %98, %100
  %indvars.iv.next834.3 = or disjoint i64 %indvars.iv833, 4
  %102 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next834.3
  %103 = load double, ptr %102, align 8, !tbaa !5
  %104 = fadd double %101, %103
  %indvars.iv.next834.4 = or disjoint i64 %indvars.iv833, 5
  %105 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next834.4
  %106 = load double, ptr %105, align 8, !tbaa !5
  %107 = fadd double %104, %106
  %indvars.iv.next834.5 = or disjoint i64 %indvars.iv833, 6
  %108 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next834.5
  %109 = load double, ptr %108, align 8, !tbaa !5
  %110 = fadd double %107, %109
  %indvars.iv.next834.6 = or disjoint i64 %indvars.iv833, 7
  %111 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next834.6
  %112 = load double, ptr %111, align 8, !tbaa !5
  %113 = fadd double %110, %112
  %indvars.iv.next834.7 = add nuw nsw i64 %indvars.iv833, 8
  %niter1058.next.7 = add i64 %niter1058, 8
  %niter1058.ncmp.7 = icmp eq i64 %niter1058.next.7, %unroll_iter1057
  br i1 %niter1058.ncmp.7, label %._crit_edge697.loopexit.unr-lcssa, label %.lr.ph696, !llvm.loop !30

._crit_edge697.loopexit.unr-lcssa:                ; preds = %.lr.ph696, %.lr.ph696.preheader
  %.lcssa.ph = phi double [ poison, %.lr.ph696.preheader ], [ %113, %.lr.ph696 ]
  %indvars.iv833.unr = phi i64 [ 0, %.lr.ph696.preheader ], [ %indvars.iv.next834.7, %.lr.ph696 ]
  %.0695.unr = phi double [ 0.000000e+00, %.lr.ph696.preheader ], [ %113, %.lr.ph696 ]
  %lcmp.mod1055.not = icmp eq i64 %xtraiter1053, 0
  br i1 %lcmp.mod1055.not, label %._crit_edge697.loopexit, label %.lr.ph696.epil

.lr.ph696.epil:                                   ; preds = %._crit_edge697.loopexit.unr-lcssa, %.lr.ph696.epil
  %indvars.iv833.epil = phi i64 [ %indvars.iv.next834.epil, %.lr.ph696.epil ], [ %indvars.iv833.unr, %._crit_edge697.loopexit.unr-lcssa ]
  %.0695.epil = phi double [ %116, %.lr.ph696.epil ], [ %.0695.unr, %._crit_edge697.loopexit.unr-lcssa ]
  %epil.iter1054 = phi i64 [ %epil.iter1054.next, %.lr.ph696.epil ], [ 0, %._crit_edge697.loopexit.unr-lcssa ]
  %114 = getelementptr inbounds double, ptr %2, i64 %indvars.iv833.epil
  %115 = load double, ptr %114, align 8, !tbaa !5
  %116 = fadd double %.0695.epil, %115
  %indvars.iv.next834.epil = add nuw nsw i64 %indvars.iv833.epil, 1
  %epil.iter1054.next = add i64 %epil.iter1054, 1
  %epil.iter1054.cmp.not = icmp eq i64 %epil.iter1054.next, %xtraiter1053
  br i1 %epil.iter1054.cmp.not, label %._crit_edge697.loopexit, label %.lr.ph696.epil, !llvm.loop !31

._crit_edge697.loopexit:                          ; preds = %.lr.ph696.epil, %._crit_edge697.loopexit.unr-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %._crit_edge697.loopexit.unr-lcssa ], [ %116, %.lr.ph696.epil ]
  %117 = fmul double %.lcssa, 2.000000e+00
  br label %._crit_edge697

._crit_edge697:                                   ; preds = %._crit_edge697.loopexit, %.preheader
  %.0.lcssa = phi double [ 0.000000e+00, %.preheader ], [ %117, %._crit_edge697.loopexit ]
  %118 = sitofp i32 %0 to double
  %119 = fdiv double %.0.lcssa, %118
  %120 = fadd double %119, 1.000000e+00
  %121 = icmp sgt i32 %0, 0
  br i1 %121, label %.lr.ph701, label %.loopexit

.lr.ph701:                                        ; preds = %._crit_edge697
  %122 = fneg double %120
  %123 = sext i32 %1 to i64
  %wide.trip.count841 = zext nneg i32 %0 to i64
  %xtraiter1059 = and i64 %wide.trip.count841, 1
  %124 = icmp eq i32 %0, 1
  br i1 %124, label %.loopexit.loopexit.unr-lcssa, label %.lr.ph701.new

.lr.ph701.new:                                    ; preds = %.lr.ph701
  %unroll_iter1062 = and i64 %wide.trip.count841, 2147483646
  br label %125

125:                                              ; preds = %139, %.lr.ph701.new
  %indvars.iv838 = phi i64 [ 0, %.lr.ph701.new ], [ %indvars.iv.next839.1, %139 ]
  %niter1063 = phi i64 [ 0, %.lr.ph701.new ], [ %niter1063.next.1, %139 ]
  %126 = getelementptr inbounds double, ptr %4, i64 %indvars.iv838
  store double %122, ptr %126, align 8, !tbaa !5
  %127 = icmp slt i64 %indvars.iv838, %123
  br i1 %127, label %128, label %132

128:                                              ; preds = %125
  %129 = getelementptr inbounds double, ptr %2, i64 %indvars.iv838
  %130 = load double, ptr %129, align 8, !tbaa !5
  %131 = fsub double %130, %120
  store double %131, ptr %126, align 8, !tbaa !5
  br label %132

132:                                              ; preds = %125, %128
  %indvars.iv.next839 = or disjoint i64 %indvars.iv838, 1
  %133 = getelementptr inbounds double, ptr %4, i64 %indvars.iv.next839
  store double %122, ptr %133, align 8, !tbaa !5
  %134 = icmp slt i64 %indvars.iv.next839, %123
  br i1 %134, label %135, label %139

135:                                              ; preds = %132
  %136 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next839
  %137 = load double, ptr %136, align 8, !tbaa !5
  %138 = fsub double %137, %120
  store double %138, ptr %133, align 8, !tbaa !5
  br label %139

139:                                              ; preds = %135, %132
  %indvars.iv.next839.1 = add nuw nsw i64 %indvars.iv838, 2
  %niter1063.next.1 = add i64 %niter1063, 2
  %niter1063.ncmp.1 = icmp eq i64 %niter1063.next.1, %unroll_iter1062
  br i1 %niter1063.ncmp.1, label %.loopexit.loopexit.unr-lcssa, label %125, !llvm.loop !33

.preheader556.loopexit.unr-lcssa:                 ; preds = %.lr.ph687, %.lr.ph687.preheader
  %.lcssa994.ph = phi double [ poison, %.lr.ph687.preheader ], [ %169, %.lr.ph687 ]
  %indvars.iv823.unr = phi i64 [ 1, %.lr.ph687.preheader ], [ %indvars.iv.next824.3, %.lr.ph687 ]
  %.1686.unr = phi double [ 0.000000e+00, %.lr.ph687.preheader ], [ %169, %.lr.ph687 ]
  %lcmp.mod1049.not = icmp eq i64 %xtraiter1047, 0
  br i1 %lcmp.mod1049.not, label %.preheader556, label %.lr.ph687.epil

.lr.ph687.epil:                                   ; preds = %.preheader556.loopexit.unr-lcssa, %.lr.ph687.epil
  %indvars.iv823.epil = phi i64 [ %indvars.iv.next824.epil, %.lr.ph687.epil ], [ %indvars.iv823.unr, %.preheader556.loopexit.unr-lcssa ]
  %.1686.epil = phi double [ %143, %.lr.ph687.epil ], [ %.1686.unr, %.preheader556.loopexit.unr-lcssa ]
  %epil.iter1048 = phi i64 [ %epil.iter1048.next, %.lr.ph687.epil ], [ 0, %.preheader556.loopexit.unr-lcssa ]
  %140 = trunc nuw nsw i64 %indvars.iv823.epil to i32
  %141 = uitofp nneg i32 %140 to double
  %gep683.epil = getelementptr double, ptr %invariant.gep682, i64 %indvars.iv823.epil
  %142 = load double, ptr %gep683.epil, align 8, !tbaa !5
  %143 = tail call double @llvm.fmuladd.f64(double %141, double %142, double %.1686.epil)
  %indvars.iv.next824.epil = add nuw nsw i64 %indvars.iv823.epil, 1
  %epil.iter1048.next = add i64 %epil.iter1048, 1
  %epil.iter1048.cmp.not = icmp eq i64 %epil.iter1048.next, %xtraiter1047
  br i1 %epil.iter1048.cmp.not, label %.preheader556, label %.lr.ph687.epil, !llvm.loop !34

.preheader556:                                    ; preds = %.preheader556.loopexit.unr-lcssa, %.lr.ph687.epil, %.preheader558
  %.1.lcssa = phi double [ 0.000000e+00, %.preheader558 ], [ %.lcssa994.ph, %.preheader556.loopexit.unr-lcssa ], [ %143, %.lr.ph687.epil ]
  %invariant.gep689 = getelementptr i8, ptr %4, i64 -8
  %.not554691 = icmp slt i32 %0, 1
  br i1 %.not554691, label %.loopexit, label %.lr.ph693.preheader

.lr.ph693.preheader:                              ; preds = %.preheader556
  %144 = add nuw i32 %0, 1
  %wide.trip.count831 = zext i32 %144 to i64
  %145 = zext nneg i32 %0 to i64
  %min.iters.check975 = icmp ult i32 %0, 4
  br i1 %min.iters.check975, label %.lr.ph693.preheader992, label %vector.ph976

.lr.ph693.preheader992:                           ; preds = %middle.block973, %.lr.ph693.preheader
  %indvars.iv828.ph = phi i64 [ 1, %.lr.ph693.preheader ], [ %ind.end979, %middle.block973 ]
  br label %.lr.ph693

vector.ph976:                                     ; preds = %.lr.ph693.preheader
  %n.vec978 = and i64 %145, 2147483644
  %ind.end979 = or disjoint i64 %n.vec978, 1
  %broadcast.splatinsert988 = insertelement <2 x double> poison, double %.1.lcssa, i64 0
  %broadcast.splat989 = shufflevector <2 x double> %broadcast.splatinsert988, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body981

vector.body981:                                   ; preds = %vector.body981, %vector.ph976
  %index982 = phi i64 [ 0, %vector.ph976 ], [ %index.next990, %vector.body981 ]
  %vec.ind983 = phi <2 x i32> [ <i32 1, i32 2>, %vector.ph976 ], [ %vec.ind.next986, %vector.body981 ]
  %step.add984 = add <2 x i32> %vec.ind983, <i32 2, i32 2>
  %146 = uitofp <2 x i32> %vec.ind983 to <2 x double>
  %147 = uitofp <2 x i32> %step.add984 to <2 x double>
  %148 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %146, <2 x double> %broadcast.splat989, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
  %149 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %147, <2 x double> %broadcast.splat989, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
  %150 = getelementptr double, ptr %4, i64 %index982
  %151 = getelementptr i8, ptr %150, i64 16
  store <2 x double> %148, ptr %150, align 8, !tbaa !5
  store <2 x double> %149, ptr %151, align 8, !tbaa !5
  %index.next990 = add nuw i64 %index982, 4
  %vec.ind.next986 = add <2 x i32> %vec.ind983, <i32 4, i32 4>
  %152 = icmp eq i64 %index.next990, %n.vec978
  br i1 %152, label %middle.block973, label %vector.body981, !llvm.loop !35

middle.block973:                                  ; preds = %vector.body981
  %cmp.n991 = icmp eq i64 %n.vec978, %145
  br i1 %cmp.n991, label %.loopexit, label %.lr.ph693.preheader992

.lr.ph687:                                        ; preds = %.lr.ph687, %.lr.ph687.preheader.new
  %indvars.iv823 = phi i64 [ 1, %.lr.ph687.preheader.new ], [ %indvars.iv.next824.3, %.lr.ph687 ]
  %.1686 = phi double [ 0.000000e+00, %.lr.ph687.preheader.new ], [ %169, %.lr.ph687 ]
  %niter1052 = phi i64 [ 0, %.lr.ph687.preheader.new ], [ %niter1052.next.3, %.lr.ph687 ]
  %153 = trunc nuw nsw i64 %indvars.iv823 to i32
  %154 = uitofp nneg i32 %153 to double
  %gep683 = getelementptr double, ptr %invariant.gep682, i64 %indvars.iv823
  %155 = load double, ptr %gep683, align 8, !tbaa !5
  %156 = tail call double @llvm.fmuladd.f64(double %154, double %155, double %.1686)
  %157 = trunc i64 %indvars.iv823 to i32
  %158 = add i32 %157, 1
  %159 = uitofp nneg i32 %158 to double
  %gep683.1 = getelementptr double, ptr %2, i64 %indvars.iv823
  %160 = load double, ptr %gep683.1, align 8, !tbaa !5
  %161 = tail call double @llvm.fmuladd.f64(double %159, double %160, double %156)
  %indvars.iv.next824.1 = add nuw nsw i64 %indvars.iv823, 2
  %162 = trunc nuw nsw i64 %indvars.iv.next824.1 to i32
  %163 = uitofp nneg i32 %162 to double
  %gep683.2 = getelementptr double, ptr %invariant.gep682, i64 %indvars.iv.next824.1
  %164 = load double, ptr %gep683.2, align 8, !tbaa !5
  %165 = tail call double @llvm.fmuladd.f64(double %163, double %164, double %161)
  %indvars.iv.next824.2 = add nuw nsw i64 %indvars.iv823, 3
  %166 = trunc nuw nsw i64 %indvars.iv.next824.2 to i32
  %167 = uitofp nneg i32 %166 to double
  %gep683.3 = getelementptr double, ptr %invariant.gep682, i64 %indvars.iv.next824.2
  %168 = load double, ptr %gep683.3, align 8, !tbaa !5
  %169 = tail call double @llvm.fmuladd.f64(double %167, double %168, double %165)
  %indvars.iv.next824.3 = add nuw nsw i64 %indvars.iv823, 4
  %niter1052.next.3 = add i64 %niter1052, 4
  %niter1052.ncmp.3 = icmp eq i64 %niter1052.next.3, %unroll_iter1051
  br i1 %niter1052.ncmp.3, label %.preheader556.loopexit.unr-lcssa, label %.lr.ph687, !llvm.loop !36

.lr.ph693:                                        ; preds = %.lr.ph693.preheader992, %.lr.ph693
  %indvars.iv828 = phi i64 [ %indvars.iv.next829, %.lr.ph693 ], [ %indvars.iv828.ph, %.lr.ph693.preheader992 ]
  %170 = trunc nuw nsw i64 %indvars.iv828 to i32
  %171 = uitofp nneg i32 %170 to double
  %172 = tail call double @llvm.fmuladd.f64(double %171, double %.1.lcssa, double -1.000000e+00)
  %gep690 = getelementptr double, ptr %invariant.gep689, i64 %indvars.iv828
  store double %172, ptr %gep690, align 8, !tbaa !5
  %indvars.iv.next829 = add nuw nsw i64 %indvars.iv828, 1
  %exitcond832.not = icmp eq i64 %indvars.iv.next829, %wide.trip.count831
  br i1 %exitcond832.not, label %.loopexit, label %.lr.ph693, !llvm.loop !37

.preheader559.loopexit.unr-lcssa:                 ; preds = %.lr.ph676, %.lr.ph676.preheader
  %.lcssa996.ph = phi double [ poison, %.lr.ph676.preheader ], [ %202, %.lr.ph676 ]
  %indvars.iv813.unr = phi i64 [ 2, %.lr.ph676.preheader ], [ %indvars.iv.next814.3, %.lr.ph676 ]
  %.2675.unr = phi double [ 0.000000e+00, %.lr.ph676.preheader ], [ %202, %.lr.ph676 ]
  %lcmp.mod1043.not = icmp eq i64 %xtraiter1041, 0
  br i1 %lcmp.mod1043.not, label %.preheader559, label %.lr.ph676.epil

.lr.ph676.epil:                                   ; preds = %.preheader559.loopexit.unr-lcssa, %.lr.ph676.epil
  %indvars.iv813.epil = phi i64 [ %indvars.iv.next814.epil, %.lr.ph676.epil ], [ %indvars.iv813.unr, %.preheader559.loopexit.unr-lcssa ]
  %.2675.epil = phi double [ %176, %.lr.ph676.epil ], [ %.2675.unr, %.preheader559.loopexit.unr-lcssa ]
  %epil.iter1042 = phi i64 [ %epil.iter1042.next, %.lr.ph676.epil ], [ 0, %.preheader559.loopexit.unr-lcssa ]
  %173 = trunc nuw nsw i64 %indvars.iv813.epil to i32
  %174 = uitofp nneg i32 %173 to double
  %gep673.epil = getelementptr double, ptr %invariant.gep672, i64 %indvars.iv813.epil
  %175 = load double, ptr %gep673.epil, align 8, !tbaa !5
  %176 = tail call double @llvm.fmuladd.f64(double %174, double %175, double %.2675.epil)
  %indvars.iv.next814.epil = add nuw nsw i64 %indvars.iv813.epil, 1
  %epil.iter1042.next = add i64 %epil.iter1042, 1
  %epil.iter1042.cmp.not = icmp eq i64 %epil.iter1042.next, %xtraiter1041
  br i1 %epil.iter1042.cmp.not, label %.preheader559, label %.lr.ph676.epil, !llvm.loop !38

.preheader559:                                    ; preds = %.preheader559.loopexit.unr-lcssa, %.lr.ph676.epil, %.preheader560
  %.2.lcssa = phi double [ 0.000000e+00, %.preheader560 ], [ %.lcssa996.ph, %.preheader559.loopexit.unr-lcssa ], [ %176, %.lr.ph676.epil ]
  %177 = add i32 %0, -1
  %178 = icmp sgt i32 %0, 1
  br i1 %178, label %.lr.ph679.preheader, label %._crit_edge680

.lr.ph679.preheader:                              ; preds = %.preheader559
  %wide.trip.count821 = zext nneg i32 %177 to i64
  %min.iters.check961 = icmp ult i32 %0, 5
  br i1 %min.iters.check961, label %.lr.ph679.preheader995, label %vector.ph962

.lr.ph679.preheader995:                           ; preds = %middle.block959, %.lr.ph679.preheader
  %indvars.iv818.ph = phi i64 [ 0, %.lr.ph679.preheader ], [ %n.vec964, %middle.block959 ]
  br label %.lr.ph679

vector.ph962:                                     ; preds = %.lr.ph679.preheader
  %n.vec964 = and i64 %wide.trip.count821, 2147483644
  %broadcast.splatinsert969 = insertelement <2 x double> poison, double %.2.lcssa, i64 0
  %broadcast.splat970 = shufflevector <2 x double> %broadcast.splatinsert969, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body966

vector.body966:                                   ; preds = %vector.body966, %vector.ph962
  %index967 = phi i64 [ 0, %vector.ph962 ], [ %index.next971, %vector.body966 ]
  %vec.ind = phi <2 x i32> [ <i32 0, i32 1>, %vector.ph962 ], [ %vec.ind.next, %vector.body966 ]
  %step.add = add <2 x i32> %vec.ind, <i32 2, i32 2>
  %179 = uitofp <2 x i32> %vec.ind to <2 x double>
  %180 = uitofp <2 x i32> %step.add to <2 x double>
  %181 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %179, <2 x double> %broadcast.splat970, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
  %182 = tail call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %180, <2 x double> %broadcast.splat970, <2 x double> <double -1.000000e+00, double -1.000000e+00>)
  %183 = getelementptr inbounds double, ptr %4, i64 %index967
  %184 = getelementptr inbounds i8, ptr %183, i64 16
  store <2 x double> %181, ptr %183, align 8, !tbaa !5
  store <2 x double> %182, ptr %184, align 8, !tbaa !5
  %index.next971 = add nuw i64 %index967, 4
  %vec.ind.next = add <2 x i32> %vec.ind, <i32 4, i32 4>
  %185 = icmp eq i64 %index.next971, %n.vec964
  br i1 %185, label %middle.block959, label %vector.body966, !llvm.loop !39

middle.block959:                                  ; preds = %vector.body966
  %cmp.n972 = icmp eq i64 %n.vec964, %wide.trip.count821
  br i1 %cmp.n972, label %._crit_edge680, label %.lr.ph679.preheader995

.lr.ph676:                                        ; preds = %.lr.ph676, %.lr.ph676.preheader.new
  %indvars.iv813 = phi i64 [ 2, %.lr.ph676.preheader.new ], [ %indvars.iv.next814.3, %.lr.ph676 ]
  %.2675 = phi double [ 0.000000e+00, %.lr.ph676.preheader.new ], [ %202, %.lr.ph676 ]
  %niter1046 = phi i64 [ 0, %.lr.ph676.preheader.new ], [ %niter1046.next.3, %.lr.ph676 ]
  %186 = trunc nuw nsw i64 %indvars.iv813 to i32
  %187 = uitofp nneg i32 %186 to double
  %gep673 = getelementptr double, ptr %invariant.gep672, i64 %indvars.iv813
  %188 = load double, ptr %gep673, align 8, !tbaa !5
  %189 = tail call double @llvm.fmuladd.f64(double %187, double %188, double %.2675)
  %190 = trunc i64 %indvars.iv813 to i32
  %191 = or disjoint i32 %190, 1
  %192 = uitofp nneg i32 %191 to double
  %gep673.1 = getelementptr double, ptr %2, i64 %indvars.iv813
  %193 = load double, ptr %gep673.1, align 8, !tbaa !5
  %194 = tail call double @llvm.fmuladd.f64(double %192, double %193, double %189)
  %indvars.iv.next814.1 = add nuw nsw i64 %indvars.iv813, 2
  %195 = trunc nuw nsw i64 %indvars.iv.next814.1 to i32
  %196 = uitofp nneg i32 %195 to double
  %gep673.2 = getelementptr double, ptr %invariant.gep672, i64 %indvars.iv.next814.1
  %197 = load double, ptr %gep673.2, align 8, !tbaa !5
  %198 = tail call double @llvm.fmuladd.f64(double %196, double %197, double %194)
  %indvars.iv.next814.2 = add nuw nsw i64 %indvars.iv813, 3
  %199 = trunc nuw nsw i64 %indvars.iv.next814.2 to i32
  %200 = uitofp nneg i32 %199 to double
  %gep673.3 = getelementptr double, ptr %invariant.gep672, i64 %indvars.iv.next814.2
  %201 = load double, ptr %gep673.3, align 8, !tbaa !5
  %202 = tail call double @llvm.fmuladd.f64(double %200, double %201, double %198)
  %indvars.iv.next814.3 = add nuw nsw i64 %indvars.iv813, 4
  %niter1046.next.3 = add i64 %niter1046, 4
  %niter1046.ncmp.3 = icmp eq i64 %niter1046.next.3, %unroll_iter1045
  br i1 %niter1046.ncmp.3, label %.preheader559.loopexit.unr-lcssa, label %.lr.ph676, !llvm.loop !40

.lr.ph679:                                        ; preds = %.lr.ph679.preheader995, %.lr.ph679
  %indvars.iv818 = phi i64 [ %indvars.iv.next819, %.lr.ph679 ], [ %indvars.iv818.ph, %.lr.ph679.preheader995 ]
  %203 = trunc nuw nsw i64 %indvars.iv818 to i32
  %204 = uitofp nneg i32 %203 to double
  %205 = tail call double @llvm.fmuladd.f64(double %204, double %.2.lcssa, double -1.000000e+00)
  %206 = getelementptr inbounds double, ptr %4, i64 %indvars.iv818
  store double %205, ptr %206, align 8, !tbaa !5
  %indvars.iv.next819 = add nuw nsw i64 %indvars.iv818, 1
  %exitcond822.not = icmp eq i64 %indvars.iv.next819, %wide.trip.count821
  br i1 %exitcond822.not, label %._crit_edge680, label %.lr.ph679, !llvm.loop !41

._crit_edge680:                                   ; preds = %.lr.ph679, %middle.block959, %.preheader559
  %207 = sext i32 %177 to i64
  %208 = getelementptr inbounds double, ptr %4, i64 %207
  store double -1.000000e+00, ptr %208, align 8, !tbaa !5
  br label %.loopexit

209:                                              ; preds = %5
  %210 = getelementptr inbounds i8, ptr %2, i64 8
  %211 = load double, ptr %210, align 8, !tbaa !5
  %212 = load double, ptr %2, align 8, !tbaa !5
  %213 = fneg double %212
  %214 = tail call double @llvm.fmuladd.f64(double %213, double %212, double %211)
  %215 = fmul double %214, 1.000000e+01
  store double %215, ptr %4, align 8, !tbaa !5
  %216 = load double, ptr %2, align 8, !tbaa !5
  %217 = fsub double 1.000000e+00, %216
  %218 = getelementptr inbounds i8, ptr %4, i64 8
  store double %217, ptr %218, align 8, !tbaa !5
  br label %.loopexit

219:                                              ; preds = %5
  %220 = load double, ptr %2, align 8, !tbaa !5
  %221 = fcmp ogt double %220, 0.000000e+00
  br i1 %221, label %222, label %228

222:                                              ; preds = %219
  %223 = getelementptr inbounds i8, ptr %2, i64 8
  %224 = load double, ptr %223, align 8, !tbaa !5
  %225 = fdiv double %224, %220
  %226 = tail call double @atan(double noundef %225) #6
  %227 = fdiv double %226, 0x401921FB54442D18
  br label %237

228:                                              ; preds = %219
  %229 = fcmp olt double %220, 0.000000e+00
  br i1 %229, label %230, label %237

230:                                              ; preds = %228
  %231 = getelementptr inbounds i8, ptr %2, i64 8
  %232 = load double, ptr %231, align 8, !tbaa !5
  %233 = fdiv double %232, %220
  %234 = tail call double @atan(double noundef %233) #6
  %235 = fdiv double %234, 0x401921FB54442D18
  %236 = fadd double %235, 5.000000e-01
  br label %237

237:                                              ; preds = %228, %230, %222
  %.0512 = phi double [ %227, %222 ], [ %236, %230 ], [ 2.500000e-01, %228 ]
  %238 = getelementptr inbounds i8, ptr %2, i64 16
  %239 = load double, ptr %238, align 8, !tbaa !5
  %240 = tail call double @llvm.fmuladd.f64(double %.0512, double -1.000000e+01, double %239)
  %241 = fmul double %240, 1.000000e+01
  store double %241, ptr %4, align 8, !tbaa !5
  %242 = load double, ptr %2, align 8, !tbaa !5
  %243 = getelementptr inbounds i8, ptr %2, i64 8
  %244 = load double, ptr %243, align 8, !tbaa !5
  %245 = fmul double %244, %244
  %246 = tail call double @llvm.fmuladd.f64(double %242, double %242, double %245)
  %sqrt = tail call double @llvm.sqrt.f64(double %246)
  %247 = fadd double %sqrt, -1.000000e+00
  %248 = fmul double %247, 1.000000e+01
  %249 = getelementptr inbounds i8, ptr %4, i64 8
  store double %248, ptr %249, align 8, !tbaa !5
  %250 = load double, ptr %238, align 8, !tbaa !5
  %251 = getelementptr inbounds i8, ptr %4, i64 16
  store double %250, ptr %251, align 8, !tbaa !5
  br label %.loopexit

252:                                              ; preds = %5
  %253 = load double, ptr %2, align 8, !tbaa !5
  %254 = getelementptr inbounds i8, ptr %2, i64 8
  %255 = load double, ptr %254, align 8, !tbaa !5
  %256 = tail call double @llvm.fmuladd.f64(double %255, double 1.000000e+01, double %253)
  store double %256, ptr %4, align 8, !tbaa !5
  %257 = load double, ptr @_ZL5SQRT5, align 8, !tbaa !5
  %258 = getelementptr inbounds i8, ptr %2, i64 16
  %259 = load double, ptr %258, align 8, !tbaa !5
  %260 = getelementptr inbounds i8, ptr %2, i64 24
  %261 = load double, ptr %260, align 8, !tbaa !5
  %262 = fsub double %259, %261
  %263 = fmul double %257, %262
  %264 = getelementptr inbounds i8, ptr %4, i64 8
  store double %263, ptr %264, align 8, !tbaa !5
  %265 = load double, ptr %254, align 8, !tbaa !5
  %266 = load double, ptr %258, align 8, !tbaa !5
  %267 = tail call double @llvm.fmuladd.f64(double %266, double -2.000000e+00, double %265)
  %square551 = fmul double %267, %267
  %268 = getelementptr inbounds i8, ptr %4, i64 16
  store double %square551, ptr %268, align 8, !tbaa !5
  %269 = load double, ptr @_ZL6SQRT10, align 8, !tbaa !5
  %270 = load double, ptr %2, align 8, !tbaa !5
  %271 = load double, ptr %260, align 8, !tbaa !5
  %272 = fsub double %270, %271
  %square552 = fmul double %272, %272
  %273 = fmul double %269, %square552
  %274 = getelementptr inbounds i8, ptr %4, i64 24
  store double %273, ptr %274, align 8, !tbaa !5
  br label %.loopexit

275:                                              ; preds = %5
  %276 = load double, ptr %2, align 8, !tbaa !5
  %277 = fadd double %276, -1.300000e+01
  %278 = getelementptr inbounds i8, ptr %2, i64 8
  %279 = load double, ptr %278, align 8, !tbaa !5
  %280 = fsub double 5.000000e+00, %279
  %281 = tail call double @llvm.fmuladd.f64(double %280, double %279, double -2.000000e+00)
  %282 = tail call double @llvm.fmuladd.f64(double %281, double %279, double %277)
  store double %282, ptr %4, align 8, !tbaa !5
  %283 = load double, ptr %2, align 8, !tbaa !5
  %284 = fadd double %283, -2.900000e+01
  %285 = load double, ptr %278, align 8, !tbaa !5
  %286 = fadd double %285, 1.000000e+00
  %287 = tail call double @llvm.fmuladd.f64(double %286, double %285, double -1.400000e+01)
  %288 = tail call double @llvm.fmuladd.f64(double %287, double %285, double %284)
  %289 = getelementptr inbounds i8, ptr %4, i64 8
  store double %288, ptr %289, align 8, !tbaa !5
  br label %.loopexit

290:                                              ; preds = %.preheader561, %302
  %indvars.iv809 = phi i64 [ 1, %.preheader561 ], [ %indvars.iv.next810, %302 ]
  %291 = trunc nuw nsw i64 %indvars.iv809 to i32
  %292 = uitofp nneg i32 %291 to double
  %293 = trunc i64 %indvars.iv809 to i32
  %294 = sub i32 16, %293
  %295 = uitofp nneg i32 %294 to double
  %296 = icmp ugt i64 %indvars.iv809, 8
  %.0504 = select i1 %296, double %295, double %292
  %297 = load double, ptr %80, align 8, !tbaa !5
  %298 = load double, ptr %81, align 8, !tbaa !5
  %299 = fmul double %.0504, %298
  %300 = tail call double @llvm.fmuladd.f64(double %297, double %295, double %299)
  %301 = fcmp une double %300, 0.000000e+00
  br i1 %301, label %302, label %.loopexit

302:                                              ; preds = %290
  %303 = add nsw i64 %indvars.iv809, -1
  %304 = getelementptr inbounds [15 x double], ptr @_ZL2Y1, i64 0, i64 %303
  %305 = load double, ptr %304, align 8, !tbaa !5
  %306 = load double, ptr %2, align 8, !tbaa !5
  %307 = fdiv double %292, %300
  %308 = fadd double %307, %306
  %309 = fsub double %305, %308
  %310 = getelementptr inbounds double, ptr %4, i64 %303
  store double %309, ptr %310, align 8, !tbaa !5
  %indvars.iv.next810 = add nuw nsw i64 %indvars.iv809, 1
  %exitcond812.not = icmp eq i64 %indvars.iv.next810, 16
  br i1 %exitcond812.not, label %.loopexit, label %290, !llvm.loop !42

311:                                              ; preds = %.preheader563
  %312 = load double, ptr %73, align 8, !tbaa !5
  %313 = fadd double %74, %312
  %314 = fmul double %74, %313
  %315 = load double, ptr @_ZL2Y2, align 16, !tbaa !5
  %316 = load double, ptr %2, align 8, !tbaa !5
  %317 = fmul double %316, %314
  %318 = fdiv double %317, %78
  %319 = fsub double %315, %318
  store double %319, ptr %4, align 8, !tbaa !5
  %320 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 8), align 8, !tbaa !5
  %321 = load double, ptr %71, align 8, !tbaa !5
  %322 = fadd double %320, %321
  %323 = load double, ptr %72, align 8, !tbaa !5
  %324 = tail call double @llvm.fmuladd.f64(double %320, double %322, double %323)
  %325 = fcmp oeq double %324, 0.000000e+00
  br i1 %325, label %.loopexit, label %326

326:                                              ; preds = %311
  %327 = load double, ptr %73, align 8, !tbaa !5
  %328 = fadd double %320, %327
  %329 = fmul double %320, %328
  %330 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 8), align 8, !tbaa !5
  %331 = load double, ptr %2, align 8, !tbaa !5
  %332 = fmul double %331, %329
  %333 = fdiv double %332, %324
  %334 = fsub double %330, %333
  %335 = getelementptr inbounds i8, ptr %4, i64 8
  store double %334, ptr %335, align 8, !tbaa !5
  %336 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 16), align 16, !tbaa !5
  %337 = load double, ptr %71, align 8, !tbaa !5
  %338 = fadd double %336, %337
  %339 = load double, ptr %72, align 8, !tbaa !5
  %340 = tail call double @llvm.fmuladd.f64(double %336, double %338, double %339)
  %341 = fcmp oeq double %340, 0.000000e+00
  br i1 %341, label %.loopexit, label %342

342:                                              ; preds = %326
  %343 = load double, ptr %73, align 8, !tbaa !5
  %344 = fadd double %336, %343
  %345 = fmul double %336, %344
  %346 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 16), align 16, !tbaa !5
  %347 = load double, ptr %2, align 8, !tbaa !5
  %348 = fmul double %347, %345
  %349 = fdiv double %348, %340
  %350 = fsub double %346, %349
  %351 = getelementptr inbounds i8, ptr %4, i64 16
  store double %350, ptr %351, align 8, !tbaa !5
  %352 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 24), align 8, !tbaa !5
  %353 = load double, ptr %71, align 8, !tbaa !5
  %354 = fadd double %352, %353
  %355 = load double, ptr %72, align 8, !tbaa !5
  %356 = tail call double @llvm.fmuladd.f64(double %352, double %354, double %355)
  %357 = fcmp oeq double %356, 0.000000e+00
  br i1 %357, label %.loopexit, label %358

358:                                              ; preds = %342
  %359 = load double, ptr %73, align 8, !tbaa !5
  %360 = fadd double %352, %359
  %361 = fmul double %352, %360
  %362 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 24), align 8, !tbaa !5
  %363 = load double, ptr %2, align 8, !tbaa !5
  %364 = fmul double %363, %361
  %365 = fdiv double %364, %356
  %366 = fsub double %362, %365
  %367 = getelementptr inbounds i8, ptr %4, i64 24
  store double %366, ptr %367, align 8, !tbaa !5
  %368 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 32), align 16, !tbaa !5
  %369 = load double, ptr %71, align 8, !tbaa !5
  %370 = fadd double %368, %369
  %371 = load double, ptr %72, align 8, !tbaa !5
  %372 = tail call double @llvm.fmuladd.f64(double %368, double %370, double %371)
  %373 = fcmp oeq double %372, 0.000000e+00
  br i1 %373, label %.loopexit, label %374

374:                                              ; preds = %358
  %375 = load double, ptr %73, align 8, !tbaa !5
  %376 = fadd double %368, %375
  %377 = fmul double %368, %376
  %378 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 32), align 16, !tbaa !5
  %379 = load double, ptr %2, align 8, !tbaa !5
  %380 = fmul double %379, %377
  %381 = fdiv double %380, %372
  %382 = fsub double %378, %381
  %383 = getelementptr inbounds i8, ptr %4, i64 32
  store double %382, ptr %383, align 8, !tbaa !5
  %384 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 40), align 8, !tbaa !5
  %385 = load double, ptr %71, align 8, !tbaa !5
  %386 = fadd double %384, %385
  %387 = load double, ptr %72, align 8, !tbaa !5
  %388 = tail call double @llvm.fmuladd.f64(double %384, double %386, double %387)
  %389 = fcmp oeq double %388, 0.000000e+00
  br i1 %389, label %.loopexit, label %390

390:                                              ; preds = %374
  %391 = load double, ptr %73, align 8, !tbaa !5
  %392 = fadd double %384, %391
  %393 = fmul double %384, %392
  %394 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 40), align 8, !tbaa !5
  %395 = load double, ptr %2, align 8, !tbaa !5
  %396 = fmul double %395, %393
  %397 = fdiv double %396, %388
  %398 = fsub double %394, %397
  %399 = getelementptr inbounds i8, ptr %4, i64 40
  store double %398, ptr %399, align 8, !tbaa !5
  %400 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 48), align 16, !tbaa !5
  %401 = load double, ptr %71, align 8, !tbaa !5
  %402 = fadd double %400, %401
  %403 = load double, ptr %72, align 8, !tbaa !5
  %404 = tail call double @llvm.fmuladd.f64(double %400, double %402, double %403)
  %405 = fcmp oeq double %404, 0.000000e+00
  br i1 %405, label %.loopexit, label %406

406:                                              ; preds = %390
  %407 = load double, ptr %73, align 8, !tbaa !5
  %408 = fadd double %400, %407
  %409 = fmul double %400, %408
  %410 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 48), align 16, !tbaa !5
  %411 = load double, ptr %2, align 8, !tbaa !5
  %412 = fmul double %411, %409
  %413 = fdiv double %412, %404
  %414 = fsub double %410, %413
  %415 = getelementptr inbounds i8, ptr %4, i64 48
  store double %414, ptr %415, align 8, !tbaa !5
  %416 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 56), align 8, !tbaa !5
  %417 = load double, ptr %71, align 8, !tbaa !5
  %418 = fadd double %416, %417
  %419 = load double, ptr %72, align 8, !tbaa !5
  %420 = tail call double @llvm.fmuladd.f64(double %416, double %418, double %419)
  %421 = fcmp oeq double %420, 0.000000e+00
  br i1 %421, label %.loopexit, label %422

422:                                              ; preds = %406
  %423 = load double, ptr %73, align 8, !tbaa !5
  %424 = fadd double %416, %423
  %425 = fmul double %416, %424
  %426 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 56), align 8, !tbaa !5
  %427 = load double, ptr %2, align 8, !tbaa !5
  %428 = fmul double %427, %425
  %429 = fdiv double %428, %420
  %430 = fsub double %426, %429
  %431 = getelementptr inbounds i8, ptr %4, i64 56
  store double %430, ptr %431, align 8, !tbaa !5
  %432 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 64), align 16, !tbaa !5
  %433 = load double, ptr %71, align 8, !tbaa !5
  %434 = fadd double %432, %433
  %435 = load double, ptr %72, align 8, !tbaa !5
  %436 = tail call double @llvm.fmuladd.f64(double %432, double %434, double %435)
  %437 = fcmp oeq double %436, 0.000000e+00
  br i1 %437, label %.loopexit, label %438

438:                                              ; preds = %422
  %439 = load double, ptr %73, align 8, !tbaa !5
  %440 = fadd double %432, %439
  %441 = fmul double %432, %440
  %442 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 64), align 16, !tbaa !5
  %443 = load double, ptr %2, align 8, !tbaa !5
  %444 = fmul double %443, %441
  %445 = fdiv double %444, %436
  %446 = fsub double %442, %445
  %447 = getelementptr inbounds i8, ptr %4, i64 64
  store double %446, ptr %447, align 8, !tbaa !5
  %448 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 72), align 8, !tbaa !5
  %449 = load double, ptr %71, align 8, !tbaa !5
  %450 = fadd double %448, %449
  %451 = load double, ptr %72, align 8, !tbaa !5
  %452 = tail call double @llvm.fmuladd.f64(double %448, double %450, double %451)
  %453 = fcmp oeq double %452, 0.000000e+00
  br i1 %453, label %.loopexit, label %454

454:                                              ; preds = %438
  %455 = load double, ptr %73, align 8, !tbaa !5
  %456 = fadd double %448, %455
  %457 = fmul double %448, %456
  %458 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 72), align 8, !tbaa !5
  %459 = load double, ptr %2, align 8, !tbaa !5
  %460 = fmul double %459, %457
  %461 = fdiv double %460, %452
  %462 = fsub double %458, %461
  %463 = getelementptr inbounds i8, ptr %4, i64 72
  store double %462, ptr %463, align 8, !tbaa !5
  %464 = load double, ptr getelementptr inbounds (i8, ptr @_ZL1V, i64 80), align 16, !tbaa !5
  %465 = load double, ptr %71, align 8, !tbaa !5
  %466 = fadd double %464, %465
  %467 = load double, ptr %72, align 8, !tbaa !5
  %468 = tail call double @llvm.fmuladd.f64(double %464, double %466, double %467)
  %469 = fcmp oeq double %468, 0.000000e+00
  br i1 %469, label %.loopexit, label %470

470:                                              ; preds = %454
  %471 = load double, ptr %73, align 8, !tbaa !5
  %472 = fadd double %464, %471
  %473 = fmul double %464, %472
  %474 = load double, ptr getelementptr inbounds (i8, ptr @_ZL2Y2, i64 80), align 16, !tbaa !5
  %475 = load double, ptr %2, align 8, !tbaa !5
  %476 = fmul double %475, %473
  %477 = fdiv double %476, %468
  %478 = fsub double %474, %477
  %479 = getelementptr inbounds i8, ptr %4, i64 80
  store double %478, ptr %479, align 8, !tbaa !5
  br label %.loopexit

480:                                              ; preds = %.preheader566, %488
  %indvars.iv801 = phi i64 [ 0, %.preheader566 ], [ %indvars.iv.next802, %488 ]
  %indvars.iv.next802 = add nuw nsw i64 %indvars.iv801, 1
  %481 = trunc i64 %indvars.iv.next802 to i32
  %482 = mul i32 %481, 5
  %483 = add i32 %482, 45
  %484 = uitofp nneg i32 %483 to double
  %485 = load double, ptr %69, align 8, !tbaa !5
  %486 = fadd double %485, %484
  %487 = fcmp une double %486, 0.000000e+00
  br i1 %487, label %488, label %.loopexit

488:                                              ; preds = %480
  %489 = load double, ptr %2, align 8, !tbaa !5
  %490 = load double, ptr %70, align 8, !tbaa !5
  %491 = fdiv double %490, %486
  %492 = tail call double @exp(double noundef %491) #6
  %493 = getelementptr inbounds [16 x double], ptr @_ZL2Y3, i64 0, i64 %indvars.iv801
  %494 = load double, ptr %493, align 8, !tbaa !5
  %495 = fneg double %494
  %496 = tail call double @llvm.fmuladd.f64(double %489, double %492, double %495)
  %497 = getelementptr inbounds double, ptr %4, i64 %indvars.iv801
  store double %496, ptr %497, align 8, !tbaa !5
  %exitcond804.not = icmp eq i64 %indvars.iv.next802, 16
  br i1 %exitcond804.not, label %.loopexit, label %480, !llvm.loop !43

498:                                              ; preds = %.preheader570, %._crit_edge664
  %indvars.iv797 = phi i64 [ 1, %.preheader570 ], [ %indvars.iv.next798, %._crit_edge664 ]
  %499 = trunc nuw nsw i64 %indvars.iv797 to i32
  %500 = uitofp nneg i32 %499 to double
  %501 = fdiv double %500, 2.900000e+01
  br i1 %.not549650, label %.preheader569, label %.lr.ph655.preheader

.lr.ph655.preheader:                              ; preds = %498
  br i1 %67, label %.preheader569.loopexit.unr-lcssa, label %.lr.ph655

.preheader569.loopexit.unr-lcssa:                 ; preds = %.lr.ph655, %.lr.ph655.preheader
  %.lcssa1001.ph = phi double [ poison, %.lr.ph655.preheader ], [ %522, %.lr.ph655 ]
  %indvars.iv787.unr = phi i64 [ 2, %.lr.ph655.preheader ], [ %indvars.iv.next788.1, %.lr.ph655 ]
  %.1505653.unr = phi double [ 1.000000e+00, %.lr.ph655.preheader ], [ %523, %.lr.ph655 ]
  %.0509652.unr = phi double [ 0.000000e+00, %.lr.ph655.preheader ], [ %522, %.lr.ph655 ]
  br i1 %lcmp.mod1031.not, label %.preheader569, label %.lr.ph655.epil

.lr.ph655.epil:                                   ; preds = %.preheader569.loopexit.unr-lcssa
  %502 = add nsw i64 %indvars.iv787.unr, -1
  %503 = trunc nuw nsw i64 %502 to i32
  %504 = sitofp i32 %503 to double
  %505 = fmul double %.1505653.unr, %504
  %506 = getelementptr inbounds double, ptr %2, i64 %502
  %507 = load double, ptr %506, align 8, !tbaa !5
  %508 = tail call double @llvm.fmuladd.f64(double %505, double %507, double %.0509652.unr)
  br label %.preheader569

.preheader569:                                    ; preds = %.lr.ph655.epil, %.preheader569.loopexit.unr-lcssa, %498
  %.0509.lcssa = phi double [ 0.000000e+00, %498 ], [ %.lcssa1001.ph, %.preheader569.loopexit.unr-lcssa ], [ %508, %.lr.ph655.epil ]
  br i1 %.not550659, label %._crit_edge664, label %.lr.ph663.preheader

.lr.ph663.preheader:                              ; preds = %.preheader569
  br i1 %68, label %._crit_edge664.loopexit.unr-lcssa, label %.lr.ph663

.lr.ph655:                                        ; preds = %.lr.ph655.preheader, %.lr.ph655
  %indvars.iv787 = phi i64 [ %indvars.iv.next788.1, %.lr.ph655 ], [ 2, %.lr.ph655.preheader ]
  %.1505653 = phi double [ %523, %.lr.ph655 ], [ 1.000000e+00, %.lr.ph655.preheader ]
  %.0509652 = phi double [ %522, %.lr.ph655 ], [ 0.000000e+00, %.lr.ph655.preheader ]
  %niter1034 = phi i64 [ %niter1034.next.1, %.lr.ph655 ], [ 0, %.lr.ph655.preheader ]
  %509 = add nsw i64 %indvars.iv787, -1
  %510 = trunc nuw nsw i64 %509 to i32
  %511 = sitofp i32 %510 to double
  %512 = fmul double %.1505653, %511
  %513 = getelementptr inbounds double, ptr %2, i64 %509
  %514 = load double, ptr %513, align 8, !tbaa !5
  %515 = tail call double @llvm.fmuladd.f64(double %512, double %514, double %.0509652)
  %516 = fmul double %501, %.1505653
  %517 = trunc nuw nsw i64 %indvars.iv787 to i32
  %518 = sitofp i32 %517 to double
  %519 = fmul double %516, %518
  %520 = getelementptr inbounds double, ptr %2, i64 %indvars.iv787
  %521 = load double, ptr %520, align 8, !tbaa !5
  %522 = tail call double @llvm.fmuladd.f64(double %519, double %521, double %515)
  %523 = fmul double %501, %516
  %indvars.iv.next788.1 = add nuw nsw i64 %indvars.iv787, 2
  %niter1034.next.1 = add i64 %niter1034, 2
  %niter1034.ncmp.1 = icmp eq i64 %niter1034.next.1, %unroll_iter1033
  br i1 %niter1034.ncmp.1, label %.preheader569.loopexit.unr-lcssa, label %.lr.ph655, !llvm.loop !44

.lr.ph663:                                        ; preds = %.lr.ph663.preheader, %.lr.ph663
  %indvars.iv792 = phi i64 [ %indvars.iv.next793.3, %.lr.ph663 ], [ 1, %.lr.ph663.preheader ]
  %.2506662 = phi double [ %535, %.lr.ph663 ], [ 1.000000e+00, %.lr.ph663.preheader ]
  %.0507661 = phi double [ %534, %.lr.ph663 ], [ 0.000000e+00, %.lr.ph663.preheader ]
  %niter1040 = phi i64 [ %niter1040.next.3, %.lr.ph663 ], [ 0, %.lr.ph663.preheader ]
  %gep658 = getelementptr double, ptr %invariant.gep657, i64 %indvars.iv792
  %524 = load double, ptr %gep658, align 8, !tbaa !5
  %525 = tail call double @llvm.fmuladd.f64(double %.2506662, double %524, double %.0507661)
  %526 = fmul double %501, %.2506662
  %gep658.1 = getelementptr double, ptr %2, i64 %indvars.iv792
  %527 = load double, ptr %gep658.1, align 8, !tbaa !5
  %528 = tail call double @llvm.fmuladd.f64(double %526, double %527, double %525)
  %529 = fmul double %501, %526
  %gep1086 = getelementptr double, ptr %invariant.gep1085, i64 %indvars.iv792
  %530 = load double, ptr %gep1086, align 8, !tbaa !5
  %531 = tail call double @llvm.fmuladd.f64(double %529, double %530, double %528)
  %532 = fmul double %501, %529
  %gep1088 = getelementptr double, ptr %invariant.gep1087, i64 %indvars.iv792
  %533 = load double, ptr %gep1088, align 8, !tbaa !5
  %534 = tail call double @llvm.fmuladd.f64(double %532, double %533, double %531)
  %535 = fmul double %501, %532
  %indvars.iv.next793.3 = add nuw nsw i64 %indvars.iv792, 4
  %niter1040.next.3 = add i64 %niter1040, 4
  %niter1040.ncmp.3 = icmp eq i64 %niter1040.next.3, %unroll_iter1039
  br i1 %niter1040.ncmp.3, label %._crit_edge664.loopexit.unr-lcssa, label %.lr.ph663, !llvm.loop !45

._crit_edge664.loopexit.unr-lcssa:                ; preds = %.lr.ph663, %.lr.ph663.preheader
  %.lcssa1002.ph = phi double [ poison, %.lr.ph663.preheader ], [ %534, %.lr.ph663 ]
  %indvars.iv792.unr = phi i64 [ 1, %.lr.ph663.preheader ], [ %indvars.iv.next793.3, %.lr.ph663 ]
  %.2506662.unr = phi double [ 1.000000e+00, %.lr.ph663.preheader ], [ %535, %.lr.ph663 ]
  %.0507661.unr = phi double [ 0.000000e+00, %.lr.ph663.preheader ], [ %534, %.lr.ph663 ]
  br i1 %lcmp.mod1037.not, label %._crit_edge664, label %.lr.ph663.epil

.lr.ph663.epil:                                   ; preds = %._crit_edge664.loopexit.unr-lcssa, %.lr.ph663.epil
  %indvars.iv792.epil = phi i64 [ %indvars.iv.next793.epil, %.lr.ph663.epil ], [ %indvars.iv792.unr, %._crit_edge664.loopexit.unr-lcssa ]
  %.2506662.epil = phi double [ %538, %.lr.ph663.epil ], [ %.2506662.unr, %._crit_edge664.loopexit.unr-lcssa ]
  %.0507661.epil = phi double [ %537, %.lr.ph663.epil ], [ %.0507661.unr, %._crit_edge664.loopexit.unr-lcssa ]
  %epil.iter1036 = phi i64 [ %epil.iter1036.next, %.lr.ph663.epil ], [ 0, %._crit_edge664.loopexit.unr-lcssa ]
  %gep658.epil = getelementptr double, ptr %invariant.gep657, i64 %indvars.iv792.epil
  %536 = load double, ptr %gep658.epil, align 8, !tbaa !5
  %537 = tail call double @llvm.fmuladd.f64(double %.2506662.epil, double %536, double %.0507661.epil)
  %538 = fmul double %501, %.2506662.epil
  %indvars.iv.next793.epil = add nuw nsw i64 %indvars.iv792.epil, 1
  %epil.iter1036.next = add i64 %epil.iter1036, 1
  %epil.iter1036.cmp.not = icmp eq i64 %epil.iter1036.next, %xtraiter1035
  br i1 %epil.iter1036.cmp.not, label %._crit_edge664, label %.lr.ph663.epil, !llvm.loop !46

._crit_edge664:                                   ; preds = %._crit_edge664.loopexit.unr-lcssa, %.lr.ph663.epil, %.preheader569
  %.0507.lcssa = phi double [ 0.000000e+00, %.preheader569 ], [ %.lcssa1002.ph, %._crit_edge664.loopexit.unr-lcssa ], [ %537, %.lr.ph663.epil ]
  %539 = fneg double %.0507.lcssa
  %540 = tail call double @llvm.fmuladd.f64(double %539, double %.0507.lcssa, double %.0509.lcssa)
  %541 = fadd double %540, -1.000000e+00
  %gep667 = getelementptr double, ptr %invariant.gep666, i64 %indvars.iv797
  store double %541, ptr %gep667, align 8, !tbaa !5
  %indvars.iv.next798 = add nuw nsw i64 %indvars.iv797, 1
  %exitcond800.not = icmp eq i64 %indvars.iv.next798, 30
  br i1 %exitcond800.not, label %542, label %498, !llvm.loop !47

542:                                              ; preds = %._crit_edge664
  %543 = load double, ptr %2, align 8, !tbaa !5
  %544 = getelementptr inbounds i8, ptr %4, i64 232
  store double %543, ptr %544, align 8, !tbaa !5
  %545 = getelementptr inbounds i8, ptr %2, i64 8
  %546 = load double, ptr %545, align 8, !tbaa !5
  %547 = fneg double %543
  %548 = tail call double @llvm.fmuladd.f64(double %547, double %543, double %546)
  %549 = fadd double %548, -1.000000e+00
  %550 = getelementptr inbounds i8, ptr %4, i64 240
  store double %549, ptr %550, align 8, !tbaa !5
  br label %.loopexit

551:                                              ; preds = %.lr.ph649, %551
  %indvars.iv782 = phi i64 [ 1, %.lr.ph649 ], [ %indvars.iv.next783, %551 ]
  %552 = trunc nuw nsw i64 %indvars.iv782 to i32
  %553 = uitofp nneg i32 %552 to double
  %554 = fdiv double %553, -1.000000e+01
  %555 = load double, ptr %2, align 8, !tbaa !5
  %556 = fmul double %554, %555
  %557 = tail call double @exp(double noundef %556) #6
  %558 = load double, ptr %61, align 8, !tbaa !5
  %559 = fmul double %554, %558
  %560 = tail call double @exp(double noundef %559) #6
  %561 = fsub double %557, %560
  %562 = fneg double %553
  %563 = tail call double @exp(double noundef %562) #6
  %564 = tail call double @exp(double noundef %554) #6
  %565 = fsub double %563, %564
  %566 = load double, ptr %62, align 8, !tbaa !5
  %567 = tail call double @llvm.fmuladd.f64(double %565, double %566, double %561)
  %gep646 = getelementptr double, ptr %invariant.gep645, i64 %indvars.iv782
  store double %567, ptr %gep646, align 8, !tbaa !5
  %indvars.iv.next783 = add nuw nsw i64 %indvars.iv782, 1
  %exitcond786.not = icmp eq i64 %indvars.iv.next783, %wide.trip.count785
  br i1 %exitcond786.not, label %.loopexit, label %551, !llvm.loop !48

568:                                              ; preds = %.lr.ph644, %568
  %indvars.iv777 = phi i64 [ 1, %.lr.ph644 ], [ %indvars.iv.next778, %568 ]
  %indvars.iv777.tr = trunc i64 %indvars.iv777 to i32
  %569 = shl i32 %indvars.iv777.tr, 1
  %570 = add i32 %569, 2
  %571 = uitofp nneg i32 %570 to double
  %572 = trunc nuw nsw i64 %indvars.iv777 to i32
  %573 = uitofp nneg i32 %572 to double
  %574 = load double, ptr %2, align 8, !tbaa !5
  %575 = fmul double %574, %573
  %576 = tail call double @exp(double noundef %575) #6
  %577 = fsub double %571, %576
  %578 = load double, ptr %59, align 8, !tbaa !5
  %579 = fmul double %578, %573
  %580 = tail call double @exp(double noundef %579) #6
  %581 = fsub double %577, %580
  %gep641 = getelementptr double, ptr %invariant.gep640, i64 %indvars.iv777
  store double %581, ptr %gep641, align 8, !tbaa !5
  %indvars.iv.next778 = add nuw nsw i64 %indvars.iv777, 1
  %exitcond781.not = icmp eq i64 %indvars.iv.next778, %wide.trip.count780
  br i1 %exitcond781.not, label %.loopexit, label %568, !llvm.loop !49

582:                                              ; preds = %.lr.ph639, %582
  %indvars.iv772 = phi i64 [ 1, %.lr.ph639 ], [ %indvars.iv.next773, %582 ]
  %583 = trunc nuw nsw i64 %indvars.iv772 to i32
  %584 = uitofp nneg i32 %583 to double
  %585 = fdiv double %584, 5.000000e+00
  %586 = load double, ptr %2, align 8, !tbaa !5
  %587 = load double, ptr %55, align 8, !tbaa !5
  %588 = tail call double @llvm.fmuladd.f64(double %585, double %587, double %586)
  %589 = tail call double @exp(double noundef %585) #6
  %590 = fsub double %588, %589
  %591 = load double, ptr %56, align 8, !tbaa !5
  %592 = tail call double @sin(double noundef %585) #6
  %593 = load double, ptr %57, align 8, !tbaa !5
  %594 = tail call double @llvm.fmuladd.f64(double %592, double %593, double %591)
  %595 = tail call double @cos(double noundef %585) #6
  %596 = fsub double %594, %595
  %597 = fmul double %596, %596
  %598 = tail call double @llvm.fmuladd.f64(double %590, double %590, double %597)
  %gep636 = getelementptr double, ptr %invariant.gep635, i64 %indvars.iv772
  store double %598, ptr %gep636, align 8, !tbaa !5
  %indvars.iv.next773 = add nuw nsw i64 %indvars.iv772, 1
  %exitcond776.not = icmp eq i64 %indvars.iv.next773, %wide.trip.count775
  br i1 %exitcond776.not, label %.loopexit, label %582, !llvm.loop !50

.preheader579:                                    ; preds = %.lr.ph620.preheader, %.preheader580
  %599 = icmp sgt i32 %1, 0
  br i1 %599, label %.lr.ph628, label %.preheader577

.lr.ph628:                                        ; preds = %.preheader579
  %wide.trip.count765 = zext nneg i32 %1 to i64
  %wide.trip.count760 = zext i32 %0 to i64
  %xtraiter1024 = and i64 %wide.trip.count760, 1
  %600 = icmp eq i32 %0, 1
  %unroll_iter1027 = and i64 %wide.trip.count760, 2147483646
  %lcmp.mod1026.not = icmp eq i64 %xtraiter1024, 0
  br label %603

.preheader577:                                    ; preds = %._crit_edge626, %.preheader579
  %invariant.gep629 = getelementptr i8, ptr %4, i64 -8
  %.not545631 = icmp slt i32 %0, 1
  br i1 %.not545631, label %.loopexit, label %.lr.ph634

.lr.ph634:                                        ; preds = %.preheader577
  %601 = sitofp i32 %1 to double
  %602 = add nuw i32 %0, 1
  %wide.trip.count770 = zext i32 %602 to i64
  br label %621

603:                                              ; preds = %.lr.ph628, %._crit_edge626
  %indvars.iv762 = phi i64 [ 0, %.lr.ph628 ], [ %indvars.iv.next763, %._crit_edge626 ]
  %604 = getelementptr inbounds double, ptr %2, i64 %indvars.iv762
  %605 = load double, ptr %604, align 8, !tbaa !5
  %606 = tail call double @llvm.fmuladd.f64(double %605, double 2.000000e+00, double -1.000000e+00)
  %607 = fmul double %606, 2.000000e+00
  br i1 %52, label %.lr.ph625.preheader, label %._crit_edge626

.lr.ph625.preheader:                              ; preds = %603
  br i1 %600, label %._crit_edge626.loopexit.unr-lcssa, label %.lr.ph625

.lr.ph625:                                        ; preds = %.lr.ph625.preheader, %.lr.ph625
  %indvars.iv757 = phi i64 [ %indvars.iv.next758.1, %.lr.ph625 ], [ 0, %.lr.ph625.preheader ]
  %.1508623 = phi double [ %617, %.lr.ph625 ], [ %606, %.lr.ph625.preheader ]
  %.1510622 = phi double [ %612, %.lr.ph625 ], [ 1.000000e+00, %.lr.ph625.preheader ]
  %niter1028 = phi i64 [ %niter1028.next.1, %.lr.ph625 ], [ 0, %.lr.ph625.preheader ]
  %608 = getelementptr inbounds double, ptr %4, i64 %indvars.iv757
  %609 = load double, ptr %608, align 8, !tbaa !5
  %610 = fadd double %.1508623, %609
  store double %610, ptr %608, align 8, !tbaa !5
  %611 = fneg double %.1510622
  %612 = tail call double @llvm.fmuladd.f64(double %607, double %.1508623, double %611)
  %indvars.iv.next758 = or disjoint i64 %indvars.iv757, 1
  %613 = getelementptr inbounds double, ptr %4, i64 %indvars.iv.next758
  %614 = load double, ptr %613, align 8, !tbaa !5
  %615 = fadd double %612, %614
  store double %615, ptr %613, align 8, !tbaa !5
  %616 = fneg double %.1508623
  %617 = tail call double @llvm.fmuladd.f64(double %607, double %612, double %616)
  %indvars.iv.next758.1 = add nuw nsw i64 %indvars.iv757, 2
  %niter1028.next.1 = add i64 %niter1028, 2
  %niter1028.ncmp.1 = icmp eq i64 %niter1028.next.1, %unroll_iter1027
  br i1 %niter1028.ncmp.1, label %._crit_edge626.loopexit.unr-lcssa, label %.lr.ph625, !llvm.loop !51

._crit_edge626.loopexit.unr-lcssa:                ; preds = %.lr.ph625, %.lr.ph625.preheader
  %indvars.iv757.unr = phi i64 [ 0, %.lr.ph625.preheader ], [ %indvars.iv.next758.1, %.lr.ph625 ]
  %.1508623.unr = phi double [ %606, %.lr.ph625.preheader ], [ %617, %.lr.ph625 ]
  br i1 %lcmp.mod1026.not, label %._crit_edge626, label %.lr.ph625.epil

.lr.ph625.epil:                                   ; preds = %._crit_edge626.loopexit.unr-lcssa
  %618 = getelementptr inbounds double, ptr %4, i64 %indvars.iv757.unr
  %619 = load double, ptr %618, align 8, !tbaa !5
  %620 = fadd double %.1508623.unr, %619
  store double %620, ptr %618, align 8, !tbaa !5
  br label %._crit_edge626

._crit_edge626:                                   ; preds = %.lr.ph625.epil, %._crit_edge626.loopexit.unr-lcssa, %603
  %indvars.iv.next763 = add nuw nsw i64 %indvars.iv762, 1
  %exitcond766.not = icmp eq i64 %indvars.iv.next763, %wide.trip.count765
  br i1 %exitcond766.not, label %.preheader577, label %603, !llvm.loop !52

621:                                              ; preds = %.lr.ph634, %632
  %indvars.iv767 = phi i64 [ 1, %.lr.ph634 ], [ %indvars.iv.next768, %632 ]
  %.1513633 = phi double [ -1.000000e+00, %.lr.ph634 ], [ %633, %632 ]
  %gep630 = getelementptr double, ptr %invariant.gep629, i64 %indvars.iv767
  %622 = load double, ptr %gep630, align 8, !tbaa !5
  %623 = fdiv double %622, %601
  %624 = fcmp ogt double %.1513633, 0.000000e+00
  br i1 %624, label %625, label %632

625:                                              ; preds = %621
  %626 = mul nuw nsw i64 %indvars.iv767, %indvars.iv767
  %627 = trunc nuw i64 %626 to i32
  %628 = add nsw i32 %627, -1
  %629 = sitofp i32 %628 to double
  %630 = fdiv double 1.000000e+00, %629
  %631 = fadd double %630, %623
  br label %632

632:                                              ; preds = %625, %621
  %storemerge = phi double [ %631, %625 ], [ %623, %621 ]
  store double %storemerge, ptr %gep630, align 8, !tbaa !5
  %633 = fneg double %.1513633
  %indvars.iv.next768 = add nuw nsw i64 %indvars.iv767, 1
  %exitcond771.not = icmp eq i64 %indvars.iv.next768, %wide.trip.count770
  br i1 %exitcond771.not, label %.loopexit, label %621, !llvm.loop !53

634:                                              ; preds = %5
  %635 = icmp sgt i32 %1, 0
  br i1 %635, label %.lr.ph612.preheader, label %.preheader581.thread

.preheader581.thread:                             ; preds = %634
  %636 = add i32 %1, -1
  br label %._crit_edge617

.lr.ph612.preheader:                              ; preds = %634
  %637 = xor i32 %1, -1
  %638 = sitofp i32 %637 to double
  %wide.trip.count747 = zext nneg i32 %1 to i64
  %639 = add nsw i64 %wide.trip.count747, -1
  %xtraiter1016 = and i64 %wide.trip.count747, 3
  %640 = icmp ult i64 %639, 3
  br i1 %640, label %.preheader581.unr-lcssa, label %.lr.ph612.preheader.new

.lr.ph612.preheader.new:                          ; preds = %.lr.ph612.preheader
  %unroll_iter1020 = and i64 %wide.trip.count747, 2147483644
  br label %.lr.ph612

.preheader581.unr-lcssa:                          ; preds = %.lr.ph612, %.lr.ph612.preheader
  %.lcssa1009.ph = phi double [ poison, %.lr.ph612.preheader ], [ %675, %.lr.ph612 ]
  %.lcssa1008.ph = phi double [ poison, %.lr.ph612.preheader ], [ %676, %.lr.ph612 ]
  %indvars.iv744.unr = phi i64 [ 0, %.lr.ph612.preheader ], [ %indvars.iv.next745.3, %.lr.ph612 ]
  %.3610.unr = phi double [ %638, %.lr.ph612.preheader ], [ %675, %.lr.ph612 ]
  %.2514609.unr = phi double [ 1.000000e+00, %.lr.ph612.preheader ], [ %676, %.lr.ph612 ]
  %lcmp.mod1017.not = icmp eq i64 %xtraiter1016, 0
  br i1 %lcmp.mod1017.not, label %.preheader581, label %.lr.ph612.epil

.lr.ph612.epil:                                   ; preds = %.preheader581.unr-lcssa, %.lr.ph612.epil
  %indvars.iv744.epil = phi i64 [ %indvars.iv.next745.epil, %.lr.ph612.epil ], [ %indvars.iv744.unr, %.preheader581.unr-lcssa ]
  %.3610.epil = phi double [ %643, %.lr.ph612.epil ], [ %.3610.unr, %.preheader581.unr-lcssa ]
  %.2514609.epil = phi double [ %644, %.lr.ph612.epil ], [ %.2514609.unr, %.preheader581.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.lr.ph612.epil ], [ 0, %.preheader581.unr-lcssa ]
  %641 = getelementptr inbounds double, ptr %2, i64 %indvars.iv744.epil
  %642 = load double, ptr %641, align 8, !tbaa !5
  %643 = fadd double %.3610.epil, %642
  %644 = fmul double %.2514609.epil, %642
  %indvars.iv.next745.epil = add nuw nsw i64 %indvars.iv744.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter1016
  br i1 %epil.iter.cmp.not, label %.preheader581, label %.lr.ph612.epil, !llvm.loop !54

.preheader581:                                    ; preds = %.lr.ph612.epil, %.preheader581.unr-lcssa
  %.lcssa1009 = phi double [ %.lcssa1009.ph, %.preheader581.unr-lcssa ], [ %643, %.lr.ph612.epil ]
  %.lcssa1008 = phi double [ %.lcssa1008.ph, %.preheader581.unr-lcssa ], [ %644, %.lr.ph612.epil ]
  %645 = fadd double %.lcssa1008, -1.000000e+00
  %646 = add nsw i32 %1, -1
  %.not = icmp eq i32 %1, 1
  br i1 %.not, label %._crit_edge617, label %.lr.ph616.preheader

.lr.ph616.preheader:                              ; preds = %.preheader581
  %wide.trip.count752 = zext i32 %646 to i64
  %min.iters.check946 = icmp ult i32 %646, 4
  %647 = sub i64 %7, %6
  %diff.check = icmp ult i64 %647, 32
  %or.cond = or i1 %min.iters.check946, %diff.check
  br i1 %or.cond, label %.lr.ph616.preheader1007, label %vector.ph947

.lr.ph616.preheader1007:                          ; preds = %middle.block944, %.lr.ph616.preheader
  %indvars.iv749.ph = phi i64 [ 0, %.lr.ph616.preheader ], [ %n.vec949, %middle.block944 ]
  %xtraiter1022 = and i64 %wide.trip.count752, 3
  %lcmp.mod1023.not = icmp eq i64 %xtraiter1022, 0
  br i1 %lcmp.mod1023.not, label %.lr.ph616.prol.loopexit, label %.lr.ph616.prol

.lr.ph616.prol:                                   ; preds = %.lr.ph616.preheader1007, %.lr.ph616.prol
  %indvars.iv749.prol = phi i64 [ %indvars.iv.next750.prol, %.lr.ph616.prol ], [ %indvars.iv749.ph, %.lr.ph616.preheader1007 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph616.prol ], [ 0, %.lr.ph616.preheader1007 ]
  %648 = getelementptr inbounds double, ptr %2, i64 %indvars.iv749.prol
  %649 = load double, ptr %648, align 8, !tbaa !5
  %650 = fadd double %.lcssa1009, %649
  %651 = getelementptr inbounds double, ptr %4, i64 %indvars.iv749.prol
  store double %650, ptr %651, align 8, !tbaa !5
  %indvars.iv.next750.prol = add nuw nsw i64 %indvars.iv749.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter1022
  br i1 %prol.iter.cmp.not, label %.lr.ph616.prol.loopexit, label %.lr.ph616.prol, !llvm.loop !55

.lr.ph616.prol.loopexit:                          ; preds = %.lr.ph616.prol, %.lr.ph616.preheader1007
  %indvars.iv749.unr = phi i64 [ %indvars.iv749.ph, %.lr.ph616.preheader1007 ], [ %indvars.iv.next750.prol, %.lr.ph616.prol ]
  %652 = sub nsw i64 %indvars.iv749.ph, %wide.trip.count752
  %653 = icmp ugt i64 %652, -4
  br i1 %653, label %._crit_edge617, label %.lr.ph616

vector.ph947:                                     ; preds = %.lr.ph616.preheader
  %n.vec949 = and i64 %wide.trip.count752, 2147483644
  %broadcast.splatinsert955 = insertelement <2 x double> poison, double %.lcssa1009, i64 0
  %broadcast.splat956 = shufflevector <2 x double> %broadcast.splatinsert955, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body951

vector.body951:                                   ; preds = %vector.body951, %vector.ph947
  %index952 = phi i64 [ 0, %vector.ph947 ], [ %index.next957, %vector.body951 ]
  %654 = getelementptr inbounds double, ptr %2, i64 %index952
  %655 = getelementptr inbounds i8, ptr %654, i64 16
  %wide.load953 = load <2 x double>, ptr %654, align 8, !tbaa !5
  %wide.load954 = load <2 x double>, ptr %655, align 8, !tbaa !5
  %656 = fadd <2 x double> %broadcast.splat956, %wide.load953
  %657 = fadd <2 x double> %broadcast.splat956, %wide.load954
  %658 = getelementptr inbounds double, ptr %4, i64 %index952
  %659 = getelementptr inbounds i8, ptr %658, i64 16
  store <2 x double> %656, ptr %658, align 8, !tbaa !5
  store <2 x double> %657, ptr %659, align 8, !tbaa !5
  %index.next957 = add nuw i64 %index952, 4
  %660 = icmp eq i64 %index.next957, %n.vec949
  br i1 %660, label %middle.block944, label %vector.body951, !llvm.loop !56

middle.block944:                                  ; preds = %vector.body951
  %cmp.n958 = icmp eq i64 %n.vec949, %wide.trip.count752
  br i1 %cmp.n958, label %._crit_edge617, label %.lr.ph616.preheader1007

.lr.ph612:                                        ; preds = %.lr.ph612, %.lr.ph612.preheader.new
  %indvars.iv744 = phi i64 [ 0, %.lr.ph612.preheader.new ], [ %indvars.iv.next745.3, %.lr.ph612 ]
  %.3610 = phi double [ %638, %.lr.ph612.preheader.new ], [ %675, %.lr.ph612 ]
  %.2514609 = phi double [ 1.000000e+00, %.lr.ph612.preheader.new ], [ %676, %.lr.ph612 ]
  %niter1021 = phi i64 [ 0, %.lr.ph612.preheader.new ], [ %niter1021.next.3, %.lr.ph612 ]
  %661 = getelementptr inbounds double, ptr %2, i64 %indvars.iv744
  %662 = load double, ptr %661, align 8, !tbaa !5
  %663 = fadd double %.3610, %662
  %664 = fmul double %.2514609, %662
  %indvars.iv.next745 = or disjoint i64 %indvars.iv744, 1
  %665 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next745
  %666 = load double, ptr %665, align 8, !tbaa !5
  %667 = fadd double %663, %666
  %668 = fmul double %664, %666
  %indvars.iv.next745.1 = or disjoint i64 %indvars.iv744, 2
  %669 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next745.1
  %670 = load double, ptr %669, align 8, !tbaa !5
  %671 = fadd double %667, %670
  %672 = fmul double %668, %670
  %indvars.iv.next745.2 = or disjoint i64 %indvars.iv744, 3
  %673 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next745.2
  %674 = load double, ptr %673, align 8, !tbaa !5
  %675 = fadd double %671, %674
  %676 = fmul double %672, %674
  %indvars.iv.next745.3 = add nuw nsw i64 %indvars.iv744, 4
  %niter1021.next.3 = add i64 %niter1021, 4
  %niter1021.ncmp.3 = icmp eq i64 %niter1021.next.3, %unroll_iter1020
  br i1 %niter1021.ncmp.3, label %.preheader581.unr-lcssa, label %.lr.ph612, !llvm.loop !57

.lr.ph616:                                        ; preds = %.lr.ph616.prol.loopexit, %.lr.ph616
  %indvars.iv749 = phi i64 [ %indvars.iv.next750.3, %.lr.ph616 ], [ %indvars.iv749.unr, %.lr.ph616.prol.loopexit ]
  %677 = getelementptr inbounds double, ptr %2, i64 %indvars.iv749
  %678 = load double, ptr %677, align 8, !tbaa !5
  %679 = fadd double %.lcssa1009, %678
  %680 = getelementptr inbounds double, ptr %4, i64 %indvars.iv749
  store double %679, ptr %680, align 8, !tbaa !5
  %indvars.iv.next750 = add nuw nsw i64 %indvars.iv749, 1
  %681 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next750
  %682 = load double, ptr %681, align 8, !tbaa !5
  %683 = fadd double %.lcssa1009, %682
  %684 = getelementptr inbounds double, ptr %4, i64 %indvars.iv.next750
  store double %683, ptr %684, align 8, !tbaa !5
  %indvars.iv.next750.1 = add nuw nsw i64 %indvars.iv749, 2
  %685 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next750.1
  %686 = load double, ptr %685, align 8, !tbaa !5
  %687 = fadd double %.lcssa1009, %686
  %688 = getelementptr inbounds double, ptr %4, i64 %indvars.iv.next750.1
  store double %687, ptr %688, align 8, !tbaa !5
  %indvars.iv.next750.2 = add nuw nsw i64 %indvars.iv749, 3
  %689 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next750.2
  %690 = load double, ptr %689, align 8, !tbaa !5
  %691 = fadd double %.lcssa1009, %690
  %692 = getelementptr inbounds double, ptr %4, i64 %indvars.iv.next750.2
  store double %691, ptr %692, align 8, !tbaa !5
  %indvars.iv.next750.3 = add nuw nsw i64 %indvars.iv749, 4
  %exitcond753.not.3 = icmp eq i64 %indvars.iv.next750.3, %wide.trip.count752
  br i1 %exitcond753.not.3, label %._crit_edge617, label %.lr.ph616, !llvm.loop !58

._crit_edge617:                                   ; preds = %.lr.ph616.prol.loopexit, %.lr.ph616, %middle.block944, %.preheader581.thread, %.preheader581
  %693 = phi i32 [ %636, %.preheader581.thread ], [ %646, %.preheader581 ], [ %646, %middle.block944 ], [ %646, %.lr.ph616 ], [ %646, %.lr.ph616.prol.loopexit ]
  %.2514.lcssa845 = phi double [ 0.000000e+00, %.preheader581.thread ], [ %645, %.preheader581 ], [ %645, %middle.block944 ], [ %645, %.lr.ph616 ], [ %645, %.lr.ph616.prol.loopexit ]
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds double, ptr %4, i64 %694
  store double %.2514.lcssa845, ptr %695, align 8, !tbaa !5
  br label %.loopexit

696:                                              ; preds = %.preheader582, %696
  %indvars.iv740 = phi i64 [ 1, %.preheader582 ], [ %indvars.iv.next741, %696 ]
  %697 = add nsw i64 %indvars.iv740, -1
  %698 = trunc i64 %697 to i32
  %699 = mul i32 %698, 10
  %700 = sitofp i32 %699 to double
  %701 = load double, ptr %48, align 8, !tbaa !5
  %702 = fneg double %701
  %703 = fmul double %700, %702
  %704 = tail call double @exp(double noundef %703) #6
  %705 = load double, ptr %49, align 8, !tbaa !5
  %706 = fneg double %705
  %707 = fmul double %700, %706
  %708 = tail call double @exp(double noundef %707) #6
  %709 = getelementptr inbounds [33 x double], ptr @_ZL2Y4, i64 0, i64 %697
  %710 = load double, ptr %709, align 8, !tbaa !5
  %711 = load double, ptr %2, align 8, !tbaa !5
  %712 = load double, ptr %50, align 8, !tbaa !5
  %713 = tail call double @llvm.fmuladd.f64(double %712, double %704, double %711)
  %714 = load double, ptr %51, align 8, !tbaa !5
  %715 = tail call double @llvm.fmuladd.f64(double %714, double %708, double %713)
  %716 = fsub double %710, %715
  %717 = getelementptr inbounds double, ptr %4, i64 %697
  store double %716, ptr %717, align 8, !tbaa !5
  %indvars.iv.next741 = add nuw nsw i64 %indvars.iv740, 1
  %exitcond743.not = icmp eq i64 %indvars.iv.next741, 34
  br i1 %exitcond743.not, label %.loopexit, label %696, !llvm.loop !59

718:                                              ; preds = %.preheader584, %718
  %indvars.iv736 = phi i64 [ 0, %.preheader584 ], [ %indvars.iv.next737, %718 ]
  %719 = trunc nuw nsw i64 %indvars.iv736 to i32
  %720 = uitofp nneg i32 %719 to double
  %721 = fdiv double %720, 1.000000e+01
  %722 = load double, ptr %38, align 8, !tbaa !5
  %723 = fneg double %722
  %724 = fmul double %721, %723
  %725 = tail call double @exp(double noundef %724) #6
  %726 = load double, ptr %39, align 8, !tbaa !5
  %727 = fneg double %726
  %728 = load double, ptr %40, align 8, !tbaa !5
  %729 = fsub double %721, %728
  %square = fmul double %729, %729
  %730 = fmul double %square, %727
  %731 = tail call double @exp(double noundef %730) #6
  %732 = load double, ptr %41, align 8, !tbaa !5
  %733 = fneg double %732
  %734 = load double, ptr %42, align 8, !tbaa !5
  %735 = fsub double %721, %734
  %square543 = fmul double %735, %735
  %736 = fmul double %square543, %733
  %737 = tail call double @exp(double noundef %736) #6
  %738 = load double, ptr %43, align 8, !tbaa !5
  %739 = fneg double %738
  %740 = load double, ptr %44, align 8, !tbaa !5
  %741 = fsub double %721, %740
  %square544 = fmul double %741, %741
  %742 = fmul double %square544, %739
  %743 = tail call double @exp(double noundef %742) #6
  %744 = getelementptr inbounds [65 x double], ptr @_ZL2Y5, i64 0, i64 %indvars.iv736
  %745 = load double, ptr %744, align 8, !tbaa !5
  %746 = load double, ptr %2, align 8, !tbaa !5
  %747 = load double, ptr %45, align 8, !tbaa !5
  %748 = fmul double %731, %747
  %749 = tail call double @llvm.fmuladd.f64(double %746, double %725, double %748)
  %750 = load double, ptr %46, align 8, !tbaa !5
  %751 = tail call double @llvm.fmuladd.f64(double %750, double %737, double %749)
  %752 = load double, ptr %47, align 8, !tbaa !5
  %753 = tail call double @llvm.fmuladd.f64(double %752, double %743, double %751)
  %754 = fsub double %745, %753
  %755 = getelementptr inbounds double, ptr %4, i64 %indvars.iv736
  store double %754, ptr %755, align 8, !tbaa !5
  %indvars.iv.next737 = add nuw nsw i64 %indvars.iv736, 1
  %exitcond739.not = icmp eq i64 %indvars.iv.next737, 65
  br i1 %exitcond739.not, label %.loopexit, label %718, !llvm.loop !60

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv731 = phi i64 [ %indvars.iv.next732, %scalar.ph ], [ %indvars.iv731.ph, %scalar.ph.preheader ]
  %756 = add nsw i64 %indvars.iv731, -1
  %757 = getelementptr inbounds double, ptr %2, i64 %756
  %758 = load double, ptr %757, align 8, !tbaa !5
  %759 = tail call double @llvm.fmuladd.f64(double %758, double -4.000000e+00, double 3.000000e+00)
  %760 = getelementptr inbounds double, ptr %4, i64 %756
  store double %759, ptr %760, align 8, !tbaa !5
  %761 = load double, ptr %757, align 8, !tbaa !5
  %762 = getelementptr inbounds double, ptr %2, i64 %indvars.iv731
  %763 = load double, ptr %762, align 8, !tbaa !5
  %764 = fmul double %763, 2.000000e+00
  %765 = fmul double %763, %764
  %766 = tail call double @llvm.fmuladd.f64(double %761, double %761, double %765)
  %indvars.iv.next732 = add nuw nsw i64 %indvars.iv731, 1
  %767 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next732
  %768 = load double, ptr %767, align 8, !tbaa !5
  %769 = fmul double %768, 3.000000e+00
  %770 = tail call double @llvm.fmuladd.f64(double %769, double %768, double %766)
  %771 = getelementptr inbounds i8, ptr %762, i64 16
  %772 = load double, ptr %771, align 8, !tbaa !5
  %773 = fmul double %772, 4.000000e+00
  %774 = tail call double @llvm.fmuladd.f64(double %773, double %772, double %770)
  %775 = load double, ptr %gep602, align 8, !tbaa !5
  %776 = fmul double %775, 5.000000e+00
  %777 = tail call double @llvm.fmuladd.f64(double %776, double %775, double %774)
  %gep869 = getelementptr double, ptr %invariant.gep868, i64 %indvars.iv731
  store double %777, ptr %gep869, align 8, !tbaa !5
  %exitcond735.not = icmp eq i64 %indvars.iv.next732, %wide.trip.count734
  br i1 %exitcond735.not, label %.loopexit, label %scalar.ph, !llvm.loop !61

778:                                              ; preds = %5
  %779 = load double, ptr %2, align 8, !tbaa !5
  %780 = fadd double %779, -1.000000e+00
  store double %780, ptr %4, align 8, !tbaa !5
  %781 = icmp sgt i32 %1, 1
  br i1 %781, label %.lr.ph600.preheader, label %.loopexit

.lr.ph600.preheader:                              ; preds = %778
  %wide.trip.count729 = zext nneg i32 %1 to i64
  %782 = add nsw i64 %wide.trip.count729, -1
  %xtraiter = and i64 %782, 1
  %783 = icmp eq i32 %1, 2
  br i1 %783, label %.loopexit.loopexit1013.unr-lcssa, label %.lr.ph600.preheader.new

.lr.ph600.preheader.new:                          ; preds = %.lr.ph600.preheader
  %unroll_iter = and i64 %782, -2
  br label %.lr.ph600

.lr.ph600:                                        ; preds = %.lr.ph600, %.lr.ph600.preheader.new
  %indvars.iv726 = phi i64 [ 1, %.lr.ph600.preheader.new ], [ %indvars.iv.next727.1, %.lr.ph600 ]
  %niter = phi i64 [ 0, %.lr.ph600.preheader.new ], [ %niter.next.1, %.lr.ph600 ]
  %784 = getelementptr inbounds double, ptr %2, i64 %indvars.iv726
  %785 = load double, ptr %784, align 8, !tbaa !5
  %786 = getelementptr i8, ptr %784, i64 -8
  %787 = load double, ptr %786, align 8, !tbaa !5
  %788 = tail call double @pow(double noundef %787, double noundef 3.000000e+00) #6
  %789 = fsub double %785, %788
  %790 = fmul double %789, 1.000000e+01
  %791 = getelementptr inbounds double, ptr %4, i64 %indvars.iv726
  store double %790, ptr %791, align 8, !tbaa !5
  %indvars.iv.next727 = add nuw nsw i64 %indvars.iv726, 1
  %792 = getelementptr inbounds double, ptr %2, i64 %indvars.iv.next727
  %793 = load double, ptr %792, align 8, !tbaa !5
  %794 = getelementptr i8, ptr %792, i64 -8
  %795 = load double, ptr %794, align 8, !tbaa !5
  %796 = tail call double @pow(double noundef %795, double noundef 3.000000e+00) #6
  %797 = fsub double %793, %796
  %798 = fmul double %797, 1.000000e+01
  %799 = getelementptr inbounds double, ptr %4, i64 %indvars.iv.next727
  store double %798, ptr %799, align 8, !tbaa !5
  %indvars.iv.next727.1 = add nuw nsw i64 %indvars.iv726, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.loopexit.loopexit1013.unr-lcssa, label %.lr.ph600, !llvm.loop !62

.lr.ph:                                           ; preds = %._crit_edge, %.preheader589.lr.ph
  %indvars.iv = phi i64 [ 1, %.preheader589.lr.ph ], [ %indvars.iv.next, %._crit_edge ]
  %800 = trunc nuw nsw i64 %indvars.iv to i32
  %801 = uitofp nneg i32 %800 to double
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  br label %802

802:                                              ; preds = %.lr.ph, %802
  %.2511595 = phi double [ 0.000000e+00, %.lr.ph ], [ %814, %802 ]
  %.7594 = phi i32 [ 1, %.lr.ph ], [ %815, %802 ]
  %803 = load double, ptr %gep, align 8, !tbaa !5
  %804 = uitofp nneg i32 %.7594 to double
  %805 = fdiv double %801, %804
  %806 = tail call double @llvm.fmuladd.f64(double %803, double %803, double %805)
  %sqrt555 = tail call double @llvm.sqrt.f64(double %806)
  %807 = tail call double @log(double noundef %sqrt555) #6
  %808 = tail call double @sin(double noundef %807) #6
  %809 = tail call double @pow(double noundef %808, double noundef 5.000000e+00) #6
  %810 = tail call double @log(double noundef %sqrt555) #6
  %811 = tail call double @cos(double noundef %810) #6
  %812 = tail call double @pow(double noundef %811, double noundef 5.000000e+00) #6
  %813 = fadd double %809, %812
  %814 = tail call double @llvm.fmuladd.f64(double %sqrt555, double %813, double %.2511595)
  %815 = add nuw i32 %.7594, 1
  %exitcond.not = icmp eq i32 %.7594, %1
  br i1 %exitcond.not, label %._crit_edge, label %802, !llvm.loop !63

._crit_edge:                                      ; preds = %802
  %816 = add nsw i64 %indvars.iv, -1
  %817 = getelementptr inbounds double, ptr %2, i64 %816
  %818 = load double, ptr %817, align 8, !tbaa !5
  %819 = trunc i64 %indvars.iv to i32
  %820 = add i32 %819, -50
  %821 = tail call noundef double @_ZSt3powIidEN9__gnu_cxx9__promoteIDTplcvNS1_IT_Xsr3std12__is_integerIS2_EE7__valueEE6__typeELi0EcvNS1_IT0_Xsr3std12__is_integerIS5_EE7__valueEE6__typeELi0EEXsr3std12__is_integerIS8_EE7__valueEE6__typeES2_S5_(i32 noundef %820, double noundef 3.000000e+00)
  %822 = tail call double @llvm.fmuladd.f64(double %818, double 1.400000e+03, double %821)
  %823 = fadd double %814, %822
  %824 = getelementptr inbounds double, ptr %4, i64 %816
  store double %823, ptr %824, align 8, !tbaa !5
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond725.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond725.not, label %.loopexit, label %.lr.ph, !llvm.loop !64

825:                                              ; preds = %5
  %826 = load double, ptr %2, align 8, !tbaa !5
  %827 = getelementptr inbounds i8, ptr %2, i64 8
  %828 = load double, ptr %827, align 8, !tbaa !5
  %829 = fadd double %826, %828
  %830 = fadd double %829, 6.900000e-01
  store double %830, ptr %4, align 8, !tbaa !5
  %831 = getelementptr inbounds i8, ptr %2, i64 16
  %832 = load double, ptr %831, align 8, !tbaa !5
  %833 = getelementptr inbounds i8, ptr %2, i64 24
  %834 = load double, ptr %833, align 8, !tbaa !5
  %835 = fadd double %832, %834
  %836 = fadd double %835, 4.400000e-02
  %837 = getelementptr inbounds i8, ptr %4, i64 8
  store double %836, ptr %837, align 8, !tbaa !5
  %838 = getelementptr inbounds i8, ptr %2, i64 32
  %839 = load double, ptr %838, align 8, !tbaa !5
  %840 = load double, ptr %2, align 8, !tbaa !5
  %841 = getelementptr inbounds i8, ptr %2, i64 40
  %842 = load double, ptr %841, align 8, !tbaa !5
  %843 = load double, ptr %827, align 8, !tbaa !5
  %844 = fmul double %842, %843
  %845 = tail call double @llvm.fmuladd.f64(double %839, double %840, double %844)
  %846 = getelementptr inbounds i8, ptr %2, i64 48
  %847 = load double, ptr %846, align 8, !tbaa !5
  %848 = load double, ptr %831, align 8, !tbaa !5
  %849 = fneg double %847
  %850 = tail call double @llvm.fmuladd.f64(double %849, double %848, double %845)
  %851 = getelementptr inbounds i8, ptr %2, i64 56
  %852 = load double, ptr %851, align 8, !tbaa !5
  %853 = load double, ptr %833, align 8, !tbaa !5
  %854 = fneg double %852
  %855 = tail call double @llvm.fmuladd.f64(double %854, double %853, double %850)
  %856 = fadd double %855, 1.570000e+00
  %857 = getelementptr inbounds i8, ptr %4, i64 16
  store double %856, ptr %857, align 8, !tbaa !5
  %858 = load double, ptr %846, align 8, !tbaa !5
  %859 = load double, ptr %2, align 8, !tbaa !5
  %860 = load double, ptr %851, align 8, !tbaa !5
  %861 = load double, ptr %827, align 8, !tbaa !5
  %862 = fmul double %860, %861
  %863 = tail call double @llvm.fmuladd.f64(double %858, double %859, double %862)
  %864 = load double, ptr %838, align 8, !tbaa !5
  %865 = load double, ptr %831, align 8, !tbaa !5
  %866 = tail call double @llvm.fmuladd.f64(double %864, double %865, double %863)
  %867 = load double, ptr %841, align 8, !tbaa !5
  %868 = load double, ptr %833, align 8, !tbaa !5
  %869 = tail call double @llvm.fmuladd.f64(double %867, double %868, double %866)
  %870 = fadd double %869, 1.310000e+00
  %871 = getelementptr inbounds i8, ptr %4, i64 24
  store double %870, ptr %871, align 8, !tbaa !5
  %872 = load double, ptr %2, align 8, !tbaa !5
  %873 = load double, ptr %838, align 8, !tbaa !5
  %874 = load double, ptr %846, align 8, !tbaa !5
  %875 = fneg double %874
  %876 = fmul double %874, %875
  %877 = tail call double @llvm.fmuladd.f64(double %873, double %873, double %876)
  %878 = load double, ptr %831, align 8, !tbaa !5
  %879 = fmul double %878, -2.000000e+00
  %880 = fmul double %873, %879
  %881 = fmul double %874, %880
  %882 = tail call double @llvm.fmuladd.f64(double %872, double %877, double %881)
  %883 = load double, ptr %827, align 8, !tbaa !5
  %884 = load double, ptr %841, align 8, !tbaa !5
  %885 = load double, ptr %851, align 8, !tbaa !5
  %886 = fneg double %885
  %887 = fmul double %885, %886
  %888 = tail call double @llvm.fmuladd.f64(double %884, double %884, double %887)
  %889 = tail call double @llvm.fmuladd.f64(double %883, double %888, double %882)
  %890 = load double, ptr %833, align 8, !tbaa !5
  %891 = fmul double %890, -2.000000e+00
  %892 = fmul double %884, %891
  %893 = tail call double @llvm.fmuladd.f64(double %892, double %885, double %889)
  %894 = fadd double %893, 2.650000e+00
  %895 = getelementptr inbounds i8, ptr %4, i64 32
  store double %894, ptr %895, align 8, !tbaa !5
  %896 = load double, ptr %831, align 8, !tbaa !5
  %897 = load double, ptr %838, align 8, !tbaa !5
  %898 = load double, ptr %846, align 8, !tbaa !5
  %899 = fneg double %898
  %900 = fmul double %898, %899
  %901 = tail call double @llvm.fmuladd.f64(double %897, double %897, double %900)
  %902 = load double, ptr %2, align 8, !tbaa !5
  %903 = fmul double %902, 2.000000e+00
  %904 = fmul double %897, %903
  %905 = fmul double %898, %904
  %906 = tail call double @llvm.fmuladd.f64(double %896, double %901, double %905)
  %907 = load double, ptr %833, align 8, !tbaa !5
  %908 = load double, ptr %841, align 8, !tbaa !5
  %909 = load double, ptr %851, align 8, !tbaa !5
  %910 = fneg double %909
  %911 = fmul double %909, %910
  %912 = tail call double @llvm.fmuladd.f64(double %908, double %908, double %911)
  %913 = tail call double @llvm.fmuladd.f64(double %907, double %912, double %906)
  %914 = load double, ptr %827, align 8, !tbaa !5
  %915 = fmul double %914, 2.000000e+00
  %916 = fmul double %908, %915
  %917 = tail call double @llvm.fmuladd.f64(double %916, double %909, double %913)
  %918 = fadd double %917, -2.000000e+00
  %919 = getelementptr inbounds i8, ptr %4, i64 40
  store double %918, ptr %919, align 8, !tbaa !5
  %920 = load double, ptr %2, align 8, !tbaa !5
  %921 = load double, ptr %838, align 8, !tbaa !5
  %922 = fmul double %920, %921
  %923 = load double, ptr %846, align 8, !tbaa !5
  %924 = fmul double %923, -3.000000e+00
  %925 = fmul double %923, %924
  %926 = tail call double @llvm.fmuladd.f64(double %921, double %921, double %925)
  %927 = load double, ptr %831, align 8, !tbaa !5
  %928 = fmul double %923, %927
  %929 = fmul double %921, -3.000000e+00
  %930 = fmul double %921, %929
  %931 = tail call double @llvm.fmuladd.f64(double %923, double %923, double %930)
  %932 = fmul double %928, %931
  %933 = tail call double @llvm.fmuladd.f64(double %922, double %926, double %932)
  %934 = load double, ptr %827, align 8, !tbaa !5
  %935 = load double, ptr %841, align 8, !tbaa !5
  %936 = fmul double %934, %935
  %937 = load double, ptr %851, align 8, !tbaa !5
  %938 = fmul double %937, -3.000000e+00
  %939 = fmul double %937, %938
  %940 = tail call double @llvm.fmuladd.f64(double %935, double %935, double %939)
  %941 = tail call double @llvm.fmuladd.f64(double %936, double %940, double %933)
  %942 = load double, ptr %833, align 8, !tbaa !5
  %943 = fmul double %937, %942
  %944 = fmul double %935, -3.000000e+00
  %945 = fmul double %935, %944
  %946 = tail call double @llvm.fmuladd.f64(double %937, double %937, double %945)
  %947 = tail call double @llvm.fmuladd.f64(double %943, double %946, double %941)
  %948 = fadd double %947, 1.260000e+01
  %949 = getelementptr inbounds i8, ptr %4, i64 48
  store double %948, ptr %949, align 8, !tbaa !5
  %950 = load double, ptr %831, align 8, !tbaa !5
  %951 = load double, ptr %838, align 8, !tbaa !5
  %952 = fmul double %950, %951
  %953 = load double, ptr %846, align 8, !tbaa !5
  %954 = fmul double %953, -3.000000e+00
  %955 = fmul double %953, %954
  %956 = tail call double @llvm.fmuladd.f64(double %951, double %951, double %955)
  %957 = load double, ptr %2, align 8, !tbaa !5
  %958 = fmul double %951, -3.000000e+00
  %959 = fmul double %951, %958
  %960 = tail call double @llvm.fmuladd.f64(double %953, double %953, double %959)
  %961 = fneg double %957
  %962 = fmul double %953, %961
  %963 = fmul double %962, %960
  %964 = tail call double @llvm.fmuladd.f64(double %952, double %956, double %963)
  %965 = load double, ptr %833, align 8, !tbaa !5
  %966 = load double, ptr %841, align 8, !tbaa !5
  %967 = fmul double %965, %966
  %968 = load double, ptr %851, align 8, !tbaa !5
  %969 = fmul double %968, -3.000000e+00
  %970 = fmul double %968, %969
  %971 = tail call double @llvm.fmuladd.f64(double %966, double %966, double %970)
  %972 = tail call double @llvm.fmuladd.f64(double %967, double %971, double %964)
  %973 = load double, ptr %827, align 8, !tbaa !5
  %974 = fmul double %966, -3.000000e+00
  %975 = fmul double %966, %974
  %976 = tail call double @llvm.fmuladd.f64(double %968, double %968, double %975)
  %977 = fneg double %973
  %978 = fmul double %968, %977
  %979 = tail call double @llvm.fmuladd.f64(double %978, double %976, double %972)
  %980 = fadd double %979, -9.480000e+00
  %981 = getelementptr inbounds i8, ptr %4, i64 56
  store double %980, ptr %981, align 8, !tbaa !5
  br label %.loopexit

.loopexit.loopexit.unr-lcssa:                     ; preds = %139, %.lr.ph701
  %indvars.iv838.unr = phi i64 [ 0, %.lr.ph701 ], [ %indvars.iv.next839.1, %139 ]
  %lcmp.mod1061.not = icmp eq i64 %xtraiter1059, 0
  br i1 %lcmp.mod1061.not, label %.loopexit, label %.epil.preheader

.epil.preheader:                                  ; preds = %.loopexit.loopexit.unr-lcssa
  %982 = getelementptr inbounds double, ptr %4, i64 %indvars.iv838.unr
  store double %122, ptr %982, align 8, !tbaa !5
  %983 = icmp slt i64 %indvars.iv838.unr, %123
  br i1 %983, label %984, label %.loopexit

984:                                              ; preds = %.epil.preheader
  %985 = getelementptr inbounds double, ptr %2, i64 %indvars.iv838.unr
  %986 = load double, ptr %985, align 8, !tbaa !5
  %987 = fsub double %986, %120
  store double %987, ptr %982, align 8, !tbaa !5
  br label %.loopexit

.loopexit.loopexit1013.unr-lcssa:                 ; preds = %.lr.ph600, %.lr.ph600.preheader
  %indvars.iv726.unr = phi i64 [ 1, %.lr.ph600.preheader ], [ %indvars.iv.next727.1, %.lr.ph600 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.loopexit, label %.lr.ph600.epil

.lr.ph600.epil:                                   ; preds = %.loopexit.loopexit1013.unr-lcssa
  %988 = getelementptr inbounds double, ptr %2, i64 %indvars.iv726.unr
  %989 = load double, ptr %988, align 8, !tbaa !5
  %990 = getelementptr i8, ptr %988, i64 -8
  %991 = load double, ptr %990, align 8, !tbaa !5
  %992 = tail call double @pow(double noundef %991, double noundef 3.000000e+00) #6
  %993 = fsub double %989, %992
  %994 = fmul double %993, 1.000000e+01
  %995 = getelementptr inbounds double, ptr %4, i64 %indvars.iv726.unr
  store double %994, ptr %995, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %._crit_edge, %.lr.ph600.epil, %.loopexit.loopexit1013.unr-lcssa, %scalar.ph, %718, %696, %632, %582, %568, %551, %488, %480, %302, %290, %.lr.ph693, %.loopexit.loopexit.unr-lcssa, %984, %.epil.preheader, %middle.block, %middle.block973, %.preheader563, %311, %326, %342, %358, %374, %390, %406, %422, %438, %454, %470, %.preheader590, %778, %.preheader586, %.preheader577, %.preheader575, %.preheader573, %.preheader571, %.preheader556, %._crit_edge697, %._crit_edge680, %237, %275, %542, %825, %._crit_edge617, %252, %209, %5
  %.0503 = phi i1 [ true, %5 ], [ true, %209 ], [ true, %252 ], [ true, %._crit_edge617 ], [ true, %825 ], [ true, %542 ], [ true, %275 ], [ true, %237 ], [ true, %._crit_edge680 ], [ true, %._crit_edge697 ], [ true, %.preheader556 ], [ true, %.preheader571 ], [ true, %.preheader573 ], [ true, %.preheader575 ], [ true, %.preheader577 ], [ true, %.preheader586 ], [ true, %778 ], [ true, %.preheader590 ], [ false, %.preheader563 ], [ false, %311 ], [ false, %326 ], [ false, %342 ], [ false, %358 ], [ false, %374 ], [ false, %390 ], [ false, %406 ], [ false, %422 ], [ false, %438 ], [ false, %454 ], [ true, %470 ], [ true, %middle.block973 ], [ true, %middle.block ], [ true, %.epil.preheader ], [ true, %984 ], [ true, %.loopexit.loopexit.unr-lcssa ], [ true, %.lr.ph693 ], [ %301, %290 ], [ %301, %302 ], [ %487, %480 ], [ %487, %488 ], [ true, %551 ], [ true, %568 ], [ true, %582 ], [ true, %632 ], [ true, %696 ], [ true, %718 ], [ true, %scalar.ph ], [ true, %.loopexit.loopexit1013.unr-lcssa ], [ true, %.lr.ph600.epil ], [ true, %._crit_edge ]
  ret i1 %.0503
}

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10}
!10 = distinct !{!10, !11}
!11 = distinct !{!11, !"LVerDomain"}
!12 = !{!13}
!13 = distinct !{!13, !11}
!14 = !{!15}
!15 = distinct !{!15, !11}
!16 = !{!17, !13, !18, !19, !20, !10}
!17 = distinct !{!17, !11}
!18 = distinct !{!18, !11}
!19 = distinct !{!19, !11}
!20 = distinct !{!20, !11}
!21 = !{!18}
!22 = !{!19}
!23 = !{!20}
!24 = !{!17}
!25 = !{!13, !18, !19, !20, !10}
!26 = distinct !{!26, !27, !28, !29}
!27 = !{!"llvm.loop.mustprogress"}
!28 = !{!"llvm.loop.isvectorized", i32 1}
!29 = !{!"llvm.loop.unroll.runtime.disable"}
!30 = distinct !{!30, !27}
!31 = distinct !{!31, !32}
!32 = !{!"llvm.loop.unroll.disable"}
!33 = distinct !{!33, !27}
!34 = distinct !{!34, !32}
!35 = distinct !{!35, !27, !28, !29}
!36 = distinct !{!36, !27}
!37 = distinct !{!37, !27, !29, !28}
!38 = distinct !{!38, !32}
!39 = distinct !{!39, !27, !28, !29}
!40 = distinct !{!40, !27}
!41 = distinct !{!41, !27, !29, !28}
!42 = distinct !{!42, !27}
!43 = distinct !{!43, !27}
!44 = distinct !{!44, !27}
!45 = distinct !{!45, !27}
!46 = distinct !{!46, !32}
!47 = distinct !{!47, !27}
!48 = distinct !{!48, !27}
!49 = distinct !{!49, !27}
!50 = distinct !{!50, !27}
!51 = distinct !{!51, !27}
!52 = distinct !{!52, !27}
!53 = distinct !{!53, !27}
!54 = distinct !{!54, !32}
!55 = distinct !{!55, !32}
!56 = distinct !{!56, !27, !28, !29}
!57 = distinct !{!57, !27}
!58 = distinct !{!58, !27, !28}
!59 = distinct !{!59, !27}
!60 = distinct !{!60, !27}
!61 = distinct !{!61, !27, !28}
!62 = distinct !{!62, !27}
!63 = distinct !{!63, !27}
!64 = distinct !{!64, !27}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass