; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (dtgevc)

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_true = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b34 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4
@c_b36 = external hidden global double, align 8
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@c_false = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dtgevc_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15) #0 {
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  %43 = alloca i32, align 4
  %44 = alloca i32, align 4
  %45 = alloca i32, align 4
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca double, align 8
  %50 = alloca double, align 8
  %51 = alloca double, align 8
  %52 = alloca i32, align 4
  %53 = alloca i32, align 4
  %54 = alloca i32, align 4
  %55 = alloca double, align 8
  %56 = alloca double, align 8
  %57 = alloca double, align 8
  %58 = alloca [4 x double], align 16
  %59 = alloca [4 x double], align 16
  %60 = alloca double, align 8
  %61 = alloca double, align 8
  %62 = alloca double, align 8
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca [2 x double], align 16
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca double, align 8
  %69 = alloca double, align 8
  %70 = alloca i32, align 4
  %71 = alloca i32, align 4
  %72 = alloca double, align 8
  %73 = alloca i32, align 4
  %74 = alloca i32, align 4
  %75 = alloca double, align 8
  %76 = alloca i32, align 4
  %77 = alloca double, align 8
  %78 = alloca double, align 8
  %79 = alloca i32, align 4
  %80 = alloca double, align 8
  %81 = alloca double, align 8
  %82 = alloca i32, align 4
  %83 = alloca i32, align 4
  %84 = alloca i32, align 4
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca i32, align 4
  %88 = alloca double, align 8
  %89 = alloca double, align 8
  %90 = alloca double, align 8
  %91 = alloca double, align 8
  %92 = alloca i32, align 4
  %93 = alloca i32, align 4
  %94 = alloca double, align 8
  %95 = alloca double, align 8
  %96 = alloca double, align 8
  %97 = alloca double, align 8
  %98 = alloca i32, align 4
  %99 = alloca double, align 8
  %100 = alloca double, align 8
  %101 = alloca i32, align 4
  %102 = alloca i32, align 4
  %103 = alloca double, align 8
  %104 = alloca double, align 8
  %105 = alloca double, align 8
  %106 = alloca double, align 8
  %107 = alloca i32, align 4
  %108 = alloca i32, align 4
  %109 = alloca i32, align 4
  %110 = alloca double, align 8
  %111 = alloca i32, align 4
  %112 = alloca i32, align 4
  %113 = alloca double, align 8
  %114 = alloca [4 x double], align 16
  %115 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %4, ptr %21, align 8, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !5
  store ptr %8, ptr %25, align 8, !tbaa !5
  store ptr %9, ptr %26, align 8, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !5
  store ptr %11, ptr %28, align 8, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !5
  store ptr %13, ptr %30, align 8, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !5
  store ptr %15, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %65) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %107) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %111) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %112) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr %114) #4
  %116 = load ptr, ptr %19, align 8, !tbaa !5
  %117 = getelementptr inbounds i32, ptr %116, i32 -1
  store ptr %117, ptr %19, align 8, !tbaa !5
  %118 = load ptr, ptr %22, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  store i32 %119, ptr %35, align 4, !tbaa !9
  %120 = load i32, ptr %35, align 4, !tbaa !9
  %121 = mul nsw i32 %120, 1
  %122 = add nsw i32 1, %121
  store i32 %122, ptr %36, align 4, !tbaa !9
  %123 = load i32, ptr %36, align 4, !tbaa !9
  %124 = load ptr, ptr %21, align 8, !tbaa !5
  %125 = sext i32 %123 to i64
  %126 = sub i64 0, %125
  %127 = getelementptr inbounds double, ptr %124, i64 %126
  store ptr %127, ptr %21, align 8, !tbaa !5
  %128 = load ptr, ptr %24, align 8, !tbaa !5
  %129 = load i32, ptr %128, align 4, !tbaa !9
  store i32 %129, ptr %33, align 4, !tbaa !9
  %130 = load i32, ptr %33, align 4, !tbaa !9
  %131 = mul nsw i32 %130, 1
  %132 = add nsw i32 1, %131
  store i32 %132, ptr %34, align 4, !tbaa !9
  %133 = load i32, ptr %34, align 4, !tbaa !9
  %134 = load ptr, ptr %23, align 8, !tbaa !5
  %135 = sext i32 %133 to i64
  %136 = sub i64 0, %135
  %137 = getelementptr inbounds double, ptr %134, i64 %136
  store ptr %137, ptr %23, align 8, !tbaa !5
  %138 = load ptr, ptr %26, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  store i32 %139, ptr %37, align 4, !tbaa !9
  %140 = load i32, ptr %37, align 4, !tbaa !9
  %141 = mul nsw i32 %140, 1
  %142 = add nsw i32 1, %141
  store i32 %142, ptr %38, align 4, !tbaa !9
  %143 = load i32, ptr %38, align 4, !tbaa !9
  %144 = load ptr, ptr %25, align 8, !tbaa !5
  %145 = sext i32 %143 to i64
  %146 = sub i64 0, %145
  %147 = getelementptr inbounds double, ptr %144, i64 %146
  store ptr %147, ptr %25, align 8, !tbaa !5
  %148 = load ptr, ptr %28, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  store i32 %149, ptr %39, align 4, !tbaa !9
  %150 = load i32, ptr %39, align 4, !tbaa !9
  %151 = mul nsw i32 %150, 1
  %152 = add nsw i32 1, %151
  store i32 %152, ptr %40, align 4, !tbaa !9
  %153 = load i32, ptr %40, align 4, !tbaa !9
  %154 = load ptr, ptr %27, align 8, !tbaa !5
  %155 = sext i32 %153 to i64
  %156 = sub i64 0, %155
  %157 = getelementptr inbounds double, ptr %154, i64 %156
  store ptr %157, ptr %27, align 8, !tbaa !5
  %158 = load ptr, ptr %31, align 8, !tbaa !5
  %159 = getelementptr inbounds double, ptr %158, i32 -1
  store ptr %159, ptr %31, align 8, !tbaa !5
  %160 = load ptr, ptr %18, align 8, !tbaa !5
  %161 = call i32 @lsame_(ptr noundef %160, ptr noundef @.str)
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %164

163:                                              ; preds = %16
  store i32 1, ptr %109, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  store i32 0, ptr %92, align 4, !tbaa !9
  br label %177

164:                                              ; preds = %16
  %165 = load ptr, ptr %18, align 8, !tbaa !5
  %166 = call i32 @lsame_(ptr noundef %165, ptr noundef @.str.1)
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %164
  store i32 2, ptr %109, align 4, !tbaa !9
  store i32 0, ptr %70, align 4, !tbaa !9
  store i32 0, ptr %92, align 4, !tbaa !9
  br label %176

169:                                              ; preds = %164
  %170 = load ptr, ptr %18, align 8, !tbaa !5
  %171 = call i32 @lsame_(ptr noundef %170, ptr noundef @.str.2)
  %172 = icmp ne i32 %171, 0
  br i1 %172, label %173, label %174

173:                                              ; preds = %169
  store i32 3, ptr %109, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  store i32 1, ptr %92, align 4, !tbaa !9
  br label %175

174:                                              ; preds = %169
  store i32 -1, ptr %109, align 4, !tbaa !9
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %175

175:                                              ; preds = %174, %173
  br label %176

176:                                              ; preds = %175, %168
  br label %177

177:                                              ; preds = %176, %163
  %178 = load ptr, ptr %17, align 8, !tbaa !5
  %179 = call i32 @lsame_(ptr noundef %178, ptr noundef @.str.3)
  %180 = icmp ne i32 %179, 0
  br i1 %180, label %181, label %182

181:                                              ; preds = %177
  store i32 1, ptr %71, align 4, !tbaa !9
  store i32 0, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %79, align 4, !tbaa !9
  br label %195

182:                                              ; preds = %177
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = call i32 @lsame_(ptr noundef %183, ptr noundef @.str.4)
  %185 = icmp ne i32 %184, 0
  br i1 %185, label %186, label %187

186:                                              ; preds = %182
  store i32 2, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %194

187:                                              ; preds = %182
  %188 = load ptr, ptr %17, align 8, !tbaa !5
  %189 = call i32 @lsame_(ptr noundef %188, ptr noundef @.str.2)
  %190 = icmp ne i32 %189, 0
  br i1 %190, label %191, label %192

191:                                              ; preds = %187
  store i32 3, ptr %71, align 4, !tbaa !9
  store i32 1, ptr %76, align 4, !tbaa !9
  store i32 1, ptr %79, align 4, !tbaa !9
  br label %193

192:                                              ; preds = %187
  store i32 -1, ptr %71, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %192, %191
  br label %194

194:                                              ; preds = %193, %186
  br label %195

195:                                              ; preds = %194, %181
  %196 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %196, align 4, !tbaa !9
  %197 = load i32, ptr %71, align 4, !tbaa !9
  %198 = icmp slt i32 %197, 0
  br i1 %198, label %199, label %201

199:                                              ; preds = %195
  %200 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -1, ptr %200, align 4, !tbaa !9
  br label %246

201:                                              ; preds = %195
  %202 = load i32, ptr %109, align 4, !tbaa !9
  %203 = icmp slt i32 %202, 0
  br i1 %203, label %204, label %206

204:                                              ; preds = %201
  %205 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -2, ptr %205, align 4, !tbaa !9
  br label %245

206:                                              ; preds = %201
  %207 = load ptr, ptr %20, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = icmp slt i32 %208, 0
  br i1 %209, label %210, label %212

210:                                              ; preds = %206
  %211 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -4, ptr %211, align 4, !tbaa !9
  br label %244

212:                                              ; preds = %206
  %213 = load ptr, ptr %22, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = load ptr, ptr %20, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = icmp sge i32 1, %216
  br i1 %217, label %218, label %219

218:                                              ; preds = %212
  br label %222

219:                                              ; preds = %212
  %220 = load ptr, ptr %20, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %219, %218
  %223 = phi i32 [ 1, %218 ], [ %221, %219 ]
  %224 = icmp slt i32 %214, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %222
  %226 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -6, ptr %226, align 4, !tbaa !9
  br label %243

227:                                              ; preds = %222
  %228 = load ptr, ptr %24, align 8, !tbaa !5
  %229 = load i32, ptr %228, align 4, !tbaa !9
  %230 = load ptr, ptr %20, align 8, !tbaa !5
  %231 = load i32, ptr %230, align 4, !tbaa !9
  %232 = icmp sge i32 1, %231
  br i1 %232, label %233, label %234

233:                                              ; preds = %227
  br label %237

234:                                              ; preds = %227
  %235 = load ptr, ptr %20, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  br label %237

237:                                              ; preds = %234, %233
  %238 = phi i32 [ 1, %233 ], [ %236, %234 ]
  %239 = icmp slt i32 %229, %238
  br i1 %239, label %240, label %242

240:                                              ; preds = %237
  %241 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -8, ptr %241, align 4, !tbaa !9
  br label %242

242:                                              ; preds = %240, %237
  br label %243

243:                                              ; preds = %242, %225
  br label %244

244:                                              ; preds = %243, %210
  br label %245

245:                                              ; preds = %244, %204
  br label %246

246:                                              ; preds = %245, %199
  %247 = load ptr, ptr %32, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = icmp ne i32 %248, 0
  br i1 %249, label %250, label %255

250:                                              ; preds = %246
  %251 = load ptr, ptr %32, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  %253 = sub nsw i32 0, %252
  store i32 %253, ptr %41, align 4, !tbaa !9
  %254 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %41, i32 noundef 6)
  store i32 1, ptr %115, align 4
  br label %4765

255:                                              ; preds = %246
  %256 = load i32, ptr %70, align 4, !tbaa !9
  %257 = icmp ne i32 %256, 0
  br i1 %257, label %327, label %258

258:                                              ; preds = %255
  store i32 0, ptr %93, align 4, !tbaa !9
  store i32 0, ptr %108, align 4, !tbaa !9
  %259 = load ptr, ptr %20, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  store i32 %260, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %261

261:                                              ; preds = %323, %258
  %262 = load i32, ptr %67, align 4, !tbaa !9
  %263 = load i32, ptr %41, align 4, !tbaa !9
  %264 = icmp sle i32 %262, %263
  br i1 %264, label %265, label %326

265:                                              ; preds = %261
  %266 = load i32, ptr %108, align 4, !tbaa !9
  %267 = icmp ne i32 %266, 0
  br i1 %267, label %268, label %269

268:                                              ; preds = %265
  store i32 0, ptr %108, align 4, !tbaa !9
  br label %322

269:                                              ; preds = %265
  %270 = load i32, ptr %67, align 4, !tbaa !9
  %271 = load ptr, ptr %20, align 8, !tbaa !5
  %272 = load i32, ptr %271, align 4, !tbaa !9
  %273 = icmp slt i32 %270, %272
  br i1 %273, label %274, label %288

274:                                              ; preds = %269
  %275 = load ptr, ptr %21, align 8, !tbaa !5
  %276 = load i32, ptr %67, align 4, !tbaa !9
  %277 = add nsw i32 %276, 1
  %278 = load i32, ptr %67, align 4, !tbaa !9
  %279 = load i32, ptr %35, align 4, !tbaa !9
  %280 = mul nsw i32 %278, %279
  %281 = add nsw i32 %277, %280
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds double, ptr %275, i64 %282
  %284 = load double, ptr %283, align 8, !tbaa !11
  %285 = fcmp une double %284, 0.000000e+00
  br i1 %285, label %286, label %287

286:                                              ; preds = %274
  store i32 1, ptr %108, align 4, !tbaa !9
  br label %287

287:                                              ; preds = %286, %274
  br label %288

288:                                              ; preds = %287, %269
  %289 = load i32, ptr %108, align 4, !tbaa !9
  %290 = icmp ne i32 %289, 0
  br i1 %290, label %291, label %310

291:                                              ; preds = %288
  %292 = load ptr, ptr %19, align 8, !tbaa !5
  %293 = load i32, ptr %67, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds i32, ptr %292, i64 %294
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = icmp ne i32 %296, 0
  br i1 %297, label %306, label %298

298:                                              ; preds = %291
  %299 = load ptr, ptr %19, align 8, !tbaa !5
  %300 = load i32, ptr %67, align 4, !tbaa !9
  %301 = add nsw i32 %300, 1
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds i32, ptr %299, i64 %302
  %304 = load i32, ptr %303, align 4, !tbaa !9
  %305 = icmp ne i32 %304, 0
  br i1 %305, label %306, label %309

306:                                              ; preds = %298, %291
  %307 = load i32, ptr %93, align 4, !tbaa !9
  %308 = add nsw i32 %307, 2
  store i32 %308, ptr %93, align 4, !tbaa !9
  br label %309

309:                                              ; preds = %306, %298
  br label %321

310:                                              ; preds = %288
  %311 = load ptr, ptr %19, align 8, !tbaa !5
  %312 = load i32, ptr %67, align 4, !tbaa !9
  %313 = sext i32 %312 to i64
  %314 = getelementptr inbounds i32, ptr %311, i64 %313
  %315 = load i32, ptr %314, align 4, !tbaa !9
  %316 = icmp ne i32 %315, 0
  br i1 %316, label %317, label %320

317:                                              ; preds = %310
  %318 = load i32, ptr %93, align 4, !tbaa !9
  %319 = add nsw i32 %318, 1
  store i32 %319, ptr %93, align 4, !tbaa !9
  br label %320

320:                                              ; preds = %317, %310
  br label %321

321:                                              ; preds = %320, %309
  br label %322

322:                                              ; preds = %321, %268
  br label %323

323:                                              ; preds = %322
  %324 = load i32, ptr %67, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %67, align 4, !tbaa !9
  br label %261, !llvm.loop !13

326:                                              ; preds = %261
  br label %330

327:                                              ; preds = %255
  %328 = load ptr, ptr %20, align 8, !tbaa !5
  %329 = load i32, ptr %328, align 4, !tbaa !9
  store i32 %329, ptr %93, align 4, !tbaa !9
  br label %330

330:                                              ; preds = %327, %326
  store i32 0, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %84, align 4, !tbaa !9
  %331 = load ptr, ptr %20, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = sub nsw i32 %332, 1
  store i32 %333, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %334

334:                                              ; preds = %410, %330
  %335 = load i32, ptr %67, align 4, !tbaa !9
  %336 = load i32, ptr %41, align 4, !tbaa !9
  %337 = icmp sle i32 %335, %336
  br i1 %337, label %338, label %413

338:                                              ; preds = %334
  %339 = load ptr, ptr %21, align 8, !tbaa !5
  %340 = load i32, ptr %67, align 4, !tbaa !9
  %341 = add nsw i32 %340, 1
  %342 = load i32, ptr %67, align 4, !tbaa !9
  %343 = load i32, ptr %35, align 4, !tbaa !9
  %344 = mul nsw i32 %342, %343
  %345 = add nsw i32 %341, %344
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %339, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !11
  %349 = fcmp une double %348, 0.000000e+00
  br i1 %349, label %350, label %409

350:                                              ; preds = %338
  %351 = load ptr, ptr %23, align 8, !tbaa !5
  %352 = load i32, ptr %67, align 4, !tbaa !9
  %353 = load i32, ptr %67, align 4, !tbaa !9
  %354 = load i32, ptr %33, align 4, !tbaa !9
  %355 = mul nsw i32 %353, %354
  %356 = add nsw i32 %352, %355
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds double, ptr %351, i64 %357
  %359 = load double, ptr %358, align 8, !tbaa !11
  %360 = fcmp oeq double %359, 0.000000e+00
  br i1 %360, label %386, label %361

361:                                              ; preds = %350
  %362 = load ptr, ptr %23, align 8, !tbaa !5
  %363 = load i32, ptr %67, align 4, !tbaa !9
  %364 = add nsw i32 %363, 1
  %365 = load i32, ptr %67, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  %367 = load i32, ptr %33, align 4, !tbaa !9
  %368 = mul nsw i32 %366, %367
  %369 = add nsw i32 %364, %368
  %370 = sext i32 %369 to i64
  %371 = getelementptr inbounds double, ptr %362, i64 %370
  %372 = load double, ptr %371, align 8, !tbaa !11
  %373 = fcmp oeq double %372, 0.000000e+00
  br i1 %373, label %386, label %374

374:                                              ; preds = %361
  %375 = load ptr, ptr %23, align 8, !tbaa !5
  %376 = load i32, ptr %67, align 4, !tbaa !9
  %377 = load i32, ptr %67, align 4, !tbaa !9
  %378 = add nsw i32 %377, 1
  %379 = load i32, ptr %33, align 4, !tbaa !9
  %380 = mul nsw i32 %378, %379
  %381 = add nsw i32 %376, %380
  %382 = sext i32 %381 to i64
  %383 = getelementptr inbounds double, ptr %375, i64 %382
  %384 = load double, ptr %383, align 8, !tbaa !11
  %385 = fcmp une double %384, 0.000000e+00
  br i1 %385, label %386, label %387

386:                                              ; preds = %374, %361, %350
  store i32 1, ptr %84, align 4, !tbaa !9
  br label %387

387:                                              ; preds = %386, %374
  %388 = load i32, ptr %67, align 4, !tbaa !9
  %389 = load ptr, ptr %20, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = sub nsw i32 %390, 1
  %392 = icmp slt i32 %388, %391
  br i1 %392, label %393, label %408

393:                                              ; preds = %387
  %394 = load ptr, ptr %21, align 8, !tbaa !5
  %395 = load i32, ptr %67, align 4, !tbaa !9
  %396 = add nsw i32 %395, 2
  %397 = load i32, ptr %67, align 4, !tbaa !9
  %398 = add nsw i32 %397, 1
  %399 = load i32, ptr %35, align 4, !tbaa !9
  %400 = mul nsw i32 %398, %399
  %401 = add nsw i32 %396, %400
  %402 = sext i32 %401 to i64
  %403 = getelementptr inbounds double, ptr %394, i64 %402
  %404 = load double, ptr %403, align 8, !tbaa !11
  %405 = fcmp une double %404, 0.000000e+00
  br i1 %405, label %406, label %407

406:                                              ; preds = %393
  store i32 1, ptr %83, align 4, !tbaa !9
  br label %407

407:                                              ; preds = %406, %393
  br label %408

408:                                              ; preds = %407, %387
  br label %409

409:                                              ; preds = %408, %338
  br label %410

410:                                              ; preds = %409
  %411 = load i32, ptr %67, align 4, !tbaa !9
  %412 = add nsw i32 %411, 1
  store i32 %412, ptr %67, align 4, !tbaa !9
  br label %334, !llvm.loop !15

413:                                              ; preds = %334
  %414 = load i32, ptr %83, align 4, !tbaa !9
  %415 = icmp ne i32 %414, 0
  br i1 %415, label %416, label %418

416:                                              ; preds = %413
  %417 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -5, ptr %417, align 4, !tbaa !9
  br label %464

418:                                              ; preds = %413
  %419 = load i32, ptr %84, align 4, !tbaa !9
  %420 = icmp ne i32 %419, 0
  br i1 %420, label %421, label %423

421:                                              ; preds = %418
  %422 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -7, ptr %422, align 4, !tbaa !9
  br label %463

423:                                              ; preds = %418
  %424 = load i32, ptr %76, align 4, !tbaa !9
  %425 = icmp ne i32 %424, 0
  br i1 %425, label %426, label %432

426:                                              ; preds = %423
  %427 = load ptr, ptr %26, align 8, !tbaa !5
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = load i32, ptr %429, align 4, !tbaa !9
  %431 = icmp slt i32 %428, %430
  br i1 %431, label %436, label %432

432:                                              ; preds = %426, %423
  %433 = load ptr, ptr %26, align 8, !tbaa !5
  %434 = load i32, ptr %433, align 4, !tbaa !9
  %435 = icmp slt i32 %434, 1
  br i1 %435, label %436, label %438

436:                                              ; preds = %432, %426
  %437 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -10, ptr %437, align 4, !tbaa !9
  br label %462

438:                                              ; preds = %432
  %439 = load i32, ptr %79, align 4, !tbaa !9
  %440 = icmp ne i32 %439, 0
  br i1 %440, label %441, label %447

441:                                              ; preds = %438
  %442 = load ptr, ptr %28, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  %444 = load ptr, ptr %20, align 8, !tbaa !5
  %445 = load i32, ptr %444, align 4, !tbaa !9
  %446 = icmp slt i32 %443, %445
  br i1 %446, label %451, label %447

447:                                              ; preds = %441, %438
  %448 = load ptr, ptr %28, align 8, !tbaa !5
  %449 = load i32, ptr %448, align 4, !tbaa !9
  %450 = icmp slt i32 %449, 1
  br i1 %450, label %451, label %453

451:                                              ; preds = %447, %441
  %452 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -12, ptr %452, align 4, !tbaa !9
  br label %461

453:                                              ; preds = %447
  %454 = load ptr, ptr %29, align 8, !tbaa !5
  %455 = load i32, ptr %454, align 4, !tbaa !9
  %456 = load i32, ptr %93, align 4, !tbaa !9
  %457 = icmp slt i32 %455, %456
  br i1 %457, label %458, label %460

458:                                              ; preds = %453
  %459 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 -13, ptr %459, align 4, !tbaa !9
  br label %460

460:                                              ; preds = %458, %453
  br label %461

461:                                              ; preds = %460, %451
  br label %462

462:                                              ; preds = %461, %436
  br label %463

463:                                              ; preds = %462, %421
  br label %464

464:                                              ; preds = %463, %416
  %465 = load ptr, ptr %32, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = icmp ne i32 %466, 0
  br i1 %467, label %468, label %473

468:                                              ; preds = %464
  %469 = load ptr, ptr %32, align 8, !tbaa !5
  %470 = load i32, ptr %469, align 4, !tbaa !9
  %471 = sub nsw i32 0, %470
  store i32 %471, ptr %41, align 4, !tbaa !9
  %472 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %41, i32 noundef 6)
  store i32 1, ptr %115, align 4
  br label %4765

473:                                              ; preds = %464
  %474 = load i32, ptr %93, align 4, !tbaa !9
  %475 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 %474, ptr %475, align 4, !tbaa !9
  %476 = load ptr, ptr %20, align 8, !tbaa !5
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = icmp eq i32 %477, 0
  br i1 %478, label %479, label %480

479:                                              ; preds = %473
  store i32 1, ptr %115, align 4
  br label %4765

480:                                              ; preds = %473
  %481 = call double @dlamch_(ptr noundef @.str.6)
  store double %481, ptr %104, align 8, !tbaa !11
  %482 = load double, ptr %104, align 8, !tbaa !11
  %483 = fdiv double 1.000000e+00, %482
  store double %483, ptr %110, align 8, !tbaa !11
  call void @dlabad_(ptr noundef %104, ptr noundef %110)
  %484 = call double @dlamch_(ptr noundef @.str.7)
  %485 = call double @dlamch_(ptr noundef @.str.8)
  %486 = fmul double %484, %485
  store double %486, ptr %113, align 8, !tbaa !11
  %487 = load double, ptr %104, align 8, !tbaa !11
  %488 = load ptr, ptr %20, align 8, !tbaa !5
  %489 = load i32, ptr %488, align 4, !tbaa !9
  %490 = sitofp i32 %489 to double
  %491 = fmul double %487, %490
  %492 = load double, ptr %113, align 8, !tbaa !11
  %493 = fdiv double %491, %492
  store double %493, ptr %75, align 8, !tbaa !11
  %494 = load double, ptr %75, align 8, !tbaa !11
  %495 = fdiv double 1.000000e+00, %494
  store double %495, ptr %110, align 8, !tbaa !11
  %496 = load double, ptr %104, align 8, !tbaa !11
  %497 = load ptr, ptr %20, align 8, !tbaa !5
  %498 = load i32, ptr %497, align 4, !tbaa !9
  %499 = sitofp i32 %498 to double
  %500 = fmul double %496, %499
  %501 = fdiv double 1.000000e+00, %500
  store double %501, ptr %106, align 8, !tbaa !11
  %502 = load ptr, ptr %21, align 8, !tbaa !5
  %503 = load i32, ptr %35, align 4, !tbaa !9
  %504 = add nsw i32 %503, 1
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds double, ptr %502, i64 %505
  %507 = load double, ptr %506, align 8, !tbaa !11
  store double %507, ptr %46, align 8, !tbaa !11
  %508 = load double, ptr %46, align 8, !tbaa !11
  %509 = fcmp oge double %508, 0.000000e+00
  br i1 %509, label %510, label %512

510:                                              ; preds = %480
  %511 = load double, ptr %46, align 8, !tbaa !11
  br label %515

512:                                              ; preds = %480
  %513 = load double, ptr %46, align 8, !tbaa !11
  %514 = fneg double %513
  br label %515

515:                                              ; preds = %512, %510
  %516 = phi double [ %511, %510 ], [ %514, %512 ]
  store double %516, ptr %77, align 8, !tbaa !11
  %517 = load ptr, ptr %20, align 8, !tbaa !5
  %518 = load i32, ptr %517, align 4, !tbaa !9
  %519 = icmp sgt i32 %518, 1
  br i1 %519, label %520, label %538

520:                                              ; preds = %515
  %521 = load ptr, ptr %21, align 8, !tbaa !5
  %522 = load i32, ptr %35, align 4, !tbaa !9
  %523 = add nsw i32 %522, 2
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds double, ptr %521, i64 %524
  %526 = load double, ptr %525, align 8, !tbaa !11
  store double %526, ptr %46, align 8, !tbaa !11
  %527 = load double, ptr %46, align 8, !tbaa !11
  %528 = fcmp oge double %527, 0.000000e+00
  br i1 %528, label %529, label %531

529:                                              ; preds = %520
  %530 = load double, ptr %46, align 8, !tbaa !11
  br label %534

531:                                              ; preds = %520
  %532 = load double, ptr %46, align 8, !tbaa !11
  %533 = fneg double %532
  br label %534

534:                                              ; preds = %531, %529
  %535 = phi double [ %530, %529 ], [ %533, %531 ]
  %536 = load double, ptr %77, align 8, !tbaa !11
  %537 = fadd double %536, %535
  store double %537, ptr %77, align 8, !tbaa !11
  br label %538

538:                                              ; preds = %534, %515
  %539 = load ptr, ptr %23, align 8, !tbaa !5
  %540 = load i32, ptr %33, align 4, !tbaa !9
  %541 = add nsw i32 %540, 1
  %542 = sext i32 %541 to i64
  %543 = getelementptr inbounds double, ptr %539, i64 %542
  %544 = load double, ptr %543, align 8, !tbaa !11
  store double %544, ptr %46, align 8, !tbaa !11
  %545 = load double, ptr %46, align 8, !tbaa !11
  %546 = fcmp oge double %545, 0.000000e+00
  br i1 %546, label %547, label %549

547:                                              ; preds = %538
  %548 = load double, ptr %46, align 8, !tbaa !11
  br label %552

549:                                              ; preds = %538
  %550 = load double, ptr %46, align 8, !tbaa !11
  %551 = fneg double %550
  br label %552

552:                                              ; preds = %549, %547
  %553 = phi double [ %548, %547 ], [ %551, %549 ]
  store double %553, ptr %78, align 8, !tbaa !11
  %554 = load ptr, ptr %31, align 8, !tbaa !5
  %555 = getelementptr inbounds double, ptr %554, i64 1
  store double 0.000000e+00, ptr %555, align 8, !tbaa !11
  %556 = load ptr, ptr %31, align 8, !tbaa !5
  %557 = load ptr, ptr %20, align 8, !tbaa !5
  %558 = load i32, ptr %557, align 4, !tbaa !9
  %559 = add nsw i32 %558, 1
  %560 = sext i32 %559 to i64
  %561 = getelementptr inbounds double, ptr %556, i64 %560
  store double 0.000000e+00, ptr %561, align 8, !tbaa !11
  %562 = load ptr, ptr %20, align 8, !tbaa !5
  %563 = load i32, ptr %562, align 4, !tbaa !9
  store i32 %563, ptr %41, align 4, !tbaa !9
  store i32 2, ptr %67, align 4, !tbaa !9
  br label %564

564:                                              ; preds = %732, %552
  %565 = load i32, ptr %67, align 4, !tbaa !9
  %566 = load i32, ptr %41, align 4, !tbaa !9
  %567 = icmp sle i32 %565, %566
  br i1 %567, label %568, label %735

568:                                              ; preds = %564
  store double 0.000000e+00, ptr %56, align 8, !tbaa !11
  store double 0.000000e+00, ptr %64, align 8, !tbaa !11
  %569 = load ptr, ptr %21, align 8, !tbaa !5
  %570 = load i32, ptr %67, align 4, !tbaa !9
  %571 = load i32, ptr %67, align 4, !tbaa !9
  %572 = sub nsw i32 %571, 1
  %573 = load i32, ptr %35, align 4, !tbaa !9
  %574 = mul nsw i32 %572, %573
  %575 = add nsw i32 %570, %574
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds double, ptr %569, i64 %576
  %578 = load double, ptr %577, align 8, !tbaa !11
  %579 = fcmp oeq double %578, 0.000000e+00
  br i1 %579, label %580, label %583

580:                                              ; preds = %568
  %581 = load i32, ptr %67, align 4, !tbaa !9
  %582 = sub nsw i32 %581, 1
  store i32 %582, ptr %54, align 4, !tbaa !9
  br label %586

583:                                              ; preds = %568
  %584 = load i32, ptr %67, align 4, !tbaa !9
  %585 = sub nsw i32 %584, 2
  store i32 %585, ptr %54, align 4, !tbaa !9
  br label %586

586:                                              ; preds = %583, %580
  %587 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %587, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %66, align 4, !tbaa !9
  br label %588

588:                                              ; preds = %633, %586
  %589 = load i32, ptr %66, align 4, !tbaa !9
  %590 = load i32, ptr %42, align 4, !tbaa !9
  %591 = icmp sle i32 %589, %590
  br i1 %591, label %592, label %636

592:                                              ; preds = %588
  %593 = load ptr, ptr %21, align 8, !tbaa !5
  %594 = load i32, ptr %66, align 4, !tbaa !9
  %595 = load i32, ptr %67, align 4, !tbaa !9
  %596 = load i32, ptr %35, align 4, !tbaa !9
  %597 = mul nsw i32 %595, %596
  %598 = add nsw i32 %594, %597
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds double, ptr %593, i64 %599
  %601 = load double, ptr %600, align 8, !tbaa !11
  store double %601, ptr %46, align 8, !tbaa !11
  %602 = load double, ptr %46, align 8, !tbaa !11
  %603 = fcmp oge double %602, 0.000000e+00
  br i1 %603, label %604, label %606

604:                                              ; preds = %592
  %605 = load double, ptr %46, align 8, !tbaa !11
  br label %609

606:                                              ; preds = %592
  %607 = load double, ptr %46, align 8, !tbaa !11
  %608 = fneg double %607
  br label %609

609:                                              ; preds = %606, %604
  %610 = phi double [ %605, %604 ], [ %608, %606 ]
  %611 = load double, ptr %56, align 8, !tbaa !11
  %612 = fadd double %611, %610
  store double %612, ptr %56, align 8, !tbaa !11
  %613 = load ptr, ptr %23, align 8, !tbaa !5
  %614 = load i32, ptr %66, align 4, !tbaa !9
  %615 = load i32, ptr %67, align 4, !tbaa !9
  %616 = load i32, ptr %33, align 4, !tbaa !9
  %617 = mul nsw i32 %615, %616
  %618 = add nsw i32 %614, %617
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %613, i64 %619
  %621 = load double, ptr %620, align 8, !tbaa !11
  store double %621, ptr %46, align 8, !tbaa !11
  %622 = load double, ptr %46, align 8, !tbaa !11
  %623 = fcmp oge double %622, 0.000000e+00
  br i1 %623, label %624, label %626

624:                                              ; preds = %609
  %625 = load double, ptr %46, align 8, !tbaa !11
  br label %629

626:                                              ; preds = %609
  %627 = load double, ptr %46, align 8, !tbaa !11
  %628 = fneg double %627
  br label %629

629:                                              ; preds = %626, %624
  %630 = phi double [ %625, %624 ], [ %628, %626 ]
  %631 = load double, ptr %64, align 8, !tbaa !11
  %632 = fadd double %631, %630
  store double %632, ptr %64, align 8, !tbaa !11
  br label %633

633:                                              ; preds = %629
  %634 = load i32, ptr %66, align 4, !tbaa !9
  %635 = add nsw i32 %634, 1
  store i32 %635, ptr %66, align 4, !tbaa !9
  br label %588, !llvm.loop !16

636:                                              ; preds = %588
  %637 = load double, ptr %56, align 8, !tbaa !11
  %638 = load ptr, ptr %31, align 8, !tbaa !5
  %639 = load i32, ptr %67, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %638, i64 %640
  store double %637, ptr %641, align 8, !tbaa !11
  %642 = load double, ptr %64, align 8, !tbaa !11
  %643 = load ptr, ptr %31, align 8, !tbaa !5
  %644 = load ptr, ptr %20, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = load i32, ptr %67, align 4, !tbaa !9
  %647 = add nsw i32 %645, %646
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds double, ptr %643, i64 %648
  store double %642, ptr %649, align 8, !tbaa !11
  %650 = load i32, ptr %67, align 4, !tbaa !9
  %651 = add nsw i32 %650, 1
  store i32 %651, ptr %43, align 4, !tbaa !9
  %652 = load i32, ptr %43, align 4, !tbaa !9
  %653 = load ptr, ptr %20, align 8, !tbaa !5
  %654 = load i32, ptr %653, align 4, !tbaa !9
  %655 = icmp sle i32 %652, %654
  br i1 %655, label %656, label %658

656:                                              ; preds = %636
  %657 = load i32, ptr %43, align 4, !tbaa !9
  br label %661

658:                                              ; preds = %636
  %659 = load ptr, ptr %20, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  br label %661

661:                                              ; preds = %658, %656
  %662 = phi i32 [ %657, %656 ], [ %660, %658 ]
  store i32 %662, ptr %42, align 4, !tbaa !9
  %663 = load i32, ptr %54, align 4, !tbaa !9
  %664 = add nsw i32 %663, 1
  store i32 %664, ptr %66, align 4, !tbaa !9
  br label %665

665:                                              ; preds = %710, %661
  %666 = load i32, ptr %66, align 4, !tbaa !9
  %667 = load i32, ptr %42, align 4, !tbaa !9
  %668 = icmp sle i32 %666, %667
  br i1 %668, label %669, label %713

669:                                              ; preds = %665
  %670 = load ptr, ptr %21, align 8, !tbaa !5
  %671 = load i32, ptr %66, align 4, !tbaa !9
  %672 = load i32, ptr %67, align 4, !tbaa !9
  %673 = load i32, ptr %35, align 4, !tbaa !9
  %674 = mul nsw i32 %672, %673
  %675 = add nsw i32 %671, %674
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds double, ptr %670, i64 %676
  %678 = load double, ptr %677, align 8, !tbaa !11
  store double %678, ptr %46, align 8, !tbaa !11
  %679 = load double, ptr %46, align 8, !tbaa !11
  %680 = fcmp oge double %679, 0.000000e+00
  br i1 %680, label %681, label %683

681:                                              ; preds = %669
  %682 = load double, ptr %46, align 8, !tbaa !11
  br label %686

683:                                              ; preds = %669
  %684 = load double, ptr %46, align 8, !tbaa !11
  %685 = fneg double %684
  br label %686

686:                                              ; preds = %683, %681
  %687 = phi double [ %682, %681 ], [ %685, %683 ]
  %688 = load double, ptr %56, align 8, !tbaa !11
  %689 = fadd double %688, %687
  store double %689, ptr %56, align 8, !tbaa !11
  %690 = load ptr, ptr %23, align 8, !tbaa !5
  %691 = load i32, ptr %66, align 4, !tbaa !9
  %692 = load i32, ptr %67, align 4, !tbaa !9
  %693 = load i32, ptr %33, align 4, !tbaa !9
  %694 = mul nsw i32 %692, %693
  %695 = add nsw i32 %691, %694
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds double, ptr %690, i64 %696
  %698 = load double, ptr %697, align 8, !tbaa !11
  store double %698, ptr %46, align 8, !tbaa !11
  %699 = load double, ptr %46, align 8, !tbaa !11
  %700 = fcmp oge double %699, 0.000000e+00
  br i1 %700, label %701, label %703

701:                                              ; preds = %686
  %702 = load double, ptr %46, align 8, !tbaa !11
  br label %706

703:                                              ; preds = %686
  %704 = load double, ptr %46, align 8, !tbaa !11
  %705 = fneg double %704
  br label %706

706:                                              ; preds = %703, %701
  %707 = phi double [ %702, %701 ], [ %705, %703 ]
  %708 = load double, ptr %64, align 8, !tbaa !11
  %709 = fadd double %708, %707
  store double %709, ptr %64, align 8, !tbaa !11
  br label %710

710:                                              ; preds = %706
  %711 = load i32, ptr %66, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  store i32 %712, ptr %66, align 4, !tbaa !9
  br label %665, !llvm.loop !17

713:                                              ; preds = %665
  %714 = load double, ptr %77, align 8, !tbaa !11
  %715 = load double, ptr %56, align 8, !tbaa !11
  %716 = fcmp oge double %714, %715
  br i1 %716, label %717, label %719

717:                                              ; preds = %713
  %718 = load double, ptr %77, align 8, !tbaa !11
  br label %721

719:                                              ; preds = %713
  %720 = load double, ptr %56, align 8, !tbaa !11
  br label %721

721:                                              ; preds = %719, %717
  %722 = phi double [ %718, %717 ], [ %720, %719 ]
  store double %722, ptr %77, align 8, !tbaa !11
  %723 = load double, ptr %78, align 8, !tbaa !11
  %724 = load double, ptr %64, align 8, !tbaa !11
  %725 = fcmp oge double %723, %724
  br i1 %725, label %726, label %728

726:                                              ; preds = %721
  %727 = load double, ptr %78, align 8, !tbaa !11
  br label %730

728:                                              ; preds = %721
  %729 = load double, ptr %64, align 8, !tbaa !11
  br label %730

730:                                              ; preds = %728, %726
  %731 = phi double [ %727, %726 ], [ %729, %728 ]
  store double %731, ptr %78, align 8, !tbaa !11
  br label %732

732:                                              ; preds = %730
  %733 = load i32, ptr %67, align 4, !tbaa !9
  %734 = add nsw i32 %733, 1
  store i32 %734, ptr %67, align 4, !tbaa !9
  br label %564, !llvm.loop !18

735:                                              ; preds = %564
  %736 = load double, ptr %77, align 8, !tbaa !11
  %737 = load double, ptr %104, align 8, !tbaa !11
  %738 = fcmp oge double %736, %737
  br i1 %738, label %739, label %741

739:                                              ; preds = %735
  %740 = load double, ptr %77, align 8, !tbaa !11
  br label %743

741:                                              ; preds = %735
  %742 = load double, ptr %104, align 8, !tbaa !11
  br label %743

743:                                              ; preds = %741, %739
  %744 = phi double [ %740, %739 ], [ %742, %741 ]
  %745 = fdiv double 1.000000e+00, %744
  store double %745, ptr %95, align 8, !tbaa !11
  %746 = load double, ptr %78, align 8, !tbaa !11
  %747 = load double, ptr %104, align 8, !tbaa !11
  %748 = fcmp oge double %746, %747
  br i1 %748, label %749, label %751

749:                                              ; preds = %743
  %750 = load double, ptr %78, align 8, !tbaa !11
  br label %753

751:                                              ; preds = %743
  %752 = load double, ptr %104, align 8, !tbaa !11
  br label %753

753:                                              ; preds = %751, %749
  %754 = phi double [ %750, %749 ], [ %752, %751 ]
  %755 = fdiv double 1.000000e+00, %754
  store double %755, ptr %96, align 8, !tbaa !11
  %756 = load i32, ptr %76, align 4, !tbaa !9
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %2506

758:                                              ; preds = %753
  store i32 0, ptr %53, align 4, !tbaa !9
  store i32 0, ptr %108, align 4, !tbaa !9
  %759 = load ptr, ptr %20, align 8, !tbaa !5
  %760 = load i32, ptr %759, align 4, !tbaa !9
  store i32 %760, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %86, align 4, !tbaa !9
  br label %761

761:                                              ; preds = %2502, %758
  %762 = load i32, ptr %86, align 4, !tbaa !9
  %763 = load i32, ptr %41, align 4, !tbaa !9
  %764 = icmp sle i32 %762, %763
  br i1 %764, label %765, label %2505

765:                                              ; preds = %761
  %766 = load i32, ptr %108, align 4, !tbaa !9
  %767 = icmp ne i32 %766, 0
  br i1 %767, label %768, label %769

768:                                              ; preds = %765
  store i32 0, ptr %108, align 4, !tbaa !9
  br label %2501

769:                                              ; preds = %765
  store i32 1, ptr %102, align 4, !tbaa !9
  %770 = load i32, ptr %86, align 4, !tbaa !9
  %771 = load ptr, ptr %20, align 8, !tbaa !5
  %772 = load i32, ptr %771, align 4, !tbaa !9
  %773 = icmp slt i32 %770, %772
  br i1 %773, label %774, label %788

774:                                              ; preds = %769
  %775 = load ptr, ptr %21, align 8, !tbaa !5
  %776 = load i32, ptr %86, align 4, !tbaa !9
  %777 = add nsw i32 %776, 1
  %778 = load i32, ptr %86, align 4, !tbaa !9
  %779 = load i32, ptr %35, align 4, !tbaa !9
  %780 = mul nsw i32 %778, %779
  %781 = add nsw i32 %777, %780
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds double, ptr %775, i64 %782
  %784 = load double, ptr %783, align 8, !tbaa !11
  %785 = fcmp une double %784, 0.000000e+00
  br i1 %785, label %786, label %787

786:                                              ; preds = %774
  store i32 1, ptr %108, align 4, !tbaa !9
  store i32 2, ptr %102, align 4, !tbaa !9
  br label %787

787:                                              ; preds = %786, %774
  br label %788

788:                                              ; preds = %787, %769
  %789 = load i32, ptr %70, align 4, !tbaa !9
  %790 = icmp ne i32 %789, 0
  br i1 %790, label %791, label %792

791:                                              ; preds = %788
  store i32 1, ptr %107, align 4, !tbaa !9
  br label %820

792:                                              ; preds = %788
  %793 = load i32, ptr %108, align 4, !tbaa !9
  %794 = icmp ne i32 %793, 0
  br i1 %794, label %795, label %813

795:                                              ; preds = %792
  %796 = load ptr, ptr %19, align 8, !tbaa !5
  %797 = load i32, ptr %86, align 4, !tbaa !9
  %798 = sext i32 %797 to i64
  %799 = getelementptr inbounds i32, ptr %796, i64 %798
  %800 = load i32, ptr %799, align 4, !tbaa !9
  %801 = icmp ne i32 %800, 0
  br i1 %801, label %810, label %802

802:                                              ; preds = %795
  %803 = load ptr, ptr %19, align 8, !tbaa !5
  %804 = load i32, ptr %86, align 4, !tbaa !9
  %805 = add nsw i32 %804, 1
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds i32, ptr %803, i64 %806
  %808 = load i32, ptr %807, align 4, !tbaa !9
  %809 = icmp ne i32 %808, 0
  br label %810

810:                                              ; preds = %802, %795
  %811 = phi i1 [ true, %795 ], [ %809, %802 ]
  %812 = zext i1 %811 to i32
  store i32 %812, ptr %107, align 4, !tbaa !9
  br label %819

813:                                              ; preds = %792
  %814 = load ptr, ptr %19, align 8, !tbaa !5
  %815 = load i32, ptr %86, align 4, !tbaa !9
  %816 = sext i32 %815 to i64
  %817 = getelementptr inbounds i32, ptr %814, i64 %816
  %818 = load i32, ptr %817, align 4, !tbaa !9
  store i32 %818, ptr %107, align 4, !tbaa !9
  br label %819

819:                                              ; preds = %813, %810
  br label %820

820:                                              ; preds = %819, %791
  %821 = load i32, ptr %107, align 4, !tbaa !9
  %822 = icmp ne i32 %821, 0
  br i1 %822, label %824, label %823

823:                                              ; preds = %820
  br label %2501

824:                                              ; preds = %820
  %825 = load i32, ptr %108, align 4, !tbaa !9
  %826 = icmp ne i32 %825, 0
  br i1 %826, label %900, label %827

827:                                              ; preds = %824
  %828 = load ptr, ptr %21, align 8, !tbaa !5
  %829 = load i32, ptr %86, align 4, !tbaa !9
  %830 = load i32, ptr %86, align 4, !tbaa !9
  %831 = load i32, ptr %35, align 4, !tbaa !9
  %832 = mul nsw i32 %830, %831
  %833 = add nsw i32 %829, %832
  %834 = sext i32 %833 to i64
  %835 = getelementptr inbounds double, ptr %828, i64 %834
  %836 = load double, ptr %835, align 8, !tbaa !11
  store double %836, ptr %46, align 8, !tbaa !11
  %837 = load double, ptr %46, align 8, !tbaa !11
  %838 = fcmp oge double %837, 0.000000e+00
  br i1 %838, label %839, label %841

839:                                              ; preds = %827
  %840 = load double, ptr %46, align 8, !tbaa !11
  br label %844

841:                                              ; preds = %827
  %842 = load double, ptr %46, align 8, !tbaa !11
  %843 = fneg double %842
  br label %844

844:                                              ; preds = %841, %839
  %845 = phi double [ %840, %839 ], [ %843, %841 ]
  %846 = load double, ptr %104, align 8, !tbaa !11
  %847 = fcmp ole double %845, %846
  br i1 %847, label %848, label %899

848:                                              ; preds = %844
  %849 = load ptr, ptr %23, align 8, !tbaa !5
  %850 = load i32, ptr %86, align 4, !tbaa !9
  %851 = load i32, ptr %86, align 4, !tbaa !9
  %852 = load i32, ptr %33, align 4, !tbaa !9
  %853 = mul nsw i32 %851, %852
  %854 = add nsw i32 %850, %853
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds double, ptr %849, i64 %855
  %857 = load double, ptr %856, align 8, !tbaa !11
  store double %857, ptr %47, align 8, !tbaa !11
  %858 = load double, ptr %47, align 8, !tbaa !11
  %859 = fcmp oge double %858, 0.000000e+00
  br i1 %859, label %860, label %862

860:                                              ; preds = %848
  %861 = load double, ptr %47, align 8, !tbaa !11
  br label %865

862:                                              ; preds = %848
  %863 = load double, ptr %47, align 8, !tbaa !11
  %864 = fneg double %863
  br label %865

865:                                              ; preds = %862, %860
  %866 = phi double [ %861, %860 ], [ %864, %862 ]
  %867 = load double, ptr %104, align 8, !tbaa !11
  %868 = fcmp ole double %866, %867
  br i1 %868, label %869, label %899

869:                                              ; preds = %865
  %870 = load i32, ptr %53, align 4, !tbaa !9
  %871 = add nsw i32 %870, 1
  store i32 %871, ptr %53, align 4, !tbaa !9
  %872 = load ptr, ptr %20, align 8, !tbaa !5
  %873 = load i32, ptr %872, align 4, !tbaa !9
  store i32 %873, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %874

874:                                              ; preds = %887, %869
  %875 = load i32, ptr %98, align 4, !tbaa !9
  %876 = load i32, ptr %42, align 4, !tbaa !9
  %877 = icmp sle i32 %875, %876
  br i1 %877, label %878, label %890

878:                                              ; preds = %874
  %879 = load ptr, ptr %25, align 8, !tbaa !5
  %880 = load i32, ptr %98, align 4, !tbaa !9
  %881 = load i32, ptr %53, align 4, !tbaa !9
  %882 = load i32, ptr %37, align 4, !tbaa !9
  %883 = mul nsw i32 %881, %882
  %884 = add nsw i32 %880, %883
  %885 = sext i32 %884 to i64
  %886 = getelementptr inbounds double, ptr %879, i64 %885
  store double 0.000000e+00, ptr %886, align 8, !tbaa !11
  br label %887

887:                                              ; preds = %878
  %888 = load i32, ptr %98, align 4, !tbaa !9
  %889 = add nsw i32 %888, 1
  store i32 %889, ptr %98, align 4, !tbaa !9
  br label %874, !llvm.loop !19

890:                                              ; preds = %874
  %891 = load ptr, ptr %25, align 8, !tbaa !5
  %892 = load i32, ptr %53, align 4, !tbaa !9
  %893 = load i32, ptr %53, align 4, !tbaa !9
  %894 = load i32, ptr %37, align 4, !tbaa !9
  %895 = mul nsw i32 %893, %894
  %896 = add nsw i32 %892, %895
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %891, i64 %897
  store double 1.000000e+00, ptr %898, align 8, !tbaa !11
  br label %2501

899:                                              ; preds = %865, %844
  br label %900

900:                                              ; preds = %899, %824
  %901 = load i32, ptr %102, align 4, !tbaa !9
  %902 = load ptr, ptr %20, align 8, !tbaa !5
  %903 = load i32, ptr %902, align 4, !tbaa !9
  %904 = mul nsw i32 %901, %903
  store i32 %904, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %905

905:                                              ; preds = %918, %900
  %906 = load i32, ptr %98, align 4, !tbaa !9
  %907 = load i32, ptr %42, align 4, !tbaa !9
  %908 = icmp sle i32 %906, %907
  br i1 %908, label %909, label %921

909:                                              ; preds = %905
  %910 = load ptr, ptr %31, align 8, !tbaa !5
  %911 = load ptr, ptr %20, align 8, !tbaa !5
  %912 = load i32, ptr %911, align 4, !tbaa !9
  %913 = shl i32 %912, 1
  %914 = load i32, ptr %98, align 4, !tbaa !9
  %915 = add nsw i32 %913, %914
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds double, ptr %910, i64 %916
  store double 0.000000e+00, ptr %917, align 8, !tbaa !11
  br label %918

918:                                              ; preds = %909
  %919 = load i32, ptr %98, align 4, !tbaa !9
  %920 = add nsw i32 %919, 1
  store i32 %920, ptr %98, align 4, !tbaa !9
  br label %905, !llvm.loop !20

921:                                              ; preds = %905
  %922 = load i32, ptr %108, align 4, !tbaa !9
  %923 = icmp ne i32 %922, 0
  br i1 %923, label %1236, label %924

924:                                              ; preds = %921
  %925 = load ptr, ptr %21, align 8, !tbaa !5
  %926 = load i32, ptr %86, align 4, !tbaa !9
  %927 = load i32, ptr %86, align 4, !tbaa !9
  %928 = load i32, ptr %35, align 4, !tbaa !9
  %929 = mul nsw i32 %927, %928
  %930 = add nsw i32 %926, %929
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds double, ptr %925, i64 %931
  %933 = load double, ptr %932, align 8, !tbaa !11
  store double %933, ptr %46, align 8, !tbaa !11
  %934 = load double, ptr %46, align 8, !tbaa !11
  %935 = fcmp oge double %934, 0.000000e+00
  br i1 %935, label %936, label %938

936:                                              ; preds = %924
  %937 = load double, ptr %46, align 8, !tbaa !11
  br label %941

938:                                              ; preds = %924
  %939 = load double, ptr %46, align 8, !tbaa !11
  %940 = fneg double %939
  br label %941

941:                                              ; preds = %938, %936
  %942 = phi double [ %937, %936 ], [ %940, %938 ]
  %943 = load double, ptr %95, align 8, !tbaa !11
  %944 = fmul double %942, %943
  store double %944, ptr %48, align 8, !tbaa !11
  %945 = load ptr, ptr %23, align 8, !tbaa !5
  %946 = load i32, ptr %86, align 4, !tbaa !9
  %947 = load i32, ptr %86, align 4, !tbaa !9
  %948 = load i32, ptr %33, align 4, !tbaa !9
  %949 = mul nsw i32 %947, %948
  %950 = add nsw i32 %946, %949
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds double, ptr %945, i64 %951
  %953 = load double, ptr %952, align 8, !tbaa !11
  store double %953, ptr %47, align 8, !tbaa !11
  %954 = load double, ptr %47, align 8, !tbaa !11
  %955 = fcmp oge double %954, 0.000000e+00
  br i1 %955, label %956, label %958

956:                                              ; preds = %941
  %957 = load double, ptr %47, align 8, !tbaa !11
  br label %961

958:                                              ; preds = %941
  %959 = load double, ptr %47, align 8, !tbaa !11
  %960 = fneg double %959
  br label %961

961:                                              ; preds = %958, %956
  %962 = phi double [ %957, %956 ], [ %960, %958 ]
  %963 = load double, ptr %96, align 8, !tbaa !11
  %964 = fmul double %962, %963
  store double %964, ptr %49, align 8, !tbaa !11
  %965 = load double, ptr %48, align 8, !tbaa !11
  %966 = load double, ptr %49, align 8, !tbaa !11
  %967 = fcmp oge double %965, %966
  br i1 %967, label %968, label %970

968:                                              ; preds = %961
  %969 = load double, ptr %48, align 8, !tbaa !11
  br label %972

970:                                              ; preds = %961
  %971 = load double, ptr %49, align 8, !tbaa !11
  br label %972

972:                                              ; preds = %970, %968
  %973 = phi double [ %969, %968 ], [ %971, %970 ]
  store double %973, ptr %48, align 8, !tbaa !11
  %974 = load double, ptr %48, align 8, !tbaa !11
  %975 = load double, ptr %104, align 8, !tbaa !11
  %976 = fcmp oge double %974, %975
  br i1 %976, label %977, label %979

977:                                              ; preds = %972
  %978 = load double, ptr %48, align 8, !tbaa !11
  br label %981

979:                                              ; preds = %972
  %980 = load double, ptr %104, align 8, !tbaa !11
  br label %981

981:                                              ; preds = %979, %977
  %982 = phi double [ %978, %977 ], [ %980, %979 ]
  %983 = fdiv double 1.000000e+00, %982
  store double %983, ptr %56, align 8, !tbaa !11
  %984 = load double, ptr %56, align 8, !tbaa !11
  %985 = load ptr, ptr %21, align 8, !tbaa !5
  %986 = load i32, ptr %86, align 4, !tbaa !9
  %987 = load i32, ptr %86, align 4, !tbaa !9
  %988 = load i32, ptr %35, align 4, !tbaa !9
  %989 = mul nsw i32 %987, %988
  %990 = add nsw i32 %986, %989
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds double, ptr %985, i64 %991
  %993 = load double, ptr %992, align 8, !tbaa !11
  %994 = fmul double %984, %993
  %995 = load double, ptr %95, align 8, !tbaa !11
  %996 = fmul double %994, %995
  store double %996, ptr %103, align 8, !tbaa !11
  %997 = load double, ptr %56, align 8, !tbaa !11
  %998 = load ptr, ptr %23, align 8, !tbaa !5
  %999 = load i32, ptr %86, align 4, !tbaa !9
  %1000 = load i32, ptr %86, align 4, !tbaa !9
  %1001 = load i32, ptr %33, align 4, !tbaa !9
  %1002 = mul nsw i32 %1000, %1001
  %1003 = add nsw i32 %999, %1002
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds double, ptr %998, i64 %1004
  %1006 = load double, ptr %1005, align 8, !tbaa !11
  %1007 = fmul double %997, %1006
  %1008 = load double, ptr %96, align 8, !tbaa !11
  %1009 = fmul double %1007, %1008
  store double %1009, ptr %72, align 8, !tbaa !11
  %1010 = load double, ptr %72, align 8, !tbaa !11
  %1011 = load double, ptr %95, align 8, !tbaa !11
  %1012 = fmul double %1010, %1011
  store double %1012, ptr %68, align 8, !tbaa !11
  %1013 = load double, ptr %103, align 8, !tbaa !11
  %1014 = load double, ptr %96, align 8, !tbaa !11
  %1015 = fmul double %1013, %1014
  store double %1015, ptr %100, align 8, !tbaa !11
  store double 0.000000e+00, ptr %94, align 8, !tbaa !11
  store double 1.000000e+00, ptr %69, align 8, !tbaa !11
  %1016 = load double, ptr %72, align 8, !tbaa !11
  %1017 = fcmp oge double %1016, 0.000000e+00
  br i1 %1017, label %1018, label %1020

1018:                                             ; preds = %981
  %1019 = load double, ptr %72, align 8, !tbaa !11
  br label %1023

1020:                                             ; preds = %981
  %1021 = load double, ptr %72, align 8, !tbaa !11
  %1022 = fneg double %1021
  br label %1023

1023:                                             ; preds = %1020, %1018
  %1024 = phi double [ %1019, %1018 ], [ %1022, %1020 ]
  %1025 = load double, ptr %104, align 8, !tbaa !11
  %1026 = fcmp oge double %1024, %1025
  br i1 %1026, label %1027, label %1039

1027:                                             ; preds = %1023
  %1028 = load double, ptr %68, align 8, !tbaa !11
  %1029 = fcmp oge double %1028, 0.000000e+00
  br i1 %1029, label %1030, label %1032

1030:                                             ; preds = %1027
  %1031 = load double, ptr %68, align 8, !tbaa !11
  br label %1035

1032:                                             ; preds = %1027
  %1033 = load double, ptr %68, align 8, !tbaa !11
  %1034 = fneg double %1033
  br label %1035

1035:                                             ; preds = %1032, %1030
  %1036 = phi double [ %1031, %1030 ], [ %1034, %1032 ]
  %1037 = load double, ptr %75, align 8, !tbaa !11
  %1038 = fcmp olt double %1036, %1037
  br label %1039

1039:                                             ; preds = %1035, %1023
  %1040 = phi i1 [ false, %1023 ], [ %1038, %1035 ]
  %1041 = zext i1 %1040 to i32
  store i32 %1041, ptr %111, align 4, !tbaa !9
  %1042 = load double, ptr %103, align 8, !tbaa !11
  %1043 = fcmp oge double %1042, 0.000000e+00
  br i1 %1043, label %1044, label %1046

1044:                                             ; preds = %1039
  %1045 = load double, ptr %103, align 8, !tbaa !11
  br label %1049

1046:                                             ; preds = %1039
  %1047 = load double, ptr %103, align 8, !tbaa !11
  %1048 = fneg double %1047
  br label %1049

1049:                                             ; preds = %1046, %1044
  %1050 = phi double [ %1045, %1044 ], [ %1048, %1046 ]
  %1051 = load double, ptr %104, align 8, !tbaa !11
  %1052 = fcmp oge double %1050, %1051
  br i1 %1052, label %1053, label %1065

1053:                                             ; preds = %1049
  %1054 = load double, ptr %100, align 8, !tbaa !11
  %1055 = fcmp oge double %1054, 0.000000e+00
  br i1 %1055, label %1056, label %1058

1056:                                             ; preds = %1053
  %1057 = load double, ptr %100, align 8, !tbaa !11
  br label %1061

1058:                                             ; preds = %1053
  %1059 = load double, ptr %100, align 8, !tbaa !11
  %1060 = fneg double %1059
  br label %1061

1061:                                             ; preds = %1058, %1056
  %1062 = phi double [ %1057, %1056 ], [ %1060, %1058 ]
  %1063 = load double, ptr %75, align 8, !tbaa !11
  %1064 = fcmp olt double %1062, %1063
  br label %1065

1065:                                             ; preds = %1061, %1049
  %1066 = phi i1 [ false, %1049 ], [ %1064, %1061 ]
  %1067 = zext i1 %1066 to i32
  store i32 %1067, ptr %112, align 4, !tbaa !9
  %1068 = load i32, ptr %111, align 4, !tbaa !9
  %1069 = icmp ne i32 %1068, 0
  br i1 %1069, label %1070, label %1092

1070:                                             ; preds = %1065
  %1071 = load double, ptr %75, align 8, !tbaa !11
  %1072 = load double, ptr %72, align 8, !tbaa !11
  %1073 = fcmp oge double %1072, 0.000000e+00
  br i1 %1073, label %1074, label %1076

1074:                                             ; preds = %1070
  %1075 = load double, ptr %72, align 8, !tbaa !11
  br label %1079

1076:                                             ; preds = %1070
  %1077 = load double, ptr %72, align 8, !tbaa !11
  %1078 = fneg double %1077
  br label %1079

1079:                                             ; preds = %1076, %1074
  %1080 = phi double [ %1075, %1074 ], [ %1078, %1076 ]
  %1081 = fdiv double %1071, %1080
  %1082 = load double, ptr %77, align 8, !tbaa !11
  %1083 = load double, ptr %110, align 8, !tbaa !11
  %1084 = fcmp ole double %1082, %1083
  br i1 %1084, label %1085, label %1087

1085:                                             ; preds = %1079
  %1086 = load double, ptr %77, align 8, !tbaa !11
  br label %1089

1087:                                             ; preds = %1079
  %1088 = load double, ptr %110, align 8, !tbaa !11
  br label %1089

1089:                                             ; preds = %1087, %1085
  %1090 = phi double [ %1086, %1085 ], [ %1088, %1087 ]
  %1091 = fmul double %1081, %1090
  store double %1091, ptr %69, align 8, !tbaa !11
  br label %1092

1092:                                             ; preds = %1089, %1065
  %1093 = load i32, ptr %112, align 4, !tbaa !9
  %1094 = icmp ne i32 %1093, 0
  br i1 %1094, label %1095, label %1127

1095:                                             ; preds = %1092
  %1096 = load double, ptr %69, align 8, !tbaa !11
  store double %1096, ptr %46, align 8, !tbaa !11
  %1097 = load double, ptr %75, align 8, !tbaa !11
  %1098 = load double, ptr %103, align 8, !tbaa !11
  %1099 = fcmp oge double %1098, 0.000000e+00
  br i1 %1099, label %1100, label %1102

1100:                                             ; preds = %1095
  %1101 = load double, ptr %103, align 8, !tbaa !11
  br label %1105

1102:                                             ; preds = %1095
  %1103 = load double, ptr %103, align 8, !tbaa !11
  %1104 = fneg double %1103
  br label %1105

1105:                                             ; preds = %1102, %1100
  %1106 = phi double [ %1101, %1100 ], [ %1104, %1102 ]
  %1107 = fdiv double %1097, %1106
  %1108 = load double, ptr %78, align 8, !tbaa !11
  %1109 = load double, ptr %110, align 8, !tbaa !11
  %1110 = fcmp ole double %1108, %1109
  br i1 %1110, label %1111, label %1113

1111:                                             ; preds = %1105
  %1112 = load double, ptr %78, align 8, !tbaa !11
  br label %1115

1113:                                             ; preds = %1105
  %1114 = load double, ptr %110, align 8, !tbaa !11
  br label %1115

1115:                                             ; preds = %1113, %1111
  %1116 = phi double [ %1112, %1111 ], [ %1114, %1113 ]
  %1117 = fmul double %1107, %1116
  store double %1117, ptr %47, align 8, !tbaa !11
  %1118 = load double, ptr %46, align 8, !tbaa !11
  %1119 = load double, ptr %47, align 8, !tbaa !11
  %1120 = fcmp oge double %1118, %1119
  br i1 %1120, label %1121, label %1123

1121:                                             ; preds = %1115
  %1122 = load double, ptr %46, align 8, !tbaa !11
  br label %1125

1123:                                             ; preds = %1115
  %1124 = load double, ptr %47, align 8, !tbaa !11
  br label %1125

1125:                                             ; preds = %1123, %1121
  %1126 = phi double [ %1122, %1121 ], [ %1124, %1123 ]
  store double %1126, ptr %69, align 8, !tbaa !11
  br label %1127

1127:                                             ; preds = %1125, %1092
  %1128 = load i32, ptr %111, align 4, !tbaa !9
  %1129 = icmp ne i32 %1128, 0
  br i1 %1129, label %1133, label %1130

1130:                                             ; preds = %1127
  %1131 = load i32, ptr %112, align 4, !tbaa !9
  %1132 = icmp ne i32 %1131, 0
  br i1 %1132, label %1133, label %1209

1133:                                             ; preds = %1130, %1127
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %1134 = load double, ptr %68, align 8, !tbaa !11
  %1135 = fcmp oge double %1134, 0.000000e+00
  br i1 %1135, label %1136, label %1138

1136:                                             ; preds = %1133
  %1137 = load double, ptr %68, align 8, !tbaa !11
  br label %1141

1138:                                             ; preds = %1133
  %1139 = load double, ptr %68, align 8, !tbaa !11
  %1140 = fneg double %1139
  br label %1141

1141:                                             ; preds = %1138, %1136
  %1142 = phi double [ %1137, %1136 ], [ %1140, %1138 ]
  store double %1142, ptr %49, align 8, !tbaa !11
  %1143 = load double, ptr %48, align 8, !tbaa !11
  %1144 = load double, ptr %49, align 8, !tbaa !11
  %1145 = fcmp oge double %1143, %1144
  br i1 %1145, label %1146, label %1148

1146:                                             ; preds = %1141
  %1147 = load double, ptr %48, align 8, !tbaa !11
  br label %1150

1148:                                             ; preds = %1141
  %1149 = load double, ptr %49, align 8, !tbaa !11
  br label %1150

1150:                                             ; preds = %1148, %1146
  %1151 = phi double [ %1147, %1146 ], [ %1149, %1148 ]
  store double %1151, ptr %48, align 8, !tbaa !11
  %1152 = load double, ptr %100, align 8, !tbaa !11
  %1153 = fcmp oge double %1152, 0.000000e+00
  br i1 %1153, label %1154, label %1156

1154:                                             ; preds = %1150
  %1155 = load double, ptr %100, align 8, !tbaa !11
  br label %1159

1156:                                             ; preds = %1150
  %1157 = load double, ptr %100, align 8, !tbaa !11
  %1158 = fneg double %1157
  br label %1159

1159:                                             ; preds = %1156, %1154
  %1160 = phi double [ %1155, %1154 ], [ %1158, %1156 ]
  store double %1160, ptr %49, align 8, !tbaa !11
  %1161 = load double, ptr %69, align 8, !tbaa !11
  store double %1161, ptr %46, align 8, !tbaa !11
  %1162 = load double, ptr %104, align 8, !tbaa !11
  %1163 = load double, ptr %48, align 8, !tbaa !11
  %1164 = load double, ptr %49, align 8, !tbaa !11
  %1165 = fcmp oge double %1163, %1164
  br i1 %1165, label %1166, label %1168

1166:                                             ; preds = %1159
  %1167 = load double, ptr %48, align 8, !tbaa !11
  br label %1170

1168:                                             ; preds = %1159
  %1169 = load double, ptr %49, align 8, !tbaa !11
  br label %1170

1170:                                             ; preds = %1168, %1166
  %1171 = phi double [ %1167, %1166 ], [ %1169, %1168 ]
  %1172 = fmul double %1162, %1171
  %1173 = fdiv double 1.000000e+00, %1172
  store double %1173, ptr %47, align 8, !tbaa !11
  %1174 = load double, ptr %46, align 8, !tbaa !11
  %1175 = load double, ptr %47, align 8, !tbaa !11
  %1176 = fcmp ole double %1174, %1175
  br i1 %1176, label %1177, label %1179

1177:                                             ; preds = %1170
  %1178 = load double, ptr %46, align 8, !tbaa !11
  br label %1181

1179:                                             ; preds = %1170
  %1180 = load double, ptr %47, align 8, !tbaa !11
  br label %1181

1181:                                             ; preds = %1179, %1177
  %1182 = phi double [ %1178, %1177 ], [ %1180, %1179 ]
  store double %1182, ptr %69, align 8, !tbaa !11
  %1183 = load i32, ptr %111, align 4, !tbaa !9
  %1184 = icmp ne i32 %1183, 0
  br i1 %1184, label %1185, label %1191

1185:                                             ; preds = %1181
  %1186 = load double, ptr %95, align 8, !tbaa !11
  %1187 = load double, ptr %69, align 8, !tbaa !11
  %1188 = load double, ptr %72, align 8, !tbaa !11
  %1189 = fmul double %1187, %1188
  %1190 = fmul double %1186, %1189
  store double %1190, ptr %68, align 8, !tbaa !11
  br label %1195

1191:                                             ; preds = %1181
  %1192 = load double, ptr %69, align 8, !tbaa !11
  %1193 = load double, ptr %68, align 8, !tbaa !11
  %1194 = fmul double %1192, %1193
  store double %1194, ptr %68, align 8, !tbaa !11
  br label %1195

1195:                                             ; preds = %1191, %1185
  %1196 = load i32, ptr %112, align 4, !tbaa !9
  %1197 = icmp ne i32 %1196, 0
  br i1 %1197, label %1198, label %1204

1198:                                             ; preds = %1195
  %1199 = load double, ptr %96, align 8, !tbaa !11
  %1200 = load double, ptr %69, align 8, !tbaa !11
  %1201 = load double, ptr %103, align 8, !tbaa !11
  %1202 = fmul double %1200, %1201
  %1203 = fmul double %1199, %1202
  store double %1203, ptr %100, align 8, !tbaa !11
  br label %1208

1204:                                             ; preds = %1195
  %1205 = load double, ptr %69, align 8, !tbaa !11
  %1206 = load double, ptr %100, align 8, !tbaa !11
  %1207 = fmul double %1205, %1206
  store double %1207, ptr %100, align 8, !tbaa !11
  br label %1208

1208:                                             ; preds = %1204, %1198
  br label %1209

1209:                                             ; preds = %1208, %1130
  %1210 = load double, ptr %68, align 8, !tbaa !11
  %1211 = fcmp oge double %1210, 0.000000e+00
  br i1 %1211, label %1212, label %1214

1212:                                             ; preds = %1209
  %1213 = load double, ptr %68, align 8, !tbaa !11
  br label %1217

1214:                                             ; preds = %1209
  %1215 = load double, ptr %68, align 8, !tbaa !11
  %1216 = fneg double %1215
  br label %1217

1217:                                             ; preds = %1214, %1212
  %1218 = phi double [ %1213, %1212 ], [ %1216, %1214 ]
  store double %1218, ptr %88, align 8, !tbaa !11
  %1219 = load double, ptr %100, align 8, !tbaa !11
  %1220 = fcmp oge double %1219, 0.000000e+00
  br i1 %1220, label %1221, label %1223

1221:                                             ; preds = %1217
  %1222 = load double, ptr %100, align 8, !tbaa !11
  br label %1226

1223:                                             ; preds = %1217
  %1224 = load double, ptr %100, align 8, !tbaa !11
  %1225 = fneg double %1224
  br label %1226

1226:                                             ; preds = %1223, %1221
  %1227 = phi double [ %1222, %1221 ], [ %1225, %1223 ]
  store double %1227, ptr %89, align 8, !tbaa !11
  %1228 = load ptr, ptr %31, align 8, !tbaa !5
  %1229 = load ptr, ptr %20, align 8, !tbaa !5
  %1230 = load i32, ptr %1229, align 4, !tbaa !9
  %1231 = shl i32 %1230, 1
  %1232 = load i32, ptr %86, align 4, !tbaa !9
  %1233 = add nsw i32 %1231, %1232
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds double, ptr %1228, i64 %1234
  store double 1.000000e+00, ptr %1235, align 8, !tbaa !11
  store double 1.000000e+00, ptr %57, align 8, !tbaa !11
  br label %1706

1236:                                             ; preds = %921
  %1237 = load double, ptr %104, align 8, !tbaa !11
  %1238 = fmul double %1237, 1.000000e+02
  store double %1238, ptr %46, align 8, !tbaa !11
  %1239 = load ptr, ptr %21, align 8, !tbaa !5
  %1240 = load i32, ptr %86, align 4, !tbaa !9
  %1241 = load i32, ptr %86, align 4, !tbaa !9
  %1242 = load i32, ptr %35, align 4, !tbaa !9
  %1243 = mul nsw i32 %1241, %1242
  %1244 = add nsw i32 %1240, %1243
  %1245 = sext i32 %1244 to i64
  %1246 = getelementptr inbounds double, ptr %1239, i64 %1245
  %1247 = load ptr, ptr %22, align 8, !tbaa !5
  %1248 = load ptr, ptr %23, align 8, !tbaa !5
  %1249 = load i32, ptr %86, align 4, !tbaa !9
  %1250 = load i32, ptr %86, align 4, !tbaa !9
  %1251 = load i32, ptr %33, align 4, !tbaa !9
  %1252 = mul nsw i32 %1250, %1251
  %1253 = add nsw i32 %1249, %1252
  %1254 = sext i32 %1253 to i64
  %1255 = getelementptr inbounds double, ptr %1248, i64 %1254
  %1256 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlag2_(ptr noundef %1246, ptr noundef %1247, ptr noundef %1255, ptr noundef %1256, ptr noundef %46, ptr noundef %68, ptr noundef %56, ptr noundef %100, ptr noundef %64, ptr noundef %94)
  %1257 = load double, ptr %94, align 8, !tbaa !11
  %1258 = fneg double %1257
  store double %1258, ptr %94, align 8, !tbaa !11
  %1259 = load double, ptr %94, align 8, !tbaa !11
  %1260 = fcmp oeq double %1259, 0.000000e+00
  br i1 %1260, label %1261, label %1264

1261:                                             ; preds = %1236
  %1262 = load i32, ptr %86, align 4, !tbaa !9
  %1263 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 %1262, ptr %1263, align 4, !tbaa !9
  store i32 1, ptr %115, align 4
  br label %4765

1264:                                             ; preds = %1236
  %1265 = load double, ptr %68, align 8, !tbaa !11
  %1266 = fcmp oge double %1265, 0.000000e+00
  br i1 %1266, label %1267, label %1269

1267:                                             ; preds = %1264
  %1268 = load double, ptr %68, align 8, !tbaa !11
  br label %1272

1269:                                             ; preds = %1264
  %1270 = load double, ptr %68, align 8, !tbaa !11
  %1271 = fneg double %1270
  br label %1272

1272:                                             ; preds = %1269, %1267
  %1273 = phi double [ %1268, %1267 ], [ %1271, %1269 ]
  store double %1273, ptr %88, align 8, !tbaa !11
  %1274 = load double, ptr %100, align 8, !tbaa !11
  %1275 = fcmp oge double %1274, 0.000000e+00
  br i1 %1275, label %1276, label %1278

1276:                                             ; preds = %1272
  %1277 = load double, ptr %100, align 8, !tbaa !11
  br label %1281

1278:                                             ; preds = %1272
  %1279 = load double, ptr %100, align 8, !tbaa !11
  %1280 = fneg double %1279
  br label %1281

1281:                                             ; preds = %1278, %1276
  %1282 = phi double [ %1277, %1276 ], [ %1280, %1278 ]
  %1283 = load double, ptr %94, align 8, !tbaa !11
  %1284 = fcmp oge double %1283, 0.000000e+00
  br i1 %1284, label %1285, label %1287

1285:                                             ; preds = %1281
  %1286 = load double, ptr %94, align 8, !tbaa !11
  br label %1290

1287:                                             ; preds = %1281
  %1288 = load double, ptr %94, align 8, !tbaa !11
  %1289 = fneg double %1288
  br label %1290

1290:                                             ; preds = %1287, %1285
  %1291 = phi double [ %1286, %1285 ], [ %1289, %1287 ]
  %1292 = fadd double %1282, %1291
  store double %1292, ptr %89, align 8, !tbaa !11
  store double 1.000000e+00, ptr %69, align 8, !tbaa !11
  %1293 = load double, ptr %88, align 8, !tbaa !11
  %1294 = load double, ptr %113, align 8, !tbaa !11
  %1295 = fmul double %1293, %1294
  %1296 = load double, ptr %104, align 8, !tbaa !11
  %1297 = fcmp olt double %1295, %1296
  br i1 %1297, label %1298, label %1308

1298:                                             ; preds = %1290
  %1299 = load double, ptr %88, align 8, !tbaa !11
  %1300 = load double, ptr %104, align 8, !tbaa !11
  %1301 = fcmp oge double %1299, %1300
  br i1 %1301, label %1302, label %1308

1302:                                             ; preds = %1298
  %1303 = load double, ptr %104, align 8, !tbaa !11
  %1304 = load double, ptr %113, align 8, !tbaa !11
  %1305 = fdiv double %1303, %1304
  %1306 = load double, ptr %88, align 8, !tbaa !11
  %1307 = fdiv double %1305, %1306
  store double %1307, ptr %69, align 8, !tbaa !11
  br label %1308

1308:                                             ; preds = %1302, %1298, %1290
  %1309 = load double, ptr %89, align 8, !tbaa !11
  %1310 = load double, ptr %113, align 8, !tbaa !11
  %1311 = fmul double %1309, %1310
  %1312 = load double, ptr %104, align 8, !tbaa !11
  %1313 = fcmp olt double %1311, %1312
  br i1 %1313, label %1314, label %1334

1314:                                             ; preds = %1308
  %1315 = load double, ptr %89, align 8, !tbaa !11
  %1316 = load double, ptr %104, align 8, !tbaa !11
  %1317 = fcmp oge double %1315, %1316
  br i1 %1317, label %1318, label %1334

1318:                                             ; preds = %1314
  %1319 = load double, ptr %69, align 8, !tbaa !11
  store double %1319, ptr %46, align 8, !tbaa !11
  %1320 = load double, ptr %104, align 8, !tbaa !11
  %1321 = load double, ptr %113, align 8, !tbaa !11
  %1322 = fdiv double %1320, %1321
  %1323 = load double, ptr %89, align 8, !tbaa !11
  %1324 = fdiv double %1322, %1323
  store double %1324, ptr %47, align 8, !tbaa !11
  %1325 = load double, ptr %46, align 8, !tbaa !11
  %1326 = load double, ptr %47, align 8, !tbaa !11
  %1327 = fcmp oge double %1325, %1326
  br i1 %1327, label %1328, label %1330

1328:                                             ; preds = %1318
  %1329 = load double, ptr %46, align 8, !tbaa !11
  br label %1332

1330:                                             ; preds = %1318
  %1331 = load double, ptr %47, align 8, !tbaa !11
  br label %1332

1332:                                             ; preds = %1330, %1328
  %1333 = phi double [ %1329, %1328 ], [ %1331, %1330 ]
  store double %1333, ptr %69, align 8, !tbaa !11
  br label %1334

1334:                                             ; preds = %1332, %1314, %1308
  %1335 = load double, ptr %104, align 8, !tbaa !11
  %1336 = load double, ptr %88, align 8, !tbaa !11
  %1337 = fmul double %1335, %1336
  %1338 = load double, ptr %95, align 8, !tbaa !11
  %1339 = fcmp ogt double %1337, %1338
  br i1 %1339, label %1340, label %1346

1340:                                             ; preds = %1334
  %1341 = load double, ptr %95, align 8, !tbaa !11
  %1342 = load double, ptr %104, align 8, !tbaa !11
  %1343 = load double, ptr %88, align 8, !tbaa !11
  %1344 = fmul double %1342, %1343
  %1345 = fdiv double %1341, %1344
  store double %1345, ptr %69, align 8, !tbaa !11
  br label %1346

1346:                                             ; preds = %1340, %1334
  %1347 = load double, ptr %104, align 8, !tbaa !11
  %1348 = load double, ptr %89, align 8, !tbaa !11
  %1349 = fmul double %1347, %1348
  %1350 = load double, ptr %96, align 8, !tbaa !11
  %1351 = fcmp ogt double %1349, %1350
  br i1 %1351, label %1352, label %1368

1352:                                             ; preds = %1346
  %1353 = load double, ptr %69, align 8, !tbaa !11
  store double %1353, ptr %46, align 8, !tbaa !11
  %1354 = load double, ptr %96, align 8, !tbaa !11
  %1355 = load double, ptr %104, align 8, !tbaa !11
  %1356 = load double, ptr %89, align 8, !tbaa !11
  %1357 = fmul double %1355, %1356
  %1358 = fdiv double %1354, %1357
  store double %1358, ptr %47, align 8, !tbaa !11
  %1359 = load double, ptr %46, align 8, !tbaa !11
  %1360 = load double, ptr %47, align 8, !tbaa !11
  %1361 = fcmp ole double %1359, %1360
  br i1 %1361, label %1362, label %1364

1362:                                             ; preds = %1352
  %1363 = load double, ptr %46, align 8, !tbaa !11
  br label %1366

1364:                                             ; preds = %1352
  %1365 = load double, ptr %47, align 8, !tbaa !11
  br label %1366

1366:                                             ; preds = %1364, %1362
  %1367 = phi double [ %1363, %1362 ], [ %1365, %1364 ]
  store double %1367, ptr %69, align 8, !tbaa !11
  br label %1368

1368:                                             ; preds = %1366, %1346
  %1369 = load double, ptr %69, align 8, !tbaa !11
  %1370 = fcmp une double %1369, 1.000000e+00
  br i1 %1370, label %1371, label %1409

1371:                                             ; preds = %1368
  %1372 = load double, ptr %69, align 8, !tbaa !11
  %1373 = load double, ptr %68, align 8, !tbaa !11
  %1374 = fmul double %1372, %1373
  store double %1374, ptr %68, align 8, !tbaa !11
  %1375 = load double, ptr %68, align 8, !tbaa !11
  %1376 = fcmp oge double %1375, 0.000000e+00
  br i1 %1376, label %1377, label %1379

1377:                                             ; preds = %1371
  %1378 = load double, ptr %68, align 8, !tbaa !11
  br label %1382

1379:                                             ; preds = %1371
  %1380 = load double, ptr %68, align 8, !tbaa !11
  %1381 = fneg double %1380
  br label %1382

1382:                                             ; preds = %1379, %1377
  %1383 = phi double [ %1378, %1377 ], [ %1381, %1379 ]
  store double %1383, ptr %88, align 8, !tbaa !11
  %1384 = load double, ptr %69, align 8, !tbaa !11
  %1385 = load double, ptr %100, align 8, !tbaa !11
  %1386 = fmul double %1384, %1385
  store double %1386, ptr %100, align 8, !tbaa !11
  %1387 = load double, ptr %69, align 8, !tbaa !11
  %1388 = load double, ptr %94, align 8, !tbaa !11
  %1389 = fmul double %1387, %1388
  store double %1389, ptr %94, align 8, !tbaa !11
  %1390 = load double, ptr %100, align 8, !tbaa !11
  %1391 = fcmp oge double %1390, 0.000000e+00
  br i1 %1391, label %1392, label %1394

1392:                                             ; preds = %1382
  %1393 = load double, ptr %100, align 8, !tbaa !11
  br label %1397

1394:                                             ; preds = %1382
  %1395 = load double, ptr %100, align 8, !tbaa !11
  %1396 = fneg double %1395
  br label %1397

1397:                                             ; preds = %1394, %1392
  %1398 = phi double [ %1393, %1392 ], [ %1396, %1394 ]
  %1399 = load double, ptr %94, align 8, !tbaa !11
  %1400 = fcmp oge double %1399, 0.000000e+00
  br i1 %1400, label %1401, label %1403

1401:                                             ; preds = %1397
  %1402 = load double, ptr %94, align 8, !tbaa !11
  br label %1406

1403:                                             ; preds = %1397
  %1404 = load double, ptr %94, align 8, !tbaa !11
  %1405 = fneg double %1404
  br label %1406

1406:                                             ; preds = %1403, %1401
  %1407 = phi double [ %1402, %1401 ], [ %1405, %1403 ]
  %1408 = fadd double %1398, %1407
  store double %1408, ptr %89, align 8, !tbaa !11
  br label %1409

1409:                                             ; preds = %1406, %1368
  %1410 = load double, ptr %68, align 8, !tbaa !11
  %1411 = load ptr, ptr %21, align 8, !tbaa !5
  %1412 = load i32, ptr %86, align 4, !tbaa !9
  %1413 = add nsw i32 %1412, 1
  %1414 = load i32, ptr %86, align 4, !tbaa !9
  %1415 = load i32, ptr %35, align 4, !tbaa !9
  %1416 = mul nsw i32 %1414, %1415
  %1417 = add nsw i32 %1413, %1416
  %1418 = sext i32 %1417 to i64
  %1419 = getelementptr inbounds double, ptr %1411, i64 %1418
  %1420 = load double, ptr %1419, align 8, !tbaa !11
  %1421 = fmul double %1410, %1420
  store double %1421, ptr %56, align 8, !tbaa !11
  %1422 = load double, ptr %68, align 8, !tbaa !11
  %1423 = load ptr, ptr %21, align 8, !tbaa !5
  %1424 = load i32, ptr %86, align 4, !tbaa !9
  %1425 = load i32, ptr %86, align 4, !tbaa !9
  %1426 = load i32, ptr %35, align 4, !tbaa !9
  %1427 = mul nsw i32 %1425, %1426
  %1428 = add nsw i32 %1424, %1427
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds double, ptr %1423, i64 %1429
  %1431 = load double, ptr %1430, align 8, !tbaa !11
  %1432 = load double, ptr %100, align 8, !tbaa !11
  %1433 = load ptr, ptr %23, align 8, !tbaa !5
  %1434 = load i32, ptr %86, align 4, !tbaa !9
  %1435 = load i32, ptr %86, align 4, !tbaa !9
  %1436 = load i32, ptr %33, align 4, !tbaa !9
  %1437 = mul nsw i32 %1435, %1436
  %1438 = add nsw i32 %1434, %1437
  %1439 = sext i32 %1438 to i64
  %1440 = getelementptr inbounds double, ptr %1433, i64 %1439
  %1441 = load double, ptr %1440, align 8, !tbaa !11
  %1442 = fmul double %1432, %1441
  %1443 = fneg double %1442
  %1444 = call double @llvm.fmuladd.f64(double %1422, double %1431, double %1443)
  store double %1444, ptr %81, align 8, !tbaa !11
  %1445 = load double, ptr %94, align 8, !tbaa !11
  %1446 = fneg double %1445
  %1447 = load ptr, ptr %23, align 8, !tbaa !5
  %1448 = load i32, ptr %86, align 4, !tbaa !9
  %1449 = load i32, ptr %86, align 4, !tbaa !9
  %1450 = load i32, ptr %33, align 4, !tbaa !9
  %1451 = mul nsw i32 %1449, %1450
  %1452 = add nsw i32 %1448, %1451
  %1453 = sext i32 %1452 to i64
  %1454 = getelementptr inbounds double, ptr %1447, i64 %1453
  %1455 = load double, ptr %1454, align 8, !tbaa !11
  %1456 = fmul double %1446, %1455
  store double %1456, ptr %80, align 8, !tbaa !11
  %1457 = load double, ptr %56, align 8, !tbaa !11
  %1458 = fcmp oge double %1457, 0.000000e+00
  br i1 %1458, label %1459, label %1461

1459:                                             ; preds = %1409
  %1460 = load double, ptr %56, align 8, !tbaa !11
  br label %1464

1461:                                             ; preds = %1409
  %1462 = load double, ptr %56, align 8, !tbaa !11
  %1463 = fneg double %1462
  br label %1464

1464:                                             ; preds = %1461, %1459
  %1465 = phi double [ %1460, %1459 ], [ %1463, %1461 ]
  %1466 = load double, ptr %81, align 8, !tbaa !11
  %1467 = fcmp oge double %1466, 0.000000e+00
  br i1 %1467, label %1468, label %1470

1468:                                             ; preds = %1464
  %1469 = load double, ptr %81, align 8, !tbaa !11
  br label %1473

1470:                                             ; preds = %1464
  %1471 = load double, ptr %81, align 8, !tbaa !11
  %1472 = fneg double %1471
  br label %1473

1473:                                             ; preds = %1470, %1468
  %1474 = phi double [ %1469, %1468 ], [ %1472, %1470 ]
  %1475 = load double, ptr %80, align 8, !tbaa !11
  %1476 = fcmp oge double %1475, 0.000000e+00
  br i1 %1476, label %1477, label %1479

1477:                                             ; preds = %1473
  %1478 = load double, ptr %80, align 8, !tbaa !11
  br label %1482

1479:                                             ; preds = %1473
  %1480 = load double, ptr %80, align 8, !tbaa !11
  %1481 = fneg double %1480
  br label %1482

1482:                                             ; preds = %1479, %1477
  %1483 = phi double [ %1478, %1477 ], [ %1481, %1479 ]
  %1484 = fadd double %1474, %1483
  %1485 = fcmp ogt double %1465, %1484
  br i1 %1485, label %1486, label %1529

1486:                                             ; preds = %1482
  %1487 = load ptr, ptr %31, align 8, !tbaa !5
  %1488 = load ptr, ptr %20, align 8, !tbaa !5
  %1489 = load i32, ptr %1488, align 4, !tbaa !9
  %1490 = shl i32 %1489, 1
  %1491 = load i32, ptr %86, align 4, !tbaa !9
  %1492 = add nsw i32 %1490, %1491
  %1493 = sext i32 %1492 to i64
  %1494 = getelementptr inbounds double, ptr %1487, i64 %1493
  store double 1.000000e+00, ptr %1494, align 8, !tbaa !11
  %1495 = load ptr, ptr %31, align 8, !tbaa !5
  %1496 = load ptr, ptr %20, align 8, !tbaa !5
  %1497 = load i32, ptr %1496, align 4, !tbaa !9
  %1498 = mul nsw i32 %1497, 3
  %1499 = load i32, ptr %86, align 4, !tbaa !9
  %1500 = add nsw i32 %1498, %1499
  %1501 = sext i32 %1500 to i64
  %1502 = getelementptr inbounds double, ptr %1495, i64 %1501
  store double 0.000000e+00, ptr %1502, align 8, !tbaa !11
  %1503 = load double, ptr %81, align 8, !tbaa !11
  %1504 = fneg double %1503
  %1505 = load double, ptr %56, align 8, !tbaa !11
  %1506 = fdiv double %1504, %1505
  %1507 = load ptr, ptr %31, align 8, !tbaa !5
  %1508 = load ptr, ptr %20, align 8, !tbaa !5
  %1509 = load i32, ptr %1508, align 4, !tbaa !9
  %1510 = shl i32 %1509, 1
  %1511 = load i32, ptr %86, align 4, !tbaa !9
  %1512 = add nsw i32 %1510, %1511
  %1513 = add nsw i32 %1512, 1
  %1514 = sext i32 %1513 to i64
  %1515 = getelementptr inbounds double, ptr %1507, i64 %1514
  store double %1506, ptr %1515, align 8, !tbaa !11
  %1516 = load double, ptr %80, align 8, !tbaa !11
  %1517 = fneg double %1516
  %1518 = load double, ptr %56, align 8, !tbaa !11
  %1519 = fdiv double %1517, %1518
  %1520 = load ptr, ptr %31, align 8, !tbaa !5
  %1521 = load ptr, ptr %20, align 8, !tbaa !5
  %1522 = load i32, ptr %1521, align 4, !tbaa !9
  %1523 = mul nsw i32 %1522, 3
  %1524 = load i32, ptr %86, align 4, !tbaa !9
  %1525 = add nsw i32 %1523, %1524
  %1526 = add nsw i32 %1525, 1
  %1527 = sext i32 %1526 to i64
  %1528 = getelementptr inbounds double, ptr %1520, i64 %1527
  store double %1519, ptr %1528, align 8, !tbaa !11
  br label %1620

1529:                                             ; preds = %1482
  %1530 = load ptr, ptr %31, align 8, !tbaa !5
  %1531 = load ptr, ptr %20, align 8, !tbaa !5
  %1532 = load i32, ptr %1531, align 4, !tbaa !9
  %1533 = shl i32 %1532, 1
  %1534 = load i32, ptr %86, align 4, !tbaa !9
  %1535 = add nsw i32 %1533, %1534
  %1536 = add nsw i32 %1535, 1
  %1537 = sext i32 %1536 to i64
  %1538 = getelementptr inbounds double, ptr %1530, i64 %1537
  store double 1.000000e+00, ptr %1538, align 8, !tbaa !11
  %1539 = load ptr, ptr %31, align 8, !tbaa !5
  %1540 = load ptr, ptr %20, align 8, !tbaa !5
  %1541 = load i32, ptr %1540, align 4, !tbaa !9
  %1542 = mul nsw i32 %1541, 3
  %1543 = load i32, ptr %86, align 4, !tbaa !9
  %1544 = add nsw i32 %1542, %1543
  %1545 = add nsw i32 %1544, 1
  %1546 = sext i32 %1545 to i64
  %1547 = getelementptr inbounds double, ptr %1539, i64 %1546
  store double 0.000000e+00, ptr %1547, align 8, !tbaa !11
  %1548 = load double, ptr %68, align 8, !tbaa !11
  %1549 = load ptr, ptr %21, align 8, !tbaa !5
  %1550 = load i32, ptr %86, align 4, !tbaa !9
  %1551 = load i32, ptr %86, align 4, !tbaa !9
  %1552 = add nsw i32 %1551, 1
  %1553 = load i32, ptr %35, align 4, !tbaa !9
  %1554 = mul nsw i32 %1552, %1553
  %1555 = add nsw i32 %1550, %1554
  %1556 = sext i32 %1555 to i64
  %1557 = getelementptr inbounds double, ptr %1549, i64 %1556
  %1558 = load double, ptr %1557, align 8, !tbaa !11
  %1559 = fmul double %1548, %1558
  store double %1559, ptr %56, align 8, !tbaa !11
  %1560 = load double, ptr %100, align 8, !tbaa !11
  %1561 = load ptr, ptr %23, align 8, !tbaa !5
  %1562 = load i32, ptr %86, align 4, !tbaa !9
  %1563 = add nsw i32 %1562, 1
  %1564 = load i32, ptr %86, align 4, !tbaa !9
  %1565 = add nsw i32 %1564, 1
  %1566 = load i32, ptr %33, align 4, !tbaa !9
  %1567 = mul nsw i32 %1565, %1566
  %1568 = add nsw i32 %1563, %1567
  %1569 = sext i32 %1568 to i64
  %1570 = getelementptr inbounds double, ptr %1561, i64 %1569
  %1571 = load double, ptr %1570, align 8, !tbaa !11
  %1572 = load double, ptr %68, align 8, !tbaa !11
  %1573 = load ptr, ptr %21, align 8, !tbaa !5
  %1574 = load i32, ptr %86, align 4, !tbaa !9
  %1575 = add nsw i32 %1574, 1
  %1576 = load i32, ptr %86, align 4, !tbaa !9
  %1577 = add nsw i32 %1576, 1
  %1578 = load i32, ptr %35, align 4, !tbaa !9
  %1579 = mul nsw i32 %1577, %1578
  %1580 = add nsw i32 %1575, %1579
  %1581 = sext i32 %1580 to i64
  %1582 = getelementptr inbounds double, ptr %1573, i64 %1581
  %1583 = load double, ptr %1582, align 8, !tbaa !11
  %1584 = fmul double %1572, %1583
  %1585 = fneg double %1584
  %1586 = call double @llvm.fmuladd.f64(double %1560, double %1571, double %1585)
  %1587 = load double, ptr %56, align 8, !tbaa !11
  %1588 = fdiv double %1586, %1587
  %1589 = load ptr, ptr %31, align 8, !tbaa !5
  %1590 = load ptr, ptr %20, align 8, !tbaa !5
  %1591 = load i32, ptr %1590, align 4, !tbaa !9
  %1592 = shl i32 %1591, 1
  %1593 = load i32, ptr %86, align 4, !tbaa !9
  %1594 = add nsw i32 %1592, %1593
  %1595 = sext i32 %1594 to i64
  %1596 = getelementptr inbounds double, ptr %1589, i64 %1595
  store double %1588, ptr %1596, align 8, !tbaa !11
  %1597 = load double, ptr %94, align 8, !tbaa !11
  %1598 = load ptr, ptr %23, align 8, !tbaa !5
  %1599 = load i32, ptr %86, align 4, !tbaa !9
  %1600 = add nsw i32 %1599, 1
  %1601 = load i32, ptr %86, align 4, !tbaa !9
  %1602 = add nsw i32 %1601, 1
  %1603 = load i32, ptr %33, align 4, !tbaa !9
  %1604 = mul nsw i32 %1602, %1603
  %1605 = add nsw i32 %1600, %1604
  %1606 = sext i32 %1605 to i64
  %1607 = getelementptr inbounds double, ptr %1598, i64 %1606
  %1608 = load double, ptr %1607, align 8, !tbaa !11
  %1609 = fmul double %1597, %1608
  %1610 = load double, ptr %56, align 8, !tbaa !11
  %1611 = fdiv double %1609, %1610
  %1612 = load ptr, ptr %31, align 8, !tbaa !5
  %1613 = load ptr, ptr %20, align 8, !tbaa !5
  %1614 = load i32, ptr %1613, align 4, !tbaa !9
  %1615 = mul nsw i32 %1614, 3
  %1616 = load i32, ptr %86, align 4, !tbaa !9
  %1617 = add nsw i32 %1615, %1616
  %1618 = sext i32 %1617 to i64
  %1619 = getelementptr inbounds double, ptr %1612, i64 %1618
  store double %1611, ptr %1619, align 8, !tbaa !11
  br label %1620

1620:                                             ; preds = %1529, %1486
  %1621 = load ptr, ptr %31, align 8, !tbaa !5
  %1622 = load ptr, ptr %20, align 8, !tbaa !5
  %1623 = load i32, ptr %1622, align 4, !tbaa !9
  %1624 = shl i32 %1623, 1
  %1625 = load i32, ptr %86, align 4, !tbaa !9
  %1626 = add nsw i32 %1624, %1625
  %1627 = sext i32 %1626 to i64
  %1628 = getelementptr inbounds double, ptr %1621, i64 %1627
  %1629 = load double, ptr %1628, align 8, !tbaa !11
  store double %1629, ptr %46, align 8, !tbaa !11
  %1630 = load double, ptr %46, align 8, !tbaa !11
  %1631 = fcmp oge double %1630, 0.000000e+00
  br i1 %1631, label %1632, label %1634

1632:                                             ; preds = %1620
  %1633 = load double, ptr %46, align 8, !tbaa !11
  br label %1637

1634:                                             ; preds = %1620
  %1635 = load double, ptr %46, align 8, !tbaa !11
  %1636 = fneg double %1635
  br label %1637

1637:                                             ; preds = %1634, %1632
  %1638 = phi double [ %1633, %1632 ], [ %1636, %1634 ]
  %1639 = load ptr, ptr %31, align 8, !tbaa !5
  %1640 = load ptr, ptr %20, align 8, !tbaa !5
  %1641 = load i32, ptr %1640, align 4, !tbaa !9
  %1642 = mul nsw i32 %1641, 3
  %1643 = load i32, ptr %86, align 4, !tbaa !9
  %1644 = add nsw i32 %1642, %1643
  %1645 = sext i32 %1644 to i64
  %1646 = getelementptr inbounds double, ptr %1639, i64 %1645
  %1647 = load double, ptr %1646, align 8, !tbaa !11
  store double %1647, ptr %47, align 8, !tbaa !11
  %1648 = load double, ptr %47, align 8, !tbaa !11
  %1649 = fcmp oge double %1648, 0.000000e+00
  br i1 %1649, label %1650, label %1652

1650:                                             ; preds = %1637
  %1651 = load double, ptr %47, align 8, !tbaa !11
  br label %1655

1652:                                             ; preds = %1637
  %1653 = load double, ptr %47, align 8, !tbaa !11
  %1654 = fneg double %1653
  br label %1655

1655:                                             ; preds = %1652, %1650
  %1656 = phi double [ %1651, %1650 ], [ %1654, %1652 ]
  %1657 = fadd double %1638, %1656
  store double %1657, ptr %50, align 8, !tbaa !11
  %1658 = load ptr, ptr %31, align 8, !tbaa !5
  %1659 = load ptr, ptr %20, align 8, !tbaa !5
  %1660 = load i32, ptr %1659, align 4, !tbaa !9
  %1661 = shl i32 %1660, 1
  %1662 = load i32, ptr %86, align 4, !tbaa !9
  %1663 = add nsw i32 %1661, %1662
  %1664 = add nsw i32 %1663, 1
  %1665 = sext i32 %1664 to i64
  %1666 = getelementptr inbounds double, ptr %1658, i64 %1665
  %1667 = load double, ptr %1666, align 8, !tbaa !11
  store double %1667, ptr %48, align 8, !tbaa !11
  %1668 = load double, ptr %48, align 8, !tbaa !11
  %1669 = fcmp oge double %1668, 0.000000e+00
  br i1 %1669, label %1670, label %1672

1670:                                             ; preds = %1655
  %1671 = load double, ptr %48, align 8, !tbaa !11
  br label %1675

1672:                                             ; preds = %1655
  %1673 = load double, ptr %48, align 8, !tbaa !11
  %1674 = fneg double %1673
  br label %1675

1675:                                             ; preds = %1672, %1670
  %1676 = phi double [ %1671, %1670 ], [ %1674, %1672 ]
  %1677 = load ptr, ptr %31, align 8, !tbaa !5
  %1678 = load ptr, ptr %20, align 8, !tbaa !5
  %1679 = load i32, ptr %1678, align 4, !tbaa !9
  %1680 = mul nsw i32 %1679, 3
  %1681 = load i32, ptr %86, align 4, !tbaa !9
  %1682 = add nsw i32 %1680, %1681
  %1683 = add nsw i32 %1682, 1
  %1684 = sext i32 %1683 to i64
  %1685 = getelementptr inbounds double, ptr %1677, i64 %1684
  %1686 = load double, ptr %1685, align 8, !tbaa !11
  store double %1686, ptr %49, align 8, !tbaa !11
  %1687 = load double, ptr %49, align 8, !tbaa !11
  %1688 = fcmp oge double %1687, 0.000000e+00
  br i1 %1688, label %1689, label %1691

1689:                                             ; preds = %1675
  %1690 = load double, ptr %49, align 8, !tbaa !11
  br label %1694

1691:                                             ; preds = %1675
  %1692 = load double, ptr %49, align 8, !tbaa !11
  %1693 = fneg double %1692
  br label %1694

1694:                                             ; preds = %1691, %1689
  %1695 = phi double [ %1690, %1689 ], [ %1693, %1691 ]
  %1696 = fadd double %1676, %1695
  store double %1696, ptr %51, align 8, !tbaa !11
  %1697 = load double, ptr %50, align 8, !tbaa !11
  %1698 = load double, ptr %51, align 8, !tbaa !11
  %1699 = fcmp oge double %1697, %1698
  br i1 %1699, label %1700, label %1702

1700:                                             ; preds = %1694
  %1701 = load double, ptr %50, align 8, !tbaa !11
  br label %1704

1702:                                             ; preds = %1694
  %1703 = load double, ptr %51, align 8, !tbaa !11
  br label %1704

1704:                                             ; preds = %1702, %1700
  %1705 = phi double [ %1701, %1700 ], [ %1703, %1702 ]
  store double %1705, ptr %57, align 8, !tbaa !11
  br label %1706

1706:                                             ; preds = %1704, %1226
  %1707 = load double, ptr %113, align 8, !tbaa !11
  %1708 = load double, ptr %88, align 8, !tbaa !11
  %1709 = fmul double %1707, %1708
  %1710 = load double, ptr %77, align 8, !tbaa !11
  %1711 = fmul double %1709, %1710
  store double %1711, ptr %46, align 8, !tbaa !11
  %1712 = load double, ptr %113, align 8, !tbaa !11
  %1713 = load double, ptr %89, align 8, !tbaa !11
  %1714 = fmul double %1712, %1713
  %1715 = load double, ptr %78, align 8, !tbaa !11
  %1716 = fmul double %1714, %1715
  store double %1716, ptr %47, align 8, !tbaa !11
  %1717 = load double, ptr %46, align 8, !tbaa !11
  %1718 = load double, ptr %47, align 8, !tbaa !11
  %1719 = fcmp oge double %1717, %1718
  br i1 %1719, label %1720, label %1722

1720:                                             ; preds = %1706
  %1721 = load double, ptr %46, align 8, !tbaa !11
  br label %1724

1722:                                             ; preds = %1706
  %1723 = load double, ptr %47, align 8, !tbaa !11
  br label %1724

1724:                                             ; preds = %1722, %1720
  %1725 = phi double [ %1721, %1720 ], [ %1723, %1722 ]
  store double %1725, ptr %46, align 8, !tbaa !11
  %1726 = load double, ptr %46, align 8, !tbaa !11
  %1727 = load double, ptr %104, align 8, !tbaa !11
  %1728 = fcmp oge double %1726, %1727
  br i1 %1728, label %1729, label %1731

1729:                                             ; preds = %1724
  %1730 = load double, ptr %46, align 8, !tbaa !11
  br label %1733

1731:                                             ; preds = %1724
  %1732 = load double, ptr %104, align 8, !tbaa !11
  br label %1733

1733:                                             ; preds = %1731, %1729
  %1734 = phi double [ %1730, %1729 ], [ %1732, %1731 ]
  store double %1734, ptr %55, align 8, !tbaa !11
  store i32 0, ptr %73, align 4, !tbaa !9
  %1735 = load ptr, ptr %20, align 8, !tbaa !5
  %1736 = load i32, ptr %1735, align 4, !tbaa !9
  store i32 %1736, ptr %42, align 4, !tbaa !9
  %1737 = load i32, ptr %86, align 4, !tbaa !9
  %1738 = load i32, ptr %102, align 4, !tbaa !9
  %1739 = add nsw i32 %1737, %1738
  store i32 %1739, ptr %67, align 4, !tbaa !9
  br label %1740

1740:                                             ; preds = %2249, %1733
  %1741 = load i32, ptr %67, align 4, !tbaa !9
  %1742 = load i32, ptr %42, align 4, !tbaa !9
  %1743 = icmp sle i32 %1741, %1742
  br i1 %1743, label %1744, label %2252

1744:                                             ; preds = %1740
  %1745 = load i32, ptr %73, align 4, !tbaa !9
  %1746 = icmp ne i32 %1745, 0
  br i1 %1746, label %1747, label %1748

1747:                                             ; preds = %1744
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %2248

1748:                                             ; preds = %1744
  store i32 1, ptr %87, align 4, !tbaa !9
  %1749 = load ptr, ptr %23, align 8, !tbaa !5
  %1750 = load i32, ptr %67, align 4, !tbaa !9
  %1751 = load i32, ptr %67, align 4, !tbaa !9
  %1752 = load i32, ptr %33, align 4, !tbaa !9
  %1753 = mul nsw i32 %1751, %1752
  %1754 = add nsw i32 %1750, %1753
  %1755 = sext i32 %1754 to i64
  %1756 = getelementptr inbounds double, ptr %1749, i64 %1755
  %1757 = load double, ptr %1756, align 8, !tbaa !11
  %1758 = getelementptr inbounds [2 x double], ptr %65, i64 0, i64 0
  store double %1757, ptr %1758, align 16, !tbaa !11
  %1759 = load i32, ptr %67, align 4, !tbaa !9
  %1760 = load ptr, ptr %20, align 8, !tbaa !5
  %1761 = load i32, ptr %1760, align 4, !tbaa !9
  %1762 = icmp slt i32 %1759, %1761
  br i1 %1762, label %1763, label %1789

1763:                                             ; preds = %1748
  %1764 = load ptr, ptr %21, align 8, !tbaa !5
  %1765 = load i32, ptr %67, align 4, !tbaa !9
  %1766 = add nsw i32 %1765, 1
  %1767 = load i32, ptr %67, align 4, !tbaa !9
  %1768 = load i32, ptr %35, align 4, !tbaa !9
  %1769 = mul nsw i32 %1767, %1768
  %1770 = add nsw i32 %1766, %1769
  %1771 = sext i32 %1770 to i64
  %1772 = getelementptr inbounds double, ptr %1764, i64 %1771
  %1773 = load double, ptr %1772, align 8, !tbaa !11
  %1774 = fcmp une double %1773, 0.000000e+00
  br i1 %1774, label %1775, label %1788

1775:                                             ; preds = %1763
  store i32 1, ptr %73, align 4, !tbaa !9
  %1776 = load ptr, ptr %23, align 8, !tbaa !5
  %1777 = load i32, ptr %67, align 4, !tbaa !9
  %1778 = add nsw i32 %1777, 1
  %1779 = load i32, ptr %67, align 4, !tbaa !9
  %1780 = add nsw i32 %1779, 1
  %1781 = load i32, ptr %33, align 4, !tbaa !9
  %1782 = mul nsw i32 %1780, %1781
  %1783 = add nsw i32 %1778, %1782
  %1784 = sext i32 %1783 to i64
  %1785 = getelementptr inbounds double, ptr %1776, i64 %1784
  %1786 = load double, ptr %1785, align 8, !tbaa !11
  %1787 = getelementptr inbounds [2 x double], ptr %65, i64 0, i64 1
  store double %1786, ptr %1787, align 8, !tbaa !11
  store i32 2, ptr %87, align 4, !tbaa !9
  br label %1788

1788:                                             ; preds = %1775, %1763
  br label %1789

1789:                                             ; preds = %1788, %1748
  %1790 = load double, ptr %57, align 8, !tbaa !11
  %1791 = fcmp oge double 1.000000e+00, %1790
  br i1 %1791, label %1792, label %1793

1792:                                             ; preds = %1789
  br label %1795

1793:                                             ; preds = %1789
  %1794 = load double, ptr %57, align 8, !tbaa !11
  br label %1795

1795:                                             ; preds = %1793, %1792
  %1796 = phi double [ 1.000000e+00, %1792 ], [ %1794, %1793 ]
  %1797 = fdiv double 1.000000e+00, %1796
  store double %1797, ptr %105, align 8, !tbaa !11
  %1798 = load ptr, ptr %31, align 8, !tbaa !5
  %1799 = load i32, ptr %67, align 4, !tbaa !9
  %1800 = sext i32 %1799 to i64
  %1801 = getelementptr inbounds double, ptr %1798, i64 %1800
  %1802 = load double, ptr %1801, align 8, !tbaa !11
  store double %1802, ptr %46, align 8, !tbaa !11
  %1803 = load ptr, ptr %31, align 8, !tbaa !5
  %1804 = load ptr, ptr %20, align 8, !tbaa !5
  %1805 = load i32, ptr %1804, align 4, !tbaa !9
  %1806 = load i32, ptr %67, align 4, !tbaa !9
  %1807 = add nsw i32 %1805, %1806
  %1808 = sext i32 %1807 to i64
  %1809 = getelementptr inbounds double, ptr %1803, i64 %1808
  %1810 = load double, ptr %1809, align 8, !tbaa !11
  store double %1810, ptr %47, align 8, !tbaa !11
  %1811 = load double, ptr %46, align 8, !tbaa !11
  %1812 = load double, ptr %47, align 8, !tbaa !11
  %1813 = fcmp oge double %1811, %1812
  br i1 %1813, label %1814, label %1816

1814:                                             ; preds = %1795
  %1815 = load double, ptr %46, align 8, !tbaa !11
  br label %1818

1816:                                             ; preds = %1795
  %1817 = load double, ptr %47, align 8, !tbaa !11
  br label %1818

1818:                                             ; preds = %1816, %1814
  %1819 = phi double [ %1815, %1814 ], [ %1817, %1816 ]
  store double %1819, ptr %46, align 8, !tbaa !11
  %1820 = load double, ptr %88, align 8, !tbaa !11
  %1821 = load ptr, ptr %31, align 8, !tbaa !5
  %1822 = load i32, ptr %67, align 4, !tbaa !9
  %1823 = sext i32 %1822 to i64
  %1824 = getelementptr inbounds double, ptr %1821, i64 %1823
  %1825 = load double, ptr %1824, align 8, !tbaa !11
  %1826 = load double, ptr %89, align 8, !tbaa !11
  %1827 = load ptr, ptr %31, align 8, !tbaa !5
  %1828 = load ptr, ptr %20, align 8, !tbaa !5
  %1829 = load i32, ptr %1828, align 4, !tbaa !9
  %1830 = load i32, ptr %67, align 4, !tbaa !9
  %1831 = add nsw i32 %1829, %1830
  %1832 = sext i32 %1831 to i64
  %1833 = getelementptr inbounds double, ptr %1827, i64 %1832
  %1834 = load double, ptr %1833, align 8, !tbaa !11
  %1835 = fmul double %1826, %1834
  %1836 = call double @llvm.fmuladd.f64(double %1820, double %1825, double %1835)
  store double %1836, ptr %47, align 8, !tbaa !11
  %1837 = load double, ptr %46, align 8, !tbaa !11
  %1838 = load double, ptr %47, align 8, !tbaa !11
  %1839 = fcmp oge double %1837, %1838
  br i1 %1839, label %1840, label %1842

1840:                                             ; preds = %1818
  %1841 = load double, ptr %46, align 8, !tbaa !11
  br label %1844

1842:                                             ; preds = %1818
  %1843 = load double, ptr %47, align 8, !tbaa !11
  br label %1844

1844:                                             ; preds = %1842, %1840
  %1845 = phi double [ %1841, %1840 ], [ %1843, %1842 ]
  store double %1845, ptr %56, align 8, !tbaa !11
  %1846 = load i32, ptr %73, align 4, !tbaa !9
  %1847 = icmp ne i32 %1846, 0
  br i1 %1847, label %1848, label %1911

1848:                                             ; preds = %1844
  %1849 = load double, ptr %56, align 8, !tbaa !11
  store double %1849, ptr %46, align 8, !tbaa !11
  %1850 = load ptr, ptr %31, align 8, !tbaa !5
  %1851 = load i32, ptr %67, align 4, !tbaa !9
  %1852 = add nsw i32 %1851, 1
  %1853 = sext i32 %1852 to i64
  %1854 = getelementptr inbounds double, ptr %1850, i64 %1853
  %1855 = load double, ptr %1854, align 8, !tbaa !11
  store double %1855, ptr %47, align 8, !tbaa !11
  %1856 = load double, ptr %46, align 8, !tbaa !11
  %1857 = load double, ptr %47, align 8, !tbaa !11
  %1858 = fcmp oge double %1856, %1857
  br i1 %1858, label %1859, label %1861

1859:                                             ; preds = %1848
  %1860 = load double, ptr %46, align 8, !tbaa !11
  br label %1863

1861:                                             ; preds = %1848
  %1862 = load double, ptr %47, align 8, !tbaa !11
  br label %1863

1863:                                             ; preds = %1861, %1859
  %1864 = phi double [ %1860, %1859 ], [ %1862, %1861 ]
  store double %1864, ptr %46, align 8, !tbaa !11
  %1865 = load ptr, ptr %31, align 8, !tbaa !5
  %1866 = load ptr, ptr %20, align 8, !tbaa !5
  %1867 = load i32, ptr %1866, align 4, !tbaa !9
  %1868 = load i32, ptr %67, align 4, !tbaa !9
  %1869 = add nsw i32 %1867, %1868
  %1870 = add nsw i32 %1869, 1
  %1871 = sext i32 %1870 to i64
  %1872 = getelementptr inbounds double, ptr %1865, i64 %1871
  %1873 = load double, ptr %1872, align 8, !tbaa !11
  store double %1873, ptr %47, align 8, !tbaa !11
  %1874 = load double, ptr %46, align 8, !tbaa !11
  %1875 = load double, ptr %47, align 8, !tbaa !11
  %1876 = fcmp oge double %1874, %1875
  br i1 %1876, label %1877, label %1879

1877:                                             ; preds = %1863
  %1878 = load double, ptr %46, align 8, !tbaa !11
  br label %1881

1879:                                             ; preds = %1863
  %1880 = load double, ptr %47, align 8, !tbaa !11
  br label %1881

1881:                                             ; preds = %1879, %1877
  %1882 = phi double [ %1878, %1877 ], [ %1880, %1879 ]
  store double %1882, ptr %46, align 8, !tbaa !11
  %1883 = load double, ptr %88, align 8, !tbaa !11
  %1884 = load ptr, ptr %31, align 8, !tbaa !5
  %1885 = load i32, ptr %67, align 4, !tbaa !9
  %1886 = add nsw i32 %1885, 1
  %1887 = sext i32 %1886 to i64
  %1888 = getelementptr inbounds double, ptr %1884, i64 %1887
  %1889 = load double, ptr %1888, align 8, !tbaa !11
  %1890 = load double, ptr %89, align 8, !tbaa !11
  %1891 = load ptr, ptr %31, align 8, !tbaa !5
  %1892 = load ptr, ptr %20, align 8, !tbaa !5
  %1893 = load i32, ptr %1892, align 4, !tbaa !9
  %1894 = load i32, ptr %67, align 4, !tbaa !9
  %1895 = add nsw i32 %1893, %1894
  %1896 = add nsw i32 %1895, 1
  %1897 = sext i32 %1896 to i64
  %1898 = getelementptr inbounds double, ptr %1891, i64 %1897
  %1899 = load double, ptr %1898, align 8, !tbaa !11
  %1900 = fmul double %1890, %1899
  %1901 = call double @llvm.fmuladd.f64(double %1883, double %1889, double %1900)
  store double %1901, ptr %47, align 8, !tbaa !11
  %1902 = load double, ptr %46, align 8, !tbaa !11
  %1903 = load double, ptr %47, align 8, !tbaa !11
  %1904 = fcmp oge double %1902, %1903
  br i1 %1904, label %1905, label %1907

1905:                                             ; preds = %1881
  %1906 = load double, ptr %46, align 8, !tbaa !11
  br label %1909

1907:                                             ; preds = %1881
  %1908 = load double, ptr %47, align 8, !tbaa !11
  br label %1909

1909:                                             ; preds = %1907, %1905
  %1910 = phi double [ %1906, %1905 ], [ %1908, %1907 ]
  store double %1910, ptr %56, align 8, !tbaa !11
  br label %1911

1911:                                             ; preds = %1909, %1844
  %1912 = load double, ptr %56, align 8, !tbaa !11
  %1913 = load double, ptr %106, align 8, !tbaa !11
  %1914 = load double, ptr %105, align 8, !tbaa !11
  %1915 = fmul double %1913, %1914
  %1916 = fcmp ogt double %1912, %1915
  br i1 %1916, label %1917, label %1967

1917:                                             ; preds = %1911
  %1918 = load i32, ptr %102, align 4, !tbaa !9
  %1919 = sub nsw i32 %1918, 1
  store i32 %1919, ptr %43, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %1920

1920:                                             ; preds = %1960, %1917
  %1921 = load i32, ptr %101, align 4, !tbaa !9
  %1922 = load i32, ptr %43, align 4, !tbaa !9
  %1923 = icmp sle i32 %1921, %1922
  br i1 %1923, label %1924, label %1963

1924:                                             ; preds = %1920
  %1925 = load i32, ptr %67, align 4, !tbaa !9
  %1926 = sub nsw i32 %1925, 1
  store i32 %1926, ptr %44, align 4, !tbaa !9
  %1927 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %1927, ptr %98, align 4, !tbaa !9
  br label %1928

1928:                                             ; preds = %1956, %1924
  %1929 = load i32, ptr %98, align 4, !tbaa !9
  %1930 = load i32, ptr %44, align 4, !tbaa !9
  %1931 = icmp sle i32 %1929, %1930
  br i1 %1931, label %1932, label %1959

1932:                                             ; preds = %1928
  %1933 = load double, ptr %105, align 8, !tbaa !11
  %1934 = load ptr, ptr %31, align 8, !tbaa !5
  %1935 = load i32, ptr %101, align 4, !tbaa !9
  %1936 = add nsw i32 %1935, 2
  %1937 = load ptr, ptr %20, align 8, !tbaa !5
  %1938 = load i32, ptr %1937, align 4, !tbaa !9
  %1939 = mul nsw i32 %1936, %1938
  %1940 = load i32, ptr %98, align 4, !tbaa !9
  %1941 = add nsw i32 %1939, %1940
  %1942 = sext i32 %1941 to i64
  %1943 = getelementptr inbounds double, ptr %1934, i64 %1942
  %1944 = load double, ptr %1943, align 8, !tbaa !11
  %1945 = fmul double %1933, %1944
  %1946 = load ptr, ptr %31, align 8, !tbaa !5
  %1947 = load i32, ptr %101, align 4, !tbaa !9
  %1948 = add nsw i32 %1947, 2
  %1949 = load ptr, ptr %20, align 8, !tbaa !5
  %1950 = load i32, ptr %1949, align 4, !tbaa !9
  %1951 = mul nsw i32 %1948, %1950
  %1952 = load i32, ptr %98, align 4, !tbaa !9
  %1953 = add nsw i32 %1951, %1952
  %1954 = sext i32 %1953 to i64
  %1955 = getelementptr inbounds double, ptr %1946, i64 %1954
  store double %1945, ptr %1955, align 8, !tbaa !11
  br label %1956

1956:                                             ; preds = %1932
  %1957 = load i32, ptr %98, align 4, !tbaa !9
  %1958 = add nsw i32 %1957, 1
  store i32 %1958, ptr %98, align 4, !tbaa !9
  br label %1928, !llvm.loop !21

1959:                                             ; preds = %1928
  br label %1960

1960:                                             ; preds = %1959
  %1961 = load i32, ptr %101, align 4, !tbaa !9
  %1962 = add nsw i32 %1961, 1
  store i32 %1962, ptr %101, align 4, !tbaa !9
  br label %1920, !llvm.loop !22

1963:                                             ; preds = %1920
  %1964 = load double, ptr %105, align 8, !tbaa !11
  %1965 = load double, ptr %57, align 8, !tbaa !11
  %1966 = fmul double %1965, %1964
  store double %1966, ptr %57, align 8, !tbaa !11
  br label %1967

1967:                                             ; preds = %1963, %1911
  %1968 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %1968, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %101, align 4, !tbaa !9
  br label %1969

1969:                                             ; preds = %2074, %1967
  %1970 = load i32, ptr %101, align 4, !tbaa !9
  %1971 = load i32, ptr %43, align 4, !tbaa !9
  %1972 = icmp sle i32 %1970, %1971
  br i1 %1972, label %1973, label %2077

1973:                                             ; preds = %1969
  %1974 = load i32, ptr %87, align 4, !tbaa !9
  store i32 %1974, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %1975

1975:                                             ; preds = %2070, %1973
  %1976 = load i32, ptr %82, align 4, !tbaa !9
  %1977 = load i32, ptr %44, align 4, !tbaa !9
  %1978 = icmp sle i32 %1976, %1977
  br i1 %1978, label %1979, label %2073

1979:                                             ; preds = %1975
  %1980 = load i32, ptr %82, align 4, !tbaa !9
  %1981 = load i32, ptr %101, align 4, !tbaa !9
  %1982 = shl i32 %1981, 1
  %1983 = add nsw i32 %1980, %1982
  %1984 = sub nsw i32 %1983, 3
  %1985 = sext i32 %1984 to i64
  %1986 = getelementptr inbounds [4 x double], ptr %59, i64 0, i64 %1985
  store double 0.000000e+00, ptr %1986, align 8, !tbaa !11
  %1987 = load i32, ptr %82, align 4, !tbaa !9
  %1988 = load i32, ptr %101, align 4, !tbaa !9
  %1989 = shl i32 %1988, 1
  %1990 = add nsw i32 %1987, %1989
  %1991 = sub nsw i32 %1990, 3
  %1992 = sext i32 %1991 to i64
  %1993 = getelementptr inbounds [4 x double], ptr %58, i64 0, i64 %1992
  store double 0.000000e+00, ptr %1993, align 8, !tbaa !11
  %1994 = load i32, ptr %67, align 4, !tbaa !9
  %1995 = sub nsw i32 %1994, 1
  store i32 %1995, ptr %45, align 4, !tbaa !9
  %1996 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %1996, ptr %98, align 4, !tbaa !9
  br label %1997

1997:                                             ; preds = %2066, %1979
  %1998 = load i32, ptr %98, align 4, !tbaa !9
  %1999 = load i32, ptr %45, align 4, !tbaa !9
  %2000 = icmp sle i32 %1998, %1999
  br i1 %2000, label %2001, label %2069

2001:                                             ; preds = %1997
  %2002 = load ptr, ptr %21, align 8, !tbaa !5
  %2003 = load i32, ptr %98, align 4, !tbaa !9
  %2004 = load i32, ptr %67, align 4, !tbaa !9
  %2005 = load i32, ptr %82, align 4, !tbaa !9
  %2006 = add nsw i32 %2004, %2005
  %2007 = sub nsw i32 %2006, 1
  %2008 = load i32, ptr %35, align 4, !tbaa !9
  %2009 = mul nsw i32 %2007, %2008
  %2010 = add nsw i32 %2003, %2009
  %2011 = sext i32 %2010 to i64
  %2012 = getelementptr inbounds double, ptr %2002, i64 %2011
  %2013 = load double, ptr %2012, align 8, !tbaa !11
  %2014 = load ptr, ptr %31, align 8, !tbaa !5
  %2015 = load i32, ptr %101, align 4, !tbaa !9
  %2016 = add nsw i32 %2015, 1
  %2017 = load ptr, ptr %20, align 8, !tbaa !5
  %2018 = load i32, ptr %2017, align 4, !tbaa !9
  %2019 = mul nsw i32 %2016, %2018
  %2020 = load i32, ptr %98, align 4, !tbaa !9
  %2021 = add nsw i32 %2019, %2020
  %2022 = sext i32 %2021 to i64
  %2023 = getelementptr inbounds double, ptr %2014, i64 %2022
  %2024 = load double, ptr %2023, align 8, !tbaa !11
  %2025 = load i32, ptr %82, align 4, !tbaa !9
  %2026 = load i32, ptr %101, align 4, !tbaa !9
  %2027 = shl i32 %2026, 1
  %2028 = add nsw i32 %2025, %2027
  %2029 = sub nsw i32 %2028, 3
  %2030 = sext i32 %2029 to i64
  %2031 = getelementptr inbounds [4 x double], ptr %59, i64 0, i64 %2030
  %2032 = load double, ptr %2031, align 8, !tbaa !11
  %2033 = call double @llvm.fmuladd.f64(double %2013, double %2024, double %2032)
  store double %2033, ptr %2031, align 8, !tbaa !11
  %2034 = load ptr, ptr %23, align 8, !tbaa !5
  %2035 = load i32, ptr %98, align 4, !tbaa !9
  %2036 = load i32, ptr %67, align 4, !tbaa !9
  %2037 = load i32, ptr %82, align 4, !tbaa !9
  %2038 = add nsw i32 %2036, %2037
  %2039 = sub nsw i32 %2038, 1
  %2040 = load i32, ptr %33, align 4, !tbaa !9
  %2041 = mul nsw i32 %2039, %2040
  %2042 = add nsw i32 %2035, %2041
  %2043 = sext i32 %2042 to i64
  %2044 = getelementptr inbounds double, ptr %2034, i64 %2043
  %2045 = load double, ptr %2044, align 8, !tbaa !11
  %2046 = load ptr, ptr %31, align 8, !tbaa !5
  %2047 = load i32, ptr %101, align 4, !tbaa !9
  %2048 = add nsw i32 %2047, 1
  %2049 = load ptr, ptr %20, align 8, !tbaa !5
  %2050 = load i32, ptr %2049, align 4, !tbaa !9
  %2051 = mul nsw i32 %2048, %2050
  %2052 = load i32, ptr %98, align 4, !tbaa !9
  %2053 = add nsw i32 %2051, %2052
  %2054 = sext i32 %2053 to i64
  %2055 = getelementptr inbounds double, ptr %2046, i64 %2054
  %2056 = load double, ptr %2055, align 8, !tbaa !11
  %2057 = load i32, ptr %82, align 4, !tbaa !9
  %2058 = load i32, ptr %101, align 4, !tbaa !9
  %2059 = shl i32 %2058, 1
  %2060 = add nsw i32 %2057, %2059
  %2061 = sub nsw i32 %2060, 3
  %2062 = sext i32 %2061 to i64
  %2063 = getelementptr inbounds [4 x double], ptr %58, i64 0, i64 %2062
  %2064 = load double, ptr %2063, align 8, !tbaa !11
  %2065 = call double @llvm.fmuladd.f64(double %2045, double %2056, double %2064)
  store double %2065, ptr %2063, align 8, !tbaa !11
  br label %2066

2066:                                             ; preds = %2001
  %2067 = load i32, ptr %98, align 4, !tbaa !9
  %2068 = add nsw i32 %2067, 1
  store i32 %2068, ptr %98, align 4, !tbaa !9
  br label %1997, !llvm.loop !23

2069:                                             ; preds = %1997
  br label %2070

2070:                                             ; preds = %2069
  %2071 = load i32, ptr %82, align 4, !tbaa !9
  %2072 = add nsw i32 %2071, 1
  store i32 %2072, ptr %82, align 4, !tbaa !9
  br label %1975, !llvm.loop !24

2073:                                             ; preds = %1975
  br label %2074

2074:                                             ; preds = %2073
  %2075 = load i32, ptr %101, align 4, !tbaa !9
  %2076 = add nsw i32 %2075, 1
  store i32 %2076, ptr %101, align 4, !tbaa !9
  br label %1969, !llvm.loop !25

2077:                                             ; preds = %1969
  %2078 = load i32, ptr %87, align 4, !tbaa !9
  store i32 %2078, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %2079

2079:                                             ; preds = %2161, %2077
  %2080 = load i32, ptr %82, align 4, !tbaa !9
  %2081 = load i32, ptr %43, align 4, !tbaa !9
  %2082 = icmp sle i32 %2080, %2081
  br i1 %2082, label %2083, label %2164

2083:                                             ; preds = %2079
  %2084 = load i32, ptr %108, align 4, !tbaa !9
  %2085 = icmp ne i32 %2084, 0
  br i1 %2085, label %2086, label %2140

2086:                                             ; preds = %2083
  %2087 = load double, ptr %68, align 8, !tbaa !11
  %2088 = fneg double %2087
  %2089 = load i32, ptr %82, align 4, !tbaa !9
  %2090 = sub nsw i32 %2089, 1
  %2091 = sext i32 %2090 to i64
  %2092 = getelementptr inbounds [4 x double], ptr %59, i64 0, i64 %2091
  %2093 = load double, ptr %2092, align 8, !tbaa !11
  %2094 = load double, ptr %100, align 8, !tbaa !11
  %2095 = load i32, ptr %82, align 4, !tbaa !9
  %2096 = sub nsw i32 %2095, 1
  %2097 = sext i32 %2096 to i64
  %2098 = getelementptr inbounds [4 x double], ptr %58, i64 0, i64 %2097
  %2099 = load double, ptr %2098, align 8, !tbaa !11
  %2100 = fmul double %2094, %2099
  %2101 = call double @llvm.fmuladd.f64(double %2088, double %2093, double %2100)
  %2102 = load double, ptr %94, align 8, !tbaa !11
  %2103 = load i32, ptr %82, align 4, !tbaa !9
  %2104 = add nsw i32 %2103, 1
  %2105 = sext i32 %2104 to i64
  %2106 = getelementptr inbounds [4 x double], ptr %58, i64 0, i64 %2105
  %2107 = load double, ptr %2106, align 8, !tbaa !11
  %2108 = fneg double %2102
  %2109 = call double @llvm.fmuladd.f64(double %2108, double %2107, double %2101)
  %2110 = load i32, ptr %82, align 4, !tbaa !9
  %2111 = sub nsw i32 %2110, 1
  %2112 = sext i32 %2111 to i64
  %2113 = getelementptr inbounds [4 x double], ptr %114, i64 0, i64 %2112
  store double %2109, ptr %2113, align 8, !tbaa !11
  %2114 = load double, ptr %68, align 8, !tbaa !11
  %2115 = fneg double %2114
  %2116 = load i32, ptr %82, align 4, !tbaa !9
  %2117 = add nsw i32 %2116, 1
  %2118 = sext i32 %2117 to i64
  %2119 = getelementptr inbounds [4 x double], ptr %59, i64 0, i64 %2118
  %2120 = load double, ptr %2119, align 8, !tbaa !11
  %2121 = load double, ptr %100, align 8, !tbaa !11
  %2122 = load i32, ptr %82, align 4, !tbaa !9
  %2123 = add nsw i32 %2122, 1
  %2124 = sext i32 %2123 to i64
  %2125 = getelementptr inbounds [4 x double], ptr %58, i64 0, i64 %2124
  %2126 = load double, ptr %2125, align 8, !tbaa !11
  %2127 = fmul double %2121, %2126
  %2128 = call double @llvm.fmuladd.f64(double %2115, double %2120, double %2127)
  %2129 = load double, ptr %94, align 8, !tbaa !11
  %2130 = load i32, ptr %82, align 4, !tbaa !9
  %2131 = sub nsw i32 %2130, 1
  %2132 = sext i32 %2131 to i64
  %2133 = getelementptr inbounds [4 x double], ptr %58, i64 0, i64 %2132
  %2134 = load double, ptr %2133, align 8, !tbaa !11
  %2135 = call double @llvm.fmuladd.f64(double %2129, double %2134, double %2128)
  %2136 = load i32, ptr %82, align 4, !tbaa !9
  %2137 = add nsw i32 %2136, 1
  %2138 = sext i32 %2137 to i64
  %2139 = getelementptr inbounds [4 x double], ptr %114, i64 0, i64 %2138
  store double %2135, ptr %2139, align 8, !tbaa !11
  br label %2160

2140:                                             ; preds = %2083
  %2141 = load double, ptr %68, align 8, !tbaa !11
  %2142 = fneg double %2141
  %2143 = load i32, ptr %82, align 4, !tbaa !9
  %2144 = sub nsw i32 %2143, 1
  %2145 = sext i32 %2144 to i64
  %2146 = getelementptr inbounds [4 x double], ptr %59, i64 0, i64 %2145
  %2147 = load double, ptr %2146, align 8, !tbaa !11
  %2148 = load double, ptr %100, align 8, !tbaa !11
  %2149 = load i32, ptr %82, align 4, !tbaa !9
  %2150 = sub nsw i32 %2149, 1
  %2151 = sext i32 %2150 to i64
  %2152 = getelementptr inbounds [4 x double], ptr %58, i64 0, i64 %2151
  %2153 = load double, ptr %2152, align 8, !tbaa !11
  %2154 = fmul double %2148, %2153
  %2155 = call double @llvm.fmuladd.f64(double %2142, double %2147, double %2154)
  %2156 = load i32, ptr %82, align 4, !tbaa !9
  %2157 = sub nsw i32 %2156, 1
  %2158 = sext i32 %2157 to i64
  %2159 = getelementptr inbounds [4 x double], ptr %114, i64 0, i64 %2158
  store double %2155, ptr %2159, align 8, !tbaa !11
  br label %2160

2160:                                             ; preds = %2140, %2086
  br label %2161

2161:                                             ; preds = %2160
  %2162 = load i32, ptr %82, align 4, !tbaa !9
  %2163 = add nsw i32 %2162, 1
  store i32 %2163, ptr %82, align 4, !tbaa !9
  br label %2079, !llvm.loop !26

2164:                                             ; preds = %2079
  %2165 = load ptr, ptr %21, align 8, !tbaa !5
  %2166 = load i32, ptr %67, align 4, !tbaa !9
  %2167 = load i32, ptr %67, align 4, !tbaa !9
  %2168 = load i32, ptr %35, align 4, !tbaa !9
  %2169 = mul nsw i32 %2167, %2168
  %2170 = add nsw i32 %2166, %2169
  %2171 = sext i32 %2170 to i64
  %2172 = getelementptr inbounds double, ptr %2165, i64 %2171
  %2173 = load ptr, ptr %22, align 8, !tbaa !5
  %2174 = getelementptr inbounds [2 x double], ptr %65, i64 0, i64 0
  %2175 = getelementptr inbounds [2 x double], ptr %65, i64 0, i64 1
  %2176 = getelementptr inbounds [4 x double], ptr %114, i64 0, i64 0
  %2177 = load ptr, ptr %31, align 8, !tbaa !5
  %2178 = load ptr, ptr %20, align 8, !tbaa !5
  %2179 = load i32, ptr %2178, align 4, !tbaa !9
  %2180 = shl i32 %2179, 1
  %2181 = load i32, ptr %67, align 4, !tbaa !9
  %2182 = add nsw i32 %2180, %2181
  %2183 = sext i32 %2182 to i64
  %2184 = getelementptr inbounds double, ptr %2177, i64 %2183
  %2185 = load ptr, ptr %20, align 8, !tbaa !5
  call void @dlaln2_(ptr noundef @c_true, ptr noundef %87, ptr noundef %102, ptr noundef %55, ptr noundef %68, ptr noundef %2172, ptr noundef %2173, ptr noundef %2174, ptr noundef %2175, ptr noundef %2176, ptr noundef @c__2, ptr noundef %100, ptr noundef %94, ptr noundef %2184, ptr noundef %2185, ptr noundef %69, ptr noundef %56, ptr noundef %74)
  %2186 = load double, ptr %69, align 8, !tbaa !11
  %2187 = fcmp olt double %2186, 1.000000e+00
  br i1 %2187, label %2188, label %2238

2188:                                             ; preds = %2164
  %2189 = load i32, ptr %102, align 4, !tbaa !9
  %2190 = sub nsw i32 %2189, 1
  store i32 %2190, ptr %43, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %2191

2191:                                             ; preds = %2231, %2188
  %2192 = load i32, ptr %101, align 4, !tbaa !9
  %2193 = load i32, ptr %43, align 4, !tbaa !9
  %2194 = icmp sle i32 %2192, %2193
  br i1 %2194, label %2195, label %2234

2195:                                             ; preds = %2191
  %2196 = load i32, ptr %67, align 4, !tbaa !9
  %2197 = sub nsw i32 %2196, 1
  store i32 %2197, ptr %44, align 4, !tbaa !9
  %2198 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %2198, ptr %98, align 4, !tbaa !9
  br label %2199

2199:                                             ; preds = %2227, %2195
  %2200 = load i32, ptr %98, align 4, !tbaa !9
  %2201 = load i32, ptr %44, align 4, !tbaa !9
  %2202 = icmp sle i32 %2200, %2201
  br i1 %2202, label %2203, label %2230

2203:                                             ; preds = %2199
  %2204 = load double, ptr %69, align 8, !tbaa !11
  %2205 = load ptr, ptr %31, align 8, !tbaa !5
  %2206 = load i32, ptr %101, align 4, !tbaa !9
  %2207 = add nsw i32 %2206, 2
  %2208 = load ptr, ptr %20, align 8, !tbaa !5
  %2209 = load i32, ptr %2208, align 4, !tbaa !9
  %2210 = mul nsw i32 %2207, %2209
  %2211 = load i32, ptr %98, align 4, !tbaa !9
  %2212 = add nsw i32 %2210, %2211
  %2213 = sext i32 %2212 to i64
  %2214 = getelementptr inbounds double, ptr %2205, i64 %2213
  %2215 = load double, ptr %2214, align 8, !tbaa !11
  %2216 = fmul double %2204, %2215
  %2217 = load ptr, ptr %31, align 8, !tbaa !5
  %2218 = load i32, ptr %101, align 4, !tbaa !9
  %2219 = add nsw i32 %2218, 2
  %2220 = load ptr, ptr %20, align 8, !tbaa !5
  %2221 = load i32, ptr %2220, align 4, !tbaa !9
  %2222 = mul nsw i32 %2219, %2221
  %2223 = load i32, ptr %98, align 4, !tbaa !9
  %2224 = add nsw i32 %2222, %2223
  %2225 = sext i32 %2224 to i64
  %2226 = getelementptr inbounds double, ptr %2217, i64 %2225
  store double %2216, ptr %2226, align 8, !tbaa !11
  br label %2227

2227:                                             ; preds = %2203
  %2228 = load i32, ptr %98, align 4, !tbaa !9
  %2229 = add nsw i32 %2228, 1
  store i32 %2229, ptr %98, align 4, !tbaa !9
  br label %2199, !llvm.loop !27

2230:                                             ; preds = %2199
  br label %2231

2231:                                             ; preds = %2230
  %2232 = load i32, ptr %101, align 4, !tbaa !9
  %2233 = add nsw i32 %2232, 1
  store i32 %2233, ptr %101, align 4, !tbaa !9
  br label %2191, !llvm.loop !28

2234:                                             ; preds = %2191
  %2235 = load double, ptr %69, align 8, !tbaa !11
  %2236 = load double, ptr %57, align 8, !tbaa !11
  %2237 = fmul double %2235, %2236
  store double %2237, ptr %57, align 8, !tbaa !11
  br label %2238

2238:                                             ; preds = %2234, %2164
  %2239 = load double, ptr %57, align 8, !tbaa !11
  %2240 = load double, ptr %56, align 8, !tbaa !11
  %2241 = fcmp oge double %2239, %2240
  br i1 %2241, label %2242, label %2244

2242:                                             ; preds = %2238
  %2243 = load double, ptr %57, align 8, !tbaa !11
  br label %2246

2244:                                             ; preds = %2238
  %2245 = load double, ptr %56, align 8, !tbaa !11
  br label %2246

2246:                                             ; preds = %2244, %2242
  %2247 = phi double [ %2243, %2242 ], [ %2245, %2244 ]
  store double %2247, ptr %57, align 8, !tbaa !11
  br label %2248

2248:                                             ; preds = %2246, %1747
  br label %2249

2249:                                             ; preds = %2248
  %2250 = load i32, ptr %67, align 4, !tbaa !9
  %2251 = add nsw i32 %2250, 1
  store i32 %2251, ptr %67, align 4, !tbaa !9
  br label %1740, !llvm.loop !29

2252:                                             ; preds = %1740
  %2253 = load i32, ptr %53, align 4, !tbaa !9
  %2254 = add nsw i32 %2253, 1
  store i32 %2254, ptr %53, align 4, !tbaa !9
  %2255 = load i32, ptr %92, align 4, !tbaa !9
  %2256 = icmp ne i32 %2255, 0
  br i1 %2256, label %2257, label %2319

2257:                                             ; preds = %2252
  %2258 = load i32, ptr %102, align 4, !tbaa !9
  %2259 = sub nsw i32 %2258, 1
  store i32 %2259, ptr %42, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %2260

2260:                                             ; preds = %2298, %2257
  %2261 = load i32, ptr %101, align 4, !tbaa !9
  %2262 = load i32, ptr %42, align 4, !tbaa !9
  %2263 = icmp sle i32 %2261, %2262
  br i1 %2263, label %2264, label %2301

2264:                                             ; preds = %2260
  %2265 = load ptr, ptr %20, align 8, !tbaa !5
  %2266 = load i32, ptr %2265, align 4, !tbaa !9
  %2267 = add nsw i32 %2266, 1
  %2268 = load i32, ptr %86, align 4, !tbaa !9
  %2269 = sub nsw i32 %2267, %2268
  store i32 %2269, ptr %43, align 4, !tbaa !9
  %2270 = load ptr, ptr %20, align 8, !tbaa !5
  %2271 = load ptr, ptr %25, align 8, !tbaa !5
  %2272 = load i32, ptr %86, align 4, !tbaa !9
  %2273 = load i32, ptr %37, align 4, !tbaa !9
  %2274 = mul nsw i32 %2272, %2273
  %2275 = add nsw i32 %2274, 1
  %2276 = sext i32 %2275 to i64
  %2277 = getelementptr inbounds double, ptr %2271, i64 %2276
  %2278 = load ptr, ptr %26, align 8, !tbaa !5
  %2279 = load ptr, ptr %31, align 8, !tbaa !5
  %2280 = load i32, ptr %101, align 4, !tbaa !9
  %2281 = add nsw i32 %2280, 2
  %2282 = load ptr, ptr %20, align 8, !tbaa !5
  %2283 = load i32, ptr %2282, align 4, !tbaa !9
  %2284 = mul nsw i32 %2281, %2283
  %2285 = load i32, ptr %86, align 4, !tbaa !9
  %2286 = add nsw i32 %2284, %2285
  %2287 = sext i32 %2286 to i64
  %2288 = getelementptr inbounds double, ptr %2279, i64 %2287
  %2289 = load ptr, ptr %31, align 8, !tbaa !5
  %2290 = load i32, ptr %101, align 4, !tbaa !9
  %2291 = add nsw i32 %2290, 4
  %2292 = load ptr, ptr %20, align 8, !tbaa !5
  %2293 = load i32, ptr %2292, align 4, !tbaa !9
  %2294 = mul nsw i32 %2291, %2293
  %2295 = add nsw i32 %2294, 1
  %2296 = sext i32 %2295 to i64
  %2297 = getelementptr inbounds double, ptr %2289, i64 %2296
  call void @dgemv_(ptr noundef @.str.9, ptr noundef %2270, ptr noundef %43, ptr noundef @c_b34, ptr noundef %2277, ptr noundef %2278, ptr noundef %2288, ptr noundef @c__1, ptr noundef @c_b36, ptr noundef %2297, ptr noundef @c__1)
  br label %2298

2298:                                             ; preds = %2264
  %2299 = load i32, ptr %101, align 4, !tbaa !9
  %2300 = add nsw i32 %2299, 1
  store i32 %2300, ptr %101, align 4, !tbaa !9
  br label %2260, !llvm.loop !30

2301:                                             ; preds = %2260
  %2302 = load ptr, ptr %20, align 8, !tbaa !5
  %2303 = load ptr, ptr %31, align 8, !tbaa !5
  %2304 = load ptr, ptr %20, align 8, !tbaa !5
  %2305 = load i32, ptr %2304, align 4, !tbaa !9
  %2306 = shl i32 %2305, 2
  %2307 = add nsw i32 %2306, 1
  %2308 = sext i32 %2307 to i64
  %2309 = getelementptr inbounds double, ptr %2303, i64 %2308
  %2310 = load ptr, ptr %20, align 8, !tbaa !5
  %2311 = load ptr, ptr %25, align 8, !tbaa !5
  %2312 = load i32, ptr %86, align 4, !tbaa !9
  %2313 = load i32, ptr %37, align 4, !tbaa !9
  %2314 = mul nsw i32 %2312, %2313
  %2315 = add nsw i32 %2314, 1
  %2316 = sext i32 %2315 to i64
  %2317 = getelementptr inbounds double, ptr %2311, i64 %2316
  %2318 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.10, ptr noundef %2302, ptr noundef %102, ptr noundef %2309, ptr noundef %2310, ptr noundef %2317, ptr noundef %2318)
  store i32 1, ptr %52, align 4, !tbaa !9
  br label %2338

2319:                                             ; preds = %2252
  %2320 = load ptr, ptr %20, align 8, !tbaa !5
  %2321 = load ptr, ptr %31, align 8, !tbaa !5
  %2322 = load ptr, ptr %20, align 8, !tbaa !5
  %2323 = load i32, ptr %2322, align 4, !tbaa !9
  %2324 = shl i32 %2323, 1
  %2325 = add nsw i32 %2324, 1
  %2326 = sext i32 %2325 to i64
  %2327 = getelementptr inbounds double, ptr %2321, i64 %2326
  %2328 = load ptr, ptr %20, align 8, !tbaa !5
  %2329 = load ptr, ptr %25, align 8, !tbaa !5
  %2330 = load i32, ptr %53, align 4, !tbaa !9
  %2331 = load i32, ptr %37, align 4, !tbaa !9
  %2332 = mul nsw i32 %2330, %2331
  %2333 = add nsw i32 %2332, 1
  %2334 = sext i32 %2333 to i64
  %2335 = getelementptr inbounds double, ptr %2329, i64 %2334
  %2336 = load ptr, ptr %26, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.10, ptr noundef %2320, ptr noundef %102, ptr noundef %2327, ptr noundef %2328, ptr noundef %2335, ptr noundef %2336)
  %2337 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %2337, ptr %52, align 4, !tbaa !9
  br label %2338

2338:                                             ; preds = %2319, %2301
  store double 0.000000e+00, ptr %57, align 8, !tbaa !11
  %2339 = load i32, ptr %108, align 4, !tbaa !9
  %2340 = icmp ne i32 %2339, 0
  br i1 %2340, label %2341, label %2402

2341:                                             ; preds = %2338
  %2342 = load ptr, ptr %20, align 8, !tbaa !5
  %2343 = load i32, ptr %2342, align 4, !tbaa !9
  store i32 %2343, ptr %42, align 4, !tbaa !9
  %2344 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %2344, ptr %67, align 4, !tbaa !9
  br label %2345

2345:                                             ; preds = %2398, %2341
  %2346 = load i32, ptr %67, align 4, !tbaa !9
  %2347 = load i32, ptr %42, align 4, !tbaa !9
  %2348 = icmp sle i32 %2346, %2347
  br i1 %2348, label %2349, label %2401

2349:                                             ; preds = %2345
  %2350 = load double, ptr %57, align 8, !tbaa !11
  store double %2350, ptr %48, align 8, !tbaa !11
  %2351 = load ptr, ptr %25, align 8, !tbaa !5
  %2352 = load i32, ptr %67, align 4, !tbaa !9
  %2353 = load i32, ptr %53, align 4, !tbaa !9
  %2354 = load i32, ptr %37, align 4, !tbaa !9
  %2355 = mul nsw i32 %2353, %2354
  %2356 = add nsw i32 %2352, %2355
  %2357 = sext i32 %2356 to i64
  %2358 = getelementptr inbounds double, ptr %2351, i64 %2357
  %2359 = load double, ptr %2358, align 8, !tbaa !11
  store double %2359, ptr %46, align 8, !tbaa !11
  %2360 = load double, ptr %46, align 8, !tbaa !11
  %2361 = fcmp oge double %2360, 0.000000e+00
  br i1 %2361, label %2362, label %2364

2362:                                             ; preds = %2349
  %2363 = load double, ptr %46, align 8, !tbaa !11
  br label %2367

2364:                                             ; preds = %2349
  %2365 = load double, ptr %46, align 8, !tbaa !11
  %2366 = fneg double %2365
  br label %2367

2367:                                             ; preds = %2364, %2362
  %2368 = phi double [ %2363, %2362 ], [ %2366, %2364 ]
  %2369 = load ptr, ptr %25, align 8, !tbaa !5
  %2370 = load i32, ptr %67, align 4, !tbaa !9
  %2371 = load i32, ptr %53, align 4, !tbaa !9
  %2372 = add nsw i32 %2371, 1
  %2373 = load i32, ptr %37, align 4, !tbaa !9
  %2374 = mul nsw i32 %2372, %2373
  %2375 = add nsw i32 %2370, %2374
  %2376 = sext i32 %2375 to i64
  %2377 = getelementptr inbounds double, ptr %2369, i64 %2376
  %2378 = load double, ptr %2377, align 8, !tbaa !11
  store double %2378, ptr %47, align 8, !tbaa !11
  %2379 = load double, ptr %47, align 8, !tbaa !11
  %2380 = fcmp oge double %2379, 0.000000e+00
  br i1 %2380, label %2381, label %2383

2381:                                             ; preds = %2367
  %2382 = load double, ptr %47, align 8, !tbaa !11
  br label %2386

2383:                                             ; preds = %2367
  %2384 = load double, ptr %47, align 8, !tbaa !11
  %2385 = fneg double %2384
  br label %2386

2386:                                             ; preds = %2383, %2381
  %2387 = phi double [ %2382, %2381 ], [ %2385, %2383 ]
  %2388 = fadd double %2368, %2387
  store double %2388, ptr %49, align 8, !tbaa !11
  %2389 = load double, ptr %48, align 8, !tbaa !11
  %2390 = load double, ptr %49, align 8, !tbaa !11
  %2391 = fcmp oge double %2389, %2390
  br i1 %2391, label %2392, label %2394

2392:                                             ; preds = %2386
  %2393 = load double, ptr %48, align 8, !tbaa !11
  br label %2396

2394:                                             ; preds = %2386
  %2395 = load double, ptr %49, align 8, !tbaa !11
  br label %2396

2396:                                             ; preds = %2394, %2392
  %2397 = phi double [ %2393, %2392 ], [ %2395, %2394 ]
  store double %2397, ptr %57, align 8, !tbaa !11
  br label %2398

2398:                                             ; preds = %2396
  %2399 = load i32, ptr %67, align 4, !tbaa !9
  %2400 = add nsw i32 %2399, 1
  store i32 %2400, ptr %67, align 4, !tbaa !9
  br label %2345, !llvm.loop !31

2401:                                             ; preds = %2345
  br label %2443

2402:                                             ; preds = %2338
  %2403 = load ptr, ptr %20, align 8, !tbaa !5
  %2404 = load i32, ptr %2403, align 4, !tbaa !9
  store i32 %2404, ptr %42, align 4, !tbaa !9
  %2405 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %2405, ptr %67, align 4, !tbaa !9
  br label %2406

2406:                                             ; preds = %2439, %2402
  %2407 = load i32, ptr %67, align 4, !tbaa !9
  %2408 = load i32, ptr %42, align 4, !tbaa !9
  %2409 = icmp sle i32 %2407, %2408
  br i1 %2409, label %2410, label %2442

2410:                                             ; preds = %2406
  %2411 = load double, ptr %57, align 8, !tbaa !11
  store double %2411, ptr %47, align 8, !tbaa !11
  %2412 = load ptr, ptr %25, align 8, !tbaa !5
  %2413 = load i32, ptr %67, align 4, !tbaa !9
  %2414 = load i32, ptr %53, align 4, !tbaa !9
  %2415 = load i32, ptr %37, align 4, !tbaa !9
  %2416 = mul nsw i32 %2414, %2415
  %2417 = add nsw i32 %2413, %2416
  %2418 = sext i32 %2417 to i64
  %2419 = getelementptr inbounds double, ptr %2412, i64 %2418
  %2420 = load double, ptr %2419, align 8, !tbaa !11
  store double %2420, ptr %46, align 8, !tbaa !11
  %2421 = load double, ptr %46, align 8, !tbaa !11
  %2422 = fcmp oge double %2421, 0.000000e+00
  br i1 %2422, label %2423, label %2425

2423:                                             ; preds = %2410
  %2424 = load double, ptr %46, align 8, !tbaa !11
  br label %2428

2425:                                             ; preds = %2410
  %2426 = load double, ptr %46, align 8, !tbaa !11
  %2427 = fneg double %2426
  br label %2428

2428:                                             ; preds = %2425, %2423
  %2429 = phi double [ %2424, %2423 ], [ %2427, %2425 ]
  store double %2429, ptr %48, align 8, !tbaa !11
  %2430 = load double, ptr %47, align 8, !tbaa !11
  %2431 = load double, ptr %48, align 8, !tbaa !11
  %2432 = fcmp oge double %2430, %2431
  br i1 %2432, label %2433, label %2435

2433:                                             ; preds = %2428
  %2434 = load double, ptr %47, align 8, !tbaa !11
  br label %2437

2435:                                             ; preds = %2428
  %2436 = load double, ptr %48, align 8, !tbaa !11
  br label %2437

2437:                                             ; preds = %2435, %2433
  %2438 = phi double [ %2434, %2433 ], [ %2436, %2435 ]
  store double %2438, ptr %57, align 8, !tbaa !11
  br label %2439

2439:                                             ; preds = %2437
  %2440 = load i32, ptr %67, align 4, !tbaa !9
  %2441 = add nsw i32 %2440, 1
  store i32 %2441, ptr %67, align 4, !tbaa !9
  br label %2406, !llvm.loop !32

2442:                                             ; preds = %2406
  br label %2443

2443:                                             ; preds = %2442, %2401
  %2444 = load double, ptr %57, align 8, !tbaa !11
  %2445 = load double, ptr %104, align 8, !tbaa !11
  %2446 = fcmp ogt double %2444, %2445
  br i1 %2446, label %2447, label %2496

2447:                                             ; preds = %2443
  %2448 = load double, ptr %57, align 8, !tbaa !11
  %2449 = fdiv double 1.000000e+00, %2448
  store double %2449, ptr %105, align 8, !tbaa !11
  %2450 = load i32, ptr %102, align 4, !tbaa !9
  %2451 = sub nsw i32 %2450, 1
  store i32 %2451, ptr %42, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %2452

2452:                                             ; preds = %2492, %2447
  %2453 = load i32, ptr %101, align 4, !tbaa !9
  %2454 = load i32, ptr %42, align 4, !tbaa !9
  %2455 = icmp sle i32 %2453, %2454
  br i1 %2455, label %2456, label %2495

2456:                                             ; preds = %2452
  %2457 = load ptr, ptr %20, align 8, !tbaa !5
  %2458 = load i32, ptr %2457, align 4, !tbaa !9
  store i32 %2458, ptr %43, align 4, !tbaa !9
  %2459 = load i32, ptr %52, align 4, !tbaa !9
  store i32 %2459, ptr %98, align 4, !tbaa !9
  br label %2460

2460:                                             ; preds = %2488, %2456
  %2461 = load i32, ptr %98, align 4, !tbaa !9
  %2462 = load i32, ptr %43, align 4, !tbaa !9
  %2463 = icmp sle i32 %2461, %2462
  br i1 %2463, label %2464, label %2491

2464:                                             ; preds = %2460
  %2465 = load double, ptr %105, align 8, !tbaa !11
  %2466 = load ptr, ptr %25, align 8, !tbaa !5
  %2467 = load i32, ptr %98, align 4, !tbaa !9
  %2468 = load i32, ptr %53, align 4, !tbaa !9
  %2469 = load i32, ptr %101, align 4, !tbaa !9
  %2470 = add nsw i32 %2468, %2469
  %2471 = load i32, ptr %37, align 4, !tbaa !9
  %2472 = mul nsw i32 %2470, %2471
  %2473 = add nsw i32 %2467, %2472
  %2474 = sext i32 %2473 to i64
  %2475 = getelementptr inbounds double, ptr %2466, i64 %2474
  %2476 = load double, ptr %2475, align 8, !tbaa !11
  %2477 = fmul double %2465, %2476
  %2478 = load ptr, ptr %25, align 8, !tbaa !5
  %2479 = load i32, ptr %98, align 4, !tbaa !9
  %2480 = load i32, ptr %53, align 4, !tbaa !9
  %2481 = load i32, ptr %101, align 4, !tbaa !9
  %2482 = add nsw i32 %2480, %2481
  %2483 = load i32, ptr %37, align 4, !tbaa !9
  %2484 = mul nsw i32 %2482, %2483
  %2485 = add nsw i32 %2479, %2484
  %2486 = sext i32 %2485 to i64
  %2487 = getelementptr inbounds double, ptr %2478, i64 %2486
  store double %2477, ptr %2487, align 8, !tbaa !11
  br label %2488

2488:                                             ; preds = %2464
  %2489 = load i32, ptr %98, align 4, !tbaa !9
  %2490 = add nsw i32 %2489, 1
  store i32 %2490, ptr %98, align 4, !tbaa !9
  br label %2460, !llvm.loop !33

2491:                                             ; preds = %2460
  br label %2492

2492:                                             ; preds = %2491
  %2493 = load i32, ptr %101, align 4, !tbaa !9
  %2494 = add nsw i32 %2493, 1
  store i32 %2494, ptr %101, align 4, !tbaa !9
  br label %2452, !llvm.loop !34

2495:                                             ; preds = %2452
  br label %2496

2496:                                             ; preds = %2495, %2443
  %2497 = load i32, ptr %53, align 4, !tbaa !9
  %2498 = load i32, ptr %102, align 4, !tbaa !9
  %2499 = add nsw i32 %2497, %2498
  %2500 = sub nsw i32 %2499, 1
  store i32 %2500, ptr %53, align 4, !tbaa !9
  br label %2501

2501:                                             ; preds = %2496, %890, %823, %768
  br label %2502

2502:                                             ; preds = %2501
  %2503 = load i32, ptr %86, align 4, !tbaa !9
  %2504 = add nsw i32 %2503, 1
  store i32 %2504, ptr %86, align 4, !tbaa !9
  br label %761, !llvm.loop !35

2505:                                             ; preds = %761
  br label %2506

2506:                                             ; preds = %2505, %753
  %2507 = load i32, ptr %79, align 4, !tbaa !9
  %2508 = icmp ne i32 %2507, 0
  br i1 %2508, label %2509, label %4764

2509:                                             ; preds = %2506
  %2510 = load i32, ptr %93, align 4, !tbaa !9
  %2511 = add nsw i32 %2510, 1
  store i32 %2511, ptr %53, align 4, !tbaa !9
  store i32 0, ptr %108, align 4, !tbaa !9
  %2512 = load ptr, ptr %20, align 8, !tbaa !5
  %2513 = load i32, ptr %2512, align 4, !tbaa !9
  store i32 %2513, ptr %86, align 4, !tbaa !9
  br label %2514

2514:                                             ; preds = %4760, %2509
  %2515 = load i32, ptr %86, align 4, !tbaa !9
  %2516 = icmp sge i32 %2515, 1
  br i1 %2516, label %2517, label %4763

2517:                                             ; preds = %2514
  %2518 = load i32, ptr %108, align 4, !tbaa !9
  %2519 = icmp ne i32 %2518, 0
  br i1 %2519, label %2520, label %2521

2520:                                             ; preds = %2517
  store i32 0, ptr %108, align 4, !tbaa !9
  br label %4759

2521:                                             ; preds = %2517
  store i32 1, ptr %102, align 4, !tbaa !9
  %2522 = load i32, ptr %86, align 4, !tbaa !9
  %2523 = icmp sgt i32 %2522, 1
  br i1 %2523, label %2524, label %2538

2524:                                             ; preds = %2521
  %2525 = load ptr, ptr %21, align 8, !tbaa !5
  %2526 = load i32, ptr %86, align 4, !tbaa !9
  %2527 = load i32, ptr %86, align 4, !tbaa !9
  %2528 = sub nsw i32 %2527, 1
  %2529 = load i32, ptr %35, align 4, !tbaa !9
  %2530 = mul nsw i32 %2528, %2529
  %2531 = add nsw i32 %2526, %2530
  %2532 = sext i32 %2531 to i64
  %2533 = getelementptr inbounds double, ptr %2525, i64 %2532
  %2534 = load double, ptr %2533, align 8, !tbaa !11
  %2535 = fcmp une double %2534, 0.000000e+00
  br i1 %2535, label %2536, label %2537

2536:                                             ; preds = %2524
  store i32 1, ptr %108, align 4, !tbaa !9
  store i32 2, ptr %102, align 4, !tbaa !9
  br label %2537

2537:                                             ; preds = %2536, %2524
  br label %2538

2538:                                             ; preds = %2537, %2521
  %2539 = load i32, ptr %70, align 4, !tbaa !9
  %2540 = icmp ne i32 %2539, 0
  br i1 %2540, label %2541, label %2542

2541:                                             ; preds = %2538
  store i32 1, ptr %107, align 4, !tbaa !9
  br label %2570

2542:                                             ; preds = %2538
  %2543 = load i32, ptr %108, align 4, !tbaa !9
  %2544 = icmp ne i32 %2543, 0
  br i1 %2544, label %2545, label %2563

2545:                                             ; preds = %2542
  %2546 = load ptr, ptr %19, align 8, !tbaa !5
  %2547 = load i32, ptr %86, align 4, !tbaa !9
  %2548 = sext i32 %2547 to i64
  %2549 = getelementptr inbounds i32, ptr %2546, i64 %2548
  %2550 = load i32, ptr %2549, align 4, !tbaa !9
  %2551 = icmp ne i32 %2550, 0
  br i1 %2551, label %2560, label %2552

2552:                                             ; preds = %2545
  %2553 = load ptr, ptr %19, align 8, !tbaa !5
  %2554 = load i32, ptr %86, align 4, !tbaa !9
  %2555 = sub nsw i32 %2554, 1
  %2556 = sext i32 %2555 to i64
  %2557 = getelementptr inbounds i32, ptr %2553, i64 %2556
  %2558 = load i32, ptr %2557, align 4, !tbaa !9
  %2559 = icmp ne i32 %2558, 0
  br label %2560

2560:                                             ; preds = %2552, %2545
  %2561 = phi i1 [ true, %2545 ], [ %2559, %2552 ]
  %2562 = zext i1 %2561 to i32
  store i32 %2562, ptr %107, align 4, !tbaa !9
  br label %2569

2563:                                             ; preds = %2542
  %2564 = load ptr, ptr %19, align 8, !tbaa !5
  %2565 = load i32, ptr %86, align 4, !tbaa !9
  %2566 = sext i32 %2565 to i64
  %2567 = getelementptr inbounds i32, ptr %2564, i64 %2566
  %2568 = load i32, ptr %2567, align 4, !tbaa !9
  store i32 %2568, ptr %107, align 4, !tbaa !9
  br label %2569

2569:                                             ; preds = %2563, %2560
  br label %2570

2570:                                             ; preds = %2569, %2541
  %2571 = load i32, ptr %107, align 4, !tbaa !9
  %2572 = icmp ne i32 %2571, 0
  br i1 %2572, label %2574, label %2573

2573:                                             ; preds = %2570
  br label %4759

2574:                                             ; preds = %2570
  %2575 = load i32, ptr %108, align 4, !tbaa !9
  %2576 = icmp ne i32 %2575, 0
  br i1 %2576, label %2650, label %2577

2577:                                             ; preds = %2574
  %2578 = load ptr, ptr %21, align 8, !tbaa !5
  %2579 = load i32, ptr %86, align 4, !tbaa !9
  %2580 = load i32, ptr %86, align 4, !tbaa !9
  %2581 = load i32, ptr %35, align 4, !tbaa !9
  %2582 = mul nsw i32 %2580, %2581
  %2583 = add nsw i32 %2579, %2582
  %2584 = sext i32 %2583 to i64
  %2585 = getelementptr inbounds double, ptr %2578, i64 %2584
  %2586 = load double, ptr %2585, align 8, !tbaa !11
  store double %2586, ptr %46, align 8, !tbaa !11
  %2587 = load double, ptr %46, align 8, !tbaa !11
  %2588 = fcmp oge double %2587, 0.000000e+00
  br i1 %2588, label %2589, label %2591

2589:                                             ; preds = %2577
  %2590 = load double, ptr %46, align 8, !tbaa !11
  br label %2594

2591:                                             ; preds = %2577
  %2592 = load double, ptr %46, align 8, !tbaa !11
  %2593 = fneg double %2592
  br label %2594

2594:                                             ; preds = %2591, %2589
  %2595 = phi double [ %2590, %2589 ], [ %2593, %2591 ]
  %2596 = load double, ptr %104, align 8, !tbaa !11
  %2597 = fcmp ole double %2595, %2596
  br i1 %2597, label %2598, label %2649

2598:                                             ; preds = %2594
  %2599 = load ptr, ptr %23, align 8, !tbaa !5
  %2600 = load i32, ptr %86, align 4, !tbaa !9
  %2601 = load i32, ptr %86, align 4, !tbaa !9
  %2602 = load i32, ptr %33, align 4, !tbaa !9
  %2603 = mul nsw i32 %2601, %2602
  %2604 = add nsw i32 %2600, %2603
  %2605 = sext i32 %2604 to i64
  %2606 = getelementptr inbounds double, ptr %2599, i64 %2605
  %2607 = load double, ptr %2606, align 8, !tbaa !11
  store double %2607, ptr %47, align 8, !tbaa !11
  %2608 = load double, ptr %47, align 8, !tbaa !11
  %2609 = fcmp oge double %2608, 0.000000e+00
  br i1 %2609, label %2610, label %2612

2610:                                             ; preds = %2598
  %2611 = load double, ptr %47, align 8, !tbaa !11
  br label %2615

2612:                                             ; preds = %2598
  %2613 = load double, ptr %47, align 8, !tbaa !11
  %2614 = fneg double %2613
  br label %2615

2615:                                             ; preds = %2612, %2610
  %2616 = phi double [ %2611, %2610 ], [ %2614, %2612 ]
  %2617 = load double, ptr %104, align 8, !tbaa !11
  %2618 = fcmp ole double %2616, %2617
  br i1 %2618, label %2619, label %2649

2619:                                             ; preds = %2615
  %2620 = load i32, ptr %53, align 4, !tbaa !9
  %2621 = add nsw i32 %2620, -1
  store i32 %2621, ptr %53, align 4, !tbaa !9
  %2622 = load ptr, ptr %20, align 8, !tbaa !5
  %2623 = load i32, ptr %2622, align 4, !tbaa !9
  store i32 %2623, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %2624

2624:                                             ; preds = %2637, %2619
  %2625 = load i32, ptr %98, align 4, !tbaa !9
  %2626 = load i32, ptr %41, align 4, !tbaa !9
  %2627 = icmp sle i32 %2625, %2626
  br i1 %2627, label %2628, label %2640

2628:                                             ; preds = %2624
  %2629 = load ptr, ptr %27, align 8, !tbaa !5
  %2630 = load i32, ptr %98, align 4, !tbaa !9
  %2631 = load i32, ptr %53, align 4, !tbaa !9
  %2632 = load i32, ptr %39, align 4, !tbaa !9
  %2633 = mul nsw i32 %2631, %2632
  %2634 = add nsw i32 %2630, %2633
  %2635 = sext i32 %2634 to i64
  %2636 = getelementptr inbounds double, ptr %2629, i64 %2635
  store double 0.000000e+00, ptr %2636, align 8, !tbaa !11
  br label %2637

2637:                                             ; preds = %2628
  %2638 = load i32, ptr %98, align 4, !tbaa !9
  %2639 = add nsw i32 %2638, 1
  store i32 %2639, ptr %98, align 4, !tbaa !9
  br label %2624, !llvm.loop !36

2640:                                             ; preds = %2624
  %2641 = load ptr, ptr %27, align 8, !tbaa !5
  %2642 = load i32, ptr %53, align 4, !tbaa !9
  %2643 = load i32, ptr %53, align 4, !tbaa !9
  %2644 = load i32, ptr %39, align 4, !tbaa !9
  %2645 = mul nsw i32 %2643, %2644
  %2646 = add nsw i32 %2642, %2645
  %2647 = sext i32 %2646 to i64
  %2648 = getelementptr inbounds double, ptr %2641, i64 %2647
  store double 1.000000e+00, ptr %2648, align 8, !tbaa !11
  br label %4759

2649:                                             ; preds = %2615, %2594
  br label %2650

2650:                                             ; preds = %2649, %2574
  %2651 = load i32, ptr %102, align 4, !tbaa !9
  %2652 = sub nsw i32 %2651, 1
  store i32 %2652, ptr %41, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %2653

2653:                                             ; preds = %2679, %2650
  %2654 = load i32, ptr %101, align 4, !tbaa !9
  %2655 = load i32, ptr %41, align 4, !tbaa !9
  %2656 = icmp sle i32 %2654, %2655
  br i1 %2656, label %2657, label %2682

2657:                                             ; preds = %2653
  %2658 = load ptr, ptr %20, align 8, !tbaa !5
  %2659 = load i32, ptr %2658, align 4, !tbaa !9
  store i32 %2659, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %2660

2660:                                             ; preds = %2675, %2657
  %2661 = load i32, ptr %98, align 4, !tbaa !9
  %2662 = load i32, ptr %42, align 4, !tbaa !9
  %2663 = icmp sle i32 %2661, %2662
  br i1 %2663, label %2664, label %2678

2664:                                             ; preds = %2660
  %2665 = load ptr, ptr %31, align 8, !tbaa !5
  %2666 = load i32, ptr %101, align 4, !tbaa !9
  %2667 = add nsw i32 %2666, 2
  %2668 = load ptr, ptr %20, align 8, !tbaa !5
  %2669 = load i32, ptr %2668, align 4, !tbaa !9
  %2670 = mul nsw i32 %2667, %2669
  %2671 = load i32, ptr %98, align 4, !tbaa !9
  %2672 = add nsw i32 %2670, %2671
  %2673 = sext i32 %2672 to i64
  %2674 = getelementptr inbounds double, ptr %2665, i64 %2673
  store double 0.000000e+00, ptr %2674, align 8, !tbaa !11
  br label %2675

2675:                                             ; preds = %2664
  %2676 = load i32, ptr %98, align 4, !tbaa !9
  %2677 = add nsw i32 %2676, 1
  store i32 %2677, ptr %98, align 4, !tbaa !9
  br label %2660, !llvm.loop !37

2678:                                             ; preds = %2660
  br label %2679

2679:                                             ; preds = %2678
  %2680 = load i32, ptr %101, align 4, !tbaa !9
  %2681 = add nsw i32 %2680, 1
  store i32 %2681, ptr %101, align 4, !tbaa !9
  br label %2653, !llvm.loop !38

2682:                                             ; preds = %2653
  %2683 = load i32, ptr %108, align 4, !tbaa !9
  %2684 = icmp ne i32 %2683, 0
  br i1 %2684, label %3039, label %2685

2685:                                             ; preds = %2682
  %2686 = load ptr, ptr %21, align 8, !tbaa !5
  %2687 = load i32, ptr %86, align 4, !tbaa !9
  %2688 = load i32, ptr %86, align 4, !tbaa !9
  %2689 = load i32, ptr %35, align 4, !tbaa !9
  %2690 = mul nsw i32 %2688, %2689
  %2691 = add nsw i32 %2687, %2690
  %2692 = sext i32 %2691 to i64
  %2693 = getelementptr inbounds double, ptr %2686, i64 %2692
  %2694 = load double, ptr %2693, align 8, !tbaa !11
  store double %2694, ptr %46, align 8, !tbaa !11
  %2695 = load double, ptr %46, align 8, !tbaa !11
  %2696 = fcmp oge double %2695, 0.000000e+00
  br i1 %2696, label %2697, label %2699

2697:                                             ; preds = %2685
  %2698 = load double, ptr %46, align 8, !tbaa !11
  br label %2702

2699:                                             ; preds = %2685
  %2700 = load double, ptr %46, align 8, !tbaa !11
  %2701 = fneg double %2700
  br label %2702

2702:                                             ; preds = %2699, %2697
  %2703 = phi double [ %2698, %2697 ], [ %2701, %2699 ]
  %2704 = load double, ptr %95, align 8, !tbaa !11
  %2705 = fmul double %2703, %2704
  store double %2705, ptr %48, align 8, !tbaa !11
  %2706 = load ptr, ptr %23, align 8, !tbaa !5
  %2707 = load i32, ptr %86, align 4, !tbaa !9
  %2708 = load i32, ptr %86, align 4, !tbaa !9
  %2709 = load i32, ptr %33, align 4, !tbaa !9
  %2710 = mul nsw i32 %2708, %2709
  %2711 = add nsw i32 %2707, %2710
  %2712 = sext i32 %2711 to i64
  %2713 = getelementptr inbounds double, ptr %2706, i64 %2712
  %2714 = load double, ptr %2713, align 8, !tbaa !11
  store double %2714, ptr %47, align 8, !tbaa !11
  %2715 = load double, ptr %47, align 8, !tbaa !11
  %2716 = fcmp oge double %2715, 0.000000e+00
  br i1 %2716, label %2717, label %2719

2717:                                             ; preds = %2702
  %2718 = load double, ptr %47, align 8, !tbaa !11
  br label %2722

2719:                                             ; preds = %2702
  %2720 = load double, ptr %47, align 8, !tbaa !11
  %2721 = fneg double %2720
  br label %2722

2722:                                             ; preds = %2719, %2717
  %2723 = phi double [ %2718, %2717 ], [ %2721, %2719 ]
  %2724 = load double, ptr %96, align 8, !tbaa !11
  %2725 = fmul double %2723, %2724
  store double %2725, ptr %49, align 8, !tbaa !11
  %2726 = load double, ptr %48, align 8, !tbaa !11
  %2727 = load double, ptr %49, align 8, !tbaa !11
  %2728 = fcmp oge double %2726, %2727
  br i1 %2728, label %2729, label %2731

2729:                                             ; preds = %2722
  %2730 = load double, ptr %48, align 8, !tbaa !11
  br label %2733

2731:                                             ; preds = %2722
  %2732 = load double, ptr %49, align 8, !tbaa !11
  br label %2733

2733:                                             ; preds = %2731, %2729
  %2734 = phi double [ %2730, %2729 ], [ %2732, %2731 ]
  store double %2734, ptr %48, align 8, !tbaa !11
  %2735 = load double, ptr %48, align 8, !tbaa !11
  %2736 = load double, ptr %104, align 8, !tbaa !11
  %2737 = fcmp oge double %2735, %2736
  br i1 %2737, label %2738, label %2740

2738:                                             ; preds = %2733
  %2739 = load double, ptr %48, align 8, !tbaa !11
  br label %2742

2740:                                             ; preds = %2733
  %2741 = load double, ptr %104, align 8, !tbaa !11
  br label %2742

2742:                                             ; preds = %2740, %2738
  %2743 = phi double [ %2739, %2738 ], [ %2741, %2740 ]
  %2744 = fdiv double 1.000000e+00, %2743
  store double %2744, ptr %56, align 8, !tbaa !11
  %2745 = load double, ptr %56, align 8, !tbaa !11
  %2746 = load ptr, ptr %21, align 8, !tbaa !5
  %2747 = load i32, ptr %86, align 4, !tbaa !9
  %2748 = load i32, ptr %86, align 4, !tbaa !9
  %2749 = load i32, ptr %35, align 4, !tbaa !9
  %2750 = mul nsw i32 %2748, %2749
  %2751 = add nsw i32 %2747, %2750
  %2752 = sext i32 %2751 to i64
  %2753 = getelementptr inbounds double, ptr %2746, i64 %2752
  %2754 = load double, ptr %2753, align 8, !tbaa !11
  %2755 = fmul double %2745, %2754
  %2756 = load double, ptr %95, align 8, !tbaa !11
  %2757 = fmul double %2755, %2756
  store double %2757, ptr %103, align 8, !tbaa !11
  %2758 = load double, ptr %56, align 8, !tbaa !11
  %2759 = load ptr, ptr %23, align 8, !tbaa !5
  %2760 = load i32, ptr %86, align 4, !tbaa !9
  %2761 = load i32, ptr %86, align 4, !tbaa !9
  %2762 = load i32, ptr %33, align 4, !tbaa !9
  %2763 = mul nsw i32 %2761, %2762
  %2764 = add nsw i32 %2760, %2763
  %2765 = sext i32 %2764 to i64
  %2766 = getelementptr inbounds double, ptr %2759, i64 %2765
  %2767 = load double, ptr %2766, align 8, !tbaa !11
  %2768 = fmul double %2758, %2767
  %2769 = load double, ptr %96, align 8, !tbaa !11
  %2770 = fmul double %2768, %2769
  store double %2770, ptr %72, align 8, !tbaa !11
  %2771 = load double, ptr %72, align 8, !tbaa !11
  %2772 = load double, ptr %95, align 8, !tbaa !11
  %2773 = fmul double %2771, %2772
  store double %2773, ptr %68, align 8, !tbaa !11
  %2774 = load double, ptr %103, align 8, !tbaa !11
  %2775 = load double, ptr %96, align 8, !tbaa !11
  %2776 = fmul double %2774, %2775
  store double %2776, ptr %100, align 8, !tbaa !11
  store double 0.000000e+00, ptr %94, align 8, !tbaa !11
  store double 1.000000e+00, ptr %69, align 8, !tbaa !11
  %2777 = load double, ptr %72, align 8, !tbaa !11
  %2778 = fcmp oge double %2777, 0.000000e+00
  br i1 %2778, label %2779, label %2781

2779:                                             ; preds = %2742
  %2780 = load double, ptr %72, align 8, !tbaa !11
  br label %2784

2781:                                             ; preds = %2742
  %2782 = load double, ptr %72, align 8, !tbaa !11
  %2783 = fneg double %2782
  br label %2784

2784:                                             ; preds = %2781, %2779
  %2785 = phi double [ %2780, %2779 ], [ %2783, %2781 ]
  %2786 = load double, ptr %104, align 8, !tbaa !11
  %2787 = fcmp oge double %2785, %2786
  br i1 %2787, label %2788, label %2800

2788:                                             ; preds = %2784
  %2789 = load double, ptr %68, align 8, !tbaa !11
  %2790 = fcmp oge double %2789, 0.000000e+00
  br i1 %2790, label %2791, label %2793

2791:                                             ; preds = %2788
  %2792 = load double, ptr %68, align 8, !tbaa !11
  br label %2796

2793:                                             ; preds = %2788
  %2794 = load double, ptr %68, align 8, !tbaa !11
  %2795 = fneg double %2794
  br label %2796

2796:                                             ; preds = %2793, %2791
  %2797 = phi double [ %2792, %2791 ], [ %2795, %2793 ]
  %2798 = load double, ptr %75, align 8, !tbaa !11
  %2799 = fcmp olt double %2797, %2798
  br label %2800

2800:                                             ; preds = %2796, %2784
  %2801 = phi i1 [ false, %2784 ], [ %2799, %2796 ]
  %2802 = zext i1 %2801 to i32
  store i32 %2802, ptr %111, align 4, !tbaa !9
  %2803 = load double, ptr %103, align 8, !tbaa !11
  %2804 = fcmp oge double %2803, 0.000000e+00
  br i1 %2804, label %2805, label %2807

2805:                                             ; preds = %2800
  %2806 = load double, ptr %103, align 8, !tbaa !11
  br label %2810

2807:                                             ; preds = %2800
  %2808 = load double, ptr %103, align 8, !tbaa !11
  %2809 = fneg double %2808
  br label %2810

2810:                                             ; preds = %2807, %2805
  %2811 = phi double [ %2806, %2805 ], [ %2809, %2807 ]
  %2812 = load double, ptr %104, align 8, !tbaa !11
  %2813 = fcmp oge double %2811, %2812
  br i1 %2813, label %2814, label %2826

2814:                                             ; preds = %2810
  %2815 = load double, ptr %100, align 8, !tbaa !11
  %2816 = fcmp oge double %2815, 0.000000e+00
  br i1 %2816, label %2817, label %2819

2817:                                             ; preds = %2814
  %2818 = load double, ptr %100, align 8, !tbaa !11
  br label %2822

2819:                                             ; preds = %2814
  %2820 = load double, ptr %100, align 8, !tbaa !11
  %2821 = fneg double %2820
  br label %2822

2822:                                             ; preds = %2819, %2817
  %2823 = phi double [ %2818, %2817 ], [ %2821, %2819 ]
  %2824 = load double, ptr %75, align 8, !tbaa !11
  %2825 = fcmp olt double %2823, %2824
  br label %2826

2826:                                             ; preds = %2822, %2810
  %2827 = phi i1 [ false, %2810 ], [ %2825, %2822 ]
  %2828 = zext i1 %2827 to i32
  store i32 %2828, ptr %112, align 4, !tbaa !9
  %2829 = load i32, ptr %111, align 4, !tbaa !9
  %2830 = icmp ne i32 %2829, 0
  br i1 %2830, label %2831, label %2853

2831:                                             ; preds = %2826
  %2832 = load double, ptr %75, align 8, !tbaa !11
  %2833 = load double, ptr %72, align 8, !tbaa !11
  %2834 = fcmp oge double %2833, 0.000000e+00
  br i1 %2834, label %2835, label %2837

2835:                                             ; preds = %2831
  %2836 = load double, ptr %72, align 8, !tbaa !11
  br label %2840

2837:                                             ; preds = %2831
  %2838 = load double, ptr %72, align 8, !tbaa !11
  %2839 = fneg double %2838
  br label %2840

2840:                                             ; preds = %2837, %2835
  %2841 = phi double [ %2836, %2835 ], [ %2839, %2837 ]
  %2842 = fdiv double %2832, %2841
  %2843 = load double, ptr %77, align 8, !tbaa !11
  %2844 = load double, ptr %110, align 8, !tbaa !11
  %2845 = fcmp ole double %2843, %2844
  br i1 %2845, label %2846, label %2848

2846:                                             ; preds = %2840
  %2847 = load double, ptr %77, align 8, !tbaa !11
  br label %2850

2848:                                             ; preds = %2840
  %2849 = load double, ptr %110, align 8, !tbaa !11
  br label %2850

2850:                                             ; preds = %2848, %2846
  %2851 = phi double [ %2847, %2846 ], [ %2849, %2848 ]
  %2852 = fmul double %2842, %2851
  store double %2852, ptr %69, align 8, !tbaa !11
  br label %2853

2853:                                             ; preds = %2850, %2826
  %2854 = load i32, ptr %112, align 4, !tbaa !9
  %2855 = icmp ne i32 %2854, 0
  br i1 %2855, label %2856, label %2888

2856:                                             ; preds = %2853
  %2857 = load double, ptr %69, align 8, !tbaa !11
  store double %2857, ptr %46, align 8, !tbaa !11
  %2858 = load double, ptr %75, align 8, !tbaa !11
  %2859 = load double, ptr %103, align 8, !tbaa !11
  %2860 = fcmp oge double %2859, 0.000000e+00
  br i1 %2860, label %2861, label %2863

2861:                                             ; preds = %2856
  %2862 = load double, ptr %103, align 8, !tbaa !11
  br label %2866

2863:                                             ; preds = %2856
  %2864 = load double, ptr %103, align 8, !tbaa !11
  %2865 = fneg double %2864
  br label %2866

2866:                                             ; preds = %2863, %2861
  %2867 = phi double [ %2862, %2861 ], [ %2865, %2863 ]
  %2868 = fdiv double %2858, %2867
  %2869 = load double, ptr %78, align 8, !tbaa !11
  %2870 = load double, ptr %110, align 8, !tbaa !11
  %2871 = fcmp ole double %2869, %2870
  br i1 %2871, label %2872, label %2874

2872:                                             ; preds = %2866
  %2873 = load double, ptr %78, align 8, !tbaa !11
  br label %2876

2874:                                             ; preds = %2866
  %2875 = load double, ptr %110, align 8, !tbaa !11
  br label %2876

2876:                                             ; preds = %2874, %2872
  %2877 = phi double [ %2873, %2872 ], [ %2875, %2874 ]
  %2878 = fmul double %2868, %2877
  store double %2878, ptr %47, align 8, !tbaa !11
  %2879 = load double, ptr %46, align 8, !tbaa !11
  %2880 = load double, ptr %47, align 8, !tbaa !11
  %2881 = fcmp oge double %2879, %2880
  br i1 %2881, label %2882, label %2884

2882:                                             ; preds = %2876
  %2883 = load double, ptr %46, align 8, !tbaa !11
  br label %2886

2884:                                             ; preds = %2876
  %2885 = load double, ptr %47, align 8, !tbaa !11
  br label %2886

2886:                                             ; preds = %2884, %2882
  %2887 = phi double [ %2883, %2882 ], [ %2885, %2884 ]
  store double %2887, ptr %69, align 8, !tbaa !11
  br label %2888

2888:                                             ; preds = %2886, %2853
  %2889 = load i32, ptr %111, align 4, !tbaa !9
  %2890 = icmp ne i32 %2889, 0
  br i1 %2890, label %2894, label %2891

2891:                                             ; preds = %2888
  %2892 = load i32, ptr %112, align 4, !tbaa !9
  %2893 = icmp ne i32 %2892, 0
  br i1 %2893, label %2894, label %2970

2894:                                             ; preds = %2891, %2888
  store double 1.000000e+00, ptr %48, align 8, !tbaa !11
  %2895 = load double, ptr %68, align 8, !tbaa !11
  %2896 = fcmp oge double %2895, 0.000000e+00
  br i1 %2896, label %2897, label %2899

2897:                                             ; preds = %2894
  %2898 = load double, ptr %68, align 8, !tbaa !11
  br label %2902

2899:                                             ; preds = %2894
  %2900 = load double, ptr %68, align 8, !tbaa !11
  %2901 = fneg double %2900
  br label %2902

2902:                                             ; preds = %2899, %2897
  %2903 = phi double [ %2898, %2897 ], [ %2901, %2899 ]
  store double %2903, ptr %49, align 8, !tbaa !11
  %2904 = load double, ptr %48, align 8, !tbaa !11
  %2905 = load double, ptr %49, align 8, !tbaa !11
  %2906 = fcmp oge double %2904, %2905
  br i1 %2906, label %2907, label %2909

2907:                                             ; preds = %2902
  %2908 = load double, ptr %48, align 8, !tbaa !11
  br label %2911

2909:                                             ; preds = %2902
  %2910 = load double, ptr %49, align 8, !tbaa !11
  br label %2911

2911:                                             ; preds = %2909, %2907
  %2912 = phi double [ %2908, %2907 ], [ %2910, %2909 ]
  store double %2912, ptr %48, align 8, !tbaa !11
  %2913 = load double, ptr %100, align 8, !tbaa !11
  %2914 = fcmp oge double %2913, 0.000000e+00
  br i1 %2914, label %2915, label %2917

2915:                                             ; preds = %2911
  %2916 = load double, ptr %100, align 8, !tbaa !11
  br label %2920

2917:                                             ; preds = %2911
  %2918 = load double, ptr %100, align 8, !tbaa !11
  %2919 = fneg double %2918
  br label %2920

2920:                                             ; preds = %2917, %2915
  %2921 = phi double [ %2916, %2915 ], [ %2919, %2917 ]
  store double %2921, ptr %49, align 8, !tbaa !11
  %2922 = load double, ptr %69, align 8, !tbaa !11
  store double %2922, ptr %46, align 8, !tbaa !11
  %2923 = load double, ptr %104, align 8, !tbaa !11
  %2924 = load double, ptr %48, align 8, !tbaa !11
  %2925 = load double, ptr %49, align 8, !tbaa !11
  %2926 = fcmp oge double %2924, %2925
  br i1 %2926, label %2927, label %2929

2927:                                             ; preds = %2920
  %2928 = load double, ptr %48, align 8, !tbaa !11
  br label %2931

2929:                                             ; preds = %2920
  %2930 = load double, ptr %49, align 8, !tbaa !11
  br label %2931

2931:                                             ; preds = %2929, %2927
  %2932 = phi double [ %2928, %2927 ], [ %2930, %2929 ]
  %2933 = fmul double %2923, %2932
  %2934 = fdiv double 1.000000e+00, %2933
  store double %2934, ptr %47, align 8, !tbaa !11
  %2935 = load double, ptr %46, align 8, !tbaa !11
  %2936 = load double, ptr %47, align 8, !tbaa !11
  %2937 = fcmp ole double %2935, %2936
  br i1 %2937, label %2938, label %2940

2938:                                             ; preds = %2931
  %2939 = load double, ptr %46, align 8, !tbaa !11
  br label %2942

2940:                                             ; preds = %2931
  %2941 = load double, ptr %47, align 8, !tbaa !11
  br label %2942

2942:                                             ; preds = %2940, %2938
  %2943 = phi double [ %2939, %2938 ], [ %2941, %2940 ]
  store double %2943, ptr %69, align 8, !tbaa !11
  %2944 = load i32, ptr %111, align 4, !tbaa !9
  %2945 = icmp ne i32 %2944, 0
  br i1 %2945, label %2946, label %2952

2946:                                             ; preds = %2942
  %2947 = load double, ptr %95, align 8, !tbaa !11
  %2948 = load double, ptr %69, align 8, !tbaa !11
  %2949 = load double, ptr %72, align 8, !tbaa !11
  %2950 = fmul double %2948, %2949
  %2951 = fmul double %2947, %2950
  store double %2951, ptr %68, align 8, !tbaa !11
  br label %2956

2952:                                             ; preds = %2942
  %2953 = load double, ptr %69, align 8, !tbaa !11
  %2954 = load double, ptr %68, align 8, !tbaa !11
  %2955 = fmul double %2953, %2954
  store double %2955, ptr %68, align 8, !tbaa !11
  br label %2956

2956:                                             ; preds = %2952, %2946
  %2957 = load i32, ptr %112, align 4, !tbaa !9
  %2958 = icmp ne i32 %2957, 0
  br i1 %2958, label %2959, label %2965

2959:                                             ; preds = %2956
  %2960 = load double, ptr %96, align 8, !tbaa !11
  %2961 = load double, ptr %69, align 8, !tbaa !11
  %2962 = load double, ptr %103, align 8, !tbaa !11
  %2963 = fmul double %2961, %2962
  %2964 = fmul double %2960, %2963
  store double %2964, ptr %100, align 8, !tbaa !11
  br label %2969

2965:                                             ; preds = %2956
  %2966 = load double, ptr %69, align 8, !tbaa !11
  %2967 = load double, ptr %100, align 8, !tbaa !11
  %2968 = fmul double %2966, %2967
  store double %2968, ptr %100, align 8, !tbaa !11
  br label %2969

2969:                                             ; preds = %2965, %2959
  br label %2970

2970:                                             ; preds = %2969, %2891
  %2971 = load double, ptr %68, align 8, !tbaa !11
  %2972 = fcmp oge double %2971, 0.000000e+00
  br i1 %2972, label %2973, label %2975

2973:                                             ; preds = %2970
  %2974 = load double, ptr %68, align 8, !tbaa !11
  br label %2978

2975:                                             ; preds = %2970
  %2976 = load double, ptr %68, align 8, !tbaa !11
  %2977 = fneg double %2976
  br label %2978

2978:                                             ; preds = %2975, %2973
  %2979 = phi double [ %2974, %2973 ], [ %2977, %2975 ]
  store double %2979, ptr %88, align 8, !tbaa !11
  %2980 = load double, ptr %100, align 8, !tbaa !11
  %2981 = fcmp oge double %2980, 0.000000e+00
  br i1 %2981, label %2982, label %2984

2982:                                             ; preds = %2978
  %2983 = load double, ptr %100, align 8, !tbaa !11
  br label %2987

2984:                                             ; preds = %2978
  %2985 = load double, ptr %100, align 8, !tbaa !11
  %2986 = fneg double %2985
  br label %2987

2987:                                             ; preds = %2984, %2982
  %2988 = phi double [ %2983, %2982 ], [ %2986, %2984 ]
  store double %2988, ptr %89, align 8, !tbaa !11
  %2989 = load ptr, ptr %31, align 8, !tbaa !5
  %2990 = load ptr, ptr %20, align 8, !tbaa !5
  %2991 = load i32, ptr %2990, align 4, !tbaa !9
  %2992 = shl i32 %2991, 1
  %2993 = load i32, ptr %86, align 4, !tbaa !9
  %2994 = add nsw i32 %2992, %2993
  %2995 = sext i32 %2994 to i64
  %2996 = getelementptr inbounds double, ptr %2989, i64 %2995
  store double 1.000000e+00, ptr %2996, align 8, !tbaa !11
  store double 1.000000e+00, ptr %57, align 8, !tbaa !11
  %2997 = load i32, ptr %86, align 4, !tbaa !9
  %2998 = sub nsw i32 %2997, 1
  store i32 %2998, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %2999

2999:                                             ; preds = %3035, %2987
  %3000 = load i32, ptr %98, align 4, !tbaa !9
  %3001 = load i32, ptr %41, align 4, !tbaa !9
  %3002 = icmp sle i32 %3000, %3001
  br i1 %3002, label %3003, label %3038

3003:                                             ; preds = %2999
  %3004 = load double, ptr %100, align 8, !tbaa !11
  %3005 = load ptr, ptr %23, align 8, !tbaa !5
  %3006 = load i32, ptr %98, align 4, !tbaa !9
  %3007 = load i32, ptr %86, align 4, !tbaa !9
  %3008 = load i32, ptr %33, align 4, !tbaa !9
  %3009 = mul nsw i32 %3007, %3008
  %3010 = add nsw i32 %3006, %3009
  %3011 = sext i32 %3010 to i64
  %3012 = getelementptr inbounds double, ptr %3005, i64 %3011
  %3013 = load double, ptr %3012, align 8, !tbaa !11
  %3014 = load double, ptr %68, align 8, !tbaa !11
  %3015 = load ptr, ptr %21, align 8, !tbaa !5
  %3016 = load i32, ptr %98, align 4, !tbaa !9
  %3017 = load i32, ptr %86, align 4, !tbaa !9
  %3018 = load i32, ptr %35, align 4, !tbaa !9
  %3019 = mul nsw i32 %3017, %3018
  %3020 = add nsw i32 %3016, %3019
  %3021 = sext i32 %3020 to i64
  %3022 = getelementptr inbounds double, ptr %3015, i64 %3021
  %3023 = load double, ptr %3022, align 8, !tbaa !11
  %3024 = fmul double %3014, %3023
  %3025 = fneg double %3024
  %3026 = call double @llvm.fmuladd.f64(double %3004, double %3013, double %3025)
  %3027 = load ptr, ptr %31, align 8, !tbaa !5
  %3028 = load ptr, ptr %20, align 8, !tbaa !5
  %3029 = load i32, ptr %3028, align 4, !tbaa !9
  %3030 = shl i32 %3029, 1
  %3031 = load i32, ptr %98, align 4, !tbaa !9
  %3032 = add nsw i32 %3030, %3031
  %3033 = sext i32 %3032 to i64
  %3034 = getelementptr inbounds double, ptr %3027, i64 %3033
  store double %3026, ptr %3034, align 8, !tbaa !11
  br label %3035

3035:                                             ; preds = %3003
  %3036 = load i32, ptr %98, align 4, !tbaa !9
  %3037 = add nsw i32 %3036, 1
  store i32 %3037, ptr %98, align 4, !tbaa !9
  br label %2999, !llvm.loop !39

3038:                                             ; preds = %2999
  br label %3775

3039:                                             ; preds = %2682
  %3040 = load double, ptr %104, align 8, !tbaa !11
  %3041 = fmul double %3040, 1.000000e+02
  store double %3041, ptr %46, align 8, !tbaa !11
  %3042 = load ptr, ptr %21, align 8, !tbaa !5
  %3043 = load i32, ptr %86, align 4, !tbaa !9
  %3044 = sub nsw i32 %3043, 1
  %3045 = load i32, ptr %86, align 4, !tbaa !9
  %3046 = sub nsw i32 %3045, 1
  %3047 = load i32, ptr %35, align 4, !tbaa !9
  %3048 = mul nsw i32 %3046, %3047
  %3049 = add nsw i32 %3044, %3048
  %3050 = sext i32 %3049 to i64
  %3051 = getelementptr inbounds double, ptr %3042, i64 %3050
  %3052 = load ptr, ptr %22, align 8, !tbaa !5
  %3053 = load ptr, ptr %23, align 8, !tbaa !5
  %3054 = load i32, ptr %86, align 4, !tbaa !9
  %3055 = sub nsw i32 %3054, 1
  %3056 = load i32, ptr %86, align 4, !tbaa !9
  %3057 = sub nsw i32 %3056, 1
  %3058 = load i32, ptr %33, align 4, !tbaa !9
  %3059 = mul nsw i32 %3057, %3058
  %3060 = add nsw i32 %3055, %3059
  %3061 = sext i32 %3060 to i64
  %3062 = getelementptr inbounds double, ptr %3053, i64 %3061
  %3063 = load ptr, ptr %24, align 8, !tbaa !5
  call void @dlag2_(ptr noundef %3051, ptr noundef %3052, ptr noundef %3062, ptr noundef %3063, ptr noundef %46, ptr noundef %68, ptr noundef %56, ptr noundef %100, ptr noundef %64, ptr noundef %94)
  %3064 = load double, ptr %94, align 8, !tbaa !11
  %3065 = fcmp oeq double %3064, 0.000000e+00
  br i1 %3065, label %3066, label %3070

3066:                                             ; preds = %3039
  %3067 = load i32, ptr %86, align 4, !tbaa !9
  %3068 = sub nsw i32 %3067, 1
  %3069 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 %3068, ptr %3069, align 4, !tbaa !9
  store i32 1, ptr %115, align 4
  br label %4765

3070:                                             ; preds = %3039
  %3071 = load double, ptr %68, align 8, !tbaa !11
  %3072 = fcmp oge double %3071, 0.000000e+00
  br i1 %3072, label %3073, label %3075

3073:                                             ; preds = %3070
  %3074 = load double, ptr %68, align 8, !tbaa !11
  br label %3078

3075:                                             ; preds = %3070
  %3076 = load double, ptr %68, align 8, !tbaa !11
  %3077 = fneg double %3076
  br label %3078

3078:                                             ; preds = %3075, %3073
  %3079 = phi double [ %3074, %3073 ], [ %3077, %3075 ]
  store double %3079, ptr %88, align 8, !tbaa !11
  %3080 = load double, ptr %100, align 8, !tbaa !11
  %3081 = fcmp oge double %3080, 0.000000e+00
  br i1 %3081, label %3082, label %3084

3082:                                             ; preds = %3078
  %3083 = load double, ptr %100, align 8, !tbaa !11
  br label %3087

3084:                                             ; preds = %3078
  %3085 = load double, ptr %100, align 8, !tbaa !11
  %3086 = fneg double %3085
  br label %3087

3087:                                             ; preds = %3084, %3082
  %3088 = phi double [ %3083, %3082 ], [ %3086, %3084 ]
  %3089 = load double, ptr %94, align 8, !tbaa !11
  %3090 = fcmp oge double %3089, 0.000000e+00
  br i1 %3090, label %3091, label %3093

3091:                                             ; preds = %3087
  %3092 = load double, ptr %94, align 8, !tbaa !11
  br label %3096

3093:                                             ; preds = %3087
  %3094 = load double, ptr %94, align 8, !tbaa !11
  %3095 = fneg double %3094
  br label %3096

3096:                                             ; preds = %3093, %3091
  %3097 = phi double [ %3092, %3091 ], [ %3095, %3093 ]
  %3098 = fadd double %3088, %3097
  store double %3098, ptr %89, align 8, !tbaa !11
  store double 1.000000e+00, ptr %69, align 8, !tbaa !11
  %3099 = load double, ptr %88, align 8, !tbaa !11
  %3100 = load double, ptr %113, align 8, !tbaa !11
  %3101 = fmul double %3099, %3100
  %3102 = load double, ptr %104, align 8, !tbaa !11
  %3103 = fcmp olt double %3101, %3102
  br i1 %3103, label %3104, label %3114

3104:                                             ; preds = %3096
  %3105 = load double, ptr %88, align 8, !tbaa !11
  %3106 = load double, ptr %104, align 8, !tbaa !11
  %3107 = fcmp oge double %3105, %3106
  br i1 %3107, label %3108, label %3114

3108:                                             ; preds = %3104
  %3109 = load double, ptr %104, align 8, !tbaa !11
  %3110 = load double, ptr %113, align 8, !tbaa !11
  %3111 = fdiv double %3109, %3110
  %3112 = load double, ptr %88, align 8, !tbaa !11
  %3113 = fdiv double %3111, %3112
  store double %3113, ptr %69, align 8, !tbaa !11
  br label %3114

3114:                                             ; preds = %3108, %3104, %3096
  %3115 = load double, ptr %89, align 8, !tbaa !11
  %3116 = load double, ptr %113, align 8, !tbaa !11
  %3117 = fmul double %3115, %3116
  %3118 = load double, ptr %104, align 8, !tbaa !11
  %3119 = fcmp olt double %3117, %3118
  br i1 %3119, label %3120, label %3140

3120:                                             ; preds = %3114
  %3121 = load double, ptr %89, align 8, !tbaa !11
  %3122 = load double, ptr %104, align 8, !tbaa !11
  %3123 = fcmp oge double %3121, %3122
  br i1 %3123, label %3124, label %3140

3124:                                             ; preds = %3120
  %3125 = load double, ptr %69, align 8, !tbaa !11
  store double %3125, ptr %46, align 8, !tbaa !11
  %3126 = load double, ptr %104, align 8, !tbaa !11
  %3127 = load double, ptr %113, align 8, !tbaa !11
  %3128 = fdiv double %3126, %3127
  %3129 = load double, ptr %89, align 8, !tbaa !11
  %3130 = fdiv double %3128, %3129
  store double %3130, ptr %47, align 8, !tbaa !11
  %3131 = load double, ptr %46, align 8, !tbaa !11
  %3132 = load double, ptr %47, align 8, !tbaa !11
  %3133 = fcmp oge double %3131, %3132
  br i1 %3133, label %3134, label %3136

3134:                                             ; preds = %3124
  %3135 = load double, ptr %46, align 8, !tbaa !11
  br label %3138

3136:                                             ; preds = %3124
  %3137 = load double, ptr %47, align 8, !tbaa !11
  br label %3138

3138:                                             ; preds = %3136, %3134
  %3139 = phi double [ %3135, %3134 ], [ %3137, %3136 ]
  store double %3139, ptr %69, align 8, !tbaa !11
  br label %3140

3140:                                             ; preds = %3138, %3120, %3114
  %3141 = load double, ptr %104, align 8, !tbaa !11
  %3142 = load double, ptr %88, align 8, !tbaa !11
  %3143 = fmul double %3141, %3142
  %3144 = load double, ptr %95, align 8, !tbaa !11
  %3145 = fcmp ogt double %3143, %3144
  br i1 %3145, label %3146, label %3152

3146:                                             ; preds = %3140
  %3147 = load double, ptr %95, align 8, !tbaa !11
  %3148 = load double, ptr %104, align 8, !tbaa !11
  %3149 = load double, ptr %88, align 8, !tbaa !11
  %3150 = fmul double %3148, %3149
  %3151 = fdiv double %3147, %3150
  store double %3151, ptr %69, align 8, !tbaa !11
  br label %3152

3152:                                             ; preds = %3146, %3140
  %3153 = load double, ptr %104, align 8, !tbaa !11
  %3154 = load double, ptr %89, align 8, !tbaa !11
  %3155 = fmul double %3153, %3154
  %3156 = load double, ptr %96, align 8, !tbaa !11
  %3157 = fcmp ogt double %3155, %3156
  br i1 %3157, label %3158, label %3174

3158:                                             ; preds = %3152
  %3159 = load double, ptr %69, align 8, !tbaa !11
  store double %3159, ptr %46, align 8, !tbaa !11
  %3160 = load double, ptr %96, align 8, !tbaa !11
  %3161 = load double, ptr %104, align 8, !tbaa !11
  %3162 = load double, ptr %89, align 8, !tbaa !11
  %3163 = fmul double %3161, %3162
  %3164 = fdiv double %3160, %3163
  store double %3164, ptr %47, align 8, !tbaa !11
  %3165 = load double, ptr %46, align 8, !tbaa !11
  %3166 = load double, ptr %47, align 8, !tbaa !11
  %3167 = fcmp ole double %3165, %3166
  br i1 %3167, label %3168, label %3170

3168:                                             ; preds = %3158
  %3169 = load double, ptr %46, align 8, !tbaa !11
  br label %3172

3170:                                             ; preds = %3158
  %3171 = load double, ptr %47, align 8, !tbaa !11
  br label %3172

3172:                                             ; preds = %3170, %3168
  %3173 = phi double [ %3169, %3168 ], [ %3171, %3170 ]
  store double %3173, ptr %69, align 8, !tbaa !11
  br label %3174

3174:                                             ; preds = %3172, %3152
  %3175 = load double, ptr %69, align 8, !tbaa !11
  %3176 = fcmp une double %3175, 1.000000e+00
  br i1 %3176, label %3177, label %3215

3177:                                             ; preds = %3174
  %3178 = load double, ptr %69, align 8, !tbaa !11
  %3179 = load double, ptr %68, align 8, !tbaa !11
  %3180 = fmul double %3178, %3179
  store double %3180, ptr %68, align 8, !tbaa !11
  %3181 = load double, ptr %68, align 8, !tbaa !11
  %3182 = fcmp oge double %3181, 0.000000e+00
  br i1 %3182, label %3183, label %3185

3183:                                             ; preds = %3177
  %3184 = load double, ptr %68, align 8, !tbaa !11
  br label %3188

3185:                                             ; preds = %3177
  %3186 = load double, ptr %68, align 8, !tbaa !11
  %3187 = fneg double %3186
  br label %3188

3188:                                             ; preds = %3185, %3183
  %3189 = phi double [ %3184, %3183 ], [ %3187, %3185 ]
  store double %3189, ptr %88, align 8, !tbaa !11
  %3190 = load double, ptr %69, align 8, !tbaa !11
  %3191 = load double, ptr %100, align 8, !tbaa !11
  %3192 = fmul double %3190, %3191
  store double %3192, ptr %100, align 8, !tbaa !11
  %3193 = load double, ptr %69, align 8, !tbaa !11
  %3194 = load double, ptr %94, align 8, !tbaa !11
  %3195 = fmul double %3193, %3194
  store double %3195, ptr %94, align 8, !tbaa !11
  %3196 = load double, ptr %100, align 8, !tbaa !11
  %3197 = fcmp oge double %3196, 0.000000e+00
  br i1 %3197, label %3198, label %3200

3198:                                             ; preds = %3188
  %3199 = load double, ptr %100, align 8, !tbaa !11
  br label %3203

3200:                                             ; preds = %3188
  %3201 = load double, ptr %100, align 8, !tbaa !11
  %3202 = fneg double %3201
  br label %3203

3203:                                             ; preds = %3200, %3198
  %3204 = phi double [ %3199, %3198 ], [ %3202, %3200 ]
  %3205 = load double, ptr %94, align 8, !tbaa !11
  %3206 = fcmp oge double %3205, 0.000000e+00
  br i1 %3206, label %3207, label %3209

3207:                                             ; preds = %3203
  %3208 = load double, ptr %94, align 8, !tbaa !11
  br label %3212

3209:                                             ; preds = %3203
  %3210 = load double, ptr %94, align 8, !tbaa !11
  %3211 = fneg double %3210
  br label %3212

3212:                                             ; preds = %3209, %3207
  %3213 = phi double [ %3208, %3207 ], [ %3211, %3209 ]
  %3214 = fadd double %3204, %3213
  store double %3214, ptr %89, align 8, !tbaa !11
  br label %3215

3215:                                             ; preds = %3212, %3174
  %3216 = load double, ptr %68, align 8, !tbaa !11
  %3217 = load ptr, ptr %21, align 8, !tbaa !5
  %3218 = load i32, ptr %86, align 4, !tbaa !9
  %3219 = load i32, ptr %86, align 4, !tbaa !9
  %3220 = sub nsw i32 %3219, 1
  %3221 = load i32, ptr %35, align 4, !tbaa !9
  %3222 = mul nsw i32 %3220, %3221
  %3223 = add nsw i32 %3218, %3222
  %3224 = sext i32 %3223 to i64
  %3225 = getelementptr inbounds double, ptr %3217, i64 %3224
  %3226 = load double, ptr %3225, align 8, !tbaa !11
  %3227 = fmul double %3216, %3226
  store double %3227, ptr %56, align 8, !tbaa !11
  %3228 = load double, ptr %68, align 8, !tbaa !11
  %3229 = load ptr, ptr %21, align 8, !tbaa !5
  %3230 = load i32, ptr %86, align 4, !tbaa !9
  %3231 = load i32, ptr %86, align 4, !tbaa !9
  %3232 = load i32, ptr %35, align 4, !tbaa !9
  %3233 = mul nsw i32 %3231, %3232
  %3234 = add nsw i32 %3230, %3233
  %3235 = sext i32 %3234 to i64
  %3236 = getelementptr inbounds double, ptr %3229, i64 %3235
  %3237 = load double, ptr %3236, align 8, !tbaa !11
  %3238 = load double, ptr %100, align 8, !tbaa !11
  %3239 = load ptr, ptr %23, align 8, !tbaa !5
  %3240 = load i32, ptr %86, align 4, !tbaa !9
  %3241 = load i32, ptr %86, align 4, !tbaa !9
  %3242 = load i32, ptr %33, align 4, !tbaa !9
  %3243 = mul nsw i32 %3241, %3242
  %3244 = add nsw i32 %3240, %3243
  %3245 = sext i32 %3244 to i64
  %3246 = getelementptr inbounds double, ptr %3239, i64 %3245
  %3247 = load double, ptr %3246, align 8, !tbaa !11
  %3248 = fmul double %3238, %3247
  %3249 = fneg double %3248
  %3250 = call double @llvm.fmuladd.f64(double %3228, double %3237, double %3249)
  store double %3250, ptr %81, align 8, !tbaa !11
  %3251 = load double, ptr %94, align 8, !tbaa !11
  %3252 = fneg double %3251
  %3253 = load ptr, ptr %23, align 8, !tbaa !5
  %3254 = load i32, ptr %86, align 4, !tbaa !9
  %3255 = load i32, ptr %86, align 4, !tbaa !9
  %3256 = load i32, ptr %33, align 4, !tbaa !9
  %3257 = mul nsw i32 %3255, %3256
  %3258 = add nsw i32 %3254, %3257
  %3259 = sext i32 %3258 to i64
  %3260 = getelementptr inbounds double, ptr %3253, i64 %3259
  %3261 = load double, ptr %3260, align 8, !tbaa !11
  %3262 = fmul double %3252, %3261
  store double %3262, ptr %80, align 8, !tbaa !11
  %3263 = load double, ptr %56, align 8, !tbaa !11
  %3264 = fcmp oge double %3263, 0.000000e+00
  br i1 %3264, label %3265, label %3267

3265:                                             ; preds = %3215
  %3266 = load double, ptr %56, align 8, !tbaa !11
  br label %3270

3267:                                             ; preds = %3215
  %3268 = load double, ptr %56, align 8, !tbaa !11
  %3269 = fneg double %3268
  br label %3270

3270:                                             ; preds = %3267, %3265
  %3271 = phi double [ %3266, %3265 ], [ %3269, %3267 ]
  %3272 = load double, ptr %81, align 8, !tbaa !11
  %3273 = fcmp oge double %3272, 0.000000e+00
  br i1 %3273, label %3274, label %3276

3274:                                             ; preds = %3270
  %3275 = load double, ptr %81, align 8, !tbaa !11
  br label %3279

3276:                                             ; preds = %3270
  %3277 = load double, ptr %81, align 8, !tbaa !11
  %3278 = fneg double %3277
  br label %3279

3279:                                             ; preds = %3276, %3274
  %3280 = phi double [ %3275, %3274 ], [ %3278, %3276 ]
  %3281 = load double, ptr %80, align 8, !tbaa !11
  %3282 = fcmp oge double %3281, 0.000000e+00
  br i1 %3282, label %3283, label %3285

3283:                                             ; preds = %3279
  %3284 = load double, ptr %80, align 8, !tbaa !11
  br label %3288

3285:                                             ; preds = %3279
  %3286 = load double, ptr %80, align 8, !tbaa !11
  %3287 = fneg double %3286
  br label %3288

3288:                                             ; preds = %3285, %3283
  %3289 = phi double [ %3284, %3283 ], [ %3287, %3285 ]
  %3290 = fadd double %3280, %3289
  %3291 = fcmp oge double %3271, %3290
  br i1 %3291, label %3292, label %3335

3292:                                             ; preds = %3288
  %3293 = load ptr, ptr %31, align 8, !tbaa !5
  %3294 = load ptr, ptr %20, align 8, !tbaa !5
  %3295 = load i32, ptr %3294, align 4, !tbaa !9
  %3296 = shl i32 %3295, 1
  %3297 = load i32, ptr %86, align 4, !tbaa !9
  %3298 = add nsw i32 %3296, %3297
  %3299 = sext i32 %3298 to i64
  %3300 = getelementptr inbounds double, ptr %3293, i64 %3299
  store double 1.000000e+00, ptr %3300, align 8, !tbaa !11
  %3301 = load ptr, ptr %31, align 8, !tbaa !5
  %3302 = load ptr, ptr %20, align 8, !tbaa !5
  %3303 = load i32, ptr %3302, align 4, !tbaa !9
  %3304 = mul nsw i32 %3303, 3
  %3305 = load i32, ptr %86, align 4, !tbaa !9
  %3306 = add nsw i32 %3304, %3305
  %3307 = sext i32 %3306 to i64
  %3308 = getelementptr inbounds double, ptr %3301, i64 %3307
  store double 0.000000e+00, ptr %3308, align 8, !tbaa !11
  %3309 = load double, ptr %81, align 8, !tbaa !11
  %3310 = fneg double %3309
  %3311 = load double, ptr %56, align 8, !tbaa !11
  %3312 = fdiv double %3310, %3311
  %3313 = load ptr, ptr %31, align 8, !tbaa !5
  %3314 = load ptr, ptr %20, align 8, !tbaa !5
  %3315 = load i32, ptr %3314, align 4, !tbaa !9
  %3316 = shl i32 %3315, 1
  %3317 = load i32, ptr %86, align 4, !tbaa !9
  %3318 = add nsw i32 %3316, %3317
  %3319 = sub nsw i32 %3318, 1
  %3320 = sext i32 %3319 to i64
  %3321 = getelementptr inbounds double, ptr %3313, i64 %3320
  store double %3312, ptr %3321, align 8, !tbaa !11
  %3322 = load double, ptr %80, align 8, !tbaa !11
  %3323 = fneg double %3322
  %3324 = load double, ptr %56, align 8, !tbaa !11
  %3325 = fdiv double %3323, %3324
  %3326 = load ptr, ptr %31, align 8, !tbaa !5
  %3327 = load ptr, ptr %20, align 8, !tbaa !5
  %3328 = load i32, ptr %3327, align 4, !tbaa !9
  %3329 = mul nsw i32 %3328, 3
  %3330 = load i32, ptr %86, align 4, !tbaa !9
  %3331 = add nsw i32 %3329, %3330
  %3332 = sub nsw i32 %3331, 1
  %3333 = sext i32 %3332 to i64
  %3334 = getelementptr inbounds double, ptr %3326, i64 %3333
  store double %3325, ptr %3334, align 8, !tbaa !11
  br label %3426

3335:                                             ; preds = %3288
  %3336 = load ptr, ptr %31, align 8, !tbaa !5
  %3337 = load ptr, ptr %20, align 8, !tbaa !5
  %3338 = load i32, ptr %3337, align 4, !tbaa !9
  %3339 = shl i32 %3338, 1
  %3340 = load i32, ptr %86, align 4, !tbaa !9
  %3341 = add nsw i32 %3339, %3340
  %3342 = sub nsw i32 %3341, 1
  %3343 = sext i32 %3342 to i64
  %3344 = getelementptr inbounds double, ptr %3336, i64 %3343
  store double 1.000000e+00, ptr %3344, align 8, !tbaa !11
  %3345 = load ptr, ptr %31, align 8, !tbaa !5
  %3346 = load ptr, ptr %20, align 8, !tbaa !5
  %3347 = load i32, ptr %3346, align 4, !tbaa !9
  %3348 = mul nsw i32 %3347, 3
  %3349 = load i32, ptr %86, align 4, !tbaa !9
  %3350 = add nsw i32 %3348, %3349
  %3351 = sub nsw i32 %3350, 1
  %3352 = sext i32 %3351 to i64
  %3353 = getelementptr inbounds double, ptr %3345, i64 %3352
  store double 0.000000e+00, ptr %3353, align 8, !tbaa !11
  %3354 = load double, ptr %68, align 8, !tbaa !11
  %3355 = load ptr, ptr %21, align 8, !tbaa !5
  %3356 = load i32, ptr %86, align 4, !tbaa !9
  %3357 = sub nsw i32 %3356, 1
  %3358 = load i32, ptr %86, align 4, !tbaa !9
  %3359 = load i32, ptr %35, align 4, !tbaa !9
  %3360 = mul nsw i32 %3358, %3359
  %3361 = add nsw i32 %3357, %3360
  %3362 = sext i32 %3361 to i64
  %3363 = getelementptr inbounds double, ptr %3355, i64 %3362
  %3364 = load double, ptr %3363, align 8, !tbaa !11
  %3365 = fmul double %3354, %3364
  store double %3365, ptr %56, align 8, !tbaa !11
  %3366 = load double, ptr %100, align 8, !tbaa !11
  %3367 = load ptr, ptr %23, align 8, !tbaa !5
  %3368 = load i32, ptr %86, align 4, !tbaa !9
  %3369 = sub nsw i32 %3368, 1
  %3370 = load i32, ptr %86, align 4, !tbaa !9
  %3371 = sub nsw i32 %3370, 1
  %3372 = load i32, ptr %33, align 4, !tbaa !9
  %3373 = mul nsw i32 %3371, %3372
  %3374 = add nsw i32 %3369, %3373
  %3375 = sext i32 %3374 to i64
  %3376 = getelementptr inbounds double, ptr %3367, i64 %3375
  %3377 = load double, ptr %3376, align 8, !tbaa !11
  %3378 = load double, ptr %68, align 8, !tbaa !11
  %3379 = load ptr, ptr %21, align 8, !tbaa !5
  %3380 = load i32, ptr %86, align 4, !tbaa !9
  %3381 = sub nsw i32 %3380, 1
  %3382 = load i32, ptr %86, align 4, !tbaa !9
  %3383 = sub nsw i32 %3382, 1
  %3384 = load i32, ptr %35, align 4, !tbaa !9
  %3385 = mul nsw i32 %3383, %3384
  %3386 = add nsw i32 %3381, %3385
  %3387 = sext i32 %3386 to i64
  %3388 = getelementptr inbounds double, ptr %3379, i64 %3387
  %3389 = load double, ptr %3388, align 8, !tbaa !11
  %3390 = fmul double %3378, %3389
  %3391 = fneg double %3390
  %3392 = call double @llvm.fmuladd.f64(double %3366, double %3377, double %3391)
  %3393 = load double, ptr %56, align 8, !tbaa !11
  %3394 = fdiv double %3392, %3393
  %3395 = load ptr, ptr %31, align 8, !tbaa !5
  %3396 = load ptr, ptr %20, align 8, !tbaa !5
  %3397 = load i32, ptr %3396, align 4, !tbaa !9
  %3398 = shl i32 %3397, 1
  %3399 = load i32, ptr %86, align 4, !tbaa !9
  %3400 = add nsw i32 %3398, %3399
  %3401 = sext i32 %3400 to i64
  %3402 = getelementptr inbounds double, ptr %3395, i64 %3401
  store double %3394, ptr %3402, align 8, !tbaa !11
  %3403 = load double, ptr %94, align 8, !tbaa !11
  %3404 = load ptr, ptr %23, align 8, !tbaa !5
  %3405 = load i32, ptr %86, align 4, !tbaa !9
  %3406 = sub nsw i32 %3405, 1
  %3407 = load i32, ptr %86, align 4, !tbaa !9
  %3408 = sub nsw i32 %3407, 1
  %3409 = load i32, ptr %33, align 4, !tbaa !9
  %3410 = mul nsw i32 %3408, %3409
  %3411 = add nsw i32 %3406, %3410
  %3412 = sext i32 %3411 to i64
  %3413 = getelementptr inbounds double, ptr %3404, i64 %3412
  %3414 = load double, ptr %3413, align 8, !tbaa !11
  %3415 = fmul double %3403, %3414
  %3416 = load double, ptr %56, align 8, !tbaa !11
  %3417 = fdiv double %3415, %3416
  %3418 = load ptr, ptr %31, align 8, !tbaa !5
  %3419 = load ptr, ptr %20, align 8, !tbaa !5
  %3420 = load i32, ptr %3419, align 4, !tbaa !9
  %3421 = mul nsw i32 %3420, 3
  %3422 = load i32, ptr %86, align 4, !tbaa !9
  %3423 = add nsw i32 %3421, %3422
  %3424 = sext i32 %3423 to i64
  %3425 = getelementptr inbounds double, ptr %3418, i64 %3424
  store double %3417, ptr %3425, align 8, !tbaa !11
  br label %3426

3426:                                             ; preds = %3335, %3292
  %3427 = load ptr, ptr %31, align 8, !tbaa !5
  %3428 = load ptr, ptr %20, align 8, !tbaa !5
  %3429 = load i32, ptr %3428, align 4, !tbaa !9
  %3430 = shl i32 %3429, 1
  %3431 = load i32, ptr %86, align 4, !tbaa !9
  %3432 = add nsw i32 %3430, %3431
  %3433 = sext i32 %3432 to i64
  %3434 = getelementptr inbounds double, ptr %3427, i64 %3433
  %3435 = load double, ptr %3434, align 8, !tbaa !11
  store double %3435, ptr %46, align 8, !tbaa !11
  %3436 = load double, ptr %46, align 8, !tbaa !11
  %3437 = fcmp oge double %3436, 0.000000e+00
  br i1 %3437, label %3438, label %3440

3438:                                             ; preds = %3426
  %3439 = load double, ptr %46, align 8, !tbaa !11
  br label %3443

3440:                                             ; preds = %3426
  %3441 = load double, ptr %46, align 8, !tbaa !11
  %3442 = fneg double %3441
  br label %3443

3443:                                             ; preds = %3440, %3438
  %3444 = phi double [ %3439, %3438 ], [ %3442, %3440 ]
  %3445 = load ptr, ptr %31, align 8, !tbaa !5
  %3446 = load ptr, ptr %20, align 8, !tbaa !5
  %3447 = load i32, ptr %3446, align 4, !tbaa !9
  %3448 = mul nsw i32 %3447, 3
  %3449 = load i32, ptr %86, align 4, !tbaa !9
  %3450 = add nsw i32 %3448, %3449
  %3451 = sext i32 %3450 to i64
  %3452 = getelementptr inbounds double, ptr %3445, i64 %3451
  %3453 = load double, ptr %3452, align 8, !tbaa !11
  store double %3453, ptr %47, align 8, !tbaa !11
  %3454 = load double, ptr %47, align 8, !tbaa !11
  %3455 = fcmp oge double %3454, 0.000000e+00
  br i1 %3455, label %3456, label %3458

3456:                                             ; preds = %3443
  %3457 = load double, ptr %47, align 8, !tbaa !11
  br label %3461

3458:                                             ; preds = %3443
  %3459 = load double, ptr %47, align 8, !tbaa !11
  %3460 = fneg double %3459
  br label %3461

3461:                                             ; preds = %3458, %3456
  %3462 = phi double [ %3457, %3456 ], [ %3460, %3458 ]
  %3463 = fadd double %3444, %3462
  store double %3463, ptr %50, align 8, !tbaa !11
  %3464 = load ptr, ptr %31, align 8, !tbaa !5
  %3465 = load ptr, ptr %20, align 8, !tbaa !5
  %3466 = load i32, ptr %3465, align 4, !tbaa !9
  %3467 = shl i32 %3466, 1
  %3468 = load i32, ptr %86, align 4, !tbaa !9
  %3469 = add nsw i32 %3467, %3468
  %3470 = sub nsw i32 %3469, 1
  %3471 = sext i32 %3470 to i64
  %3472 = getelementptr inbounds double, ptr %3464, i64 %3471
  %3473 = load double, ptr %3472, align 8, !tbaa !11
  store double %3473, ptr %48, align 8, !tbaa !11
  %3474 = load double, ptr %48, align 8, !tbaa !11
  %3475 = fcmp oge double %3474, 0.000000e+00
  br i1 %3475, label %3476, label %3478

3476:                                             ; preds = %3461
  %3477 = load double, ptr %48, align 8, !tbaa !11
  br label %3481

3478:                                             ; preds = %3461
  %3479 = load double, ptr %48, align 8, !tbaa !11
  %3480 = fneg double %3479
  br label %3481

3481:                                             ; preds = %3478, %3476
  %3482 = phi double [ %3477, %3476 ], [ %3480, %3478 ]
  %3483 = load ptr, ptr %31, align 8, !tbaa !5
  %3484 = load ptr, ptr %20, align 8, !tbaa !5
  %3485 = load i32, ptr %3484, align 4, !tbaa !9
  %3486 = mul nsw i32 %3485, 3
  %3487 = load i32, ptr %86, align 4, !tbaa !9
  %3488 = add nsw i32 %3486, %3487
  %3489 = sub nsw i32 %3488, 1
  %3490 = sext i32 %3489 to i64
  %3491 = getelementptr inbounds double, ptr %3483, i64 %3490
  %3492 = load double, ptr %3491, align 8, !tbaa !11
  store double %3492, ptr %49, align 8, !tbaa !11
  %3493 = load double, ptr %49, align 8, !tbaa !11
  %3494 = fcmp oge double %3493, 0.000000e+00
  br i1 %3494, label %3495, label %3497

3495:                                             ; preds = %3481
  %3496 = load double, ptr %49, align 8, !tbaa !11
  br label %3500

3497:                                             ; preds = %3481
  %3498 = load double, ptr %49, align 8, !tbaa !11
  %3499 = fneg double %3498
  br label %3500

3500:                                             ; preds = %3497, %3495
  %3501 = phi double [ %3496, %3495 ], [ %3499, %3497 ]
  %3502 = fadd double %3482, %3501
  store double %3502, ptr %51, align 8, !tbaa !11
  %3503 = load double, ptr %50, align 8, !tbaa !11
  %3504 = load double, ptr %51, align 8, !tbaa !11
  %3505 = fcmp oge double %3503, %3504
  br i1 %3505, label %3506, label %3508

3506:                                             ; preds = %3500
  %3507 = load double, ptr %50, align 8, !tbaa !11
  br label %3510

3508:                                             ; preds = %3500
  %3509 = load double, ptr %51, align 8, !tbaa !11
  br label %3510

3510:                                             ; preds = %3508, %3506
  %3511 = phi double [ %3507, %3506 ], [ %3509, %3508 ]
  store double %3511, ptr %57, align 8, !tbaa !11
  %3512 = load double, ptr %68, align 8, !tbaa !11
  %3513 = load ptr, ptr %31, align 8, !tbaa !5
  %3514 = load ptr, ptr %20, align 8, !tbaa !5
  %3515 = load i32, ptr %3514, align 4, !tbaa !9
  %3516 = shl i32 %3515, 1
  %3517 = load i32, ptr %86, align 4, !tbaa !9
  %3518 = add nsw i32 %3516, %3517
  %3519 = sub nsw i32 %3518, 1
  %3520 = sext i32 %3519 to i64
  %3521 = getelementptr inbounds double, ptr %3513, i64 %3520
  %3522 = load double, ptr %3521, align 8, !tbaa !11
  %3523 = fmul double %3512, %3522
  store double %3523, ptr %97, align 8, !tbaa !11
  %3524 = load double, ptr %68, align 8, !tbaa !11
  %3525 = load ptr, ptr %31, align 8, !tbaa !5
  %3526 = load ptr, ptr %20, align 8, !tbaa !5
  %3527 = load i32, ptr %3526, align 4, !tbaa !9
  %3528 = mul nsw i32 %3527, 3
  %3529 = load i32, ptr %86, align 4, !tbaa !9
  %3530 = add nsw i32 %3528, %3529
  %3531 = sub nsw i32 %3530, 1
  %3532 = sext i32 %3531 to i64
  %3533 = getelementptr inbounds double, ptr %3525, i64 %3532
  %3534 = load double, ptr %3533, align 8, !tbaa !11
  %3535 = fmul double %3524, %3534
  store double %3535, ptr %90, align 8, !tbaa !11
  %3536 = load double, ptr %100, align 8, !tbaa !11
  %3537 = load ptr, ptr %31, align 8, !tbaa !5
  %3538 = load ptr, ptr %20, align 8, !tbaa !5
  %3539 = load i32, ptr %3538, align 4, !tbaa !9
  %3540 = shl i32 %3539, 1
  %3541 = load i32, ptr %86, align 4, !tbaa !9
  %3542 = add nsw i32 %3540, %3541
  %3543 = sub nsw i32 %3542, 1
  %3544 = sext i32 %3543 to i64
  %3545 = getelementptr inbounds double, ptr %3537, i64 %3544
  %3546 = load double, ptr %3545, align 8, !tbaa !11
  %3547 = load double, ptr %94, align 8, !tbaa !11
  %3548 = load ptr, ptr %31, align 8, !tbaa !5
  %3549 = load ptr, ptr %20, align 8, !tbaa !5
  %3550 = load i32, ptr %3549, align 4, !tbaa !9
  %3551 = mul nsw i32 %3550, 3
  %3552 = load i32, ptr %86, align 4, !tbaa !9
  %3553 = add nsw i32 %3551, %3552
  %3554 = sub nsw i32 %3553, 1
  %3555 = sext i32 %3554 to i64
  %3556 = getelementptr inbounds double, ptr %3548, i64 %3555
  %3557 = load double, ptr %3556, align 8, !tbaa !11
  %3558 = fmul double %3547, %3557
  %3559 = fneg double %3558
  %3560 = call double @llvm.fmuladd.f64(double %3536, double %3546, double %3559)
  store double %3560, ptr %99, align 8, !tbaa !11
  %3561 = load double, ptr %94, align 8, !tbaa !11
  %3562 = load ptr, ptr %31, align 8, !tbaa !5
  %3563 = load ptr, ptr %20, align 8, !tbaa !5
  %3564 = load i32, ptr %3563, align 4, !tbaa !9
  %3565 = shl i32 %3564, 1
  %3566 = load i32, ptr %86, align 4, !tbaa !9
  %3567 = add nsw i32 %3565, %3566
  %3568 = sub nsw i32 %3567, 1
  %3569 = sext i32 %3568 to i64
  %3570 = getelementptr inbounds double, ptr %3562, i64 %3569
  %3571 = load double, ptr %3570, align 8, !tbaa !11
  %3572 = load double, ptr %100, align 8, !tbaa !11
  %3573 = load ptr, ptr %31, align 8, !tbaa !5
  %3574 = load ptr, ptr %20, align 8, !tbaa !5
  %3575 = load i32, ptr %3574, align 4, !tbaa !9
  %3576 = mul nsw i32 %3575, 3
  %3577 = load i32, ptr %86, align 4, !tbaa !9
  %3578 = add nsw i32 %3576, %3577
  %3579 = sub nsw i32 %3578, 1
  %3580 = sext i32 %3579 to i64
  %3581 = getelementptr inbounds double, ptr %3573, i64 %3580
  %3582 = load double, ptr %3581, align 8, !tbaa !11
  %3583 = fmul double %3572, %3582
  %3584 = call double @llvm.fmuladd.f64(double %3561, double %3571, double %3583)
  store double %3584, ptr %91, align 8, !tbaa !11
  %3585 = load double, ptr %68, align 8, !tbaa !11
  %3586 = load ptr, ptr %31, align 8, !tbaa !5
  %3587 = load ptr, ptr %20, align 8, !tbaa !5
  %3588 = load i32, ptr %3587, align 4, !tbaa !9
  %3589 = shl i32 %3588, 1
  %3590 = load i32, ptr %86, align 4, !tbaa !9
  %3591 = add nsw i32 %3589, %3590
  %3592 = sext i32 %3591 to i64
  %3593 = getelementptr inbounds double, ptr %3586, i64 %3592
  %3594 = load double, ptr %3593, align 8, !tbaa !11
  %3595 = fmul double %3585, %3594
  store double %3595, ptr %62, align 8, !tbaa !11
  %3596 = load double, ptr %68, align 8, !tbaa !11
  %3597 = load ptr, ptr %31, align 8, !tbaa !5
  %3598 = load ptr, ptr %20, align 8, !tbaa !5
  %3599 = load i32, ptr %3598, align 4, !tbaa !9
  %3600 = mul nsw i32 %3599, 3
  %3601 = load i32, ptr %86, align 4, !tbaa !9
  %3602 = add nsw i32 %3600, %3601
  %3603 = sext i32 %3602 to i64
  %3604 = getelementptr inbounds double, ptr %3597, i64 %3603
  %3605 = load double, ptr %3604, align 8, !tbaa !11
  %3606 = fmul double %3596, %3605
  store double %3606, ptr %60, align 8, !tbaa !11
  %3607 = load double, ptr %100, align 8, !tbaa !11
  %3608 = load ptr, ptr %31, align 8, !tbaa !5
  %3609 = load ptr, ptr %20, align 8, !tbaa !5
  %3610 = load i32, ptr %3609, align 4, !tbaa !9
  %3611 = shl i32 %3610, 1
  %3612 = load i32, ptr %86, align 4, !tbaa !9
  %3613 = add nsw i32 %3611, %3612
  %3614 = sext i32 %3613 to i64
  %3615 = getelementptr inbounds double, ptr %3608, i64 %3614
  %3616 = load double, ptr %3615, align 8, !tbaa !11
  %3617 = load double, ptr %94, align 8, !tbaa !11
  %3618 = load ptr, ptr %31, align 8, !tbaa !5
  %3619 = load ptr, ptr %20, align 8, !tbaa !5
  %3620 = load i32, ptr %3619, align 4, !tbaa !9
  %3621 = mul nsw i32 %3620, 3
  %3622 = load i32, ptr %86, align 4, !tbaa !9
  %3623 = add nsw i32 %3621, %3622
  %3624 = sext i32 %3623 to i64
  %3625 = getelementptr inbounds double, ptr %3618, i64 %3624
  %3626 = load double, ptr %3625, align 8, !tbaa !11
  %3627 = fmul double %3617, %3626
  %3628 = fneg double %3627
  %3629 = call double @llvm.fmuladd.f64(double %3607, double %3616, double %3628)
  store double %3629, ptr %63, align 8, !tbaa !11
  %3630 = load double, ptr %94, align 8, !tbaa !11
  %3631 = load ptr, ptr %31, align 8, !tbaa !5
  %3632 = load ptr, ptr %20, align 8, !tbaa !5
  %3633 = load i32, ptr %3632, align 4, !tbaa !9
  %3634 = shl i32 %3633, 1
  %3635 = load i32, ptr %86, align 4, !tbaa !9
  %3636 = add nsw i32 %3634, %3635
  %3637 = sext i32 %3636 to i64
  %3638 = getelementptr inbounds double, ptr %3631, i64 %3637
  %3639 = load double, ptr %3638, align 8, !tbaa !11
  %3640 = load double, ptr %100, align 8, !tbaa !11
  %3641 = load ptr, ptr %31, align 8, !tbaa !5
  %3642 = load ptr, ptr %20, align 8, !tbaa !5
  %3643 = load i32, ptr %3642, align 4, !tbaa !9
  %3644 = mul nsw i32 %3643, 3
  %3645 = load i32, ptr %86, align 4, !tbaa !9
  %3646 = add nsw i32 %3644, %3645
  %3647 = sext i32 %3646 to i64
  %3648 = getelementptr inbounds double, ptr %3641, i64 %3647
  %3649 = load double, ptr %3648, align 8, !tbaa !11
  %3650 = fmul double %3640, %3649
  %3651 = call double @llvm.fmuladd.f64(double %3630, double %3639, double %3650)
  store double %3651, ptr %61, align 8, !tbaa !11
  %3652 = load i32, ptr %86, align 4, !tbaa !9
  %3653 = sub nsw i32 %3652, 2
  store i32 %3653, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %3654

3654:                                             ; preds = %3771, %3510
  %3655 = load i32, ptr %98, align 4, !tbaa !9
  %3656 = load i32, ptr %41, align 4, !tbaa !9
  %3657 = icmp sle i32 %3655, %3656
  br i1 %3657, label %3658, label %3774

3658:                                             ; preds = %3654
  %3659 = load double, ptr %97, align 8, !tbaa !11
  %3660 = fneg double %3659
  %3661 = load ptr, ptr %21, align 8, !tbaa !5
  %3662 = load i32, ptr %98, align 4, !tbaa !9
  %3663 = load i32, ptr %86, align 4, !tbaa !9
  %3664 = sub nsw i32 %3663, 1
  %3665 = load i32, ptr %35, align 4, !tbaa !9
  %3666 = mul nsw i32 %3664, %3665
  %3667 = add nsw i32 %3662, %3666
  %3668 = sext i32 %3667 to i64
  %3669 = getelementptr inbounds double, ptr %3661, i64 %3668
  %3670 = load double, ptr %3669, align 8, !tbaa !11
  %3671 = load double, ptr %99, align 8, !tbaa !11
  %3672 = load ptr, ptr %23, align 8, !tbaa !5
  %3673 = load i32, ptr %98, align 4, !tbaa !9
  %3674 = load i32, ptr %86, align 4, !tbaa !9
  %3675 = sub nsw i32 %3674, 1
  %3676 = load i32, ptr %33, align 4, !tbaa !9
  %3677 = mul nsw i32 %3675, %3676
  %3678 = add nsw i32 %3673, %3677
  %3679 = sext i32 %3678 to i64
  %3680 = getelementptr inbounds double, ptr %3672, i64 %3679
  %3681 = load double, ptr %3680, align 8, !tbaa !11
  %3682 = fmul double %3671, %3681
  %3683 = call double @llvm.fmuladd.f64(double %3660, double %3670, double %3682)
  %3684 = load double, ptr %62, align 8, !tbaa !11
  %3685 = load ptr, ptr %21, align 8, !tbaa !5
  %3686 = load i32, ptr %98, align 4, !tbaa !9
  %3687 = load i32, ptr %86, align 4, !tbaa !9
  %3688 = load i32, ptr %35, align 4, !tbaa !9
  %3689 = mul nsw i32 %3687, %3688
  %3690 = add nsw i32 %3686, %3689
  %3691 = sext i32 %3690 to i64
  %3692 = getelementptr inbounds double, ptr %3685, i64 %3691
  %3693 = load double, ptr %3692, align 8, !tbaa !11
  %3694 = fneg double %3684
  %3695 = call double @llvm.fmuladd.f64(double %3694, double %3693, double %3683)
  %3696 = load double, ptr %63, align 8, !tbaa !11
  %3697 = load ptr, ptr %23, align 8, !tbaa !5
  %3698 = load i32, ptr %98, align 4, !tbaa !9
  %3699 = load i32, ptr %86, align 4, !tbaa !9
  %3700 = load i32, ptr %33, align 4, !tbaa !9
  %3701 = mul nsw i32 %3699, %3700
  %3702 = add nsw i32 %3698, %3701
  %3703 = sext i32 %3702 to i64
  %3704 = getelementptr inbounds double, ptr %3697, i64 %3703
  %3705 = load double, ptr %3704, align 8, !tbaa !11
  %3706 = call double @llvm.fmuladd.f64(double %3696, double %3705, double %3695)
  %3707 = load ptr, ptr %31, align 8, !tbaa !5
  %3708 = load ptr, ptr %20, align 8, !tbaa !5
  %3709 = load i32, ptr %3708, align 4, !tbaa !9
  %3710 = shl i32 %3709, 1
  %3711 = load i32, ptr %98, align 4, !tbaa !9
  %3712 = add nsw i32 %3710, %3711
  %3713 = sext i32 %3712 to i64
  %3714 = getelementptr inbounds double, ptr %3707, i64 %3713
  store double %3706, ptr %3714, align 8, !tbaa !11
  %3715 = load double, ptr %90, align 8, !tbaa !11
  %3716 = fneg double %3715
  %3717 = load ptr, ptr %21, align 8, !tbaa !5
  %3718 = load i32, ptr %98, align 4, !tbaa !9
  %3719 = load i32, ptr %86, align 4, !tbaa !9
  %3720 = sub nsw i32 %3719, 1
  %3721 = load i32, ptr %35, align 4, !tbaa !9
  %3722 = mul nsw i32 %3720, %3721
  %3723 = add nsw i32 %3718, %3722
  %3724 = sext i32 %3723 to i64
  %3725 = getelementptr inbounds double, ptr %3717, i64 %3724
  %3726 = load double, ptr %3725, align 8, !tbaa !11
  %3727 = load double, ptr %91, align 8, !tbaa !11
  %3728 = load ptr, ptr %23, align 8, !tbaa !5
  %3729 = load i32, ptr %98, align 4, !tbaa !9
  %3730 = load i32, ptr %86, align 4, !tbaa !9
  %3731 = sub nsw i32 %3730, 1
  %3732 = load i32, ptr %33, align 4, !tbaa !9
  %3733 = mul nsw i32 %3731, %3732
  %3734 = add nsw i32 %3729, %3733
  %3735 = sext i32 %3734 to i64
  %3736 = getelementptr inbounds double, ptr %3728, i64 %3735
  %3737 = load double, ptr %3736, align 8, !tbaa !11
  %3738 = fmul double %3727, %3737
  %3739 = call double @llvm.fmuladd.f64(double %3716, double %3726, double %3738)
  %3740 = load double, ptr %60, align 8, !tbaa !11
  %3741 = load ptr, ptr %21, align 8, !tbaa !5
  %3742 = load i32, ptr %98, align 4, !tbaa !9
  %3743 = load i32, ptr %86, align 4, !tbaa !9
  %3744 = load i32, ptr %35, align 4, !tbaa !9
  %3745 = mul nsw i32 %3743, %3744
  %3746 = add nsw i32 %3742, %3745
  %3747 = sext i32 %3746 to i64
  %3748 = getelementptr inbounds double, ptr %3741, i64 %3747
  %3749 = load double, ptr %3748, align 8, !tbaa !11
  %3750 = fneg double %3740
  %3751 = call double @llvm.fmuladd.f64(double %3750, double %3749, double %3739)
  %3752 = load double, ptr %61, align 8, !tbaa !11
  %3753 = load ptr, ptr %23, align 8, !tbaa !5
  %3754 = load i32, ptr %98, align 4, !tbaa !9
  %3755 = load i32, ptr %86, align 4, !tbaa !9
  %3756 = load i32, ptr %33, align 4, !tbaa !9
  %3757 = mul nsw i32 %3755, %3756
  %3758 = add nsw i32 %3754, %3757
  %3759 = sext i32 %3758 to i64
  %3760 = getelementptr inbounds double, ptr %3753, i64 %3759
  %3761 = load double, ptr %3760, align 8, !tbaa !11
  %3762 = call double @llvm.fmuladd.f64(double %3752, double %3761, double %3751)
  %3763 = load ptr, ptr %31, align 8, !tbaa !5
  %3764 = load ptr, ptr %20, align 8, !tbaa !5
  %3765 = load i32, ptr %3764, align 4, !tbaa !9
  %3766 = mul nsw i32 %3765, 3
  %3767 = load i32, ptr %98, align 4, !tbaa !9
  %3768 = add nsw i32 %3766, %3767
  %3769 = sext i32 %3768 to i64
  %3770 = getelementptr inbounds double, ptr %3763, i64 %3769
  store double %3762, ptr %3770, align 8, !tbaa !11
  br label %3771

3771:                                             ; preds = %3658
  %3772 = load i32, ptr %98, align 4, !tbaa !9
  %3773 = add nsw i32 %3772, 1
  store i32 %3773, ptr %98, align 4, !tbaa !9
  br label %3654, !llvm.loop !40

3774:                                             ; preds = %3654
  br label %3775

3775:                                             ; preds = %3774, %3038
  %3776 = load double, ptr %113, align 8, !tbaa !11
  %3777 = load double, ptr %88, align 8, !tbaa !11
  %3778 = fmul double %3776, %3777
  %3779 = load double, ptr %77, align 8, !tbaa !11
  %3780 = fmul double %3778, %3779
  store double %3780, ptr %46, align 8, !tbaa !11
  %3781 = load double, ptr %113, align 8, !tbaa !11
  %3782 = load double, ptr %89, align 8, !tbaa !11
  %3783 = fmul double %3781, %3782
  %3784 = load double, ptr %78, align 8, !tbaa !11
  %3785 = fmul double %3783, %3784
  store double %3785, ptr %47, align 8, !tbaa !11
  %3786 = load double, ptr %46, align 8, !tbaa !11
  %3787 = load double, ptr %47, align 8, !tbaa !11
  %3788 = fcmp oge double %3786, %3787
  br i1 %3788, label %3789, label %3791

3789:                                             ; preds = %3775
  %3790 = load double, ptr %46, align 8, !tbaa !11
  br label %3793

3791:                                             ; preds = %3775
  %3792 = load double, ptr %47, align 8, !tbaa !11
  br label %3793

3793:                                             ; preds = %3791, %3789
  %3794 = phi double [ %3790, %3789 ], [ %3792, %3791 ]
  store double %3794, ptr %46, align 8, !tbaa !11
  %3795 = load double, ptr %46, align 8, !tbaa !11
  %3796 = load double, ptr %104, align 8, !tbaa !11
  %3797 = fcmp oge double %3795, %3796
  br i1 %3797, label %3798, label %3800

3798:                                             ; preds = %3793
  %3799 = load double, ptr %46, align 8, !tbaa !11
  br label %3802

3800:                                             ; preds = %3793
  %3801 = load double, ptr %104, align 8, !tbaa !11
  br label %3802

3802:                                             ; preds = %3800, %3798
  %3803 = phi double [ %3799, %3798 ], [ %3801, %3800 ]
  store double %3803, ptr %55, align 8, !tbaa !11
  store i32 0, ptr %73, align 4, !tbaa !9
  %3804 = load i32, ptr %86, align 4, !tbaa !9
  %3805 = load i32, ptr %102, align 4, !tbaa !9
  %3806 = sub nsw i32 %3804, %3805
  store i32 %3806, ptr %67, align 4, !tbaa !9
  br label %3807

3807:                                             ; preds = %4403, %3802
  %3808 = load i32, ptr %67, align 4, !tbaa !9
  %3809 = icmp sge i32 %3808, 1
  br i1 %3809, label %3810, label %4406

3810:                                             ; preds = %3807
  %3811 = load i32, ptr %73, align 4, !tbaa !9
  %3812 = icmp ne i32 %3811, 0
  br i1 %3812, label %3830, label %3813

3813:                                             ; preds = %3810
  %3814 = load i32, ptr %67, align 4, !tbaa !9
  %3815 = icmp sgt i32 %3814, 1
  br i1 %3815, label %3816, label %3830

3816:                                             ; preds = %3813
  %3817 = load ptr, ptr %21, align 8, !tbaa !5
  %3818 = load i32, ptr %67, align 4, !tbaa !9
  %3819 = load i32, ptr %67, align 4, !tbaa !9
  %3820 = sub nsw i32 %3819, 1
  %3821 = load i32, ptr %35, align 4, !tbaa !9
  %3822 = mul nsw i32 %3820, %3821
  %3823 = add nsw i32 %3818, %3822
  %3824 = sext i32 %3823 to i64
  %3825 = getelementptr inbounds double, ptr %3817, i64 %3824
  %3826 = load double, ptr %3825, align 8, !tbaa !11
  %3827 = fcmp une double %3826, 0.000000e+00
  br i1 %3827, label %3828, label %3829

3828:                                             ; preds = %3816
  store i32 1, ptr %73, align 4, !tbaa !9
  br label %4402

3829:                                             ; preds = %3816
  br label %3830

3830:                                             ; preds = %3829, %3813, %3810
  %3831 = load ptr, ptr %23, align 8, !tbaa !5
  %3832 = load i32, ptr %67, align 4, !tbaa !9
  %3833 = load i32, ptr %67, align 4, !tbaa !9
  %3834 = load i32, ptr %33, align 4, !tbaa !9
  %3835 = mul nsw i32 %3833, %3834
  %3836 = add nsw i32 %3832, %3835
  %3837 = sext i32 %3836 to i64
  %3838 = getelementptr inbounds double, ptr %3831, i64 %3837
  %3839 = load double, ptr %3838, align 8, !tbaa !11
  %3840 = getelementptr inbounds [2 x double], ptr %65, i64 0, i64 0
  store double %3839, ptr %3840, align 16, !tbaa !11
  %3841 = load i32, ptr %73, align 4, !tbaa !9
  %3842 = icmp ne i32 %3841, 0
  br i1 %3842, label %3843, label %3856

3843:                                             ; preds = %3830
  store i32 2, ptr %87, align 4, !tbaa !9
  %3844 = load ptr, ptr %23, align 8, !tbaa !5
  %3845 = load i32, ptr %67, align 4, !tbaa !9
  %3846 = add nsw i32 %3845, 1
  %3847 = load i32, ptr %67, align 4, !tbaa !9
  %3848 = add nsw i32 %3847, 1
  %3849 = load i32, ptr %33, align 4, !tbaa !9
  %3850 = mul nsw i32 %3848, %3849
  %3851 = add nsw i32 %3846, %3850
  %3852 = sext i32 %3851 to i64
  %3853 = getelementptr inbounds double, ptr %3844, i64 %3852
  %3854 = load double, ptr %3853, align 8, !tbaa !11
  %3855 = getelementptr inbounds [2 x double], ptr %65, i64 0, i64 1
  store double %3854, ptr %3855, align 8, !tbaa !11
  br label %3857

3856:                                             ; preds = %3830
  store i32 1, ptr %87, align 4, !tbaa !9
  br label %3857

3857:                                             ; preds = %3856, %3843
  %3858 = load ptr, ptr %21, align 8, !tbaa !5
  %3859 = load i32, ptr %67, align 4, !tbaa !9
  %3860 = load i32, ptr %67, align 4, !tbaa !9
  %3861 = load i32, ptr %35, align 4, !tbaa !9
  %3862 = mul nsw i32 %3860, %3861
  %3863 = add nsw i32 %3859, %3862
  %3864 = sext i32 %3863 to i64
  %3865 = getelementptr inbounds double, ptr %3858, i64 %3864
  %3866 = load ptr, ptr %22, align 8, !tbaa !5
  %3867 = getelementptr inbounds [2 x double], ptr %65, i64 0, i64 0
  %3868 = getelementptr inbounds [2 x double], ptr %65, i64 0, i64 1
  %3869 = load ptr, ptr %31, align 8, !tbaa !5
  %3870 = load ptr, ptr %20, align 8, !tbaa !5
  %3871 = load i32, ptr %3870, align 4, !tbaa !9
  %3872 = shl i32 %3871, 1
  %3873 = load i32, ptr %67, align 4, !tbaa !9
  %3874 = add nsw i32 %3872, %3873
  %3875 = sext i32 %3874 to i64
  %3876 = getelementptr inbounds double, ptr %3869, i64 %3875
  %3877 = load ptr, ptr %20, align 8, !tbaa !5
  %3878 = getelementptr inbounds [4 x double], ptr %114, i64 0, i64 0
  call void @dlaln2_(ptr noundef @c_false, ptr noundef %87, ptr noundef %102, ptr noundef %55, ptr noundef %68, ptr noundef %3865, ptr noundef %3866, ptr noundef %3867, ptr noundef %3868, ptr noundef %3876, ptr noundef %3877, ptr noundef %100, ptr noundef %94, ptr noundef %3878, ptr noundef @c__2, ptr noundef %69, ptr noundef %56, ptr noundef %74)
  %3879 = load double, ptr %69, align 8, !tbaa !11
  %3880 = fcmp olt double %3879, 1.000000e+00
  br i1 %3880, label %3881, label %3926

3881:                                             ; preds = %3857
  %3882 = load i32, ptr %102, align 4, !tbaa !9
  %3883 = sub nsw i32 %3882, 1
  store i32 %3883, ptr %41, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %3884

3884:                                             ; preds = %3922, %3881
  %3885 = load i32, ptr %101, align 4, !tbaa !9
  %3886 = load i32, ptr %41, align 4, !tbaa !9
  %3887 = icmp sle i32 %3885, %3886
  br i1 %3887, label %3888, label %3925

3888:                                             ; preds = %3884
  %3889 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %3889, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %3890

3890:                                             ; preds = %3918, %3888
  %3891 = load i32, ptr %98, align 4, !tbaa !9
  %3892 = load i32, ptr %42, align 4, !tbaa !9
  %3893 = icmp sle i32 %3891, %3892
  br i1 %3893, label %3894, label %3921

3894:                                             ; preds = %3890
  %3895 = load double, ptr %69, align 8, !tbaa !11
  %3896 = load ptr, ptr %31, align 8, !tbaa !5
  %3897 = load i32, ptr %101, align 4, !tbaa !9
  %3898 = add nsw i32 %3897, 2
  %3899 = load ptr, ptr %20, align 8, !tbaa !5
  %3900 = load i32, ptr %3899, align 4, !tbaa !9
  %3901 = mul nsw i32 %3898, %3900
  %3902 = load i32, ptr %98, align 4, !tbaa !9
  %3903 = add nsw i32 %3901, %3902
  %3904 = sext i32 %3903 to i64
  %3905 = getelementptr inbounds double, ptr %3896, i64 %3904
  %3906 = load double, ptr %3905, align 8, !tbaa !11
  %3907 = fmul double %3895, %3906
  %3908 = load ptr, ptr %31, align 8, !tbaa !5
  %3909 = load i32, ptr %101, align 4, !tbaa !9
  %3910 = add nsw i32 %3909, 2
  %3911 = load ptr, ptr %20, align 8, !tbaa !5
  %3912 = load i32, ptr %3911, align 4, !tbaa !9
  %3913 = mul nsw i32 %3910, %3912
  %3914 = load i32, ptr %98, align 4, !tbaa !9
  %3915 = add nsw i32 %3913, %3914
  %3916 = sext i32 %3915 to i64
  %3917 = getelementptr inbounds double, ptr %3908, i64 %3916
  store double %3907, ptr %3917, align 8, !tbaa !11
  br label %3918

3918:                                             ; preds = %3894
  %3919 = load i32, ptr %98, align 4, !tbaa !9
  %3920 = add nsw i32 %3919, 1
  store i32 %3920, ptr %98, align 4, !tbaa !9
  br label %3890, !llvm.loop !41

3921:                                             ; preds = %3890
  br label %3922

3922:                                             ; preds = %3921
  %3923 = load i32, ptr %101, align 4, !tbaa !9
  %3924 = add nsw i32 %3923, 1
  store i32 %3924, ptr %101, align 4, !tbaa !9
  br label %3884, !llvm.loop !42

3925:                                             ; preds = %3884
  br label %3926

3926:                                             ; preds = %3925, %3857
  %3927 = load double, ptr %69, align 8, !tbaa !11
  %3928 = load double, ptr %57, align 8, !tbaa !11
  %3929 = fmul double %3927, %3928
  store double %3929, ptr %46, align 8, !tbaa !11
  %3930 = load double, ptr %46, align 8, !tbaa !11
  %3931 = load double, ptr %56, align 8, !tbaa !11
  %3932 = fcmp oge double %3930, %3931
  br i1 %3932, label %3933, label %3935

3933:                                             ; preds = %3926
  %3934 = load double, ptr %46, align 8, !tbaa !11
  br label %3937

3935:                                             ; preds = %3926
  %3936 = load double, ptr %56, align 8, !tbaa !11
  br label %3937

3937:                                             ; preds = %3935, %3933
  %3938 = phi double [ %3934, %3933 ], [ %3936, %3935 ]
  store double %3938, ptr %57, align 8, !tbaa !11
  %3939 = load i32, ptr %102, align 4, !tbaa !9
  store i32 %3939, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %101, align 4, !tbaa !9
  br label %3940

3940:                                             ; preds = %3976, %3937
  %3941 = load i32, ptr %101, align 4, !tbaa !9
  %3942 = load i32, ptr %41, align 4, !tbaa !9
  %3943 = icmp sle i32 %3941, %3942
  br i1 %3943, label %3944, label %3979

3944:                                             ; preds = %3940
  %3945 = load i32, ptr %87, align 4, !tbaa !9
  store i32 %3945, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %3946

3946:                                             ; preds = %3972, %3944
  %3947 = load i32, ptr %82, align 4, !tbaa !9
  %3948 = load i32, ptr %42, align 4, !tbaa !9
  %3949 = icmp sle i32 %3947, %3948
  br i1 %3949, label %3950, label %3975

3950:                                             ; preds = %3946
  %3951 = load i32, ptr %82, align 4, !tbaa !9
  %3952 = load i32, ptr %101, align 4, !tbaa !9
  %3953 = shl i32 %3952, 1
  %3954 = add nsw i32 %3951, %3953
  %3955 = sub nsw i32 %3954, 3
  %3956 = sext i32 %3955 to i64
  %3957 = getelementptr inbounds [4 x double], ptr %114, i64 0, i64 %3956
  %3958 = load double, ptr %3957, align 8, !tbaa !11
  %3959 = load ptr, ptr %31, align 8, !tbaa !5
  %3960 = load i32, ptr %101, align 4, !tbaa !9
  %3961 = add nsw i32 %3960, 1
  %3962 = load ptr, ptr %20, align 8, !tbaa !5
  %3963 = load i32, ptr %3962, align 4, !tbaa !9
  %3964 = mul nsw i32 %3961, %3963
  %3965 = load i32, ptr %67, align 4, !tbaa !9
  %3966 = add nsw i32 %3964, %3965
  %3967 = load i32, ptr %82, align 4, !tbaa !9
  %3968 = add nsw i32 %3966, %3967
  %3969 = sub nsw i32 %3968, 1
  %3970 = sext i32 %3969 to i64
  %3971 = getelementptr inbounds double, ptr %3959, i64 %3970
  store double %3958, ptr %3971, align 8, !tbaa !11
  br label %3972

3972:                                             ; preds = %3950
  %3973 = load i32, ptr %82, align 4, !tbaa !9
  %3974 = add nsw i32 %3973, 1
  store i32 %3974, ptr %82, align 4, !tbaa !9
  br label %3946, !llvm.loop !43

3975:                                             ; preds = %3946
  br label %3976

3976:                                             ; preds = %3975
  %3977 = load i32, ptr %101, align 4, !tbaa !9
  %3978 = add nsw i32 %3977, 1
  store i32 %3978, ptr %101, align 4, !tbaa !9
  br label %3940, !llvm.loop !44

3979:                                             ; preds = %3940
  %3980 = load i32, ptr %67, align 4, !tbaa !9
  %3981 = icmp sgt i32 %3980, 1
  br i1 %3981, label %3982, label %4401

3982:                                             ; preds = %3979
  %3983 = load double, ptr %57, align 8, !tbaa !11
  %3984 = fcmp oge double 1.000000e+00, %3983
  br i1 %3984, label %3985, label %3986

3985:                                             ; preds = %3982
  br label %3988

3986:                                             ; preds = %3982
  %3987 = load double, ptr %57, align 8, !tbaa !11
  br label %3988

3988:                                             ; preds = %3986, %3985
  %3989 = phi double [ 1.000000e+00, %3985 ], [ %3987, %3986 ]
  %3990 = fdiv double 1.000000e+00, %3989
  store double %3990, ptr %105, align 8, !tbaa !11
  %3991 = load double, ptr %88, align 8, !tbaa !11
  %3992 = load ptr, ptr %31, align 8, !tbaa !5
  %3993 = load i32, ptr %67, align 4, !tbaa !9
  %3994 = sext i32 %3993 to i64
  %3995 = getelementptr inbounds double, ptr %3992, i64 %3994
  %3996 = load double, ptr %3995, align 8, !tbaa !11
  %3997 = load double, ptr %89, align 8, !tbaa !11
  %3998 = load ptr, ptr %31, align 8, !tbaa !5
  %3999 = load ptr, ptr %20, align 8, !tbaa !5
  %4000 = load i32, ptr %3999, align 4, !tbaa !9
  %4001 = load i32, ptr %67, align 4, !tbaa !9
  %4002 = add nsw i32 %4000, %4001
  %4003 = sext i32 %4002 to i64
  %4004 = getelementptr inbounds double, ptr %3998, i64 %4003
  %4005 = load double, ptr %4004, align 8, !tbaa !11
  %4006 = fmul double %3997, %4005
  %4007 = call double @llvm.fmuladd.f64(double %3991, double %3996, double %4006)
  store double %4007, ptr %56, align 8, !tbaa !11
  %4008 = load i32, ptr %73, align 4, !tbaa !9
  %4009 = icmp ne i32 %4008, 0
  br i1 %4009, label %4010, label %4040

4010:                                             ; preds = %3988
  %4011 = load double, ptr %56, align 8, !tbaa !11
  store double %4011, ptr %46, align 8, !tbaa !11
  %4012 = load double, ptr %88, align 8, !tbaa !11
  %4013 = load ptr, ptr %31, align 8, !tbaa !5
  %4014 = load i32, ptr %67, align 4, !tbaa !9
  %4015 = add nsw i32 %4014, 1
  %4016 = sext i32 %4015 to i64
  %4017 = getelementptr inbounds double, ptr %4013, i64 %4016
  %4018 = load double, ptr %4017, align 8, !tbaa !11
  %4019 = load double, ptr %89, align 8, !tbaa !11
  %4020 = load ptr, ptr %31, align 8, !tbaa !5
  %4021 = load ptr, ptr %20, align 8, !tbaa !5
  %4022 = load i32, ptr %4021, align 4, !tbaa !9
  %4023 = load i32, ptr %67, align 4, !tbaa !9
  %4024 = add nsw i32 %4022, %4023
  %4025 = add nsw i32 %4024, 1
  %4026 = sext i32 %4025 to i64
  %4027 = getelementptr inbounds double, ptr %4020, i64 %4026
  %4028 = load double, ptr %4027, align 8, !tbaa !11
  %4029 = fmul double %4019, %4028
  %4030 = call double @llvm.fmuladd.f64(double %4012, double %4018, double %4029)
  store double %4030, ptr %47, align 8, !tbaa !11
  %4031 = load double, ptr %46, align 8, !tbaa !11
  %4032 = load double, ptr %47, align 8, !tbaa !11
  %4033 = fcmp oge double %4031, %4032
  br i1 %4033, label %4034, label %4036

4034:                                             ; preds = %4010
  %4035 = load double, ptr %46, align 8, !tbaa !11
  br label %4038

4036:                                             ; preds = %4010
  %4037 = load double, ptr %47, align 8, !tbaa !11
  br label %4038

4038:                                             ; preds = %4036, %4034
  %4039 = phi double [ %4035, %4034 ], [ %4037, %4036 ]
  store double %4039, ptr %56, align 8, !tbaa !11
  br label %4040

4040:                                             ; preds = %4038, %3988
  %4041 = load double, ptr %56, align 8, !tbaa !11
  %4042 = load double, ptr %88, align 8, !tbaa !11
  %4043 = fcmp oge double %4041, %4042
  br i1 %4043, label %4044, label %4046

4044:                                             ; preds = %4040
  %4045 = load double, ptr %56, align 8, !tbaa !11
  br label %4048

4046:                                             ; preds = %4040
  %4047 = load double, ptr %88, align 8, !tbaa !11
  br label %4048

4048:                                             ; preds = %4046, %4044
  %4049 = phi double [ %4045, %4044 ], [ %4047, %4046 ]
  store double %4049, ptr %46, align 8, !tbaa !11
  %4050 = load double, ptr %46, align 8, !tbaa !11
  %4051 = load double, ptr %89, align 8, !tbaa !11
  %4052 = fcmp oge double %4050, %4051
  br i1 %4052, label %4053, label %4055

4053:                                             ; preds = %4048
  %4054 = load double, ptr %46, align 8, !tbaa !11
  br label %4057

4055:                                             ; preds = %4048
  %4056 = load double, ptr %89, align 8, !tbaa !11
  br label %4057

4057:                                             ; preds = %4055, %4053
  %4058 = phi double [ %4054, %4053 ], [ %4056, %4055 ]
  store double %4058, ptr %56, align 8, !tbaa !11
  %4059 = load double, ptr %56, align 8, !tbaa !11
  %4060 = load double, ptr %106, align 8, !tbaa !11
  %4061 = load double, ptr %105, align 8, !tbaa !11
  %4062 = fmul double %4060, %4061
  %4063 = fcmp ogt double %4059, %4062
  br i1 %4063, label %4064, label %4112

4064:                                             ; preds = %4057
  %4065 = load i32, ptr %102, align 4, !tbaa !9
  %4066 = sub nsw i32 %4065, 1
  store i32 %4066, ptr %41, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %4067

4067:                                             ; preds = %4105, %4064
  %4068 = load i32, ptr %101, align 4, !tbaa !9
  %4069 = load i32, ptr %41, align 4, !tbaa !9
  %4070 = icmp sle i32 %4068, %4069
  br i1 %4070, label %4071, label %4108

4071:                                             ; preds = %4067
  %4072 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %4072, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %4073

4073:                                             ; preds = %4101, %4071
  %4074 = load i32, ptr %98, align 4, !tbaa !9
  %4075 = load i32, ptr %42, align 4, !tbaa !9
  %4076 = icmp sle i32 %4074, %4075
  br i1 %4076, label %4077, label %4104

4077:                                             ; preds = %4073
  %4078 = load double, ptr %105, align 8, !tbaa !11
  %4079 = load ptr, ptr %31, align 8, !tbaa !5
  %4080 = load i32, ptr %101, align 4, !tbaa !9
  %4081 = add nsw i32 %4080, 2
  %4082 = load ptr, ptr %20, align 8, !tbaa !5
  %4083 = load i32, ptr %4082, align 4, !tbaa !9
  %4084 = mul nsw i32 %4081, %4083
  %4085 = load i32, ptr %98, align 4, !tbaa !9
  %4086 = add nsw i32 %4084, %4085
  %4087 = sext i32 %4086 to i64
  %4088 = getelementptr inbounds double, ptr %4079, i64 %4087
  %4089 = load double, ptr %4088, align 8, !tbaa !11
  %4090 = fmul double %4078, %4089
  %4091 = load ptr, ptr %31, align 8, !tbaa !5
  %4092 = load i32, ptr %101, align 4, !tbaa !9
  %4093 = add nsw i32 %4092, 2
  %4094 = load ptr, ptr %20, align 8, !tbaa !5
  %4095 = load i32, ptr %4094, align 4, !tbaa !9
  %4096 = mul nsw i32 %4093, %4095
  %4097 = load i32, ptr %98, align 4, !tbaa !9
  %4098 = add nsw i32 %4096, %4097
  %4099 = sext i32 %4098 to i64
  %4100 = getelementptr inbounds double, ptr %4091, i64 %4099
  store double %4090, ptr %4100, align 8, !tbaa !11
  br label %4101

4101:                                             ; preds = %4077
  %4102 = load i32, ptr %98, align 4, !tbaa !9
  %4103 = add nsw i32 %4102, 1
  store i32 %4103, ptr %98, align 4, !tbaa !9
  br label %4073, !llvm.loop !45

4104:                                             ; preds = %4073
  br label %4105

4105:                                             ; preds = %4104
  %4106 = load i32, ptr %101, align 4, !tbaa !9
  %4107 = add nsw i32 %4106, 1
  store i32 %4107, ptr %101, align 4, !tbaa !9
  br label %4067, !llvm.loop !46

4108:                                             ; preds = %4067
  %4109 = load double, ptr %105, align 8, !tbaa !11
  %4110 = load double, ptr %57, align 8, !tbaa !11
  %4111 = fmul double %4110, %4109
  store double %4111, ptr %57, align 8, !tbaa !11
  br label %4112

4112:                                             ; preds = %4108, %4057
  %4113 = load i32, ptr %87, align 4, !tbaa !9
  store i32 %4113, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %4114

4114:                                             ; preds = %4397, %4112
  %4115 = load i32, ptr %82, align 4, !tbaa !9
  %4116 = load i32, ptr %41, align 4, !tbaa !9
  %4117 = icmp sle i32 %4115, %4116
  br i1 %4117, label %4118, label %4400

4118:                                             ; preds = %4114
  %4119 = load i32, ptr %108, align 4, !tbaa !9
  %4120 = icmp ne i32 %4119, 0
  br i1 %4120, label %4121, label %4310

4121:                                             ; preds = %4118
  %4122 = load double, ptr %68, align 8, !tbaa !11
  %4123 = load ptr, ptr %31, align 8, !tbaa !5
  %4124 = load ptr, ptr %20, align 8, !tbaa !5
  %4125 = load i32, ptr %4124, align 4, !tbaa !9
  %4126 = shl i32 %4125, 1
  %4127 = load i32, ptr %67, align 4, !tbaa !9
  %4128 = add nsw i32 %4126, %4127
  %4129 = load i32, ptr %82, align 4, !tbaa !9
  %4130 = add nsw i32 %4128, %4129
  %4131 = sub nsw i32 %4130, 1
  %4132 = sext i32 %4131 to i64
  %4133 = getelementptr inbounds double, ptr %4123, i64 %4132
  %4134 = load double, ptr %4133, align 8, !tbaa !11
  %4135 = fmul double %4122, %4134
  store double %4135, ptr %97, align 8, !tbaa !11
  %4136 = load double, ptr %68, align 8, !tbaa !11
  %4137 = load ptr, ptr %31, align 8, !tbaa !5
  %4138 = load ptr, ptr %20, align 8, !tbaa !5
  %4139 = load i32, ptr %4138, align 4, !tbaa !9
  %4140 = mul nsw i32 %4139, 3
  %4141 = load i32, ptr %67, align 4, !tbaa !9
  %4142 = add nsw i32 %4140, %4141
  %4143 = load i32, ptr %82, align 4, !tbaa !9
  %4144 = add nsw i32 %4142, %4143
  %4145 = sub nsw i32 %4144, 1
  %4146 = sext i32 %4145 to i64
  %4147 = getelementptr inbounds double, ptr %4137, i64 %4146
  %4148 = load double, ptr %4147, align 8, !tbaa !11
  %4149 = fmul double %4136, %4148
  store double %4149, ptr %90, align 8, !tbaa !11
  %4150 = load double, ptr %100, align 8, !tbaa !11
  %4151 = load ptr, ptr %31, align 8, !tbaa !5
  %4152 = load ptr, ptr %20, align 8, !tbaa !5
  %4153 = load i32, ptr %4152, align 4, !tbaa !9
  %4154 = shl i32 %4153, 1
  %4155 = load i32, ptr %67, align 4, !tbaa !9
  %4156 = add nsw i32 %4154, %4155
  %4157 = load i32, ptr %82, align 4, !tbaa !9
  %4158 = add nsw i32 %4156, %4157
  %4159 = sub nsw i32 %4158, 1
  %4160 = sext i32 %4159 to i64
  %4161 = getelementptr inbounds double, ptr %4151, i64 %4160
  %4162 = load double, ptr %4161, align 8, !tbaa !11
  %4163 = load double, ptr %94, align 8, !tbaa !11
  %4164 = load ptr, ptr %31, align 8, !tbaa !5
  %4165 = load ptr, ptr %20, align 8, !tbaa !5
  %4166 = load i32, ptr %4165, align 4, !tbaa !9
  %4167 = mul nsw i32 %4166, 3
  %4168 = load i32, ptr %67, align 4, !tbaa !9
  %4169 = add nsw i32 %4167, %4168
  %4170 = load i32, ptr %82, align 4, !tbaa !9
  %4171 = add nsw i32 %4169, %4170
  %4172 = sub nsw i32 %4171, 1
  %4173 = sext i32 %4172 to i64
  %4174 = getelementptr inbounds double, ptr %4164, i64 %4173
  %4175 = load double, ptr %4174, align 8, !tbaa !11
  %4176 = fmul double %4163, %4175
  %4177 = fneg double %4176
  %4178 = call double @llvm.fmuladd.f64(double %4150, double %4162, double %4177)
  store double %4178, ptr %99, align 8, !tbaa !11
  %4179 = load double, ptr %94, align 8, !tbaa !11
  %4180 = load ptr, ptr %31, align 8, !tbaa !5
  %4181 = load ptr, ptr %20, align 8, !tbaa !5
  %4182 = load i32, ptr %4181, align 4, !tbaa !9
  %4183 = shl i32 %4182, 1
  %4184 = load i32, ptr %67, align 4, !tbaa !9
  %4185 = add nsw i32 %4183, %4184
  %4186 = load i32, ptr %82, align 4, !tbaa !9
  %4187 = add nsw i32 %4185, %4186
  %4188 = sub nsw i32 %4187, 1
  %4189 = sext i32 %4188 to i64
  %4190 = getelementptr inbounds double, ptr %4180, i64 %4189
  %4191 = load double, ptr %4190, align 8, !tbaa !11
  %4192 = load double, ptr %100, align 8, !tbaa !11
  %4193 = load ptr, ptr %31, align 8, !tbaa !5
  %4194 = load ptr, ptr %20, align 8, !tbaa !5
  %4195 = load i32, ptr %4194, align 4, !tbaa !9
  %4196 = mul nsw i32 %4195, 3
  %4197 = load i32, ptr %67, align 4, !tbaa !9
  %4198 = add nsw i32 %4196, %4197
  %4199 = load i32, ptr %82, align 4, !tbaa !9
  %4200 = add nsw i32 %4198, %4199
  %4201 = sub nsw i32 %4200, 1
  %4202 = sext i32 %4201 to i64
  %4203 = getelementptr inbounds double, ptr %4193, i64 %4202
  %4204 = load double, ptr %4203, align 8, !tbaa !11
  %4205 = fmul double %4192, %4204
  %4206 = call double @llvm.fmuladd.f64(double %4179, double %4191, double %4205)
  store double %4206, ptr %91, align 8, !tbaa !11
  %4207 = load i32, ptr %67, align 4, !tbaa !9
  %4208 = sub nsw i32 %4207, 1
  store i32 %4208, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %4209

4209:                                             ; preds = %4306, %4121
  %4210 = load i32, ptr %98, align 4, !tbaa !9
  %4211 = load i32, ptr %42, align 4, !tbaa !9
  %4212 = icmp sle i32 %4210, %4211
  br i1 %4212, label %4213, label %4309

4213:                                             ; preds = %4209
  %4214 = load ptr, ptr %31, align 8, !tbaa !5
  %4215 = load ptr, ptr %20, align 8, !tbaa !5
  %4216 = load i32, ptr %4215, align 4, !tbaa !9
  %4217 = shl i32 %4216, 1
  %4218 = load i32, ptr %98, align 4, !tbaa !9
  %4219 = add nsw i32 %4217, %4218
  %4220 = sext i32 %4219 to i64
  %4221 = getelementptr inbounds double, ptr %4214, i64 %4220
  %4222 = load double, ptr %4221, align 8, !tbaa !11
  %4223 = load double, ptr %97, align 8, !tbaa !11
  %4224 = load ptr, ptr %21, align 8, !tbaa !5
  %4225 = load i32, ptr %98, align 4, !tbaa !9
  %4226 = load i32, ptr %67, align 4, !tbaa !9
  %4227 = load i32, ptr %82, align 4, !tbaa !9
  %4228 = add nsw i32 %4226, %4227
  %4229 = sub nsw i32 %4228, 1
  %4230 = load i32, ptr %35, align 4, !tbaa !9
  %4231 = mul nsw i32 %4229, %4230
  %4232 = add nsw i32 %4225, %4231
  %4233 = sext i32 %4232 to i64
  %4234 = getelementptr inbounds double, ptr %4224, i64 %4233
  %4235 = load double, ptr %4234, align 8, !tbaa !11
  %4236 = fneg double %4223
  %4237 = call double @llvm.fmuladd.f64(double %4236, double %4235, double %4222)
  %4238 = load double, ptr %99, align 8, !tbaa !11
  %4239 = load ptr, ptr %23, align 8, !tbaa !5
  %4240 = load i32, ptr %98, align 4, !tbaa !9
  %4241 = load i32, ptr %67, align 4, !tbaa !9
  %4242 = load i32, ptr %82, align 4, !tbaa !9
  %4243 = add nsw i32 %4241, %4242
  %4244 = sub nsw i32 %4243, 1
  %4245 = load i32, ptr %33, align 4, !tbaa !9
  %4246 = mul nsw i32 %4244, %4245
  %4247 = add nsw i32 %4240, %4246
  %4248 = sext i32 %4247 to i64
  %4249 = getelementptr inbounds double, ptr %4239, i64 %4248
  %4250 = load double, ptr %4249, align 8, !tbaa !11
  %4251 = call double @llvm.fmuladd.f64(double %4238, double %4250, double %4237)
  %4252 = load ptr, ptr %31, align 8, !tbaa !5
  %4253 = load ptr, ptr %20, align 8, !tbaa !5
  %4254 = load i32, ptr %4253, align 4, !tbaa !9
  %4255 = shl i32 %4254, 1
  %4256 = load i32, ptr %98, align 4, !tbaa !9
  %4257 = add nsw i32 %4255, %4256
  %4258 = sext i32 %4257 to i64
  %4259 = getelementptr inbounds double, ptr %4252, i64 %4258
  store double %4251, ptr %4259, align 8, !tbaa !11
  %4260 = load ptr, ptr %31, align 8, !tbaa !5
  %4261 = load ptr, ptr %20, align 8, !tbaa !5
  %4262 = load i32, ptr %4261, align 4, !tbaa !9
  %4263 = mul nsw i32 %4262, 3
  %4264 = load i32, ptr %98, align 4, !tbaa !9
  %4265 = add nsw i32 %4263, %4264
  %4266 = sext i32 %4265 to i64
  %4267 = getelementptr inbounds double, ptr %4260, i64 %4266
  %4268 = load double, ptr %4267, align 8, !tbaa !11
  %4269 = load double, ptr %90, align 8, !tbaa !11
  %4270 = load ptr, ptr %21, align 8, !tbaa !5
  %4271 = load i32, ptr %98, align 4, !tbaa !9
  %4272 = load i32, ptr %67, align 4, !tbaa !9
  %4273 = load i32, ptr %82, align 4, !tbaa !9
  %4274 = add nsw i32 %4272, %4273
  %4275 = sub nsw i32 %4274, 1
  %4276 = load i32, ptr %35, align 4, !tbaa !9
  %4277 = mul nsw i32 %4275, %4276
  %4278 = add nsw i32 %4271, %4277
  %4279 = sext i32 %4278 to i64
  %4280 = getelementptr inbounds double, ptr %4270, i64 %4279
  %4281 = load double, ptr %4280, align 8, !tbaa !11
  %4282 = fneg double %4269
  %4283 = call double @llvm.fmuladd.f64(double %4282, double %4281, double %4268)
  %4284 = load double, ptr %91, align 8, !tbaa !11
  %4285 = load ptr, ptr %23, align 8, !tbaa !5
  %4286 = load i32, ptr %98, align 4, !tbaa !9
  %4287 = load i32, ptr %67, align 4, !tbaa !9
  %4288 = load i32, ptr %82, align 4, !tbaa !9
  %4289 = add nsw i32 %4287, %4288
  %4290 = sub nsw i32 %4289, 1
  %4291 = load i32, ptr %33, align 4, !tbaa !9
  %4292 = mul nsw i32 %4290, %4291
  %4293 = add nsw i32 %4286, %4292
  %4294 = sext i32 %4293 to i64
  %4295 = getelementptr inbounds double, ptr %4285, i64 %4294
  %4296 = load double, ptr %4295, align 8, !tbaa !11
  %4297 = call double @llvm.fmuladd.f64(double %4284, double %4296, double %4283)
  %4298 = load ptr, ptr %31, align 8, !tbaa !5
  %4299 = load ptr, ptr %20, align 8, !tbaa !5
  %4300 = load i32, ptr %4299, align 4, !tbaa !9
  %4301 = mul nsw i32 %4300, 3
  %4302 = load i32, ptr %98, align 4, !tbaa !9
  %4303 = add nsw i32 %4301, %4302
  %4304 = sext i32 %4303 to i64
  %4305 = getelementptr inbounds double, ptr %4298, i64 %4304
  store double %4297, ptr %4305, align 8, !tbaa !11
  br label %4306

4306:                                             ; preds = %4213
  %4307 = load i32, ptr %98, align 4, !tbaa !9
  %4308 = add nsw i32 %4307, 1
  store i32 %4308, ptr %98, align 4, !tbaa !9
  br label %4209, !llvm.loop !47

4309:                                             ; preds = %4209
  br label %4396

4310:                                             ; preds = %4118
  %4311 = load double, ptr %68, align 8, !tbaa !11
  %4312 = load ptr, ptr %31, align 8, !tbaa !5
  %4313 = load ptr, ptr %20, align 8, !tbaa !5
  %4314 = load i32, ptr %4313, align 4, !tbaa !9
  %4315 = shl i32 %4314, 1
  %4316 = load i32, ptr %67, align 4, !tbaa !9
  %4317 = add nsw i32 %4315, %4316
  %4318 = load i32, ptr %82, align 4, !tbaa !9
  %4319 = add nsw i32 %4317, %4318
  %4320 = sub nsw i32 %4319, 1
  %4321 = sext i32 %4320 to i64
  %4322 = getelementptr inbounds double, ptr %4312, i64 %4321
  %4323 = load double, ptr %4322, align 8, !tbaa !11
  %4324 = fmul double %4311, %4323
  store double %4324, ptr %97, align 8, !tbaa !11
  %4325 = load double, ptr %100, align 8, !tbaa !11
  %4326 = load ptr, ptr %31, align 8, !tbaa !5
  %4327 = load ptr, ptr %20, align 8, !tbaa !5
  %4328 = load i32, ptr %4327, align 4, !tbaa !9
  %4329 = shl i32 %4328, 1
  %4330 = load i32, ptr %67, align 4, !tbaa !9
  %4331 = add nsw i32 %4329, %4330
  %4332 = load i32, ptr %82, align 4, !tbaa !9
  %4333 = add nsw i32 %4331, %4332
  %4334 = sub nsw i32 %4333, 1
  %4335 = sext i32 %4334 to i64
  %4336 = getelementptr inbounds double, ptr %4326, i64 %4335
  %4337 = load double, ptr %4336, align 8, !tbaa !11
  %4338 = fmul double %4325, %4337
  store double %4338, ptr %99, align 8, !tbaa !11
  %4339 = load i32, ptr %67, align 4, !tbaa !9
  %4340 = sub nsw i32 %4339, 1
  store i32 %4340, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %4341

4341:                                             ; preds = %4392, %4310
  %4342 = load i32, ptr %98, align 4, !tbaa !9
  %4343 = load i32, ptr %42, align 4, !tbaa !9
  %4344 = icmp sle i32 %4342, %4343
  br i1 %4344, label %4345, label %4395

4345:                                             ; preds = %4341
  %4346 = load ptr, ptr %31, align 8, !tbaa !5
  %4347 = load ptr, ptr %20, align 8, !tbaa !5
  %4348 = load i32, ptr %4347, align 4, !tbaa !9
  %4349 = shl i32 %4348, 1
  %4350 = load i32, ptr %98, align 4, !tbaa !9
  %4351 = add nsw i32 %4349, %4350
  %4352 = sext i32 %4351 to i64
  %4353 = getelementptr inbounds double, ptr %4346, i64 %4352
  %4354 = load double, ptr %4353, align 8, !tbaa !11
  %4355 = load double, ptr %97, align 8, !tbaa !11
  %4356 = load ptr, ptr %21, align 8, !tbaa !5
  %4357 = load i32, ptr %98, align 4, !tbaa !9
  %4358 = load i32, ptr %67, align 4, !tbaa !9
  %4359 = load i32, ptr %82, align 4, !tbaa !9
  %4360 = add nsw i32 %4358, %4359
  %4361 = sub nsw i32 %4360, 1
  %4362 = load i32, ptr %35, align 4, !tbaa !9
  %4363 = mul nsw i32 %4361, %4362
  %4364 = add nsw i32 %4357, %4363
  %4365 = sext i32 %4364 to i64
  %4366 = getelementptr inbounds double, ptr %4356, i64 %4365
  %4367 = load double, ptr %4366, align 8, !tbaa !11
  %4368 = fneg double %4355
  %4369 = call double @llvm.fmuladd.f64(double %4368, double %4367, double %4354)
  %4370 = load double, ptr %99, align 8, !tbaa !11
  %4371 = load ptr, ptr %23, align 8, !tbaa !5
  %4372 = load i32, ptr %98, align 4, !tbaa !9
  %4373 = load i32, ptr %67, align 4, !tbaa !9
  %4374 = load i32, ptr %82, align 4, !tbaa !9
  %4375 = add nsw i32 %4373, %4374
  %4376 = sub nsw i32 %4375, 1
  %4377 = load i32, ptr %33, align 4, !tbaa !9
  %4378 = mul nsw i32 %4376, %4377
  %4379 = add nsw i32 %4372, %4378
  %4380 = sext i32 %4379 to i64
  %4381 = getelementptr inbounds double, ptr %4371, i64 %4380
  %4382 = load double, ptr %4381, align 8, !tbaa !11
  %4383 = call double @llvm.fmuladd.f64(double %4370, double %4382, double %4369)
  %4384 = load ptr, ptr %31, align 8, !tbaa !5
  %4385 = load ptr, ptr %20, align 8, !tbaa !5
  %4386 = load i32, ptr %4385, align 4, !tbaa !9
  %4387 = shl i32 %4386, 1
  %4388 = load i32, ptr %98, align 4, !tbaa !9
  %4389 = add nsw i32 %4387, %4388
  %4390 = sext i32 %4389 to i64
  %4391 = getelementptr inbounds double, ptr %4384, i64 %4390
  store double %4383, ptr %4391, align 8, !tbaa !11
  br label %4392

4392:                                             ; preds = %4345
  %4393 = load i32, ptr %98, align 4, !tbaa !9
  %4394 = add nsw i32 %4393, 1
  store i32 %4394, ptr %98, align 4, !tbaa !9
  br label %4341, !llvm.loop !48

4395:                                             ; preds = %4341
  br label %4396

4396:                                             ; preds = %4395, %4309
  br label %4397

4397:                                             ; preds = %4396
  %4398 = load i32, ptr %82, align 4, !tbaa !9
  %4399 = add nsw i32 %4398, 1
  store i32 %4399, ptr %82, align 4, !tbaa !9
  br label %4114, !llvm.loop !49

4400:                                             ; preds = %4114
  br label %4401

4401:                                             ; preds = %4400, %3979
  store i32 0, ptr %73, align 4, !tbaa !9
  br label %4402

4402:                                             ; preds = %4401, %3828
  br label %4403

4403:                                             ; preds = %4402
  %4404 = load i32, ptr %67, align 4, !tbaa !9
  %4405 = add nsw i32 %4404, -1
  store i32 %4405, ptr %67, align 4, !tbaa !9
  br label %3807, !llvm.loop !50

4406:                                             ; preds = %3807
  %4407 = load i32, ptr %102, align 4, !tbaa !9
  %4408 = load i32, ptr %53, align 4, !tbaa !9
  %4409 = sub nsw i32 %4408, %4407
  store i32 %4409, ptr %53, align 4, !tbaa !9
  %4410 = load i32, ptr %92, align 4, !tbaa !9
  %4411 = icmp ne i32 %4410, 0
  br i1 %4411, label %4412, label %4561

4412:                                             ; preds = %4406
  %4413 = load i32, ptr %102, align 4, !tbaa !9
  %4414 = sub nsw i32 %4413, 1
  store i32 %4414, ptr %41, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %4415

4415:                                             ; preds = %4512, %4412
  %4416 = load i32, ptr %101, align 4, !tbaa !9
  %4417 = load i32, ptr %41, align 4, !tbaa !9
  %4418 = icmp sle i32 %4416, %4417
  br i1 %4418, label %4419, label %4515

4419:                                             ; preds = %4415
  %4420 = load ptr, ptr %20, align 8, !tbaa !5
  %4421 = load i32, ptr %4420, align 4, !tbaa !9
  store i32 %4421, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %4422

4422:                                             ; preds = %4455, %4419
  %4423 = load i32, ptr %98, align 4, !tbaa !9
  %4424 = load i32, ptr %42, align 4, !tbaa !9
  %4425 = icmp sle i32 %4423, %4424
  br i1 %4425, label %4426, label %4458

4426:                                             ; preds = %4422
  %4427 = load ptr, ptr %31, align 8, !tbaa !5
  %4428 = load i32, ptr %101, align 4, !tbaa !9
  %4429 = add nsw i32 %4428, 2
  %4430 = load ptr, ptr %20, align 8, !tbaa !5
  %4431 = load i32, ptr %4430, align 4, !tbaa !9
  %4432 = mul nsw i32 %4429, %4431
  %4433 = add nsw i32 %4432, 1
  %4434 = sext i32 %4433 to i64
  %4435 = getelementptr inbounds double, ptr %4427, i64 %4434
  %4436 = load double, ptr %4435, align 8, !tbaa !11
  %4437 = load ptr, ptr %27, align 8, !tbaa !5
  %4438 = load i32, ptr %98, align 4, !tbaa !9
  %4439 = load i32, ptr %39, align 4, !tbaa !9
  %4440 = add nsw i32 %4438, %4439
  %4441 = sext i32 %4440 to i64
  %4442 = getelementptr inbounds double, ptr %4437, i64 %4441
  %4443 = load double, ptr %4442, align 8, !tbaa !11
  %4444 = fmul double %4436, %4443
  %4445 = load ptr, ptr %31, align 8, !tbaa !5
  %4446 = load i32, ptr %101, align 4, !tbaa !9
  %4447 = add nsw i32 %4446, 4
  %4448 = load ptr, ptr %20, align 8, !tbaa !5
  %4449 = load i32, ptr %4448, align 4, !tbaa !9
  %4450 = mul nsw i32 %4447, %4449
  %4451 = load i32, ptr %98, align 4, !tbaa !9
  %4452 = add nsw i32 %4450, %4451
  %4453 = sext i32 %4452 to i64
  %4454 = getelementptr inbounds double, ptr %4445, i64 %4453
  store double %4444, ptr %4454, align 8, !tbaa !11
  br label %4455

4455:                                             ; preds = %4426
  %4456 = load i32, ptr %98, align 4, !tbaa !9
  %4457 = add nsw i32 %4456, 1
  store i32 %4457, ptr %98, align 4, !tbaa !9
  br label %4422, !llvm.loop !51

4458:                                             ; preds = %4422
  %4459 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %4459, ptr %42, align 4, !tbaa !9
  store i32 2, ptr %85, align 4, !tbaa !9
  br label %4460

4460:                                             ; preds = %4508, %4458
  %4461 = load i32, ptr %85, align 4, !tbaa !9
  %4462 = load i32, ptr %42, align 4, !tbaa !9
  %4463 = icmp sle i32 %4461, %4462
  br i1 %4463, label %4464, label %4511

4464:                                             ; preds = %4460
  %4465 = load ptr, ptr %20, align 8, !tbaa !5
  %4466 = load i32, ptr %4465, align 4, !tbaa !9
  store i32 %4466, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %4467

4467:                                             ; preds = %4504, %4464
  %4468 = load i32, ptr %98, align 4, !tbaa !9
  %4469 = load i32, ptr %43, align 4, !tbaa !9
  %4470 = icmp sle i32 %4468, %4469
  br i1 %4470, label %4471, label %4507

4471:                                             ; preds = %4467
  %4472 = load ptr, ptr %31, align 8, !tbaa !5
  %4473 = load i32, ptr %101, align 4, !tbaa !9
  %4474 = add nsw i32 %4473, 2
  %4475 = load ptr, ptr %20, align 8, !tbaa !5
  %4476 = load i32, ptr %4475, align 4, !tbaa !9
  %4477 = mul nsw i32 %4474, %4476
  %4478 = load i32, ptr %85, align 4, !tbaa !9
  %4479 = add nsw i32 %4477, %4478
  %4480 = sext i32 %4479 to i64
  %4481 = getelementptr inbounds double, ptr %4472, i64 %4480
  %4482 = load double, ptr %4481, align 8, !tbaa !11
  %4483 = load ptr, ptr %27, align 8, !tbaa !5
  %4484 = load i32, ptr %98, align 4, !tbaa !9
  %4485 = load i32, ptr %85, align 4, !tbaa !9
  %4486 = load i32, ptr %39, align 4, !tbaa !9
  %4487 = mul nsw i32 %4485, %4486
  %4488 = add nsw i32 %4484, %4487
  %4489 = sext i32 %4488 to i64
  %4490 = getelementptr inbounds double, ptr %4483, i64 %4489
  %4491 = load double, ptr %4490, align 8, !tbaa !11
  %4492 = load ptr, ptr %31, align 8, !tbaa !5
  %4493 = load i32, ptr %101, align 4, !tbaa !9
  %4494 = add nsw i32 %4493, 4
  %4495 = load ptr, ptr %20, align 8, !tbaa !5
  %4496 = load i32, ptr %4495, align 4, !tbaa !9
  %4497 = mul nsw i32 %4494, %4496
  %4498 = load i32, ptr %98, align 4, !tbaa !9
  %4499 = add nsw i32 %4497, %4498
  %4500 = sext i32 %4499 to i64
  %4501 = getelementptr inbounds double, ptr %4492, i64 %4500
  %4502 = load double, ptr %4501, align 8, !tbaa !11
  %4503 = call double @llvm.fmuladd.f64(double %4482, double %4491, double %4502)
  store double %4503, ptr %4501, align 8, !tbaa !11
  br label %4504

4504:                                             ; preds = %4471
  %4505 = load i32, ptr %98, align 4, !tbaa !9
  %4506 = add nsw i32 %4505, 1
  store i32 %4506, ptr %98, align 4, !tbaa !9
  br label %4467, !llvm.loop !52

4507:                                             ; preds = %4467
  br label %4508

4508:                                             ; preds = %4507
  %4509 = load i32, ptr %85, align 4, !tbaa !9
  %4510 = add nsw i32 %4509, 1
  store i32 %4510, ptr %85, align 4, !tbaa !9
  br label %4460, !llvm.loop !53

4511:                                             ; preds = %4460
  br label %4512

4512:                                             ; preds = %4511
  %4513 = load i32, ptr %101, align 4, !tbaa !9
  %4514 = add nsw i32 %4513, 1
  store i32 %4514, ptr %101, align 4, !tbaa !9
  br label %4415, !llvm.loop !54

4515:                                             ; preds = %4415
  %4516 = load i32, ptr %102, align 4, !tbaa !9
  %4517 = sub nsw i32 %4516, 1
  store i32 %4517, ptr %41, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %4518

4518:                                             ; preds = %4555, %4515
  %4519 = load i32, ptr %101, align 4, !tbaa !9
  %4520 = load i32, ptr %41, align 4, !tbaa !9
  %4521 = icmp sle i32 %4519, %4520
  br i1 %4521, label %4522, label %4558

4522:                                             ; preds = %4518
  %4523 = load ptr, ptr %20, align 8, !tbaa !5
  %4524 = load i32, ptr %4523, align 4, !tbaa !9
  store i32 %4524, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %4525

4525:                                             ; preds = %4551, %4522
  %4526 = load i32, ptr %98, align 4, !tbaa !9
  %4527 = load i32, ptr %42, align 4, !tbaa !9
  %4528 = icmp sle i32 %4526, %4527
  br i1 %4528, label %4529, label %4554

4529:                                             ; preds = %4525
  %4530 = load ptr, ptr %31, align 8, !tbaa !5
  %4531 = load i32, ptr %101, align 4, !tbaa !9
  %4532 = add nsw i32 %4531, 4
  %4533 = load ptr, ptr %20, align 8, !tbaa !5
  %4534 = load i32, ptr %4533, align 4, !tbaa !9
  %4535 = mul nsw i32 %4532, %4534
  %4536 = load i32, ptr %98, align 4, !tbaa !9
  %4537 = add nsw i32 %4535, %4536
  %4538 = sext i32 %4537 to i64
  %4539 = getelementptr inbounds double, ptr %4530, i64 %4538
  %4540 = load double, ptr %4539, align 8, !tbaa !11
  %4541 = load ptr, ptr %27, align 8, !tbaa !5
  %4542 = load i32, ptr %98, align 4, !tbaa !9
  %4543 = load i32, ptr %53, align 4, !tbaa !9
  %4544 = load i32, ptr %101, align 4, !tbaa !9
  %4545 = add nsw i32 %4543, %4544
  %4546 = load i32, ptr %39, align 4, !tbaa !9
  %4547 = mul nsw i32 %4545, %4546
  %4548 = add nsw i32 %4542, %4547
  %4549 = sext i32 %4548 to i64
  %4550 = getelementptr inbounds double, ptr %4541, i64 %4549
  store double %4540, ptr %4550, align 8, !tbaa !11
  br label %4551

4551:                                             ; preds = %4529
  %4552 = load i32, ptr %98, align 4, !tbaa !9
  %4553 = add nsw i32 %4552, 1
  store i32 %4553, ptr %98, align 4, !tbaa !9
  br label %4525, !llvm.loop !55

4554:                                             ; preds = %4525
  br label %4555

4555:                                             ; preds = %4554
  %4556 = load i32, ptr %101, align 4, !tbaa !9
  %4557 = add nsw i32 %4556, 1
  store i32 %4557, ptr %101, align 4, !tbaa !9
  br label %4518, !llvm.loop !56

4558:                                             ; preds = %4518
  %4559 = load ptr, ptr %20, align 8, !tbaa !5
  %4560 = load i32, ptr %4559, align 4, !tbaa !9
  store i32 %4560, ptr %54, align 4, !tbaa !9
  br label %4606

4561:                                             ; preds = %4406
  %4562 = load i32, ptr %102, align 4, !tbaa !9
  %4563 = sub nsw i32 %4562, 1
  store i32 %4563, ptr %41, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %4564

4564:                                             ; preds = %4601, %4561
  %4565 = load i32, ptr %101, align 4, !tbaa !9
  %4566 = load i32, ptr %41, align 4, !tbaa !9
  %4567 = icmp sle i32 %4565, %4566
  br i1 %4567, label %4568, label %4604

4568:                                             ; preds = %4564
  %4569 = load ptr, ptr %20, align 8, !tbaa !5
  %4570 = load i32, ptr %4569, align 4, !tbaa !9
  store i32 %4570, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %4571

4571:                                             ; preds = %4597, %4568
  %4572 = load i32, ptr %98, align 4, !tbaa !9
  %4573 = load i32, ptr %42, align 4, !tbaa !9
  %4574 = icmp sle i32 %4572, %4573
  br i1 %4574, label %4575, label %4600

4575:                                             ; preds = %4571
  %4576 = load ptr, ptr %31, align 8, !tbaa !5
  %4577 = load i32, ptr %101, align 4, !tbaa !9
  %4578 = add nsw i32 %4577, 2
  %4579 = load ptr, ptr %20, align 8, !tbaa !5
  %4580 = load i32, ptr %4579, align 4, !tbaa !9
  %4581 = mul nsw i32 %4578, %4580
  %4582 = load i32, ptr %98, align 4, !tbaa !9
  %4583 = add nsw i32 %4581, %4582
  %4584 = sext i32 %4583 to i64
  %4585 = getelementptr inbounds double, ptr %4576, i64 %4584
  %4586 = load double, ptr %4585, align 8, !tbaa !11
  %4587 = load ptr, ptr %27, align 8, !tbaa !5
  %4588 = load i32, ptr %98, align 4, !tbaa !9
  %4589 = load i32, ptr %53, align 4, !tbaa !9
  %4590 = load i32, ptr %101, align 4, !tbaa !9
  %4591 = add nsw i32 %4589, %4590
  %4592 = load i32, ptr %39, align 4, !tbaa !9
  %4593 = mul nsw i32 %4591, %4592
  %4594 = add nsw i32 %4588, %4593
  %4595 = sext i32 %4594 to i64
  %4596 = getelementptr inbounds double, ptr %4587, i64 %4595
  store double %4586, ptr %4596, align 8, !tbaa !11
  br label %4597

4597:                                             ; preds = %4575
  %4598 = load i32, ptr %98, align 4, !tbaa !9
  %4599 = add nsw i32 %4598, 1
  store i32 %4599, ptr %98, align 4, !tbaa !9
  br label %4571, !llvm.loop !57

4600:                                             ; preds = %4571
  br label %4601

4601:                                             ; preds = %4600
  %4602 = load i32, ptr %101, align 4, !tbaa !9
  %4603 = add nsw i32 %4602, 1
  store i32 %4603, ptr %101, align 4, !tbaa !9
  br label %4564, !llvm.loop !58

4604:                                             ; preds = %4564
  %4605 = load i32, ptr %86, align 4, !tbaa !9
  store i32 %4605, ptr %54, align 4, !tbaa !9
  br label %4606

4606:                                             ; preds = %4604, %4558
  store double 0.000000e+00, ptr %57, align 8, !tbaa !11
  %4607 = load i32, ptr %108, align 4, !tbaa !9
  %4608 = icmp ne i32 %4607, 0
  br i1 %4608, label %4609, label %4668

4609:                                             ; preds = %4606
  %4610 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %4610, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %4611

4611:                                             ; preds = %4664, %4609
  %4612 = load i32, ptr %67, align 4, !tbaa !9
  %4613 = load i32, ptr %41, align 4, !tbaa !9
  %4614 = icmp sle i32 %4612, %4613
  br i1 %4614, label %4615, label %4667

4615:                                             ; preds = %4611
  %4616 = load double, ptr %57, align 8, !tbaa !11
  store double %4616, ptr %48, align 8, !tbaa !11
  %4617 = load ptr, ptr %27, align 8, !tbaa !5
  %4618 = load i32, ptr %67, align 4, !tbaa !9
  %4619 = load i32, ptr %53, align 4, !tbaa !9
  %4620 = load i32, ptr %39, align 4, !tbaa !9
  %4621 = mul nsw i32 %4619, %4620
  %4622 = add nsw i32 %4618, %4621
  %4623 = sext i32 %4622 to i64
  %4624 = getelementptr inbounds double, ptr %4617, i64 %4623
  %4625 = load double, ptr %4624, align 8, !tbaa !11
  store double %4625, ptr %46, align 8, !tbaa !11
  %4626 = load double, ptr %46, align 8, !tbaa !11
  %4627 = fcmp oge double %4626, 0.000000e+00
  br i1 %4627, label %4628, label %4630

4628:                                             ; preds = %4615
  %4629 = load double, ptr %46, align 8, !tbaa !11
  br label %4633

4630:                                             ; preds = %4615
  %4631 = load double, ptr %46, align 8, !tbaa !11
  %4632 = fneg double %4631
  br label %4633

4633:                                             ; preds = %4630, %4628
  %4634 = phi double [ %4629, %4628 ], [ %4632, %4630 ]
  %4635 = load ptr, ptr %27, align 8, !tbaa !5
  %4636 = load i32, ptr %67, align 4, !tbaa !9
  %4637 = load i32, ptr %53, align 4, !tbaa !9
  %4638 = add nsw i32 %4637, 1
  %4639 = load i32, ptr %39, align 4, !tbaa !9
  %4640 = mul nsw i32 %4638, %4639
  %4641 = add nsw i32 %4636, %4640
  %4642 = sext i32 %4641 to i64
  %4643 = getelementptr inbounds double, ptr %4635, i64 %4642
  %4644 = load double, ptr %4643, align 8, !tbaa !11
  store double %4644, ptr %47, align 8, !tbaa !11
  %4645 = load double, ptr %47, align 8, !tbaa !11
  %4646 = fcmp oge double %4645, 0.000000e+00
  br i1 %4646, label %4647, label %4649

4647:                                             ; preds = %4633
  %4648 = load double, ptr %47, align 8, !tbaa !11
  br label %4652

4649:                                             ; preds = %4633
  %4650 = load double, ptr %47, align 8, !tbaa !11
  %4651 = fneg double %4650
  br label %4652

4652:                                             ; preds = %4649, %4647
  %4653 = phi double [ %4648, %4647 ], [ %4651, %4649 ]
  %4654 = fadd double %4634, %4653
  store double %4654, ptr %49, align 8, !tbaa !11
  %4655 = load double, ptr %48, align 8, !tbaa !11
  %4656 = load double, ptr %49, align 8, !tbaa !11
  %4657 = fcmp oge double %4655, %4656
  br i1 %4657, label %4658, label %4660

4658:                                             ; preds = %4652
  %4659 = load double, ptr %48, align 8, !tbaa !11
  br label %4662

4660:                                             ; preds = %4652
  %4661 = load double, ptr %49, align 8, !tbaa !11
  br label %4662

4662:                                             ; preds = %4660, %4658
  %4663 = phi double [ %4659, %4658 ], [ %4661, %4660 ]
  store double %4663, ptr %57, align 8, !tbaa !11
  br label %4664

4664:                                             ; preds = %4662
  %4665 = load i32, ptr %67, align 4, !tbaa !9
  %4666 = add nsw i32 %4665, 1
  store i32 %4666, ptr %67, align 4, !tbaa !9
  br label %4611, !llvm.loop !59

4667:                                             ; preds = %4611
  br label %4707

4668:                                             ; preds = %4606
  %4669 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %4669, ptr %41, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %4670

4670:                                             ; preds = %4703, %4668
  %4671 = load i32, ptr %67, align 4, !tbaa !9
  %4672 = load i32, ptr %41, align 4, !tbaa !9
  %4673 = icmp sle i32 %4671, %4672
  br i1 %4673, label %4674, label %4706

4674:                                             ; preds = %4670
  %4675 = load double, ptr %57, align 8, !tbaa !11
  store double %4675, ptr %47, align 8, !tbaa !11
  %4676 = load ptr, ptr %27, align 8, !tbaa !5
  %4677 = load i32, ptr %67, align 4, !tbaa !9
  %4678 = load i32, ptr %53, align 4, !tbaa !9
  %4679 = load i32, ptr %39, align 4, !tbaa !9
  %4680 = mul nsw i32 %4678, %4679
  %4681 = add nsw i32 %4677, %4680
  %4682 = sext i32 %4681 to i64
  %4683 = getelementptr inbounds double, ptr %4676, i64 %4682
  %4684 = load double, ptr %4683, align 8, !tbaa !11
  store double %4684, ptr %46, align 8, !tbaa !11
  %4685 = load double, ptr %46, align 8, !tbaa !11
  %4686 = fcmp oge double %4685, 0.000000e+00
  br i1 %4686, label %4687, label %4689

4687:                                             ; preds = %4674
  %4688 = load double, ptr %46, align 8, !tbaa !11
  br label %4692

4689:                                             ; preds = %4674
  %4690 = load double, ptr %46, align 8, !tbaa !11
  %4691 = fneg double %4690
  br label %4692

4692:                                             ; preds = %4689, %4687
  %4693 = phi double [ %4688, %4687 ], [ %4691, %4689 ]
  store double %4693, ptr %48, align 8, !tbaa !11
  %4694 = load double, ptr %47, align 8, !tbaa !11
  %4695 = load double, ptr %48, align 8, !tbaa !11
  %4696 = fcmp oge double %4694, %4695
  br i1 %4696, label %4697, label %4699

4697:                                             ; preds = %4692
  %4698 = load double, ptr %47, align 8, !tbaa !11
  br label %4701

4699:                                             ; preds = %4692
  %4700 = load double, ptr %48, align 8, !tbaa !11
  br label %4701

4701:                                             ; preds = %4699, %4697
  %4702 = phi double [ %4698, %4697 ], [ %4700, %4699 ]
  store double %4702, ptr %57, align 8, !tbaa !11
  br label %4703

4703:                                             ; preds = %4701
  %4704 = load i32, ptr %67, align 4, !tbaa !9
  %4705 = add nsw i32 %4704, 1
  store i32 %4705, ptr %67, align 4, !tbaa !9
  br label %4670, !llvm.loop !60

4706:                                             ; preds = %4670
  br label %4707

4707:                                             ; preds = %4706, %4667
  %4708 = load double, ptr %57, align 8, !tbaa !11
  %4709 = load double, ptr %104, align 8, !tbaa !11
  %4710 = fcmp ogt double %4708, %4709
  br i1 %4710, label %4711, label %4758

4711:                                             ; preds = %4707
  %4712 = load double, ptr %57, align 8, !tbaa !11
  %4713 = fdiv double 1.000000e+00, %4712
  store double %4713, ptr %105, align 8, !tbaa !11
  %4714 = load i32, ptr %102, align 4, !tbaa !9
  %4715 = sub nsw i32 %4714, 1
  store i32 %4715, ptr %41, align 4, !tbaa !9
  store i32 0, ptr %101, align 4, !tbaa !9
  br label %4716

4716:                                             ; preds = %4754, %4711
  %4717 = load i32, ptr %101, align 4, !tbaa !9
  %4718 = load i32, ptr %41, align 4, !tbaa !9
  %4719 = icmp sle i32 %4717, %4718
  br i1 %4719, label %4720, label %4757

4720:                                             ; preds = %4716
  %4721 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %4721, ptr %42, align 4, !tbaa !9
  store i32 1, ptr %98, align 4, !tbaa !9
  br label %4722

4722:                                             ; preds = %4750, %4720
  %4723 = load i32, ptr %98, align 4, !tbaa !9
  %4724 = load i32, ptr %42, align 4, !tbaa !9
  %4725 = icmp sle i32 %4723, %4724
  br i1 %4725, label %4726, label %4753

4726:                                             ; preds = %4722
  %4727 = load double, ptr %105, align 8, !tbaa !11
  %4728 = load ptr, ptr %27, align 8, !tbaa !5
  %4729 = load i32, ptr %98, align 4, !tbaa !9
  %4730 = load i32, ptr %53, align 4, !tbaa !9
  %4731 = load i32, ptr %101, align 4, !tbaa !9
  %4732 = add nsw i32 %4730, %4731
  %4733 = load i32, ptr %39, align 4, !tbaa !9
  %4734 = mul nsw i32 %4732, %4733
  %4735 = add nsw i32 %4729, %4734
  %4736 = sext i32 %4735 to i64
  %4737 = getelementptr inbounds double, ptr %4728, i64 %4736
  %4738 = load double, ptr %4737, align 8, !tbaa !11
  %4739 = fmul double %4727, %4738
  %4740 = load ptr, ptr %27, align 8, !tbaa !5
  %4741 = load i32, ptr %98, align 4, !tbaa !9
  %4742 = load i32, ptr %53, align 4, !tbaa !9
  %4743 = load i32, ptr %101, align 4, !tbaa !9
  %4744 = add nsw i32 %4742, %4743
  %4745 = load i32, ptr %39, align 4, !tbaa !9
  %4746 = mul nsw i32 %4744, %4745
  %4747 = add nsw i32 %4741, %4746
  %4748 = sext i32 %4747 to i64
  %4749 = getelementptr inbounds double, ptr %4740, i64 %4748
  store double %4739, ptr %4749, align 8, !tbaa !11
  br label %4750

4750:                                             ; preds = %4726
  %4751 = load i32, ptr %98, align 4, !tbaa !9
  %4752 = add nsw i32 %4751, 1
  store i32 %4752, ptr %98, align 4, !tbaa !9
  br label %4722, !llvm.loop !61

4753:                                             ; preds = %4722
  br label %4754

4754:                                             ; preds = %4753
  %4755 = load i32, ptr %101, align 4, !tbaa !9
  %4756 = add nsw i32 %4755, 1
  store i32 %4756, ptr %101, align 4, !tbaa !9
  br label %4716, !llvm.loop !62

4757:                                             ; preds = %4716
  br label %4758

4758:                                             ; preds = %4757, %4707
  br label %4759

4759:                                             ; preds = %4758, %2640, %2573, %2520
  br label %4760

4760:                                             ; preds = %4759
  %4761 = load i32, ptr %86, align 4, !tbaa !9
  %4762 = add nsw i32 %4761, -1
  store i32 %4762, ptr %86, align 4, !tbaa !9
  br label %2514, !llvm.loop !63

4763:                                             ; preds = %2514
  br label %4764

4764:                                             ; preds = %4763, %2506
  store i32 1, ptr %115, align 4
  br label %4765

4765:                                             ; preds = %4764, %3066, %1261, %479, %468, %250
  call void @llvm.lifetime.end.p0(i64 32, ptr %114) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %112) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %111) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %107) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  ret void
}

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

declare i32 @lsame_(ptr noundef, ptr noundef) #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) #2

declare double @dlamch_(ptr noundef) #2

declare void @dlabad_(ptr noundef, ptr noundef) #2

declare void @dlag2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare void @dlaln2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dgemv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !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}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = distinct !{!45, !14}
!46 = distinct !{!46, !14}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}
!49 = distinct !{!49, !14}
!50 = distinct !{!50, !14}
!51 = distinct !{!51, !14}
!52 = distinct !{!52, !14}
!53 = distinct !{!53, !14}
!54 = distinct !{!54, !14}
!55 = distinct !{!55, !14}
!56 = distinct !{!56, !14}
!57 = distinct !{!57, !14}
!58 = distinct !{!58, !14}
!59 = distinct !{!59, !14}
!60 = distinct !{!60, !14}
!61 = distinct !{!61, !14}
!62 = distinct !{!62, !14}
!63 = distinct !{!63, !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"

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [5 x i8], align 1
@c_true = external hidden global i32, align 4
@c__2 = external hidden global i32, align 4
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b34 = external hidden global double, align 8
@c__1 = external hidden global i32, align 4
@c_b36 = external hidden global double, align 8
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@c_false = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dtgevc_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr nocapture noundef %10, ptr nocapture noundef readonly %11, ptr nocapture noundef readonly %12, ptr nocapture noundef writeonly %13, ptr noundef %14, ptr nocapture noundef writeonly %15) local_unnamed_addr #0 {
  %17 = ptrtoint ptr %4 to i64
  %18 = ptrtoint ptr %6 to i64
  %19 = ptrtoint ptr %14 to i64
  %20 = ptrtoint ptr %10 to i64
  %21 = ptrtoint ptr %14 to i64
  %22 = ptrtoint ptr %10 to i64
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca double, align 8
  %26 = alloca double, align 8
  %27 = alloca double, align 8
  %28 = alloca [4 x double], align 16
  %29 = alloca [4 x double], align 16
  %30 = alloca double, align 8
  %31 = alloca [2 x double], align 16
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca i32, align 4
  %39 = alloca double, align 8
  %40 = alloca double, align 8
  %41 = alloca [4 x double], align 16
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %41) #6
  %42 = getelementptr inbounds i8, ptr %2, i64 -4
  %43 = load i32, ptr %5, align 4, !tbaa !5
  %narrow1504 = xor i32 %43, -1
  %44 = sext i32 %narrow1504 to i64
  %45 = getelementptr inbounds double, ptr %4, i64 %44
  %46 = load i32, ptr %7, align 4, !tbaa !5
  %narrow1505 = xor i32 %46, -1
  %47 = sext i32 %narrow1505 to i64
  %48 = getelementptr inbounds double, ptr %6, i64 %47
  %49 = load i32, ptr %9, align 4, !tbaa !5
  %narrow = xor i32 %49, -1
  %50 = sext i32 %narrow to i64
  %51 = getelementptr inbounds double, ptr %8, i64 %50
  %52 = load i32, ptr %11, align 4, !tbaa !5
  %narrow1484 = xor i32 %52, -1
  %53 = sext i32 %narrow1484 to i64
  %54 = getelementptr inbounds double, ptr %10, i64 %53
  %55 = getelementptr inbounds i8, ptr %14, i64 -8
  %56 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %.not = icmp eq i32 %56, 0
  br i1 %.not, label %57, label %61

57:                                               ; preds = %16
  %58 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not1485 = icmp eq i32 %58, 0
  br i1 %.not1485, label %59, label %61

59:                                               ; preds = %57
  %60 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not1486 = icmp eq i32 %60, 0
  br label %61

61:                                               ; preds = %59, %57, %16
  %.not1491 = phi i1 [ false, %16 ], [ true, %57 ], [ false, %59 ]
  %.not1520 = phi i1 [ true, %16 ], [ true, %57 ], [ false, %59 ]
  %62 = phi i1 [ false, %16 ], [ false, %57 ], [ %.not1486, %59 ]
  %63 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not1487.not2525 = icmp eq i32 %63, 0
  br i1 %.not1487.not2525, label %64, label %.thread

64:                                               ; preds = %61
  %65 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #6
  %.not1488 = icmp eq i32 %65, 0
  br i1 %.not1488, label %66, label %.thread

.thread:                                          ; preds = %61, %64
  store i32 0, ptr %15, align 4, !tbaa !5
  br label %68

66:                                               ; preds = %64
  %67 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not1489 = icmp eq i32 %67, 0
  store i32 0, ptr %15, align 4, !tbaa !5
  br i1 %.not1489, label %.thread1590, label %68

68:                                               ; preds = %.thread, %66
  %.not15021587 = phi i1 [ %.not1487.not2525, %.thread ], [ false, %66 ]
  br i1 %62, label %.thread1590, label %69

69:                                               ; preds = %68
  %70 = load i32, ptr %3, align 4, !tbaa !5
  %71 = icmp slt i32 %70, 0
  br i1 %71, label %.thread1590, label %72

72:                                               ; preds = %69
  %73 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %70, i32 1)
  %74 = icmp slt i32 %73, %spec.select
  br i1 %74, label %.thread1590, label %75

75:                                               ; preds = %72
  %76 = load i32, ptr %7, align 4, !tbaa !5
  %77 = icmp slt i32 %76, %spec.select
  br i1 %77, label %.thread1590, label %79

.thread1590:                                      ; preds = %75, %72, %69, %68, %66
  %.sink = phi i32 [ -1, %66 ], [ -2, %68 ], [ -4, %69 ], [ -6, %72 ], [ -8, %75 ]
  %.neg2346 = phi i32 [ 1, %66 ], [ 2, %68 ], [ 4, %69 ], [ 6, %72 ], [ 8, %75 ]
  store i32 %.sink, ptr %15, align 4, !tbaa !5
  store i32 %.neg2346, ptr %23, align 4, !tbaa !5
  %78 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, i32 noundef 6) #6
  br label %.loopexit1678

79:                                               ; preds = %75
  br i1 %.not1491, label %80, label %.loopexit1685

80:                                               ; preds = %79
  %.not14921687 = icmp eq i32 %70, 0
  br i1 %.not14921687, label %.loopexit1685.thread, label %.lr.ph.preheader

.loopexit1685.thread:                             ; preds = %80
  store i32 -1, ptr %23, align 4, !tbaa !5
  br label %.thread2356

.lr.ph.preheader:                                 ; preds = %80
  %81 = sext i32 %43 to i64
  %82 = zext nneg i32 %70 to i64
  %83 = add nuw i32 %70, 1
  %wide.trip.count = zext i32 %83 to i64
  %invariant.gep = getelementptr i8, ptr %45, i64 8
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %102
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %102 ]
  %.013631690 = phi i32 [ 0, %.lr.ph.preheader ], [ %.2, %102 ]
  %.013881689 = phi i32 [ 0, %.lr.ph.preheader ], [ %.11389, %102 ]
  %.not1493 = icmp eq i32 %.013631690, 0
  br i1 %.not1493, label %84, label %102

84:                                               ; preds = %.lr.ph
  %85 = icmp ult i64 %indvars.iv, %82
  br i1 %85, label %86, label %98

86:                                               ; preds = %84
  %87 = mul nsw i64 %indvars.iv, %81
  %gep2423 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %88 = getelementptr double, ptr %gep2423, i64 %87
  %89 = load double, ptr %88, align 8, !tbaa !9
  %90 = fcmp une double %89, 0.000000e+00
  br i1 %90, label %.critedge, label %98

.critedge:                                        ; preds = %86
  %91 = getelementptr inbounds i32, ptr %42, i64 %indvars.iv
  %92 = load i32, ptr %91, align 4, !tbaa !5
  %.not1496 = icmp eq i32 %92, 0
  br i1 %.not1496, label %93, label %96

93:                                               ; preds = %.critedge
  %94 = getelementptr inbounds i8, ptr %91, i64 4
  %95 = load i32, ptr %94, align 4, !tbaa !5
  %.not1497 = icmp eq i32 %95, 0
  br i1 %.not1497, label %102, label %96

96:                                               ; preds = %93, %.critedge
  %97 = add nsw i32 %.013881689, 2
  br label %102

98:                                               ; preds = %84, %86
  %99 = getelementptr inbounds i32, ptr %42, i64 %indvars.iv
  %100 = load i32, ptr %99, align 4, !tbaa !5
  %.not1495 = icmp ne i32 %100, 0
  %101 = zext i1 %.not1495 to i32
  %spec.select1576 = add nsw i32 %.013881689, %101
  br label %102

102:                                              ; preds = %98, %.lr.ph, %93, %96
  %.11389 = phi i32 [ %97, %96 ], [ %.013881689, %93 ], [ %.013881689, %.lr.ph ], [ %spec.select1576, %98 ]
  %.2 = phi i32 [ 1, %96 ], [ 1, %93 ], [ 0, %.lr.ph ], [ 0, %98 ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit1685, label %.lr.ph, !llvm.loop !11

.loopexit1685:                                    ; preds = %102, %79
  %.21390 = phi i32 [ %70, %79 ], [ %.11389, %102 ]
  %103 = add nsw i32 %70, -1
  store i32 %103, ptr %23, align 4, !tbaa !5
  %.not1498.not1691 = icmp sgt i32 %70, 1
  br i1 %.not1498.not1691, label %.lr.ph1695, label %.thread2356

.lr.ph1695:                                       ; preds = %.loopexit1685
  %104 = add i32 %46, 1
  %105 = sext i32 %43 to i64
  %106 = sext i32 %46 to i64
  %107 = zext nneg i32 %103 to i64
  %wide.trip.count2013 = zext nneg i32 %70 to i64
  %indvars.iv.next20112345 = add nsw i64 %106, 1
  %invariant.gep2424 = getelementptr i8, ptr %45, i64 16
  br label %108

108:                                              ; preds = %.lr.ph1695, %142
  %indvars.iv2010 = phi i64 [ 1, %.lr.ph1695 ], [ %indvars.iv.next2011, %142 ]
  %.014031694 = phi i32 [ 0, %.lr.ph1695 ], [ %.21405, %142 ]
  %.014061693 = phi i32 [ 0, %.lr.ph1695 ], [ %.11407, %142 ]
  %indvars.iv.next2011 = add nuw nsw i64 %indvars.iv2010, 1
  %indvars = trunc i64 %indvars.iv.next2011 to i32
  %109 = mul nsw i64 %indvars.iv2010, %105
  %110 = getelementptr double, ptr %45, i64 %indvars.iv.next2011
  %111 = getelementptr double, ptr %110, i64 %109
  %112 = load double, ptr %111, align 8, !tbaa !9
  %113 = fcmp une double %112, 0.000000e+00
  br i1 %113, label %114, label %142

114:                                              ; preds = %108
  %115 = trunc nuw nsw i64 %indvars.iv2010 to i32
  %116 = mul i32 %104, %115
  %117 = sext i32 %116 to i64
  %118 = getelementptr inbounds double, ptr %48, i64 %117
  %119 = load double, ptr %118, align 8, !tbaa !9
  %120 = fcmp oeq double %119, 0.000000e+00
  br i1 %120, label %133, label %121

121:                                              ; preds = %114
  %122 = mul i64 %indvars.iv.next2011, %indvars.iv.next20112345
  %123 = getelementptr inbounds double, ptr %48, i64 %122
  %124 = load double, ptr %123, align 8, !tbaa !9
  %125 = fcmp oeq double %124, 0.000000e+00
  br i1 %125, label %133, label %126

126:                                              ; preds = %121
  %127 = mul nsw i32 %46, %indvars
  %128 = sext i32 %127 to i64
  %129 = getelementptr double, ptr %48, i64 %indvars.iv2010
  %130 = getelementptr double, ptr %129, i64 %128
  %131 = load double, ptr %130, align 8, !tbaa !9
  %132 = fcmp une double %131, 0.000000e+00
  br i1 %132, label %133, label %134

133:                                              ; preds = %126, %121, %114
  br label %134

134:                                              ; preds = %133, %126
  %.11404 = phi i32 [ 1, %133 ], [ %.014031694, %126 ]
  %135 = icmp ult i64 %indvars.iv2010, %107
  br i1 %135, label %136, label %142

136:                                              ; preds = %134
  %137 = mul nsw i64 %indvars.iv.next2011, %105
  %gep2425 = getelementptr double, ptr %invariant.gep2424, i64 %indvars.iv2010
  %138 = getelementptr double, ptr %gep2425, i64 %137
  %139 = load double, ptr %138, align 8, !tbaa !9
  %140 = fcmp une double %139, 0.000000e+00
  br i1 %140, label %141, label %142

141:                                              ; preds = %136
  br label %142

142:                                              ; preds = %108, %136, %141, %134
  %.11407 = phi i32 [ 1, %141 ], [ %.014061693, %136 ], [ %.014061693, %134 ], [ %.014061693, %108 ]
  %.21405 = phi i32 [ %.11404, %141 ], [ %.11404, %136 ], [ %.11404, %134 ], [ %.014031694, %108 ]
  %exitcond2014.not = icmp eq i64 %indvars.iv.next2011, %wide.trip.count2013
  br i1 %exitcond2014.not, label %._crit_edge, label %108, !llvm.loop !13

._crit_edge:                                      ; preds = %142
  %.not1499 = icmp eq i32 %.11407, 0
  br i1 %.not1499, label %143, label %.thread1602

143:                                              ; preds = %._crit_edge
  %.not1500 = icmp eq i32 %.21405, 0
  br i1 %.not1500, label %.thread2356, label %.thread1602

.thread2356:                                      ; preds = %.loopexit1685, %.loopexit1685.thread, %143
  %.21390234923542360 = phi i32 [ %.21390, %143 ], [ 0, %.loopexit1685.thread ], [ %.21390, %.loopexit1685 ]
  %.pr1595 = load i32, ptr %9, align 4, !tbaa !5
  %144 = icmp slt i32 %.pr1595, %70
  %or.cond2520 = select i1 %.not1487.not2525, i1 %144, i1 false
  %145 = icmp slt i32 %.pr1595, 1
  %or.cond2521 = select i1 %or.cond2520, i1 true, i1 %145
  br i1 %or.cond2521, label %.thread1602, label %146

146:                                              ; preds = %.thread2356
  %.pr1597 = load i32, ptr %11, align 4, !tbaa !5
  %.not15021587.not2522 = xor i1 %.not15021587, true
  %147 = icmp slt i32 %.pr1597, %70
  %or.cond2523 = select i1 %.not15021587.not2522, i1 %147, i1 false
  %148 = icmp slt i32 %.pr1597, 1
  %or.cond2524 = select i1 %or.cond2523, i1 true, i1 %148
  br i1 %or.cond2524, label %.thread1602, label %149

149:                                              ; preds = %146
  %150 = load i32, ptr %12, align 4, !tbaa !5
  %151 = icmp slt i32 %150, %.21390234923542360
  br i1 %151, label %.thread1602, label %153

.thread1602:                                      ; preds = %149, %146, %.thread2356, %143, %._crit_edge
  %.sink2514 = phi i32 [ -5, %._crit_edge ], [ -7, %143 ], [ -10, %.thread2356 ], [ -12, %146 ], [ -13, %149 ]
  %.neg = phi i32 [ 5, %._crit_edge ], [ 7, %143 ], [ 10, %.thread2356 ], [ 12, %146 ], [ 13, %149 ]
  store i32 %.sink2514, ptr %15, align 4, !tbaa !5
  store i32 %.neg, ptr %23, align 4, !tbaa !5
  %152 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %23, i32 noundef 6) #6
  br label %.loopexit1678

153:                                              ; preds = %149
  store i32 %.21390234923542360, ptr %13, align 4, !tbaa !5
  %154 = load i32, ptr %3, align 4, !tbaa !5
  %155 = icmp eq i32 %154, 0
  br i1 %155, label %.loopexit1678, label %156

156:                                              ; preds = %153
  %157 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #6
  store double %157, ptr %39, align 8, !tbaa !9
  %158 = fdiv double 1.000000e+00, %157
  store double %158, ptr %40, align 8, !tbaa !9
  call void @dlabad_(ptr noundef nonnull %39, ptr noundef nonnull %40) #6
  %159 = call double @dlamch_(ptr noundef nonnull @.str.7) #6
  %160 = call double @dlamch_(ptr noundef nonnull @.str.8) #6
  %161 = fmul double %159, %160
  %162 = load double, ptr %39, align 8
  %163 = load i32, ptr %3, align 4, !tbaa !5
  %164 = sitofp i32 %163 to double
  %165 = fmul double %162, %164
  %166 = fdiv double %165, %161
  %167 = fdiv double 1.000000e+00, %166
  store double %167, ptr %40, align 8, !tbaa !9
  %168 = fdiv double 1.000000e+00, %165
  %169 = load double, ptr %4, align 8, !tbaa !9
  %170 = fcmp oge double %169, 0.000000e+00
  %171 = fneg double %169
  %172 = select i1 %170, double %169, double %171
  %173 = icmp sgt i32 %163, 1
  br i1 %173, label %174, label %183

174:                                              ; preds = %156
  %175 = sext i32 %43 to i64
  %176 = getelementptr double, ptr %45, i64 %175
  %177 = getelementptr i8, ptr %176, i64 16
  %178 = load double, ptr %177, align 8, !tbaa !9
  store double %178, ptr %25, align 8, !tbaa !9
  %179 = fcmp oge double %178, 0.000000e+00
  %180 = fneg double %178
  %181 = select i1 %179, double %178, double %180
  %182 = fadd double %172, %181
  br label %183

183:                                              ; preds = %174, %156
  %.01414 = phi double [ %182, %174 ], [ %172, %156 ]
  %184 = load double, ptr %6, align 8, !tbaa !9
  %185 = fcmp oge double %184, 0.000000e+00
  %186 = fneg double %184
  %187 = select i1 %185, double %184, double %186
  store double 0.000000e+00, ptr %14, align 8, !tbaa !9
  %188 = sext i32 %163 to i64
  %189 = getelementptr double, ptr %55, i64 %188
  %190 = getelementptr i8, ptr %189, i64 8
  store double 0.000000e+00, ptr %190, align 8, !tbaa !9
  %.not15061722 = icmp slt i32 %163, 2
  %191 = insertelement <2 x double> poison, double %.01414, i64 0
  %192 = insertelement <2 x double> %191, double %187, i64 1
  br i1 %.not15061722, label %278, label %.lr.ph1727.preheader

.lr.ph1727.preheader:                             ; preds = %183
  %193 = sext i32 %43 to i64
  %194 = sext i32 %46 to i64
  %195 = add nuw i32 %163, 1
  %wide.trip.count2031 = zext i32 %195 to i64
  %invariant.gep2434 = getelementptr double, ptr %55, i64 %188
  br label %.lr.ph1727

.lr.ph1727:                                       ; preds = %.lr.ph1727.preheader, %272
  %indvars.iv2027 = phi i64 [ 2, %.lr.ph1727.preheader ], [ %indvars.iv.next2028, %272 ]
  %196 = phi <2 x double> [ %192, %.lr.ph1727.preheader ], [ %275, %272 ]
  %indvars2030 = trunc i64 %indvars.iv2027 to i32
  %197 = add nsw i32 %indvars2030, -1
  %198 = mul nsw i32 %197, %43
  %199 = sext i32 %198 to i64
  %200 = getelementptr double, ptr %45, i64 %indvars.iv2027
  %201 = getelementptr double, ptr %200, i64 %199
  %202 = load double, ptr %201, align 8, !tbaa !9
  %203 = fcmp oeq double %202, 0.000000e+00
  %204 = trunc i64 %indvars.iv2027 to i32
  %205 = add i32 %204, -2
  %.01451 = select i1 %203, i32 %197, i32 %205
  %.not15691699 = icmp slt i32 %.01451, 1
  br i1 %.not15691699, label %._crit_edge1703, label %.lr.ph1702

.lr.ph1702:                                       ; preds = %.lr.ph1727
  %206 = mul nsw i64 %indvars.iv2027, %193
  %207 = mul nsw i64 %indvars.iv2027, %194
  %invariant.gep2426 = getelementptr double, ptr %45, i64 %206
  %invariant.gep2428 = getelementptr double, ptr %48, i64 %207
  %208 = zext nneg i32 %.01451 to i64
  %xtraiter = and i64 %208, 1
  %209 = icmp eq i32 %.01451, 1
  br i1 %209, label %._crit_edge1703.loopexit.unr-lcssa, label %.lr.ph1702.new

.lr.ph1702.new:                                   ; preds = %.lr.ph1702
  %unroll_iter = and i64 %208, 2147483646
  br label %210

210:                                              ; preds = %210, %.lr.ph1702.new
  %indvars.iv2015 = phi i64 [ 1, %.lr.ph1702.new ], [ %indvars.iv.next2016.1, %210 ]
  %211 = phi <2 x double> [ zeroinitializer, %.lr.ph1702.new ], [ %227, %210 ]
  %niter = phi i64 [ 0, %.lr.ph1702.new ], [ %niter.next.1, %210 ]
  %gep2427 = getelementptr double, ptr %invariant.gep2426, i64 %indvars.iv2015
  %212 = load double, ptr %gep2427, align 8, !tbaa !9
  %gep2429 = getelementptr double, ptr %invariant.gep2428, i64 %indvars.iv2015
  %213 = load double, ptr %gep2429, align 8, !tbaa !9
  %214 = insertelement <2 x double> poison, double %212, i64 0
  %215 = insertelement <2 x double> %214, double %213, i64 1
  %216 = fcmp oge <2 x double> %215, zeroinitializer
  %217 = fneg <2 x double> %215
  %218 = select <2 x i1> %216, <2 x double> %215, <2 x double> %217
  %219 = fadd <2 x double> %211, %218
  %indvars.iv.next2016 = add nuw nsw i64 %indvars.iv2015, 1
  %gep2427.1 = getelementptr double, ptr %invariant.gep2426, i64 %indvars.iv.next2016
  %220 = load double, ptr %gep2427.1, align 8, !tbaa !9
  %gep2429.1 = getelementptr double, ptr %invariant.gep2428, i64 %indvars.iv.next2016
  %221 = load double, ptr %gep2429.1, align 8, !tbaa !9
  %222 = insertelement <2 x double> poison, double %220, i64 0
  %223 = insertelement <2 x double> %222, double %221, i64 1
  %224 = fcmp oge <2 x double> %223, zeroinitializer
  %225 = fneg <2 x double> %223
  %226 = select <2 x i1> %224, <2 x double> %223, <2 x double> %225
  %227 = fadd <2 x double> %219, %226
  %indvars.iv.next2016.1 = add nuw nsw i64 %indvars.iv2015, 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 %._crit_edge1703.loopexit.unr-lcssa, label %210, !llvm.loop !14

._crit_edge1703.loopexit.unr-lcssa:               ; preds = %210, %.lr.ph1702
  %.lcssa2927.ph = phi <2 x double> [ poison, %.lr.ph1702 ], [ %227, %210 ]
  %indvars.iv2015.unr = phi i64 [ 1, %.lr.ph1702 ], [ %indvars.iv.next2016.1, %210 ]
  %.unr = phi <2 x double> [ zeroinitializer, %.lr.ph1702 ], [ %227, %210 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge1703, label %._crit_edge1703.loopexit.epilog-lcssa

._crit_edge1703.loopexit.epilog-lcssa:            ; preds = %._crit_edge1703.loopexit.unr-lcssa
  %gep2427.epil = getelementptr double, ptr %invariant.gep2426, i64 %indvars.iv2015.unr
  %228 = load double, ptr %gep2427.epil, align 8, !tbaa !9
  %gep2429.epil = getelementptr double, ptr %invariant.gep2428, i64 %indvars.iv2015.unr
  %229 = load double, ptr %gep2429.epil, align 8, !tbaa !9
  %230 = insertelement <2 x double> poison, double %228, i64 0
  %231 = insertelement <2 x double> %230, double %229, i64 1
  %232 = fcmp oge <2 x double> %231, zeroinitializer
  %233 = fneg <2 x double> %231
  %234 = select <2 x i1> %232, <2 x double> %231, <2 x double> %233
  %235 = fadd <2 x double> %.unr, %234
  br label %._crit_edge1703

._crit_edge1703:                                  ; preds = %._crit_edge1703.loopexit.epilog-lcssa, %._crit_edge1703.loopexit.unr-lcssa, %.lr.ph1727
  %236 = phi <2 x double> [ zeroinitializer, %.lr.ph1727 ], [ %.lcssa2927.ph, %._crit_edge1703.loopexit.unr-lcssa ], [ %235, %._crit_edge1703.loopexit.epilog-lcssa ]
  %237 = getelementptr inbounds double, ptr %55, i64 %indvars.iv2027
  %238 = extractelement <2 x double> %236, i64 0
  store double %238, ptr %237, align 8, !tbaa !9
  %gep2435 = getelementptr double, ptr %invariant.gep2434, i64 %indvars.iv2027
  %239 = extractelement <2 x double> %236, i64 1
  store double %239, ptr %gep2435, align 8, !tbaa !9
  %indvars.iv.next2028 = add nuw nsw i64 %indvars.iv2027, 1
  %.not1570.not = icmp slt i64 %indvars.iv2027, %188
  %240 = trunc nsw i64 %indvars.iv.next2028 to i32
  %.1577 = select i1 %.not1570.not, i32 %240, i32 %163
  %.not1571.not1709 = icmp slt i32 %.01451, %.1577
  br i1 %.not1571.not1709, label %.lr.ph1712, label %272

.lr.ph1712:                                       ; preds = %._crit_edge1703
  %241 = mul nsw i64 %indvars.iv2027, %193
  %242 = mul nsw i64 %indvars.iv2027, %194
  %243 = sext i32 %.01451 to i64
  %wide.trip.count2025 = sext i32 %.1577 to i64
  %invariant.gep2430 = getelementptr double, ptr %45, i64 %241
  %invariant.gep2432 = getelementptr double, ptr %48, i64 %242
  %244 = sub nsw i64 %wide.trip.count2025, %243
  %xtraiter2933 = and i64 %244, 1
  %lcmp.mod2934.not = icmp eq i64 %xtraiter2933, 0
  br i1 %lcmp.mod2934.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph1712
  %indvars.iv.next2022.prol = add nsw i64 %243, 1
  %gep2431.prol = getelementptr double, ptr %invariant.gep2430, i64 %indvars.iv.next2022.prol
  %245 = load double, ptr %gep2431.prol, align 8, !tbaa !9
  %gep2433.prol = getelementptr double, ptr %invariant.gep2432, i64 %indvars.iv.next2022.prol
  %246 = load double, ptr %gep2433.prol, align 8, !tbaa !9
  %247 = insertelement <2 x double> poison, double %245, i64 0
  %248 = insertelement <2 x double> %247, double %246, i64 1
  %249 = fcmp oge <2 x double> %248, zeroinitializer
  %250 = fneg <2 x double> %248
  %251 = select <2 x i1> %249, <2 x double> %248, <2 x double> %250
  %252 = fadd <2 x double> %236, %251
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph1712
  %.lcssa2929.unr = phi double [ poison, %.lr.ph1712 ], [ %246, %.prol.loopexit.unr-lcssa ]
  %.lcssa2928.unr = phi <2 x double> [ poison, %.lr.ph1712 ], [ %252, %.prol.loopexit.unr-lcssa ]
  %indvars.iv2021.unr = phi i64 [ %243, %.lr.ph1712 ], [ %indvars.iv.next2022.prol, %.prol.loopexit.unr-lcssa ]
  %.unr2935 = phi <2 x double> [ %236, %.lr.ph1712 ], [ %252, %.prol.loopexit.unr-lcssa ]
  %253 = add nsw i64 %wide.trip.count2025, -1
  %254 = icmp eq i64 %253, %243
  br i1 %254, label %._crit_edge1713, label %.lr.ph1712.new

.lr.ph1712.new:                                   ; preds = %.prol.loopexit, %.lr.ph1712.new
  %indvars.iv2021 = phi i64 [ %indvars.iv.next2022.1, %.lr.ph1712.new ], [ %indvars.iv2021.unr, %.prol.loopexit ]
  %255 = phi <2 x double> [ %271, %.lr.ph1712.new ], [ %.unr2935, %.prol.loopexit ]
  %indvars.iv.next2022 = add nsw i64 %indvars.iv2021, 1
  %gep2431 = getelementptr double, ptr %invariant.gep2430, i64 %indvars.iv.next2022
  %256 = load double, ptr %gep2431, align 8, !tbaa !9
  %gep2433 = getelementptr double, ptr %invariant.gep2432, i64 %indvars.iv.next2022
  %257 = load double, ptr %gep2433, align 8, !tbaa !9
  %258 = insertelement <2 x double> poison, double %256, i64 0
  %259 = insertelement <2 x double> %258, double %257, i64 1
  %260 = fcmp oge <2 x double> %259, zeroinitializer
  %261 = fneg <2 x double> %259
  %262 = select <2 x i1> %260, <2 x double> %259, <2 x double> %261
  %263 = fadd <2 x double> %255, %262
  %indvars.iv.next2022.1 = add nsw i64 %indvars.iv2021, 2
  %gep2431.1 = getelementptr double, ptr %invariant.gep2430, i64 %indvars.iv.next2022.1
  %264 = load double, ptr %gep2431.1, align 8, !tbaa !9
  %gep2433.1 = getelementptr double, ptr %invariant.gep2432, i64 %indvars.iv.next2022.1
  %265 = load double, ptr %gep2433.1, align 8, !tbaa !9
  %266 = insertelement <2 x double> poison, double %264, i64 0
  %267 = insertelement <2 x double> %266, double %265, i64 1
  %268 = fcmp oge <2 x double> %267, zeroinitializer
  %269 = fneg <2 x double> %267
  %270 = select <2 x i1> %268, <2 x double> %267, <2 x double> %269
  %271 = fadd <2 x double> %263, %270
  %exitcond2026.not.1 = icmp eq i64 %indvars.iv.next2022.1, %wide.trip.count2025
  br i1 %exitcond2026.not.1, label %._crit_edge1713, label %.lr.ph1712.new, !llvm.loop !15

._crit_edge1713:                                  ; preds = %.lr.ph1712.new, %.prol.loopexit
  %.lcssa2929 = phi double [ %.lcssa2929.unr, %.prol.loopexit ], [ %265, %.lr.ph1712.new ]
  %.lcssa2928 = phi <2 x double> [ %.lcssa2928.unr, %.prol.loopexit ], [ %271, %.lr.ph1712.new ]
  store double %.lcssa2929, ptr %25, align 8, !tbaa !9
  br label %272

272:                                              ; preds = %._crit_edge1713, %._crit_edge1703
  %273 = phi <2 x double> [ %.lcssa2928, %._crit_edge1713 ], [ %236, %._crit_edge1703 ]
  %274 = fcmp oge <2 x double> %196, %273
  %275 = select <2 x i1> %274, <2 x double> %196, <2 x double> %273
  %exitcond2032.not = icmp eq i64 %indvars.iv.next2028, %wide.trip.count2031
  br i1 %exitcond2032.not, label %._crit_edge1728, label %.lr.ph1727, !llvm.loop !16

._crit_edge1728:                                  ; preds = %272
  %276 = extractelement <2 x double> %273, i64 0
  store double %276, ptr %27, align 8, !tbaa !9
  %277 = extractelement <2 x double> %273, i64 1
  store double %277, ptr %30, align 8, !tbaa !9
  store i32 %195, ptr %24, align 4, !tbaa !5
  br label %278

278:                                              ; preds = %._crit_edge1728, %183
  %279 = phi <2 x double> [ %275, %._crit_edge1728 ], [ %192, %183 ]
  %280 = insertelement <2 x double> poison, double %162, i64 0
  %281 = shufflevector <2 x double> %280, <2 x double> poison, <2 x i32> zeroinitializer
  %282 = fcmp oge <2 x double> %279, %281
  %283 = select <2 x i1> %282, <2 x double> %279, <2 x double> %281
  %284 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %283
  br i1 %.not1487.not2525, label %285, label %.loopexit1684

285:                                              ; preds = %278
  store i32 %163, ptr %23, align 4, !tbaa !5
  %invariant.gep1820 = getelementptr i8, ptr %51, i64 8
  %.not15081824 = icmp slt i32 %163, 1
  br i1 %.not15081824, label %.loopexit1684, label %.lr.ph1833

.lr.ph1833:                                       ; preds = %285
  %286 = add i32 %43, 1
  %287 = add i32 %46, 1
  %288 = add i32 %49, 1
  %289 = getelementptr inbounds i8, ptr %31, i64 8
  %290 = shl nsw i64 %50, 3
  %scevgep = getelementptr i8, ptr %8, i64 %290
  %291 = sext i32 %43 to i64
  %292 = sext i32 %49 to i64
  %invariant.gep2452 = getelementptr i8, ptr %45, i64 8
  %293 = extractelement <2 x double> %284, i64 0
  %294 = extractelement <2 x double> %284, i64 1
  %295 = extractelement <2 x double> %279, i64 0
  %296 = extractelement <2 x double> %279, i64 1
  %297 = insertelement <2 x double> poison, double %161, i64 0
  %298 = shufflevector <2 x double> %297, <2 x double> poison, <2 x i32> zeroinitializer
  %299 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %300 = getelementptr inbounds i8, ptr %28, i64 16
  %301 = getelementptr inbounds i8, ptr %29, i64 16
  %302 = getelementptr inbounds i8, ptr %41, i64 16
  %303 = getelementptr inbounds i8, ptr %29, i64 8
  %304 = getelementptr inbounds i8, ptr %28, i64 8
  %305 = getelementptr inbounds i8, ptr %28, i64 24
  %306 = getelementptr inbounds i8, ptr %41, i64 8
  %307 = getelementptr inbounds i8, ptr %29, i64 24
  %308 = getelementptr inbounds i8, ptr %41, i64 24
  %309 = getelementptr inbounds i8, ptr %29, i64 8
  %310 = getelementptr inbounds i8, ptr %28, i64 8
  %311 = getelementptr inbounds i8, ptr %41, i64 8
  br label %312

312:                                              ; preds = %.lr.ph1833, %970
  %indvar = phi i64 [ 0, %.lr.ph1833 ], [ %indvar.next, %970 ]
  %313 = phi i32 [ %163, %.lr.ph1833 ], [ %971, %970 ]
  %314 = phi double [ %162, %.lr.ph1833 ], [ %972, %970 ]
  %315 = phi i32 [ %163, %.lr.ph1833 ], [ %973, %970 ]
  %indvars.iv2043 = phi i64 [ 1, %.lr.ph1833 ], [ %indvars.iv.next2044, %970 ]
  %.31831 = phi i32 [ 0, %.lr.ph1833 ], [ %.5, %970 ]
  %.014531825 = phi i32 [ 0, %.lr.ph1833 ], [ %.11454, %970 ]
  %316 = xor i64 %indvar, -1
  %317 = xor i64 %indvar, -1
  %indvars2136 = trunc i64 %indvars.iv2043 to i32
  %.not1544 = icmp eq i32 %.31831, 0
  br i1 %.not1544, label %318, label %970

318:                                              ; preds = %312
  store i32 1, ptr %38, align 4, !tbaa !5
  %319 = sext i32 %315 to i64
  %320 = icmp slt i64 %indvars.iv2043, %319
  br i1 %320, label %321, label %326

321:                                              ; preds = %318
  %322 = mul nsw i64 %indvars.iv2043, %291
  %gep2453 = getelementptr double, ptr %invariant.gep2452, i64 %indvars.iv2043
  %323 = getelementptr double, ptr %gep2453, i64 %322
  %324 = load double, ptr %323, align 8, !tbaa !9
  %325 = fcmp une double %324, 0.000000e+00
  br i1 %325, label %.thread1605, label %326

326:                                              ; preds = %321, %318
  br i1 %.not1491, label %330, label %.thread1618.thread

.thread1605:                                      ; preds = %321
  store i32 2, ptr %38, align 4, !tbaa !5
  br i1 %.not1491, label %327, label %.thread1618

327:                                              ; preds = %.thread1605
  %328 = getelementptr inbounds i32, ptr %42, i64 %indvars.iv2043
  %329 = load i32, ptr %328, align 4, !tbaa !5
  %.not1546 = icmp eq i32 %329, 0
  br i1 %.not1546, label %.thread2361, label %.thread1618

330:                                              ; preds = %326
  %331 = getelementptr inbounds i32, ptr %42, i64 %indvars.iv2043
  %332 = load i32, ptr %331, align 4, !tbaa !5
  %.not1547 = icmp eq i32 %332, 0
  br i1 %.not1547, label %970, label %.thread1618.thread

.thread2361:                                      ; preds = %327
  %333 = getelementptr inbounds i8, ptr %328, i64 4
  %334 = load i32, ptr %333, align 4, !tbaa !5
  %.not2526 = icmp eq i32 %334, 0
  br i1 %.not2526, label %970, label %.thread1618

.thread1618.thread:                               ; preds = %330, %326
  %335 = mul i32 %286, %indvars2136
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %45, i64 %336
  %338 = load double, ptr %337, align 8, !tbaa !9
  %339 = fcmp oge double %338, 0.000000e+00
  %340 = fneg double %338
  %341 = select i1 %339, double %338, double %340
  %342 = fcmp ugt double %341, %314
  br i1 %342, label %.thread1618, label %343

343:                                              ; preds = %.thread1618.thread
  %344 = mul i32 %287, %indvars2136
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds double, ptr %48, i64 %345
  %347 = load double, ptr %346, align 8, !tbaa !9
  %348 = fcmp oge double %347, 0.000000e+00
  %349 = fneg double %347
  %350 = select i1 %348, double %347, double %349
  %351 = fcmp ugt double %350, %314
  br i1 %351, label %.thread1618, label %352

352:                                              ; preds = %343
  %353 = add nsw i32 %.014531825, 1
  %.not15491732 = icmp slt i32 %315, 1
  br i1 %.not15491732, label %._crit_edge1736, label %.lr.ph1735

.lr.ph1735:                                       ; preds = %352
  %354 = mul nsw i32 %353, %49
  %355 = add i32 %354, 1
  %356 = sext i32 %355 to i64
  %357 = shl nsw i64 %356, 3
  %scevgep2033 = getelementptr i8, ptr %scevgep, i64 %357
  %358 = zext nneg i32 %315 to i64
  %359 = shl nuw nsw i64 %358, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2033, i8 0, i64 %359, i1 false), !tbaa !9
  br label %._crit_edge1736

._crit_edge1736:                                  ; preds = %.lr.ph1735, %352
  %360 = mul i32 %353, %288
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds double, ptr %51, i64 %361
  store double 1.000000e+00, ptr %362, align 8, !tbaa !9
  br label %970

.thread1618:                                      ; preds = %327, %.thread2361, %.thread1605, %.thread1618.thread, %343
  %363 = phi i32 [ 1, %.thread1618.thread ], [ 1, %343 ], [ 2, %.thread1605 ], [ 2, %.thread2361 ], [ 2, %327 ]
  %.4161016231627 = phi i32 [ 0, %.thread1618.thread ], [ 0, %343 ], [ 1, %.thread1605 ], [ 1, %.thread2361 ], [ 1, %327 ]
  %.not1545160916241625 = phi i1 [ true, %.thread1618.thread ], [ true, %343 ], [ false, %.thread1605 ], [ false, %.thread2361 ], [ false, %327 ]
  %364 = mul nsw i32 %363, %315
  %.not15501737 = icmp slt i32 %364, 1
  br i1 %.not15501737, label %._crit_edge1740, label %.lr.ph1739

.lr.ph1739:                                       ; preds = %.thread1618
  %365 = shl i32 %315, 1
  %366 = sext i32 %365 to i64
  %367 = shl nsw i64 %366, 3
  %scevgep2038 = getelementptr i8, ptr %14, i64 %367
  %368 = zext nneg i32 %364 to i64
  %369 = shl nuw nsw i64 %368, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2038, i8 0, i64 %369, i1 false), !tbaa !9
  br label %._crit_edge1740

._crit_edge1740:                                  ; preds = %.lr.ph1739, %.thread1618
  br i1 %.not1545160916241625, label %370, label %490

370:                                              ; preds = %._crit_edge1740
  %371 = mul i32 %286, %indvars2136
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds double, ptr %45, i64 %372
  %374 = load double, ptr %373, align 8, !tbaa !9
  %375 = mul i32 %287, %indvars2136
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds double, ptr %48, i64 %376
  %378 = load double, ptr %377, align 8, !tbaa !9
  %379 = insertelement <2 x double> poison, double %374, i64 0
  %380 = insertelement <2 x double> %379, double %378, i64 1
  %381 = fcmp oge <2 x double> %380, zeroinitializer
  %382 = fneg <2 x double> %380
  %383 = select <2 x i1> %381, <2 x double> %380, <2 x double> %382
  %384 = fmul <2 x double> %284, %383
  %385 = extractelement <2 x double> %384, i64 0
  %386 = extractelement <2 x double> %384, i64 1
  %387 = fcmp oge double %385, %386
  %388 = select i1 %387, double %385, double %386
  %389 = fcmp oge double %388, %314
  %390 = select i1 %389, double %388, double %314
  %391 = fdiv double 1.000000e+00, %390
  store double %391, ptr %27, align 8, !tbaa !9
  %392 = insertelement <2 x double> poison, double %378, i64 0
  %393 = insertelement <2 x double> %392, double %374, i64 1
  %394 = insertelement <2 x double> poison, double %391, i64 0
  %395 = shufflevector <2 x double> %394, <2 x double> poison, <2 x i32> zeroinitializer
  %396 = fmul <2 x double> %393, %395
  %397 = fmul <2 x double> %299, %396
  %398 = fmul <2 x double> %284, %397
  %399 = extractelement <2 x double> %398, i64 0
  store double %399, ptr %32, align 8, !tbaa !9
  %400 = extractelement <2 x double> %398, i64 1
  store double %400, ptr %37, align 8, !tbaa !9
  store double 0.000000e+00, ptr %36, align 8, !tbaa !9
  store double 1.000000e+00, ptr %33, align 8, !tbaa !9
  %401 = extractelement <2 x double> %397, i64 0
  %402 = fcmp oge double %401, 0.000000e+00
  %403 = fneg double %401
  %404 = select i1 %402, double %401, double %403
  %405 = fcmp ult double %404, %314
  br i1 %405, label %.thread2394, label %406

406:                                              ; preds = %370
  %407 = fcmp oge double %399, 0.000000e+00
  %408 = fneg double %399
  %409 = select i1 %407, double %399, double %408
  %410 = fcmp olt double %409, %166
  %411 = extractelement <2 x double> %397, i64 1
  %412 = fcmp oge double %411, 0.000000e+00
  %413 = fneg double %411
  %414 = select i1 %412, double %411, double %413
  %415 = fcmp ult double %414, %314
  br i1 %415, label %.thread2389, label %425

.thread2394:                                      ; preds = %370
  %416 = extractelement <2 x double> %397, i64 1
  %417 = fcmp oge double %416, 0.000000e+00
  %418 = fneg double %416
  %419 = select i1 %417, double %416, double %418
  %420 = fcmp ult double %419, %314
  br i1 %420, label %.thread2372, label %.thread2396

.thread2396:                                      ; preds = %.thread2394
  %421 = fcmp oge double %400, 0.000000e+00
  %422 = fneg double %400
  %423 = select i1 %421, double %400, double %422
  %424 = fcmp olt double %423, %166
  br i1 %424, label %.thread1629, label %.thread2372

425:                                              ; preds = %406
  %426 = fcmp oge double %400, 0.000000e+00
  %427 = fneg double %400
  %428 = select i1 %426, double %400, double %427
  %429 = fcmp olt double %428, %166
  br i1 %410, label %435, label %.thread2371

.thread2389:                                      ; preds = %406
  br i1 %410, label %.thread2390, label %.thread2372

.thread2390:                                      ; preds = %.thread2389
  %430 = fdiv double %166, %404
  %431 = load double, ptr %40, align 8
  %432 = fcmp ole double %295, %431
  %433 = select i1 %432, double %295, double %431
  %434 = fmul double %430, %433
  br label %451

435:                                              ; preds = %425
  %436 = fdiv double %166, %404
  %437 = load double, ptr %40, align 8
  %438 = fcmp ole double %295, %437
  %439 = select i1 %438, double %295, double %437
  %440 = fmul double %436, %439
  br i1 %429, label %.thread1629, label %451

.thread2371:                                      ; preds = %425
  br i1 %429, label %.thread1629, label %.thread2372

.thread1629:                                      ; preds = %.thread2396, %.thread2371, %435
  %441 = phi i1 [ false, %.thread2371 ], [ true, %435 ], [ false, %.thread2396 ]
  %442 = phi double [ %414, %.thread2371 ], [ %414, %435 ], [ %419, %.thread2396 ]
  %443 = phi double [ 1.000000e+00, %.thread2371 ], [ %440, %435 ], [ 1.000000e+00, %.thread2396 ]
  store double %443, ptr %25, align 8, !tbaa !9
  %444 = fdiv double %166, %442
  %445 = load double, ptr %40, align 8
  %446 = fcmp ole double %296, %445
  %447 = select i1 %446, double %296, double %445
  %448 = fmul double %444, %447
  %449 = fcmp oge double %443, %448
  %450 = select i1 %449, double %443, double %448
  br label %451

451:                                              ; preds = %435, %.thread2390, %.thread1629
  %452 = phi i1 [ %441, %.thread1629 ], [ true, %435 ], [ true, %.thread2390 ]
  %453 = phi i1 [ true, %.thread1629 ], [ false, %435 ], [ false, %.thread2390 ]
  %454 = phi double [ %450, %.thread1629 ], [ %440, %435 ], [ %434, %.thread2390 ]
  %455 = fcmp oge double %399, 0.000000e+00
  %456 = fneg double %399
  %457 = select i1 %455, double %399, double %456
  %458 = fcmp ole double %457, 1.000000e+00
  %459 = select i1 %458, double 1.000000e+00, double %457
  %460 = fcmp oge double %400, 0.000000e+00
  %461 = fneg double %400
  %462 = select i1 %460, double %400, double %461
  %463 = fcmp oge double %459, %462
  %464 = select i1 %463, double %459, double %462
  %465 = fmul double %314, %464
  %466 = fdiv double 1.000000e+00, %465
  %467 = fcmp ole double %454, %466
  %468 = select i1 %467, double %454, double %466
  store double %468, ptr %33, align 8, !tbaa !9
  %469 = fmul double %399, %468
  %470 = fmul double %401, %468
  %471 = fmul double %293, %470
  %storemerge1551 = select i1 %452, double %471, double %469
  store double %storemerge1551, ptr %32, align 8, !tbaa !9
  br i1 %453, label %472, label %478

472:                                              ; preds = %451
  %473 = extractelement <2 x double> %397, i64 1
  %474 = fmul double %473, %468
  %475 = fmul double %294, %474
  store double %475, ptr %37, align 8, !tbaa !9
  %476 = insertelement <2 x double> poison, double %storemerge1551, i64 0
  %477 = insertelement <2 x double> %476, double %475, i64 1
  br label %.thread2372

478:                                              ; preds = %451
  %479 = fmul double %400, %468
  store double %479, ptr %37, align 8, !tbaa !9
  %480 = insertelement <2 x double> poison, double %storemerge1551, i64 0
  %481 = insertelement <2 x double> %480, double %479, i64 1
  br label %.thread2372

.thread2372:                                      ; preds = %.thread2396, %.thread2394, %.thread2389, %.thread2371, %472, %478
  %482 = phi <2 x double> [ %477, %472 ], [ %481, %478 ], [ %398, %.thread2371 ], [ %398, %.thread2389 ], [ %398, %.thread2394 ], [ %398, %.thread2396 ]
  %483 = fcmp oge <2 x double> %482, zeroinitializer
  %484 = fneg <2 x double> %482
  %485 = select <2 x i1> %483, <2 x double> %482, <2 x double> %484
  %486 = shl i32 %315, 1
  %487 = sext i32 %486 to i64
  %488 = getelementptr double, ptr %55, i64 %indvars.iv2043
  %489 = getelementptr double, ptr %488, i64 %487
  store double 1.000000e+00, ptr %489, align 8, !tbaa !9
  br label %664

490:                                              ; preds = %._crit_edge1740
  %491 = fmul double %314, 1.000000e+02
  store double %491, ptr %25, align 8, !tbaa !9
  %492 = mul nsw i64 %indvars.iv2043, %291
  %493 = mul nsw i32 %43, %indvars2136
  %494 = sext i32 %493 to i64
  %495 = getelementptr double, ptr %45, i64 %indvars.iv2043
  %496 = getelementptr double, ptr %495, i64 %494
  %497 = mul i32 %287, %indvars2136
  %498 = sext i32 %497 to i64
  %499 = getelementptr inbounds double, ptr %48, i64 %498
  call void @dlag2_(ptr noundef nonnull %496, ptr noundef nonnull %5, ptr noundef nonnull %499, ptr noundef nonnull %7, ptr noundef nonnull %25, ptr noundef nonnull %32, ptr noundef nonnull %27, ptr noundef nonnull %37, ptr noundef nonnull %30, ptr noundef nonnull %36) #6
  %500 = load double, ptr %36, align 8, !tbaa !9
  %501 = fneg double %500
  store double %501, ptr %36, align 8, !tbaa !9
  %502 = fcmp oeq double %500, 0.000000e+00
  br i1 %502, label %503, label %504

503:                                              ; preds = %490
  store i32 %indvars2136, ptr %15, align 4, !tbaa !5
  br label %.loopexit1678

504:                                              ; preds = %490
  %505 = load double, ptr %32, align 8
  %506 = fcmp oge double %505, 0.000000e+00
  %507 = fneg double %505
  %508 = select i1 %506, double %505, double %507
  %509 = load double, ptr %37, align 8
  %510 = fcmp oge double %509, 0.000000e+00
  %511 = fneg double %509
  %512 = select i1 %510, double %509, double %511
  %513 = fcmp ole double %500, 0.000000e+00
  %514 = select i1 %513, double %501, double %500
  %515 = fadd double %514, %512
  store double 1.000000e+00, ptr %33, align 8, !tbaa !9
  %516 = fmul double %161, %508
  %517 = load double, ptr %39, align 8
  %518 = fcmp uge double %516, %517
  %519 = fcmp ult double %508, %517
  %or.cond1578 = or i1 %518, %519
  br i1 %or.cond1578, label %523, label %520

520:                                              ; preds = %504
  %521 = fdiv double %517, %161
  %522 = fdiv double %521, %508
  store double %522, ptr %33, align 8, !tbaa !9
  br label %523

523:                                              ; preds = %520, %504
  %524 = phi double [ %522, %520 ], [ 1.000000e+00, %504 ]
  %525 = fmul double %161, %515
  %526 = fcmp uge double %525, %517
  %527 = fcmp ult double %515, %517
  %or.cond1579 = or i1 %527, %526
  br i1 %or.cond1579, label %533, label %528

528:                                              ; preds = %523
  %529 = fdiv double %517, %161
  %530 = fdiv double %529, %515
  %531 = fcmp oge double %524, %530
  %532 = select i1 %531, double %524, double %530
  store double %532, ptr %33, align 8, !tbaa !9
  br label %533

533:                                              ; preds = %528, %523
  %.pr16322314 = phi double [ %532, %528 ], [ %524, %523 ]
  %534 = fmul double %508, %517
  %535 = fcmp ogt double %534, %293
  br i1 %535, label %536, label %538

536:                                              ; preds = %533
  %537 = fdiv double %293, %534
  store double %537, ptr %33, align 8, !tbaa !9
  br label %538

538:                                              ; preds = %536, %533
  %539 = phi double [ %537, %536 ], [ %.pr16322314, %533 ]
  %540 = fmul double %517, %515
  %541 = fcmp ogt double %540, %294
  br i1 %541, label %542, label %thread-pre-split1631

542:                                              ; preds = %538
  store double %539, ptr %25, align 8, !tbaa !9
  %543 = fdiv double %294, %540
  %544 = fcmp ole double %539, %543
  %545 = select i1 %544, double %539, double %543
  store double %545, ptr %33, align 8, !tbaa !9
  br label %thread-pre-split1631

thread-pre-split1631:                             ; preds = %538, %542
  %546 = phi double [ %545, %542 ], [ %539, %538 ]
  %547 = fcmp une double %546, 1.000000e+00
  %548 = insertelement <2 x double> poison, double %508, i64 0
  %549 = insertelement <2 x double> %548, double %515, i64 1
  br i1 %547, label %550, label %._crit_edge2340

550:                                              ; preds = %thread-pre-split1631
  %551 = fmul double %505, %546
  store double %551, ptr %32, align 8, !tbaa !9
  %552 = fcmp oge double %551, 0.000000e+00
  %553 = fneg double %551
  %554 = select i1 %552, double %551, double %553
  %555 = fmul double %509, %546
  store double %555, ptr %37, align 8, !tbaa !9
  %556 = fmul double %546, %501
  store double %556, ptr %36, align 8, !tbaa !9
  %557 = fcmp oge double %555, 0.000000e+00
  %558 = fneg double %555
  %559 = select i1 %557, double %555, double %558
  %560 = fcmp oge double %556, 0.000000e+00
  %561 = fneg double %556
  %562 = select i1 %560, double %556, double %561
  %563 = fadd double %559, %562
  %564 = insertelement <2 x double> poison, double %554, i64 0
  %565 = insertelement <2 x double> %564, double %563, i64 1
  br label %._crit_edge2340

._crit_edge2340:                                  ; preds = %thread-pre-split1631, %550
  %.pre-phi2344 = phi double [ %561, %550 ], [ %500, %thread-pre-split1631 ]
  %.pre-phi2335 = phi double [ %558, %550 ], [ %511, %thread-pre-split1631 ]
  %566 = phi double [ %556, %550 ], [ %501, %thread-pre-split1631 ]
  %567 = phi double [ %555, %550 ], [ %509, %thread-pre-split1631 ]
  %568 = phi double [ %551, %550 ], [ %505, %thread-pre-split1631 ]
  %569 = phi <2 x double> [ %565, %550 ], [ %549, %thread-pre-split1631 ]
  %570 = add nuw nsw i64 %indvars.iv2043, 1
  %571 = getelementptr double, ptr %45, i64 %570
  %572 = getelementptr double, ptr %571, i64 %492
  %573 = load double, ptr %572, align 8, !tbaa !9
  %574 = fmul double %568, %573
  store double %574, ptr %27, align 8, !tbaa !9
  %575 = load double, ptr %496, align 8, !tbaa !9
  %576 = load double, ptr %499, align 8, !tbaa !9
  %577 = fmul double %576, %.pre-phi2335
  %578 = call double @llvm.fmuladd.f64(double %568, double %575, double %577)
  %579 = fmul double %576, %.pre-phi2344
  %580 = fcmp oge double %574, 0.000000e+00
  %581 = fneg double %574
  %582 = select i1 %580, double %574, double %581
  %583 = fcmp oge double %578, 0.000000e+00
  %584 = fneg double %578
  %585 = select i1 %583, double %578, double %584
  %586 = fcmp oge double %579, 0.000000e+00
  %587 = fneg double %579
  %588 = select i1 %586, double %579, double %587
  %589 = fadd double %585, %588
  %590 = fcmp ogt double %582, %589
  br i1 %590, label %591, label %605

591:                                              ; preds = %._crit_edge2340
  %592 = load i32, ptr %3, align 4, !tbaa !5
  %593 = shl i32 %592, 1
  %594 = sext i32 %593 to i64
  %595 = add nsw i64 %indvars.iv2043, %594
  %596 = getelementptr inbounds double, ptr %55, i64 %595
  store double 1.000000e+00, ptr %596, align 8, !tbaa !9
  %597 = mul nsw i32 %592, 3
  %598 = sext i32 %597 to i64
  %599 = getelementptr double, ptr %55, i64 %indvars.iv2043
  %600 = getelementptr double, ptr %599, i64 %598
  store double 0.000000e+00, ptr %600, align 8, !tbaa !9
  %601 = fdiv double %584, %574
  %602 = getelementptr i8, ptr %596, i64 8
  store double %601, ptr %602, align 8, !tbaa !9
  %603 = fdiv double %587, %574
  %604 = getelementptr i8, ptr %600, i64 8
  store double %603, ptr %604, align 8, !tbaa !9
  %.pre2327 = load double, ptr %600, align 8, !tbaa !9
  br label %639

605:                                              ; preds = %._crit_edge2340
  %606 = add nuw nsw i32 %indvars2136, 1
  %607 = load i32, ptr %3, align 4, !tbaa !5
  %608 = shl i32 %607, 1
  %609 = sext i32 %608 to i64
  %610 = add nsw i64 %indvars.iv2043, %609
  %611 = getelementptr double, ptr %55, i64 %610
  %612 = getelementptr i8, ptr %611, i64 8
  store double 1.000000e+00, ptr %612, align 8, !tbaa !9
  %613 = mul nsw i32 %607, 3
  %614 = sext i32 %613 to i64
  %615 = getelementptr double, ptr %55, i64 %indvars.iv2043
  %616 = getelementptr double, ptr %615, i64 %614
  %617 = getelementptr i8, ptr %616, i64 8
  store double 0.000000e+00, ptr %617, align 8, !tbaa !9
  %618 = mul nsw i32 %606, %43
  %619 = sext i32 %618 to i64
  %620 = getelementptr double, ptr %45, i64 %indvars.iv2043
  %621 = getelementptr double, ptr %620, i64 %619
  %622 = load double, ptr %621, align 8, !tbaa !9
  %623 = fmul double %568, %622
  store double %623, ptr %27, align 8, !tbaa !9
  %624 = trunc nsw i64 %570 to i32
  %625 = mul i32 %287, %624
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %48, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !9
  %629 = getelementptr double, ptr %45, i64 %570
  %630 = getelementptr double, ptr %629, i64 %619
  %631 = load double, ptr %630, align 8, !tbaa !9
  %632 = fneg double %568
  %633 = fmul double %631, %632
  %634 = call double @llvm.fmuladd.f64(double %567, double %628, double %633)
  %635 = fdiv double %634, %623
  store double %635, ptr %611, align 8, !tbaa !9
  %636 = load double, ptr %627, align 8, !tbaa !9
  %637 = fmul double %566, %636
  %638 = fdiv double %637, %623
  store double %638, ptr %616, align 8, !tbaa !9
  %.pre = load double, ptr %617, align 8, !tbaa !9
  br label %639

639:                                              ; preds = %605, %591
  %640 = phi double [ %638, %605 ], [ %.pre2327, %591 ]
  %641 = phi double [ %.pre, %605 ], [ %603, %591 ]
  %.pre-phi = phi i64 [ %610, %605 ], [ %595, %591 ]
  %642 = phi i32 [ %607, %605 ], [ %592, %591 ]
  %643 = getelementptr inbounds double, ptr %55, i64 %.pre-phi
  %644 = load double, ptr %643, align 8, !tbaa !9
  %645 = insertelement <2 x double> poison, double %644, i64 0
  %646 = insertelement <2 x double> %645, double %640, i64 1
  %647 = fcmp oge <2 x double> %646, zeroinitializer
  %648 = fneg <2 x double> %646
  %649 = select <2 x i1> %647, <2 x double> %646, <2 x double> %648
  %650 = getelementptr i8, ptr %643, i64 8
  %651 = load double, ptr %650, align 8, !tbaa !9
  %652 = insertelement <2 x double> poison, double %651, i64 0
  %653 = insertelement <2 x double> %652, double %641, i64 1
  %654 = fcmp oge <2 x double> %653, zeroinitializer
  %655 = fneg <2 x double> %653
  %656 = select <2 x i1> %654, <2 x double> %653, <2 x double> %655
  %657 = shufflevector <2 x double> %649, <2 x double> %656, <2 x i32> <i32 0, i32 2>
  %658 = shufflevector <2 x double> %649, <2 x double> %656, <2 x i32> <i32 1, i32 3>
  %659 = fadd <2 x double> %657, %658
  %660 = extractelement <2 x double> %659, i64 0
  %661 = extractelement <2 x double> %659, i64 1
  %662 = fcmp oge double %660, %661
  %663 = select i1 %662, double %660, double %661
  %.pre2316 = load i32, ptr %38, align 4, !tbaa !5
  br label %664

664:                                              ; preds = %639, %.thread2372
  %665 = phi i32 [ %.pre2316, %639 ], [ %363, %.thread2372 ]
  %666 = phi i32 [ %642, %639 ], [ %315, %.thread2372 ]
  %667 = phi double [ %517, %639 ], [ %314, %.thread2372 ]
  %.01435 = phi double [ %663, %639 ], [ 1.000000e+00, %.thread2372 ]
  %668 = phi <2 x double> [ %569, %639 ], [ %485, %.thread2372 ]
  %669 = fmul <2 x double> %298, %668
  %670 = fmul <2 x double> %279, %669
  %671 = extractelement <2 x double> %670, i64 0
  %672 = extractelement <2 x double> %670, i64 1
  %673 = fcmp oge double %671, %672
  %674 = select i1 %673, double %671, double %672
  store double %674, ptr %25, align 8, !tbaa !9
  %675 = fcmp oge double %674, %667
  %676 = select i1 %675, double %674, double %667
  store double %676, ptr %26, align 8, !tbaa !9
  %677 = add nsw i32 %665, %indvars2136
  %.not15521780 = icmp sgt i32 %677, %666
  br i1 %.not15521780, label %._crit_edge1789, label %.lr.ph1788.preheader

.lr.ph1788.preheader:                             ; preds = %664
  %678 = sext i32 %665 to i64
  %679 = add nsw i64 %indvars.iv2043, %678
  %680 = sext i32 %666 to i64
  %681 = extractelement <2 x double> %668, i64 0
  %682 = extractelement <2 x double> %668, i64 1
  br label %.lr.ph1788

.lr.ph1788:                                       ; preds = %.lr.ph1788.preheader, %880
  %indvar2555 = phi i32 [ 0, %.lr.ph1788.preheader ], [ %indvar.next2556, %880 ]
  %indvars.iv2106 = phi i64 [ %679, %.lr.ph1788.preheader ], [ %indvars.iv.next2107, %880 ]
  %.014171786 = phi i32 [ 0, %.lr.ph1788.preheader ], [ %.21419, %880 ]
  %.114361781 = phi double [ %.01435, %.lr.ph1788.preheader ], [ %.41439, %880 ]
  %683 = add i32 %677, %indvar2555
  %684 = zext i32 %683 to i64
  %685 = add i64 %316, %684
  %686 = add i32 %677, %indvar2555
  %687 = zext i32 %686 to i64
  %688 = add i64 %317, %687
  %.not1559 = icmp eq i32 %.014171786, 0
  br i1 %.not1559, label %689, label %880

689:                                              ; preds = %.lr.ph1788
  store i32 1, ptr %35, align 4, !tbaa !5
  %690 = trunc nsw i64 %indvars.iv2106 to i32
  %691 = mul i32 %287, %690
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds double, ptr %48, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !9
  store double %694, ptr %31, align 16, !tbaa !9
  %695 = load i32, ptr %3, align 4, !tbaa !5
  %696 = sext i32 %695 to i64
  %697 = icmp slt i64 %indvars.iv2106, %696
  br i1 %697, label %698, label %711

698:                                              ; preds = %689
  %699 = add nsw i64 %indvars.iv2106, 1
  %700 = mul nsw i64 %indvars.iv2106, %291
  %701 = getelementptr double, ptr %45, i64 %699
  %702 = getelementptr double, ptr %701, i64 %700
  %703 = load double, ptr %702, align 8, !tbaa !9
  %704 = fcmp une double %703, 0.000000e+00
  br i1 %704, label %705, label %711

705:                                              ; preds = %698
  %706 = trunc nsw i64 %699 to i32
  %707 = mul i32 %287, %706
  %708 = sext i32 %707 to i64
  %709 = getelementptr inbounds double, ptr %48, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !9
  store double %710, ptr %289, align 8, !tbaa !9
  store i32 2, ptr %35, align 4, !tbaa !5
  br label %711

711:                                              ; preds = %698, %705, %689
  %712 = phi i32 [ 2, %705 ], [ 1, %698 ], [ 1, %689 ]
  %.not1560 = phi i1 [ false, %705 ], [ true, %698 ], [ true, %689 ]
  %.11418 = phi i32 [ 1, %705 ], [ 0, %698 ], [ 0, %689 ]
  %713 = fcmp ole double %.114361781, 1.000000e+00
  %714 = select i1 %713, double 1.000000e+00, double %.114361781
  %715 = fdiv double 1.000000e+00, %714
  %716 = getelementptr inbounds double, ptr %55, i64 %indvars.iv2106
  %717 = load double, ptr %716, align 8, !tbaa !9
  %718 = getelementptr double, ptr %55, i64 %indvars.iv2106
  %719 = getelementptr double, ptr %718, i64 %696
  %720 = load double, ptr %719, align 8, !tbaa !9
  %721 = fcmp oge double %717, %720
  %722 = select i1 %721, double %717, double %720
  store double %722, ptr %25, align 8, !tbaa !9
  %723 = fmul double %682, %720
  %724 = call double @llvm.fmuladd.f64(double %681, double %717, double %723)
  %725 = fcmp oge double %722, %724
  %726 = select i1 %725, double %722, double %724
  store double %726, ptr %27, align 8, !tbaa !9
  br i1 %.not1560, label %740, label %727

727:                                              ; preds = %711
  %728 = getelementptr i8, ptr %716, i64 8
  %729 = load double, ptr %728, align 8, !tbaa !9
  %730 = fcmp oge double %726, %729
  %731 = select i1 %730, double %726, double %729
  %732 = getelementptr i8, ptr %719, i64 8
  %733 = load double, ptr %732, align 8, !tbaa !9
  %734 = fcmp oge double %731, %733
  %735 = select i1 %734, double %731, double %733
  store double %735, ptr %25, align 8, !tbaa !9
  %736 = fmul double %682, %733
  %737 = call double @llvm.fmuladd.f64(double %681, double %729, double %736)
  %738 = fcmp oge double %735, %737
  %739 = select i1 %738, double %735, double %737
  store double %739, ptr %27, align 8, !tbaa !9
  br label %740

740:                                              ; preds = %727, %711
  %741 = phi double [ %739, %727 ], [ %726, %711 ]
  %742 = fmul double %168, %715
  %743 = fcmp ogt double %741, %742
  %.pre2317 = load i32, ptr %38, align 4, !tbaa !5
  br i1 %743, label %744, label %757

744:                                              ; preds = %740
  %745 = add nsw i32 %.pre2317, -1
  store i32 %745, ptr %24, align 4, !tbaa !5
  %.not1561.not1745 = icmp sgt i32 %.pre2317, 0
  %.not1568.not1741 = icmp slt i64 %indvars.iv2043, %indvars.iv2106
  %or.cond = select i1 %.not1561.not1745, i1 %.not1568.not1741, i1 false
  br i1 %or.cond, label %.preheader1680.us.preheader, label %._crit_edge1747

.preheader1680.us.preheader:                      ; preds = %744
  %wide.trip.count2055 = zext nneg i32 %.pre2317 to i64
  %wide.trip.count2049 = and i64 %indvars.iv2106, 4294967295
  %min.iters.check2576 = icmp ult i64 %685, 4
  %n.vec2579 = and i64 %685, -4
  %ind.end2580 = add i64 %indvars.iv2043, %n.vec2579
  %broadcast.splatinsert2587 = insertelement <2 x double> poison, double %715, i64 0
  %broadcast.splat2588 = shufflevector <2 x double> %broadcast.splatinsert2587, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n2590 = icmp eq i64 %685, %n.vec2579
  br label %.preheader1680.us

.preheader1680.us:                                ; preds = %.preheader1680.us.preheader, %._crit_edge1744.us
  %indvars.iv2051 = phi i64 [ 0, %.preheader1680.us.preheader ], [ %indvars.iv.next2052, %._crit_edge1744.us ]
  %746 = add nuw nsw i64 %indvars.iv2051, 2
  %747 = mul nsw i64 %746, %696
  %invariant.gep2436 = getelementptr double, ptr %55, i64 %747
  br i1 %min.iters.check2576, label %scalar.ph2575.preheader, label %vector.ph2577

vector.ph2577:                                    ; preds = %.preheader1680.us
  %748 = getelementptr double, ptr %invariant.gep2436, i64 %indvars.iv2043
  br label %vector.body2582

vector.body2582:                                  ; preds = %vector.body2582, %vector.ph2577
  %index2583 = phi i64 [ 0, %vector.ph2577 ], [ %index.next2589, %vector.body2582 ]
  %749 = getelementptr double, ptr %748, i64 %index2583
  %750 = getelementptr i8, ptr %749, i64 16
  %wide.load2585 = load <2 x double>, ptr %749, align 8, !tbaa !9
  %wide.load2586 = load <2 x double>, ptr %750, align 8, !tbaa !9
  %751 = fmul <2 x double> %broadcast.splat2588, %wide.load2585
  %752 = fmul <2 x double> %broadcast.splat2588, %wide.load2586
  store <2 x double> %751, ptr %749, align 8, !tbaa !9
  store <2 x double> %752, ptr %750, align 8, !tbaa !9
  %index.next2589 = add nuw i64 %index2583, 4
  %753 = icmp eq i64 %index.next2589, %n.vec2579
  br i1 %753, label %middle.block2574, label %vector.body2582, !llvm.loop !17

middle.block2574:                                 ; preds = %vector.body2582
  br i1 %cmp.n2590, label %._crit_edge1744.us, label %scalar.ph2575.preheader

scalar.ph2575.preheader:                          ; preds = %middle.block2574, %.preheader1680.us
  %indvars.iv2045.ph = phi i64 [ %indvars.iv2043, %.preheader1680.us ], [ %ind.end2580, %middle.block2574 ]
  br label %scalar.ph2575

scalar.ph2575:                                    ; preds = %scalar.ph2575.preheader, %scalar.ph2575
  %indvars.iv2045 = phi i64 [ %indvars.iv.next2046, %scalar.ph2575 ], [ %indvars.iv2045.ph, %scalar.ph2575.preheader ]
  %gep2437 = getelementptr double, ptr %invariant.gep2436, i64 %indvars.iv2045
  %754 = load double, ptr %gep2437, align 8, !tbaa !9
  %755 = fmul double %715, %754
  store double %755, ptr %gep2437, align 8, !tbaa !9
  %indvars.iv.next2046 = add nuw nsw i64 %indvars.iv2045, 1
  %exitcond2050.not = icmp eq i64 %indvars.iv.next2046, %wide.trip.count2049
  br i1 %exitcond2050.not, label %._crit_edge1744.us, label %scalar.ph2575, !llvm.loop !20

._crit_edge1744.us:                               ; preds = %scalar.ph2575, %middle.block2574
  %indvars.iv.next2052 = add nuw nsw i64 %indvars.iv2051, 1
  %exitcond2056.not = icmp eq i64 %indvars.iv.next2052, %wide.trip.count2055
  br i1 %exitcond2056.not, label %._crit_edge1747, label %.preheader1680.us, !llvm.loop !21

._crit_edge1747:                                  ; preds = %._crit_edge1744.us, %744
  %756 = fmul double %.114361781, %715
  br label %757

757:                                              ; preds = %._crit_edge1747, %740
  %.21437 = phi double [ %756, %._crit_edge1747 ], [ %.114361781, %740 ]
  %.not15621761 = icmp slt i32 %.pre2317, 1
  br i1 %.not15621761, label %.lr.ph1771, label %.lr.ph1764.split

.lr.ph1764.split:                                 ; preds = %757
  %.not1567.not1748 = icmp slt i64 %indvars.iv2043, %indvars.iv2106
  %758 = add nuw nsw i32 %712, 1
  br i1 %.not1567.not1748, label %.lr.ph1759.us.preheader, label %.lr.ph1759.preheader

.lr.ph1759.preheader:                             ; preds = %.lr.ph1764.split
  %exitcond2062.not = icmp eq i32 %758, 2
  br label %.lr.ph1759

.lr.ph1759.us.preheader:                          ; preds = %.lr.ph1764.split
  %759 = add nuw i32 %.pre2317, 1
  %wide.trip.count2080 = zext i32 %759 to i64
  %760 = trunc i64 %indvars.iv2106 to i32
  %wide.trip.count2068 = and i64 %indvars.iv2106, 4294967295
  %761 = mul nsw i32 %43, %760
  %762 = mul nsw i32 %46, %760
  %763 = sext i32 %761 to i64
  %764 = sext i32 %762 to i64
  %invariant.gep2438 = getelementptr double, ptr %45, i64 %763
  %invariant.gep2442 = getelementptr double, ptr %48, i64 %764
  %exitcond2075.not = icmp eq i32 %758, 2
  %765 = add i32 %760, 1
  %766 = mul nsw i32 %765, %43
  %767 = mul nsw i32 %765, %46
  %768 = sext i32 %766 to i64
  %769 = sext i32 %767 to i64
  %invariant.gep2438.1 = getelementptr double, ptr %45, i64 %768
  %invariant.gep2442.1 = getelementptr double, ptr %48, i64 %769
  br label %.lr.ph1759.us

.lr.ph1759.us:                                    ; preds = %.lr.ph1759.us.preheader, %._crit_edge1760.split.us.us
  %indvars.iv2076 = phi i64 [ 1, %.lr.ph1759.us.preheader ], [ %indvars.iv.next2077, %._crit_edge1760.split.us.us ]
  %indvars.iv2076.tr = trunc i64 %indvars.iv2076 to i32
  %770 = shl i32 %indvars.iv2076.tr, 1
  %indvars.iv.next2077 = add nuw nsw i64 %indvars.iv2076, 1
  %771 = mul nsw i64 %indvars.iv.next2077, %696
  %invariant.gep2440 = getelementptr double, ptr %55, i64 %771
  %772 = add i32 %770, -2
  %773 = sext i32 %772 to i64
  %774 = getelementptr inbounds [4 x double], ptr %29, i64 0, i64 %773
  %775 = getelementptr inbounds [4 x double], ptr %28, i64 0, i64 %773
  br label %776

776:                                              ; preds = %776, %.lr.ph1759.us
  %indvars.iv2064 = phi i64 [ %indvars.iv.next2065, %776 ], [ %indvars.iv2043, %.lr.ph1759.us ]
  %777 = phi <2 x double> [ %785, %776 ], [ zeroinitializer, %.lr.ph1759.us ]
  %gep2439 = getelementptr double, ptr %invariant.gep2438, i64 %indvars.iv2064
  %778 = load double, ptr %gep2439, align 8, !tbaa !9
  %gep2441 = getelementptr double, ptr %invariant.gep2440, i64 %indvars.iv2064
  %779 = load double, ptr %gep2441, align 8, !tbaa !9
  %gep2443 = getelementptr double, ptr %invariant.gep2442, i64 %indvars.iv2064
  %780 = load double, ptr %gep2443, align 8, !tbaa !9
  %781 = insertelement <2 x double> poison, double %780, i64 0
  %782 = insertelement <2 x double> %781, double %778, i64 1
  %783 = insertelement <2 x double> poison, double %779, i64 0
  %784 = shufflevector <2 x double> %783, <2 x double> poison, <2 x i32> zeroinitializer
  %785 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %782, <2 x double> %784, <2 x double> %777)
  %indvars.iv.next2065 = add nuw nsw i64 %indvars.iv2064, 1
  %exitcond2069.not = icmp eq i64 %indvars.iv.next2065, %wide.trip.count2068
  br i1 %exitcond2069.not, label %._crit_edge1752.us.us, label %776, !llvm.loop !22

._crit_edge1752.us.us:                            ; preds = %776
  %786 = extractelement <2 x double> %785, i64 1
  store double %786, ptr %774, align 16, !tbaa !9
  %787 = extractelement <2 x double> %785, i64 0
  store double %787, ptr %775, align 16, !tbaa !9
  br i1 %exitcond2075.not, label %._crit_edge1760.split.us.us, label %.lr.ph1751.us.us.1, !llvm.loop !23

.lr.ph1751.us.us.1:                               ; preds = %._crit_edge1752.us.us
  %788 = add i32 %770, -1
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds [4 x double], ptr %29, i64 0, i64 %789
  %791 = getelementptr inbounds [4 x double], ptr %28, i64 0, i64 %789
  br label %792

792:                                              ; preds = %792, %.lr.ph1751.us.us.1
  %indvars.iv2064.1 = phi i64 [ %indvars.iv.next2065.1, %792 ], [ %indvars.iv2043, %.lr.ph1751.us.us.1 ]
  %793 = phi <2 x double> [ %801, %792 ], [ zeroinitializer, %.lr.ph1751.us.us.1 ]
  %gep2439.1 = getelementptr double, ptr %invariant.gep2438.1, i64 %indvars.iv2064.1
  %794 = load double, ptr %gep2439.1, align 8, !tbaa !9
  %gep2441.1 = getelementptr double, ptr %invariant.gep2440, i64 %indvars.iv2064.1
  %795 = load double, ptr %gep2441.1, align 8, !tbaa !9
  %gep2443.1 = getelementptr double, ptr %invariant.gep2442.1, i64 %indvars.iv2064.1
  %796 = load double, ptr %gep2443.1, align 8, !tbaa !9
  %797 = insertelement <2 x double> poison, double %796, i64 0
  %798 = insertelement <2 x double> %797, double %794, i64 1
  %799 = insertelement <2 x double> poison, double %795, i64 0
  %800 = shufflevector <2 x double> %799, <2 x double> poison, <2 x i32> zeroinitializer
  %801 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %798, <2 x double> %800, <2 x double> %793)
  %indvars.iv.next2065.1 = add nuw nsw i64 %indvars.iv2064.1, 1
  %exitcond2069.not.1 = icmp eq i64 %indvars.iv.next2065.1, %wide.trip.count2068
  br i1 %exitcond2069.not.1, label %._crit_edge1752.us.us.1, label %792, !llvm.loop !22

._crit_edge1752.us.us.1:                          ; preds = %792
  %802 = extractelement <2 x double> %801, i64 1
  store double %802, ptr %790, align 8, !tbaa !9
  %803 = extractelement <2 x double> %801, i64 0
  store double %803, ptr %791, align 8, !tbaa !9
  br label %._crit_edge1760.split.us.us

._crit_edge1760.split.us.us:                      ; preds = %._crit_edge1752.us.us.1, %._crit_edge1752.us.us
  %exitcond2081.not = icmp eq i64 %indvars.iv.next2077, %wide.trip.count2080
  br i1 %exitcond2081.not, label %.lr.ph1771, label %.lr.ph1759.us, !llvm.loop !24

.lr.ph1759:                                       ; preds = %.lr.ph1759.preheader, %._crit_edge1760.split
  %.113671762 = phi i32 [ %814, %._crit_edge1760.split ], [ 1, %.lr.ph1759.preheader ]
  %804 = shl nuw i32 %.113671762, 1
  %805 = add i32 %804, -2
  %806 = sext i32 %805 to i64
  %807 = getelementptr inbounds [4 x double], ptr %29, i64 0, i64 %806
  store double 0.000000e+00, ptr %807, align 16, !tbaa !9
  %808 = getelementptr inbounds [4 x double], ptr %28, i64 0, i64 %806
  store double 0.000000e+00, ptr %808, align 16, !tbaa !9
  br i1 %exitcond2062.not, label %._crit_edge1760.split, label %809, !llvm.loop !23

809:                                              ; preds = %.lr.ph1759
  %810 = add i32 %804, -1
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds [4 x double], ptr %29, i64 0, i64 %811
  store double 0.000000e+00, ptr %812, align 8, !tbaa !9
  %813 = getelementptr inbounds [4 x double], ptr %28, i64 0, i64 %811
  store double 0.000000e+00, ptr %813, align 8, !tbaa !9
  br label %._crit_edge1760.split

._crit_edge1760.split:                            ; preds = %809, %.lr.ph1759
  %814 = add nuw i32 %.113671762, 1
  %exitcond2063.not = icmp eq i32 %.113671762, %.pre2317
  br i1 %exitcond2063.not, label %.lr.ph1771, label %.lr.ph1759, !llvm.loop !24

.lr.ph1771:                                       ; preds = %._crit_edge1760.split, %._crit_edge1760.split.us.us, %757
  store i32 %712, ptr %24, align 4, !tbaa !5
  %815 = load double, ptr %32, align 8
  %816 = fneg double %815
  %817 = load double, ptr %37, align 8
  %818 = load double, ptr %36, align 8
  %819 = fneg double %818
  %820 = add nuw nsw i32 %712, 1
  br i1 %.not1545160916241625, label %.lr.ph1771.split.us, label %.lr.ph1771.split

.lr.ph1771.split.us:                              ; preds = %.lr.ph1771
  %821 = load double, ptr %29, align 16, !tbaa !9
  %822 = load double, ptr %28, align 16, !tbaa !9
  %823 = fmul double %817, %822
  %824 = call double @llvm.fmuladd.f64(double %816, double %821, double %823)
  store double %824, ptr %41, align 16, !tbaa !9
  %exitcond2093.not = icmp eq i32 %820, 2
  br i1 %exitcond2093.not, label %._crit_edge1772, label %.lr.ph1771.split.us.1, !llvm.loop !25

.lr.ph1771.split.us.1:                            ; preds = %.lr.ph1771.split.us
  %825 = load double, ptr %309, align 8, !tbaa !9
  %826 = load double, ptr %310, align 8, !tbaa !9
  %827 = fmul double %817, %826
  %828 = call double @llvm.fmuladd.f64(double %816, double %825, double %827)
  store double %828, ptr %311, align 8, !tbaa !9
  br label %._crit_edge1772

.lr.ph1771.split:                                 ; preds = %.lr.ph1771
  %829 = load double, ptr %29, align 16, !tbaa !9
  %830 = load double, ptr %28, align 16, !tbaa !9
  %831 = fmul double %817, %830
  %832 = call double @llvm.fmuladd.f64(double %816, double %829, double %831)
  %833 = load double, ptr %300, align 16, !tbaa !9
  %834 = call double @llvm.fmuladd.f64(double %819, double %833, double %832)
  store double %834, ptr %41, align 16, !tbaa !9
  %835 = load double, ptr %301, align 16, !tbaa !9
  %836 = fmul double %817, %833
  %837 = call double @llvm.fmuladd.f64(double %816, double %835, double %836)
  %838 = call double @llvm.fmuladd.f64(double %818, double %830, double %837)
  store double %838, ptr %302, align 16, !tbaa !9
  %exitcond2087.not = icmp eq i32 %820, 2
  br i1 %exitcond2087.not, label %._crit_edge1772, label %.lr.ph1771.split.1, !llvm.loop !25

.lr.ph1771.split.1:                               ; preds = %.lr.ph1771.split
  %839 = load double, ptr %303, align 8, !tbaa !9
  %840 = load double, ptr %304, align 8, !tbaa !9
  %841 = fmul double %817, %840
  %842 = call double @llvm.fmuladd.f64(double %816, double %839, double %841)
  %843 = load double, ptr %305, align 8, !tbaa !9
  %844 = call double @llvm.fmuladd.f64(double %819, double %843, double %842)
  store double %844, ptr %306, align 8, !tbaa !9
  %845 = load double, ptr %307, align 8, !tbaa !9
  %846 = fmul double %817, %843
  %847 = call double @llvm.fmuladd.f64(double %816, double %845, double %846)
  %848 = call double @llvm.fmuladd.f64(double %818, double %840, double %847)
  store double %848, ptr %308, align 8, !tbaa !9
  br label %._crit_edge1772

._crit_edge1772:                                  ; preds = %.lr.ph1771.split, %.lr.ph1771.split.1, %.lr.ph1771.split.us, %.lr.ph1771.split.us.1
  %849 = mul i32 %286, %690
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds double, ptr %45, i64 %850
  %852 = shl i32 %695, 1
  %853 = sext i32 %852 to i64
  %854 = getelementptr double, ptr %55, i64 %indvars.iv2106
  %855 = getelementptr double, ptr %854, i64 %853
  call void @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull %35, ptr noundef nonnull %38, ptr noundef nonnull %26, ptr noundef nonnull %32, ptr noundef nonnull %851, ptr noundef nonnull %5, ptr noundef nonnull %31, ptr noundef nonnull %289, ptr noundef nonnull %41, ptr noundef nonnull @c__2, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef nonnull %855, ptr noundef nonnull %3, ptr noundef nonnull %33, ptr noundef nonnull %27, ptr noundef nonnull %34) #6
  %856 = load double, ptr %33, align 8, !tbaa !9
  %857 = fcmp olt double %856, 1.000000e+00
  br i1 %857, label %858, label %876

858:                                              ; preds = %._crit_edge1772
  %859 = load i32, ptr %38, align 4, !tbaa !5
  %860 = add nsw i32 %859, -1
  store i32 %860, ptr %24, align 4, !tbaa !5
  %.not1564.not1777 = icmp sgt i32 %859, 0
  %.not1565.not1773 = icmp slt i64 %indvars.iv2043, %indvars.iv2106
  %or.cond2515 = select i1 %.not1564.not1777, i1 %.not1565.not1773, i1 false
  br i1 %or.cond2515, label %.preheader1679.lr.ph.split.us, label %._crit_edge1779

.preheader1679.lr.ph.split.us:                    ; preds = %858
  %861 = load i32, ptr %3, align 4, !tbaa !5
  %862 = sext i32 %861 to i64
  %wide.trip.count2104 = zext nneg i32 %859 to i64
  %wide.trip.count2098 = and i64 %indvars.iv2106, 4294967295
  %min.iters.check2559 = icmp ult i64 %688, 4
  %n.vec2562 = and i64 %688, -4
  %ind.end2563 = add i64 %indvars.iv2043, %n.vec2562
  %broadcast.splatinsert2570 = insertelement <2 x double> poison, double %856, i64 0
  %broadcast.splat2571 = shufflevector <2 x double> %broadcast.splatinsert2570, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n2573 = icmp eq i64 %688, %n.vec2562
  br label %.preheader1679.us

.preheader1679.us:                                ; preds = %._crit_edge1776.us, %.preheader1679.lr.ph.split.us
  %indvars.iv2100 = phi i64 [ %indvars.iv.next2101, %._crit_edge1776.us ], [ 0, %.preheader1679.lr.ph.split.us ]
  %863 = add nuw nsw i64 %indvars.iv2100, 2
  %864 = mul nsw i64 %863, %862
  %865 = getelementptr double, ptr %55, i64 %864
  br i1 %min.iters.check2559, label %scalar.ph2558.preheader, label %vector.ph2560

vector.ph2560:                                    ; preds = %.preheader1679.us
  %866 = getelementptr double, ptr %865, i64 %indvars.iv2043
  br label %vector.body2565

vector.body2565:                                  ; preds = %vector.body2565, %vector.ph2560
  %index2566 = phi i64 [ 0, %vector.ph2560 ], [ %index.next2572, %vector.body2565 ]
  %867 = getelementptr double, ptr %866, i64 %index2566
  %868 = getelementptr i8, ptr %867, i64 16
  %wide.load2568 = load <2 x double>, ptr %867, align 8, !tbaa !9
  %wide.load2569 = load <2 x double>, ptr %868, align 8, !tbaa !9
  %869 = fmul <2 x double> %broadcast.splat2571, %wide.load2568
  %870 = fmul <2 x double> %broadcast.splat2571, %wide.load2569
  store <2 x double> %869, ptr %867, align 8, !tbaa !9
  store <2 x double> %870, ptr %868, align 8, !tbaa !9
  %index.next2572 = add nuw i64 %index2566, 4
  %871 = icmp eq i64 %index.next2572, %n.vec2562
  br i1 %871, label %middle.block2557, label %vector.body2565, !llvm.loop !26

middle.block2557:                                 ; preds = %vector.body2565
  br i1 %cmp.n2573, label %._crit_edge1776.us, label %scalar.ph2558.preheader

scalar.ph2558.preheader:                          ; preds = %middle.block2557, %.preheader1679.us
  %indvars.iv2094.ph = phi i64 [ %indvars.iv2043, %.preheader1679.us ], [ %ind.end2563, %middle.block2557 ]
  br label %scalar.ph2558

scalar.ph2558:                                    ; preds = %scalar.ph2558.preheader, %scalar.ph2558
  %indvars.iv2094 = phi i64 [ %indvars.iv.next2095, %scalar.ph2558 ], [ %indvars.iv2094.ph, %scalar.ph2558.preheader ]
  %872 = getelementptr double, ptr %865, i64 %indvars.iv2094
  %873 = load double, ptr %872, align 8, !tbaa !9
  %874 = fmul double %856, %873
  store double %874, ptr %872, align 8, !tbaa !9
  %indvars.iv.next2095 = add nuw nsw i64 %indvars.iv2094, 1
  %exitcond2099.not = icmp eq i64 %indvars.iv.next2095, %wide.trip.count2098
  br i1 %exitcond2099.not, label %._crit_edge1776.us, label %scalar.ph2558, !llvm.loop !27

._crit_edge1776.us:                               ; preds = %scalar.ph2558, %middle.block2557
  %indvars.iv.next2101 = add nuw nsw i64 %indvars.iv2100, 1
  %exitcond2105.not = icmp eq i64 %indvars.iv.next2101, %wide.trip.count2104
  br i1 %exitcond2105.not, label %._crit_edge1779, label %.preheader1679.us, !llvm.loop !28

._crit_edge1779:                                  ; preds = %._crit_edge1776.us, %858
  %875 = fmul double %.21437, %856
  br label %876

876:                                              ; preds = %._crit_edge1779, %._crit_edge1772
  %.31438 = phi double [ %875, %._crit_edge1779 ], [ %.21437, %._crit_edge1772 ]
  %877 = load double, ptr %27, align 8
  %878 = fcmp oge double %.31438, %877
  %879 = select i1 %878, double %.31438, double %877
  br label %880

880:                                              ; preds = %.lr.ph1788, %876
  %.41439 = phi double [ %879, %876 ], [ %.114361781, %.lr.ph1788 ]
  %.21419 = phi i32 [ %.11418, %876 ], [ 0, %.lr.ph1788 ]
  %indvars.iv.next2107 = add nsw i64 %indvars.iv2106, 1
  %.not1552.not = icmp slt i64 %indvars.iv2106, %680
  %indvar.next2556 = add i32 %indvar2555, 1
  br i1 %.not1552.not, label %.lr.ph1788, label %._crit_edge1789, !llvm.loop !29

._crit_edge1789:                                  ; preds = %880, %664
  %881 = add nsw i32 %.014531825, 1
  br i1 %.not1520, label %899, label %882

882:                                              ; preds = %._crit_edge1789
  %883 = load i32, ptr %38, align 4, !tbaa !5
  %.not1554.not1792 = icmp sgt i32 %883, 0
  %884 = mul nsw i64 %indvars.iv2043, %292
  br i1 %.not1554.not1792, label %.lr.ph1795, label %._crit_edge1796

.lr.ph1795:                                       ; preds = %882
  %gep = getelementptr double, ptr %invariant.gep1820, i64 %884
  %885 = getelementptr double, ptr %55, i64 %indvars.iv2043
  br label %886

886:                                              ; preds = %.lr.ph1795, %886
  %.313691793 = phi i32 [ 0, %.lr.ph1795 ], [ %896, %886 ]
  %887 = load i32, ptr %3, align 4, !tbaa !5
  %reass.sub = sub i32 %887, %indvars2136
  %888 = add i32 %reass.sub, 1
  store i32 %888, ptr %24, align 4, !tbaa !5
  %889 = add nuw nsw i32 %.313691793, 2
  %890 = mul nsw i32 %887, %889
  %891 = sext i32 %890 to i64
  %892 = getelementptr double, ptr %885, i64 %891
  %893 = add nuw nsw i32 %.313691793, 4
  %894 = mul nsw i32 %887, %893
  %895 = sext i32 %894 to i64
  %gep1791 = getelementptr double, ptr %14, i64 %895
  call void @dgemv_(ptr noundef nonnull @.str.9, ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef nonnull @c_b34, ptr noundef %gep, ptr noundef nonnull %9, ptr noundef nonnull %892, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b36, ptr noundef %gep1791, ptr noundef nonnull @c__1) #6
  %896 = add nuw nsw i32 %.313691793, 1
  %exitcond2110.not = icmp eq i32 %896, %883
  br i1 %exitcond2110.not, label %._crit_edge1796, label %886, !llvm.loop !30

._crit_edge1796:                                  ; preds = %886, %882
  %897 = load i32, ptr %3, align 4, !tbaa !5
  %898 = shl i32 %897, 2
  br label %904

899:                                              ; preds = %._crit_edge1789
  %900 = load i32, ptr %3, align 4, !tbaa !5
  %901 = shl i32 %900, 1
  %902 = mul nsw i32 %881, %49
  %903 = sext i32 %902 to i64
  br label %904

904:                                              ; preds = %899, %._crit_edge1796
  %.sink2517 = phi i64 [ %903, %899 ], [ %884, %._crit_edge1796 ]
  %.pn.in.in = phi i32 [ %901, %899 ], [ %898, %._crit_edge1796 ]
  %.01457 = phi i32 [ %indvars2136, %899 ], [ 1, %._crit_edge1796 ]
  %.pn.in = or disjoint i32 %.pn.in.in, 1
  %.pn = sext i32 %.pn.in to i64
  %.sink2516 = getelementptr inbounds double, ptr %55, i64 %.pn
  %gep1823 = getelementptr double, ptr %invariant.gep1820, i64 %.sink2517
  call void @dlacpy_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %38, ptr noundef nonnull %.sink2516, ptr noundef nonnull %3, ptr noundef %gep1823, ptr noundef nonnull %9) #6
  %905 = load i32, ptr %3, align 4, !tbaa !5
  %.not15551804 = icmp sgt i32 %.01457, %905
  br i1 %.not1545160916241625, label %926, label %906

906:                                              ; preds = %904
  br i1 %.not15551804, label %.loopexit1682, label %.lr.ph1801

.lr.ph1801:                                       ; preds = %906
  %907 = mul nsw i32 %881, %49
  %908 = add nsw i32 %.014531825, 2
  %909 = mul nsw i32 %908, %49
  %910 = zext nneg i32 %.01457 to i64
  %911 = sext i32 %907 to i64
  %912 = sext i32 %909 to i64
  %913 = add i32 %905, 1
  %wide.trip.count2115 = zext i32 %913 to i64
  %invariant.gep2444 = getelementptr double, ptr %51, i64 %911
  %invariant.gep2446 = getelementptr double, ptr %51, i64 %912
  br label %914

914:                                              ; preds = %.lr.ph1801, %914
  %indvars.iv2111 = phi i64 [ %910, %.lr.ph1801 ], [ %indvars.iv.next2112, %914 ]
  %.514401798 = phi double [ 0.000000e+00, %.lr.ph1801 ], [ %925, %914 ]
  %gep2445 = getelementptr double, ptr %invariant.gep2444, i64 %indvars.iv2111
  %915 = load double, ptr %gep2445, align 8, !tbaa !9
  %916 = fcmp oge double %915, 0.000000e+00
  %917 = fneg double %915
  %918 = select i1 %916, double %915, double %917
  %gep2447 = getelementptr double, ptr %invariant.gep2446, i64 %indvars.iv2111
  %919 = load double, ptr %gep2447, align 8, !tbaa !9
  %920 = fcmp oge double %919, 0.000000e+00
  %921 = fneg double %919
  %922 = select i1 %920, double %919, double %921
  %923 = fadd double %918, %922
  %924 = fcmp oge double %.514401798, %923
  %925 = select i1 %924, double %.514401798, double %923
  %indvars.iv.next2112 = add nuw nsw i64 %indvars.iv2111, 1
  %exitcond2116.not = icmp eq i64 %indvars.iv.next2112, %wide.trip.count2115
  br i1 %exitcond2116.not, label %..loopexit1683_crit_edge, label %914, !llvm.loop !31

926:                                              ; preds = %904
  br i1 %.not15551804, label %.loopexit1682, label %.lr.ph1808

.lr.ph1808:                                       ; preds = %926
  %927 = mul nsw i32 %881, %49
  %928 = zext i32 %.01457 to i64
  %929 = sext i32 %927 to i64
  %930 = add i32 %905, 1
  %wide.trip.count2121 = zext i32 %930 to i64
  %invariant.gep2448 = getelementptr double, ptr %51, i64 %929
  %931 = sub nsw i64 %wide.trip.count2121, %928
  %xtraiter2938 = and i64 %931, 1
  %lcmp.mod2939.not = icmp eq i64 %xtraiter2938, 0
  br i1 %lcmp.mod2939.not, label %.prol.loopexit2937, label %.prol.loopexit2937.unr-lcssa

.prol.loopexit2937.unr-lcssa:                     ; preds = %.lr.ph1808
  %gep2449.prol = getelementptr double, ptr %invariant.gep2448, i64 %928
  %932 = load double, ptr %gep2449.prol, align 8, !tbaa !9
  %933 = fcmp oge double %932, 0.000000e+00
  %934 = fneg double %932
  %935 = select i1 %933, double %932, double %934
  %936 = fcmp ole double %935, 0.000000e+00
  %937 = select i1 %936, double 0.000000e+00, double %935
  %indvars.iv.next2118.prol = add nuw nsw i64 %928, 1
  br label %.prol.loopexit2937

.prol.loopexit2937:                               ; preds = %.prol.loopexit2937.unr-lcssa, %.lr.ph1808
  %.lcssa2923.unr = phi double [ poison, %.lr.ph1808 ], [ %932, %.prol.loopexit2937.unr-lcssa ]
  %.lcssa2922.unr = phi double [ poison, %.lr.ph1808 ], [ %937, %.prol.loopexit2937.unr-lcssa ]
  %indvars.iv2117.unr = phi i64 [ %928, %.lr.ph1808 ], [ %indvars.iv.next2118.prol, %.prol.loopexit2937.unr-lcssa ]
  %.614411805.unr = phi double [ 0.000000e+00, %.lr.ph1808 ], [ %937, %.prol.loopexit2937.unr-lcssa ]
  %938 = add nsw i64 %wide.trip.count2121, -1
  %939 = icmp eq i64 %938, %928
  br i1 %939, label %..loopexit1682_crit_edge, label %.lr.ph1808.new

.lr.ph1808.new:                                   ; preds = %.prol.loopexit2937
  %invariant.gep2986 = getelementptr i8, ptr %invariant.gep2448, i64 8
  br label %940

940:                                              ; preds = %940, %.lr.ph1808.new
  %indvars.iv2117 = phi i64 [ %indvars.iv2117.unr, %.lr.ph1808.new ], [ %indvars.iv.next2118.1, %940 ]
  %.614411805 = phi double [ %.614411805.unr, %.lr.ph1808.new ], [ %952, %940 ]
  %gep2449 = getelementptr double, ptr %invariant.gep2448, i64 %indvars.iv2117
  %941 = load double, ptr %gep2449, align 8, !tbaa !9
  %942 = fcmp oge double %941, 0.000000e+00
  %943 = fneg double %941
  %944 = select i1 %942, double %941, double %943
  %945 = fcmp oge double %.614411805, %944
  %946 = select i1 %945, double %.614411805, double %944
  %gep2987 = getelementptr double, ptr %invariant.gep2986, i64 %indvars.iv2117
  %947 = load double, ptr %gep2987, align 8, !tbaa !9
  %948 = fcmp oge double %947, 0.000000e+00
  %949 = fneg double %947
  %950 = select i1 %948, double %947, double %949
  %951 = fcmp oge double %946, %950
  %952 = select i1 %951, double %946, double %950
  %indvars.iv.next2118.1 = add nuw nsw i64 %indvars.iv2117, 2
  %exitcond2122.not.1 = icmp eq i64 %indvars.iv.next2118.1, %wide.trip.count2121
  br i1 %exitcond2122.not.1, label %..loopexit1682_crit_edge, label %940, !llvm.loop !32

..loopexit1682_crit_edge:                         ; preds = %940, %.prol.loopexit2937
  %.lcssa2923 = phi double [ %.lcssa2923.unr, %.prol.loopexit2937 ], [ %947, %940 ]
  %.lcssa2922 = phi double [ %.lcssa2922.unr, %.prol.loopexit2937 ], [ %952, %940 ]
  store double %.lcssa2923, ptr %25, align 8, !tbaa !9
  br label %.loopexit1682

..loopexit1683_crit_edge:                         ; preds = %914
  store double %915, ptr %25, align 8, !tbaa !9
  br label %.loopexit1682

.loopexit1682:                                    ; preds = %906, %..loopexit1683_crit_edge, %926, %..loopexit1682_crit_edge
  %.71442 = phi double [ %.lcssa2922, %..loopexit1682_crit_edge ], [ 0.000000e+00, %926 ], [ %925, %..loopexit1683_crit_edge ], [ 0.000000e+00, %906 ]
  %953 = load double, ptr %39, align 8
  %954 = fcmp ogt double %.71442, %953
  %.pre2318 = load i32, ptr %38, align 4, !tbaa !5
  br i1 %954, label %955, label %.loopexit1681

955:                                              ; preds = %.loopexit1682
  %956 = fdiv double 1.000000e+00, %.71442
  %.not1557.not1816 = icmp sgt i32 %.pre2318, 0
  br i1 %.not1557.not1816, label %.lr.ph1819, label %.loopexit1681

.lr.ph1819:                                       ; preds = %955
  %.not15581811 = icmp sgt i32 %.01457, %905
  br i1 %.not15581811, label %..loopexit1681_crit_edge, label %.lr.ph1814.preheader

.lr.ph1814.preheader:                             ; preds = %.lr.ph1819
  %957 = zext i32 %.01457 to i64
  %958 = add i32 %905, 1
  %959 = sext i32 %881 to i64
  %wide.trip.count2133 = zext nneg i32 %.pre2318 to i64
  %wide.trip.count2127 = zext i32 %958 to i64
  %960 = sub nsw i64 %wide.trip.count2127, %957
  %min.iters.check = icmp ult i64 %960, 4
  %n.vec = and i64 %960, -4
  %ind.end = add nsw i64 %n.vec, %957
  %broadcast.splatinsert = insertelement <2 x double> poison, double %956, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n = icmp eq i64 %960, %n.vec
  br label %.lr.ph1814

.lr.ph1814:                                       ; preds = %.lr.ph1814.preheader, %._crit_edge1815
  %indvars.iv2129 = phi i64 [ 0, %.lr.ph1814.preheader ], [ %indvars.iv.next2130, %._crit_edge1815 ]
  %961 = add nsw i64 %indvars.iv2129, %959
  %962 = mul nsw i64 %961, %292
  %invariant.gep2450 = getelementptr double, ptr %51, i64 %962
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph1814
  %invariant.gep2988 = getelementptr double, ptr %invariant.gep2450, i64 %957
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %gep2989 = getelementptr double, ptr %invariant.gep2988, i64 %index
  %963 = getelementptr i8, ptr %gep2989, i64 16
  %wide.load = load <2 x double>, ptr %gep2989, align 8, !tbaa !9
  %wide.load2554 = load <2 x double>, ptr %963, align 8, !tbaa !9
  %964 = fmul <2 x double> %broadcast.splat, %wide.load
  %965 = fmul <2 x double> %broadcast.splat, %wide.load2554
  store <2 x double> %964, ptr %gep2989, align 8, !tbaa !9
  store <2 x double> %965, ptr %963, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %966 = icmp eq i64 %index.next, %n.vec
  br i1 %966, label %middle.block, label %vector.body, !llvm.loop !33

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge1815, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph1814
  %indvars.iv2123.ph = phi i64 [ %957, %.lr.ph1814 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv2123 = phi i64 [ %indvars.iv.next2124, %scalar.ph ], [ %indvars.iv2123.ph, %scalar.ph.preheader ]
  %gep2451 = getelementptr double, ptr %invariant.gep2450, i64 %indvars.iv2123
  %967 = load double, ptr %gep2451, align 8, !tbaa !9
  %968 = fmul double %956, %967
  store double %968, ptr %gep2451, align 8, !tbaa !9
  %indvars.iv.next2124 = add nuw nsw i64 %indvars.iv2123, 1
  %exitcond2128.not = icmp eq i64 %indvars.iv.next2124, %wide.trip.count2127
  br i1 %exitcond2128.not, label %._crit_edge1815, label %scalar.ph, !llvm.loop !34

._crit_edge1815:                                  ; preds = %scalar.ph, %middle.block
  %indvars.iv.next2130 = add nuw nsw i64 %indvars.iv2129, 1
  %exitcond2134.not = icmp eq i64 %indvars.iv.next2130, %wide.trip.count2133
  br i1 %exitcond2134.not, label %..loopexit1681_crit_edge, label %.lr.ph1814, !llvm.loop !35

..loopexit1681_crit_edge:                         ; preds = %._crit_edge1815, %.lr.ph1819
  store i32 %905, ptr %24, align 4, !tbaa !5
  br label %.loopexit1681

.loopexit1681:                                    ; preds = %955, %..loopexit1681_crit_edge, %.loopexit1682
  %969 = add i32 %.pre2318, %.014531825
  %.pre2319 = load i32, ptr %23, align 4, !tbaa !5
  br label %970

970:                                              ; preds = %.thread2361, %312, %._crit_edge1736, %.loopexit1681, %330
  %971 = phi i32 [ %.pre2319, %.loopexit1681 ], [ %313, %._crit_edge1736 ], [ %313, %330 ], [ %313, %312 ], [ %313, %.thread2361 ]
  %972 = phi double [ %953, %.loopexit1681 ], [ %314, %._crit_edge1736 ], [ %314, %330 ], [ %314, %312 ], [ %314, %.thread2361 ]
  %973 = phi i32 [ %905, %.loopexit1681 ], [ %315, %._crit_edge1736 ], [ %315, %330 ], [ %315, %312 ], [ %315, %.thread2361 ]
  %.11454 = phi i32 [ %969, %.loopexit1681 ], [ %353, %._crit_edge1736 ], [ %.014531825, %330 ], [ %.014531825, %312 ], [ %.014531825, %.thread2361 ]
  %.5 = phi i32 [ %.4161016231627, %.loopexit1681 ], [ 0, %._crit_edge1736 ], [ 0, %330 ], [ 0, %312 ], [ 1, %.thread2361 ]
  %indvars.iv.next2044 = add nuw nsw i64 %indvars.iv2043, 1
  %974 = sext i32 %971 to i64
  %.not1508.not = icmp slt i64 %indvars.iv2043, %974
  %indvar.next = add i64 %indvar, 1
  br i1 %.not1508.not, label %312, label %.loopexit1684, !llvm.loop !36

.loopexit1684:                                    ; preds = %970, %285, %278
  %975 = phi double [ %162, %285 ], [ %162, %278 ], [ %972, %970 ]
  %976 = phi i32 [ %163, %285 ], [ %163, %278 ], [ %973, %970 ]
  %977 = icmp slt i32 %976, 1
  %or.cond2518.not = select i1 %.not15021587, i1 true, i1 %977
  br i1 %or.cond2518.not, label %.loopexit1678, label %.lr.ph1974

.lr.ph1974:                                       ; preds = %.loopexit1684
  %978 = add nsw i32 %.21390234923542360, 1
  %979 = add i32 %43, 1
  %980 = add i32 %46, 1
  %981 = add i32 %52, 1
  %982 = getelementptr inbounds i8, ptr %31, i64 8
  %invariant.gep1862 = getelementptr i8, ptr %14, i64 -16
  %983 = shl nsw i64 %53, 3
  %scevgep2137 = getelementptr i8, ptr %10, i64 %983
  %984 = add nsw i32 %976, -1
  %985 = add nuw i32 %976, 1
  %986 = sext i32 %52 to i64
  %987 = zext i32 %985 to i64
  %988 = zext i32 %984 to i64
  %989 = zext nneg i32 %976 to i64
  %990 = sext i32 %46 to i64
  %991 = sext i32 %43 to i64
  %invariant.gep2488 = getelementptr double, ptr %54, i64 %986
  %992 = shl nsw i64 %53, 3
  %993 = add i64 %992, %22
  %994 = add i64 %993, 8
  %995 = shl nsw i64 %53, 3
  %996 = add i64 %995, %20
  %997 = add i64 %996, 8
  %998 = shl nsw i64 %44, 3
  %999 = getelementptr i8, ptr %4, i64 %998
  %scevgep2646 = getelementptr i8, ptr %999, i64 8
  %1000 = shl nsw i64 %47, 3
  %1001 = getelementptr i8, ptr %6, i64 %1000
  %scevgep2652 = getelementptr i8, ptr %1001, i64 8
  %1002 = shl nsw i64 %44, 3
  %1003 = getelementptr i8, ptr %4, i64 %1002
  %scevgep2688 = getelementptr i8, ptr %1003, i64 8
  %1004 = shl nsw i64 %47, 3
  %1005 = getelementptr i8, ptr %6, i64 %1004
  %scevgep2694 = getelementptr i8, ptr %1005, i64 8
  %1006 = zext nneg i32 %976 to i64
  %1007 = zext nneg i32 %976 to i64
  %1008 = add i64 %19, -8
  %1009 = mul nsw i64 %990, %989
  %1010 = add i64 %1009, %47
  %1011 = shl i64 %1010, 3
  %1012 = add i64 %1011, %18
  %1013 = sub i64 %1008, %1012
  %1014 = shl nsw i64 %990, 3
  %1015 = add i64 %19, -8
  %1016 = mul nsw i64 %991, %989
  %1017 = add i64 %1016, %44
  %1018 = shl i64 %1017, 3
  %1019 = add i64 %1018, %17
  %1020 = sub i64 %1015, %1019
  %1021 = shl nsw i64 %991, 3
  %1022 = shl nuw nsw i64 %988, 3
  %1023 = add nsw i64 %1022, -8
  %1024 = add nsw i64 %989, -1
  %1025 = mul nsw i64 %1024, %991
  %1026 = add i64 %1025, %44
  %1027 = shl i64 %1026, 3
  %1028 = mul nsw i64 %991, -8
  %1029 = shl nsw i64 %991, 3
  %1030 = sub nuw nsw i64 -8, %1029
  %1031 = mul nsw i64 %1024, %990
  %1032 = add i64 %1031, %47
  %1033 = shl i64 %1032, 3
  %1034 = mul nsw i64 %990, -8
  %1035 = shl nsw i64 %990, 3
  %1036 = sub nuw nsw i64 -8, %1035
  %1037 = mul nsw i64 %991, %989
  %1038 = add i64 %1037, %44
  %1039 = shl i64 %1038, 3
  %1040 = mul nsw i64 %990, %989
  %1041 = add i64 %1040, %47
  %1042 = shl i64 %1041, 3
  %1043 = shufflevector <2 x double> %284, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %1044 = extractelement <2 x double> %284, i64 0
  %1045 = extractelement <2 x double> %284, i64 1
  %1046 = extractelement <2 x double> %279, i64 0
  %1047 = extractelement <2 x double> %279, i64 1
  %1048 = insertelement <2 x double> poison, double %161, i64 0
  %1049 = shufflevector <2 x double> %1048, <2 x double> poison, <2 x i32> zeroinitializer
  %1050 = getelementptr i8, ptr %4, i64 %1027
  %1051 = getelementptr i8, ptr %1050, i64 8
  %1052 = getelementptr i8, ptr %4, i64 %1027
  %1053 = getelementptr i8, ptr %1052, i64 %1022
  %1054 = getelementptr i8, ptr %6, i64 %1033
  %1055 = getelementptr i8, ptr %1054, i64 8
  %1056 = getelementptr i8, ptr %6, i64 %1033
  %1057 = getelementptr i8, ptr %1056, i64 %1022
  %1058 = getelementptr i8, ptr %4, i64 %1039
  %1059 = getelementptr i8, ptr %1058, i64 8
  %1060 = getelementptr i8, ptr %4, i64 %1039
  %1061 = getelementptr i8, ptr %1060, i64 %1022
  %1062 = getelementptr i8, ptr %6, i64 %1042
  %1063 = getelementptr i8, ptr %1062, i64 8
  %1064 = getelementptr i8, ptr %6, i64 %1042
  %1065 = getelementptr i8, ptr %1064, i64 %1022
  %invariant.gep2992 = getelementptr i8, ptr %14, i64 -8
  %1066 = getelementptr i8, ptr %4, i64 %1002
  %1067 = getelementptr i8, ptr %6, i64 %1004
  %invariant.gep2994 = getelementptr i8, ptr %14, i64 -8
  %1068 = getelementptr i8, ptr %4, i64 %998
  %1069 = getelementptr i8, ptr %6, i64 %1000
  br label %1070

1070:                                             ; preds = %.lr.ph1974, %.loopexit1672
  %indvar2744 = phi i64 [ 0, %.lr.ph1974 ], [ %indvar.next2745, %.loopexit1672 ]
  %1071 = phi double [ %975, %.lr.ph1974 ], [ %2008, %.loopexit1672 ]
  %indvars.iv2305 = phi i64 [ %989, %.lr.ph1974 ], [ %indvars.iv.next2306, %.loopexit1672 ]
  %indvars.iv2303 = phi i64 [ %988, %.lr.ph1974 ], [ %indvars.iv.next2304, %.loopexit1672 ]
  %indvars.iv2301 = phi i64 [ %987, %.lr.ph1974 ], [ %indvars.iv.next2302, %.loopexit1672 ]
  %.61972 = phi i32 [ 0, %.lr.ph1974 ], [ %.8, %.loopexit1672 ]
  %.214551968 = phi i32 [ %978, %.lr.ph1974 ], [ %.31456, %.loopexit1672 ]
  %1072 = xor i64 %indvar2744, -1
  %1073 = add i64 %1072, %989
  %1074 = xor i64 %indvar2744, -1
  %1075 = add i64 %1074, %988
  %1076 = shl i64 %indvar2744, 3
  %1077 = sub i64 %1023, %1076
  %scevgep2824 = getelementptr i8, ptr %14, i64 %1077
  %1078 = mul i64 %1028, %indvar2744
  %scevgep2828 = getelementptr i8, ptr %1051, i64 %1078
  %1079 = mul i64 %1030, %indvar2744
  %scevgep2829 = getelementptr i8, ptr %1053, i64 %1079
  %1080 = mul i64 %1034, %indvar2744
  %scevgep2830 = getelementptr i8, ptr %1055, i64 %1080
  %1081 = mul i64 %1036, %indvar2744
  %scevgep2831 = getelementptr i8, ptr %1057, i64 %1081
  %scevgep2832 = getelementptr i8, ptr %1059, i64 %1078
  %scevgep2833 = getelementptr i8, ptr %1061, i64 %1079
  %scevgep2834 = getelementptr i8, ptr %1063, i64 %1080
  %scevgep2835 = getelementptr i8, ptr %1065, i64 %1081
  %1082 = xor i64 %indvar2744, -1
  %1083 = add i64 %1082, %989
  %1084 = mul i64 %1014, %indvar2744
  %1085 = add i64 %1013, %1084
  %1086 = mul i64 %1021, %indvar2744
  %1087 = add i64 %1020, %1086
  %1088 = sub i64 %1007, %indvar2744
  %1089 = trunc i64 %indvars.iv2301 to i32
  %1090 = sub i64 %1006, %indvar2744
  %indvars2312 = trunc i64 %indvars.iv2305 to i32
  %.not1510 = icmp eq i32 %.61972, 0
  br i1 %.not1510, label %1091, label %.loopexit1672

1091:                                             ; preds = %1070
  store i32 1, ptr %38, align 4, !tbaa !5
  %.not1511 = icmp eq i64 %indvars.iv2305, 1
  br i1 %.not1511, label %1100, label %1092

1092:                                             ; preds = %1091
  %1093 = add nsw i32 %indvars2312, -1
  %1094 = mul nsw i32 %1093, %43
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr double, ptr %45, i64 %indvars.iv2305
  %1097 = getelementptr double, ptr %1096, i64 %1095
  %1098 = load double, ptr %1097, align 8, !tbaa !9
  %1099 = fcmp une double %1098, 0.000000e+00
  br i1 %1099, label %.thread1633, label %1100

1100:                                             ; preds = %1092, %1091
  br i1 %.not1491, label %1104, label %.thread1646.thread

.thread1633:                                      ; preds = %1092
  store i32 2, ptr %38, align 4, !tbaa !5
  br i1 %.not1491, label %1101, label %.lr.ph1846

1101:                                             ; preds = %.thread1633
  %1102 = getelementptr inbounds i32, ptr %42, i64 %indvars.iv2305
  %1103 = load i32, ptr %1102, align 4, !tbaa !5
  %.not1513 = icmp eq i32 %1103, 0
  br i1 %.not1513, label %.thread2373, label %.lr.ph1846

1104:                                             ; preds = %1100
  %1105 = getelementptr inbounds i32, ptr %42, i64 %indvars.iv2305
  %1106 = load i32, ptr %1105, align 4, !tbaa !5
  %.not1514 = icmp eq i32 %1106, 0
  br i1 %.not1514, label %.loopexit1672, label %.thread1646.thread

.thread2373:                                      ; preds = %1101
  %1107 = getelementptr i8, ptr %1102, i64 -4
  %1108 = load i32, ptr %1107, align 4, !tbaa !5
  %.not2528 = icmp eq i32 %1108, 0
  br i1 %.not2528, label %.loopexit1672, label %.lr.ph1846

.thread1646.thread:                               ; preds = %1104, %1100
  %1109 = mul i32 %979, %indvars2312
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds double, ptr %45, i64 %1110
  %1112 = load double, ptr %1111, align 8, !tbaa !9
  %1113 = fcmp oge double %1112, 0.000000e+00
  %1114 = fneg double %1112
  %1115 = select i1 %1113, double %1112, double %1114
  %1116 = fcmp ugt double %1115, %1071
  br i1 %1116, label %.lr.ph1846, label %1117

1117:                                             ; preds = %.thread1646.thread
  %1118 = mul i32 %980, %indvars2312
  %1119 = sext i32 %1118 to i64
  %1120 = getelementptr inbounds double, ptr %48, i64 %1119
  %1121 = load double, ptr %1120, align 8, !tbaa !9
  %1122 = fcmp oge double %1121, 0.000000e+00
  %1123 = fneg double %1121
  %1124 = select i1 %1122, double %1121, double %1123
  %1125 = fcmp ugt double %1124, %1071
  br i1 %1125, label %.lr.ph1846, label %1126

1126:                                             ; preds = %1117
  %1127 = add nsw i32 %.214551968, -1
  %1128 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %1128, ptr %23, align 4, !tbaa !5
  %.not15161834 = icmp slt i32 %1128, 1
  br i1 %.not15161834, label %._crit_edge1838, label %.lr.ph1837

.lr.ph1837:                                       ; preds = %1126
  %1129 = mul nsw i32 %1127, %52
  %1130 = add i32 %1129, 1
  %1131 = sext i32 %1130 to i64
  %1132 = shl nsw i64 %1131, 3
  %scevgep2138 = getelementptr i8, ptr %scevgep2137, i64 %1132
  %1133 = zext nneg i32 %1128 to i64
  %1134 = shl nuw nsw i64 %1133, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2138, i8 0, i64 %1134, i1 false), !tbaa !9
  br label %._crit_edge1838

._crit_edge1838:                                  ; preds = %.lr.ph1837, %1126
  %1135 = mul i32 %1127, %981
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds double, ptr %54, i64 %1136
  store double 1.000000e+00, ptr %1137, align 8, !tbaa !9
  br label %.loopexit1672

.lr.ph1846:                                       ; preds = %1101, %.thread2373, %1117, %.thread1646.thread, %.thread1633
  %1138 = phi i32 [ 1, %.thread1646.thread ], [ 1, %1117 ], [ 2, %.thread1633 ], [ 2, %.thread2373 ], [ 2, %1101 ]
  %.7163816511655 = phi i32 [ 0, %.thread1646.thread ], [ 0, %1117 ], [ 1, %.thread1633 ], [ 1, %.thread2373 ], [ 1, %1101 ]
  %.not1512163716521653 = phi i1 [ true, %.thread1646.thread ], [ true, %1117 ], [ false, %.thread1633 ], [ false, %.thread2373 ], [ false, %1101 ]
  %1139 = add nsw i32 %1138, -1
  store i32 %1139, ptr %23, align 4, !tbaa !5
  %1140 = load i32, ptr %3, align 4, !tbaa !5
  %.not15431839 = icmp slt i32 %1140, 1
  br i1 %.not15431839, label %._crit_edge1847, label %.lr.ph1842.preheader

.lr.ph1842.preheader:                             ; preds = %.lr.ph1846
  %1141 = shl nuw i32 %1140, 1
  %1142 = zext i32 %1141 to i64
  %1143 = shl nuw nsw i64 %1142, 3
  %1144 = zext nneg i32 %1140 to i64
  %1145 = shl nuw nsw i64 %1144, 3
  %scevgep2148 = getelementptr i8, ptr %14, i64 %1143
  %1146 = zext nneg i32 %1138 to i64
  %1147 = mul nuw nsw i64 %1145, %1146
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2148, i8 0, i64 %1147, i1 false), !tbaa !9
  br label %._crit_edge1847

._crit_edge1847:                                  ; preds = %.lr.ph1846, %.lr.ph1842.preheader
  br i1 %.not1512163716521653, label %1148, label %1309

1148:                                             ; preds = %._crit_edge1847
  %1149 = mul nsw i64 %indvars.iv2305, %991
  %1150 = mul nsw i32 %43, %indvars2312
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr double, ptr %45, i64 %indvars.iv2305
  %1153 = getelementptr double, ptr %1152, i64 %1151
  %1154 = load double, ptr %1153, align 8, !tbaa !9
  %1155 = mul nsw i64 %indvars.iv2305, %990
  %1156 = mul nsw i32 %46, %indvars2312
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr double, ptr %48, i64 %indvars.iv2305
  %1159 = getelementptr double, ptr %1158, i64 %1157
  %1160 = load double, ptr %1159, align 8, !tbaa !9
  %1161 = insertelement <2 x double> poison, double %1154, i64 0
  %1162 = insertelement <2 x double> %1161, double %1160, i64 1
  %1163 = fcmp oge <2 x double> %1162, zeroinitializer
  %1164 = fneg <2 x double> %1162
  %1165 = select <2 x i1> %1163, <2 x double> %1162, <2 x double> %1164
  %1166 = fmul <2 x double> %284, %1165
  %1167 = extractelement <2 x double> %1166, i64 0
  %1168 = extractelement <2 x double> %1166, i64 1
  %1169 = fcmp oge double %1167, %1168
  %1170 = select i1 %1169, double %1167, double %1168
  %1171 = fcmp oge double %1170, %1071
  %1172 = select i1 %1171, double %1170, double %1071
  %1173 = fdiv double 1.000000e+00, %1172
  store double %1173, ptr %27, align 8, !tbaa !9
  %1174 = insertelement <2 x double> poison, double %1160, i64 0
  %1175 = insertelement <2 x double> %1174, double %1154, i64 1
  %1176 = insertelement <2 x double> poison, double %1173, i64 0
  %1177 = shufflevector <2 x double> %1176, <2 x double> poison, <2 x i32> zeroinitializer
  %1178 = fmul <2 x double> %1175, %1177
  %1179 = fmul <2 x double> %1043, %1178
  %1180 = fmul <2 x double> %284, %1179
  %1181 = extractelement <2 x double> %1180, i64 0
  store double %1181, ptr %32, align 8, !tbaa !9
  %1182 = extractelement <2 x double> %1180, i64 1
  store double %1182, ptr %37, align 8, !tbaa !9
  store double 0.000000e+00, ptr %36, align 8, !tbaa !9
  store double 1.000000e+00, ptr %33, align 8, !tbaa !9
  %1183 = extractelement <2 x double> %1179, i64 0
  %1184 = fcmp oge double %1183, 0.000000e+00
  %1185 = fneg double %1183
  %1186 = select i1 %1184, double %1183, double %1185
  %1187 = fcmp ult double %1186, %1071
  br i1 %1187, label %.thread2395, label %1188

1188:                                             ; preds = %1148
  %1189 = fcmp oge double %1181, 0.000000e+00
  %1190 = fneg double %1181
  %1191 = select i1 %1189, double %1181, double %1190
  %1192 = fcmp olt double %1191, %166
  %1193 = extractelement <2 x double> %1179, i64 1
  %1194 = fcmp oge double %1193, 0.000000e+00
  %1195 = fneg double %1193
  %1196 = select i1 %1194, double %1193, double %1195
  %1197 = fcmp ult double %1196, %1071
  br i1 %1197, label %.thread2392, label %1207

.thread2395:                                      ; preds = %1148
  %1198 = extractelement <2 x double> %1179, i64 1
  %1199 = fcmp oge double %1198, 0.000000e+00
  %1200 = fneg double %1198
  %1201 = select i1 %1199, double %1198, double %1200
  %1202 = fcmp ult double %1201, %1071
  br i1 %1202, label %.thread2384, label %.thread2397

.thread2397:                                      ; preds = %.thread2395
  %1203 = fcmp oge double %1182, 0.000000e+00
  %1204 = fneg double %1182
  %1205 = select i1 %1203, double %1182, double %1204
  %1206 = fcmp olt double %1205, %166
  br i1 %1206, label %.thread1657, label %.thread2384

1207:                                             ; preds = %1188
  %1208 = fcmp oge double %1182, 0.000000e+00
  %1209 = fneg double %1182
  %1210 = select i1 %1208, double %1182, double %1209
  %1211 = fcmp olt double %1210, %166
  br i1 %1192, label %1217, label %.thread2383

.thread2392:                                      ; preds = %1188
  br i1 %1192, label %.thread2393, label %.thread2384

.thread2393:                                      ; preds = %.thread2392
  %1212 = fdiv double %166, %1186
  %1213 = load double, ptr %40, align 8
  %1214 = fcmp ole double %1046, %1213
  %1215 = select i1 %1214, double %1046, double %1213
  %1216 = fmul double %1212, %1215
  br label %1233

1217:                                             ; preds = %1207
  %1218 = fdiv double %166, %1186
  %1219 = load double, ptr %40, align 8
  %1220 = fcmp ole double %1046, %1219
  %1221 = select i1 %1220, double %1046, double %1219
  %1222 = fmul double %1218, %1221
  br i1 %1211, label %.thread1657, label %1233

.thread2383:                                      ; preds = %1207
  br i1 %1211, label %.thread1657, label %.thread2384

.thread1657:                                      ; preds = %.thread2397, %.thread2383, %1217
  %1223 = phi i1 [ false, %.thread2383 ], [ true, %1217 ], [ false, %.thread2397 ]
  %1224 = phi double [ %1196, %.thread2383 ], [ %1196, %1217 ], [ %1201, %.thread2397 ]
  %1225 = phi double [ 1.000000e+00, %.thread2383 ], [ %1222, %1217 ], [ 1.000000e+00, %.thread2397 ]
  %1226 = fdiv double %166, %1224
  %1227 = load double, ptr %40, align 8
  %1228 = fcmp ole double %1047, %1227
  %1229 = select i1 %1228, double %1047, double %1227
  %1230 = fmul double %1226, %1229
  %1231 = fcmp oge double %1225, %1230
  %1232 = select i1 %1231, double %1225, double %1230
  br label %1233

1233:                                             ; preds = %1217, %.thread2393, %.thread1657
  %1234 = phi i1 [ %1223, %.thread1657 ], [ true, %1217 ], [ true, %.thread2393 ]
  %1235 = phi i1 [ true, %.thread1657 ], [ false, %1217 ], [ false, %.thread2393 ]
  %1236 = phi double [ %1232, %.thread1657 ], [ %1222, %1217 ], [ %1216, %.thread2393 ]
  %1237 = fcmp oge double %1181, 0.000000e+00
  %1238 = fneg double %1181
  %1239 = select i1 %1237, double %1181, double %1238
  %1240 = fcmp ole double %1239, 1.000000e+00
  %1241 = select i1 %1240, double 1.000000e+00, double %1239
  %1242 = fcmp oge double %1182, 0.000000e+00
  %1243 = fneg double %1182
  %1244 = select i1 %1242, double %1182, double %1243
  store double %1236, ptr %25, align 8, !tbaa !9
  %1245 = fcmp oge double %1241, %1244
  %1246 = select i1 %1245, double %1241, double %1244
  %1247 = fmul double %1071, %1246
  %1248 = fdiv double 1.000000e+00, %1247
  %1249 = fcmp ole double %1236, %1248
  %1250 = select i1 %1249, double %1236, double %1248
  store double %1250, ptr %33, align 8, !tbaa !9
  %1251 = fmul double %1181, %1250
  %1252 = fmul double %1183, %1250
  %1253 = fmul double %1044, %1252
  %storemerge = select i1 %1234, double %1253, double %1251
  store double %storemerge, ptr %32, align 8, !tbaa !9
  br i1 %1235, label %1254, label %1260

1254:                                             ; preds = %1233
  %1255 = extractelement <2 x double> %1179, i64 1
  %1256 = fmul double %1255, %1250
  %1257 = fmul double %1045, %1256
  store double %1257, ptr %37, align 8, !tbaa !9
  %1258 = insertelement <2 x double> poison, double %storemerge, i64 0
  %1259 = insertelement <2 x double> %1258, double %1257, i64 1
  br label %.thread2384

1260:                                             ; preds = %1233
  %1261 = fmul double %1182, %1250
  store double %1261, ptr %37, align 8, !tbaa !9
  %1262 = insertelement <2 x double> poison, double %storemerge, i64 0
  %1263 = insertelement <2 x double> %1262, double %1261, i64 1
  br label %.thread2384

.thread2384:                                      ; preds = %.thread2397, %.thread2395, %.thread2392, %.thread2383, %1254, %1260
  %1264 = phi <2 x double> [ %1259, %1254 ], [ %1263, %1260 ], [ %1180, %.thread2383 ], [ %1180, %.thread2392 ], [ %1180, %.thread2395 ], [ %1180, %.thread2397 ]
  %1265 = fcmp oge <2 x double> %1264, zeroinitializer
  %1266 = fneg <2 x double> %1264
  %1267 = select <2 x i1> %1265, <2 x double> %1264, <2 x double> %1266
  %1268 = load i32, ptr %3, align 4, !tbaa !5
  %1269 = shl i32 %1268, 1
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr double, ptr %55, i64 %indvars.iv2305
  %1272 = getelementptr double, ptr %1271, i64 %1270
  store double 1.000000e+00, ptr %1272, align 8, !tbaa !9
  %1273 = trunc i64 %indvars.iv2305 to i32
  %1274 = add i32 %1273, -1
  store i32 %1274, ptr %23, align 4, !tbaa !5
  %.not1518.not1852 = icmp sgt i64 %indvars.iv2305, 1
  br i1 %.not1518.not1852, label %.lr.ph1855.preheader, label %.loopexit1676

.lr.ph1855.preheader:                             ; preds = %.thread2384
  %invariant.gep2466 = getelementptr double, ptr %48, i64 %1155
  %invariant.gep2468 = getelementptr double, ptr %45, i64 %1149
  %invariant.gep2470 = getelementptr double, ptr %55, i64 %1270
  %min.iters.check2803 = icmp ult i64 %1083, 4
  br i1 %min.iters.check2803, label %.lr.ph1855.preheader2911, label %vector.memcheck2797

vector.memcheck2797:                              ; preds = %.lr.ph1855.preheader
  %1275 = shl nsw i64 %1270, 3
  %1276 = add i64 %1085, %1275
  %diff.check2798 = icmp ult i64 %1276, 32
  %1277 = add i64 %1087, %1275
  %diff.check2799 = icmp ult i64 %1277, 32
  %conflict.rdx2800 = or i1 %diff.check2798, %diff.check2799
  br i1 %conflict.rdx2800, label %.lr.ph1855.preheader2911, label %vector.ph2804

vector.ph2804:                                    ; preds = %vector.memcheck2797
  %n.vec2806 = and i64 %1083, -4
  %ind.end2807 = or disjoint i64 %n.vec2806, 1
  %broadcast.splat2817 = shufflevector <2 x double> %1266, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat2819 = shufflevector <2 x double> %1264, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  br label %vector.body2809

vector.body2809:                                  ; preds = %vector.body2809, %vector.ph2804
  %index2810 = phi i64 [ 0, %vector.ph2804 ], [ %index.next2820, %vector.body2809 ]
  %offset.idx2811 = or disjoint i64 %index2810, 1
  %1278 = getelementptr double, ptr %invariant.gep2466, i64 %offset.idx2811
  %1279 = getelementptr i8, ptr %1278, i64 16
  %wide.load2812 = load <2 x double>, ptr %1278, align 8, !tbaa !9
  %wide.load2813 = load <2 x double>, ptr %1279, align 8, !tbaa !9
  %1280 = getelementptr double, ptr %invariant.gep2468, i64 %offset.idx2811
  %1281 = getelementptr i8, ptr %1280, i64 16
  %wide.load2814 = load <2 x double>, ptr %1280, align 8, !tbaa !9
  %wide.load2815 = load <2 x double>, ptr %1281, align 8, !tbaa !9
  %1282 = fmul <2 x double> %wide.load2814, %broadcast.splat2817
  %1283 = fmul <2 x double> %wide.load2815, %broadcast.splat2817
  %1284 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2819, <2 x double> %wide.load2812, <2 x double> %1282)
  %1285 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2819, <2 x double> %wide.load2813, <2 x double> %1283)
  %1286 = getelementptr double, ptr %invariant.gep2470, i64 %offset.idx2811
  %1287 = getelementptr i8, ptr %1286, i64 16
  store <2 x double> %1284, ptr %1286, align 8, !tbaa !9
  store <2 x double> %1285, ptr %1287, align 8, !tbaa !9
  %index.next2820 = add nuw i64 %index2810, 4
  %1288 = icmp eq i64 %index.next2820, %n.vec2806
  br i1 %1288, label %middle.block2801, label %vector.body2809, !llvm.loop !37

middle.block2801:                                 ; preds = %vector.body2809
  %cmp.n2821 = icmp eq i64 %1083, %n.vec2806
  br i1 %cmp.n2821, label %.loopexit1676, label %.lr.ph1855.preheader2911

.lr.ph1855.preheader2911:                         ; preds = %middle.block2801, %vector.memcheck2797, %.lr.ph1855.preheader
  %indvars.iv2159.ph = phi i64 [ 1, %vector.memcheck2797 ], [ 1, %.lr.ph1855.preheader ], [ %ind.end2807, %middle.block2801 ]
  %1289 = and i64 %indvars.iv2305, 1
  %lcmp.mod2941.not.not = icmp eq i64 %1289, 0
  br i1 %lcmp.mod2941.not.not, label %.lr.ph1855.prol, label %.lr.ph1855.prol.loopexit

.lr.ph1855.prol:                                  ; preds = %.lr.ph1855.preheader2911
  %gep2467.prol = getelementptr double, ptr %invariant.gep2466, i64 %indvars.iv2159.ph
  %1290 = load double, ptr %gep2467.prol, align 8, !tbaa !9
  %gep2469.prol = getelementptr double, ptr %invariant.gep2468, i64 %indvars.iv2159.ph
  %1291 = load double, ptr %gep2469.prol, align 8, !tbaa !9
  %1292 = extractelement <2 x double> %1266, i64 0
  %1293 = fmul double %1291, %1292
  %1294 = extractelement <2 x double> %1264, i64 1
  %1295 = call double @llvm.fmuladd.f64(double %1294, double %1290, double %1293)
  %gep2471.prol = getelementptr double, ptr %invariant.gep2470, i64 %indvars.iv2159.ph
  store double %1295, ptr %gep2471.prol, align 8, !tbaa !9
  %indvars.iv.next2160.prol = add nuw nsw i64 %indvars.iv2159.ph, 1
  br label %.lr.ph1855.prol.loopexit

.lr.ph1855.prol.loopexit:                         ; preds = %.lr.ph1855.prol, %.lr.ph1855.preheader2911
  %indvars.iv2159.unr = phi i64 [ %indvars.iv2159.ph, %.lr.ph1855.preheader2911 ], [ %indvars.iv.next2160.prol, %.lr.ph1855.prol ]
  %1296 = icmp eq i64 %1073, %indvars.iv2159.ph
  br i1 %1296, label %.loopexit1676, label %.lr.ph1855.preheader2911.new

.lr.ph1855.preheader2911.new:                     ; preds = %.lr.ph1855.prol.loopexit
  %1297 = extractelement <2 x double> %1266, i64 0
  %1298 = extractelement <2 x double> %1264, i64 1
  %1299 = extractelement <2 x double> %1266, i64 0
  %1300 = extractelement <2 x double> %1264, i64 1
  br label %.lr.ph1855

.lr.ph1855:                                       ; preds = %.lr.ph1855, %.lr.ph1855.preheader2911.new
  %indvars.iv2159 = phi i64 [ %indvars.iv2159.unr, %.lr.ph1855.preheader2911.new ], [ %indvars.iv.next2160.1, %.lr.ph1855 ]
  %gep2467 = getelementptr double, ptr %invariant.gep2466, i64 %indvars.iv2159
  %1301 = load double, ptr %gep2467, align 8, !tbaa !9
  %gep2469 = getelementptr double, ptr %invariant.gep2468, i64 %indvars.iv2159
  %1302 = load double, ptr %gep2469, align 8, !tbaa !9
  %1303 = fmul double %1302, %1297
  %1304 = call double @llvm.fmuladd.f64(double %1298, double %1301, double %1303)
  %gep2471 = getelementptr double, ptr %invariant.gep2470, i64 %indvars.iv2159
  store double %1304, ptr %gep2471, align 8, !tbaa !9
  %indvars.iv.next2160 = add nuw nsw i64 %indvars.iv2159, 1
  %gep2467.1 = getelementptr double, ptr %invariant.gep2466, i64 %indvars.iv.next2160
  %1305 = load double, ptr %gep2467.1, align 8, !tbaa !9
  %gep2469.1 = getelementptr double, ptr %invariant.gep2468, i64 %indvars.iv.next2160
  %1306 = load double, ptr %gep2469.1, align 8, !tbaa !9
  %1307 = fmul double %1306, %1299
  %1308 = call double @llvm.fmuladd.f64(double %1300, double %1305, double %1307)
  %gep2471.1 = getelementptr double, ptr %invariant.gep2470, i64 %indvars.iv.next2160
  store double %1308, ptr %gep2471.1, align 8, !tbaa !9
  %indvars.iv.next2160.1 = add nuw nsw i64 %indvars.iv2159, 2
  %exitcond2164.not.1 = icmp eq i64 %indvars.iv.next2160.1, %indvars.iv2305
  br i1 %exitcond2164.not.1, label %.loopexit1676, label %.lr.ph1855, !llvm.loop !38

1309:                                             ; preds = %._crit_edge1847
  %1310 = fmul double %1071, 1.000000e+02
  store double %1310, ptr %25, align 8, !tbaa !9
  %1311 = add nsw i64 %indvars.iv2305, -1
  %1312 = add nsw i32 %indvars2312, -1
  %1313 = mul nsw i64 %1311, %991
  %1314 = mul nsw i32 %1312, %43
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr double, ptr %45, i64 %1311
  %1317 = getelementptr double, ptr %1316, i64 %1315
  %1318 = mul nsw i64 %1311, %990
  %1319 = mul nsw i32 %1312, %46
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr double, ptr %48, i64 %1311
  %1322 = getelementptr double, ptr %1321, i64 %1320
  call void @dlag2_(ptr noundef nonnull %1317, ptr noundef nonnull %5, ptr noundef nonnull %1322, ptr noundef nonnull %7, ptr noundef nonnull %25, ptr noundef nonnull %32, ptr noundef nonnull %27, ptr noundef nonnull %37, ptr noundef nonnull %30, ptr noundef nonnull %36) #6
  %1323 = load double, ptr %36, align 8
  %1324 = fcmp oeq double %1323, 0.000000e+00
  br i1 %1324, label %1325, label %1327

1325:                                             ; preds = %1309
  %1326 = trunc nuw nsw i64 %1311 to i32
  store i32 %1326, ptr %15, align 4, !tbaa !5
  br label %.loopexit1678

1327:                                             ; preds = %1309
  %1328 = load double, ptr %32, align 8
  %1329 = fcmp oge double %1328, 0.000000e+00
  %1330 = fneg double %1328
  %1331 = select i1 %1329, double %1328, double %1330
  %1332 = load double, ptr %37, align 8
  %1333 = fcmp oge double %1332, 0.000000e+00
  %1334 = fneg double %1332
  %1335 = select i1 %1333, double %1332, double %1334
  %1336 = fcmp oge double %1323, 0.000000e+00
  %1337 = fneg double %1323
  %1338 = select i1 %1336, double %1323, double %1337
  %1339 = fadd double %1338, %1335
  store double 1.000000e+00, ptr %33, align 8, !tbaa !9
  %1340 = fmul double %161, %1331
  %1341 = load double, ptr %39, align 8
  %1342 = fcmp uge double %1340, %1341
  %1343 = fcmp ult double %1331, %1341
  %or.cond1580 = or i1 %1342, %1343
  br i1 %or.cond1580, label %1347, label %1344

1344:                                             ; preds = %1327
  %1345 = fdiv double %1341, %161
  %1346 = fdiv double %1345, %1331
  store double %1346, ptr %33, align 8, !tbaa !9
  br label %1347

1347:                                             ; preds = %1344, %1327
  %1348 = phi double [ %1346, %1344 ], [ 1.000000e+00, %1327 ]
  %1349 = fmul double %161, %1339
  %1350 = fcmp uge double %1349, %1341
  %1351 = fcmp ult double %1339, %1341
  %or.cond1581 = or i1 %1351, %1350
  br i1 %or.cond1581, label %1357, label %1352

1352:                                             ; preds = %1347
  %1353 = fdiv double %1341, %161
  %1354 = fdiv double %1353, %1339
  %1355 = fcmp oge double %1348, %1354
  %1356 = select i1 %1355, double %1348, double %1354
  store double %1356, ptr %33, align 8, !tbaa !9
  br label %1357

1357:                                             ; preds = %1352, %1347
  %.pr16602321 = phi double [ %1356, %1352 ], [ %1348, %1347 ]
  %1358 = fmul double %1331, %1341
  %1359 = fcmp ogt double %1358, %1044
  br i1 %1359, label %1360, label %1362

1360:                                             ; preds = %1357
  %1361 = fdiv double %1044, %1358
  store double %1361, ptr %33, align 8, !tbaa !9
  br label %1362

1362:                                             ; preds = %1360, %1357
  %1363 = phi double [ %1361, %1360 ], [ %.pr16602321, %1357 ]
  %1364 = fmul double %1341, %1339
  %1365 = fcmp ogt double %1364, %1045
  br i1 %1365, label %1366, label %thread-pre-split1659

1366:                                             ; preds = %1362
  store double %1363, ptr %25, align 8, !tbaa !9
  %1367 = fdiv double %1045, %1364
  %1368 = fcmp ole double %1363, %1367
  %1369 = select i1 %1368, double %1363, double %1367
  store double %1369, ptr %33, align 8, !tbaa !9
  br label %thread-pre-split1659

thread-pre-split1659:                             ; preds = %1362, %1366
  %1370 = phi double [ %1369, %1366 ], [ %1363, %1362 ]
  %1371 = fcmp une double %1370, 1.000000e+00
  %1372 = insertelement <2 x double> poison, double %1331, i64 0
  %1373 = insertelement <2 x double> %1372, double %1339, i64 1
  br i1 %1371, label %1374, label %1390

1374:                                             ; preds = %thread-pre-split1659
  %1375 = fmul double %1328, %1370
  store double %1375, ptr %32, align 8, !tbaa !9
  %1376 = fcmp oge double %1375, 0.000000e+00
  %1377 = fneg double %1375
  %1378 = select i1 %1376, double %1375, double %1377
  %1379 = fmul double %1332, %1370
  store double %1379, ptr %37, align 8, !tbaa !9
  %1380 = fmul double %1323, %1370
  store double %1380, ptr %36, align 8, !tbaa !9
  %1381 = fcmp oge double %1379, 0.000000e+00
  %1382 = fneg double %1379
  %1383 = select i1 %1381, double %1379, double %1382
  %1384 = fcmp oge double %1380, 0.000000e+00
  %1385 = fneg double %1380
  %1386 = select i1 %1384, double %1380, double %1385
  %1387 = fadd double %1383, %1386
  %1388 = insertelement <2 x double> poison, double %1378, i64 0
  %1389 = insertelement <2 x double> %1388, double %1387, i64 1
  br label %1390

1390:                                             ; preds = %1374, %thread-pre-split1659
  %.pre-phi2330 = phi double [ %1385, %1374 ], [ %1337, %thread-pre-split1659 ]
  %.pre-phi2329 = phi double [ %1382, %1374 ], [ %1334, %thread-pre-split1659 ]
  %1391 = phi double [ %1380, %1374 ], [ %1323, %thread-pre-split1659 ]
  %1392 = phi double [ %1379, %1374 ], [ %1332, %thread-pre-split1659 ]
  %1393 = phi double [ %1375, %1374 ], [ %1328, %thread-pre-split1659 ]
  %1394 = phi <2 x double> [ %1389, %1374 ], [ %1373, %thread-pre-split1659 ]
  %1395 = getelementptr double, ptr %45, i64 %indvars.iv2305
  %1396 = getelementptr double, ptr %1395, i64 %1315
  %1397 = load double, ptr %1396, align 8, !tbaa !9
  %1398 = fmul double %1393, %1397
  store double %1398, ptr %27, align 8, !tbaa !9
  %1399 = mul nsw i64 %indvars.iv2305, %991
  %1400 = mul nsw i32 %43, %indvars2312
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr double, ptr %45, i64 %indvars.iv2305
  %1403 = getelementptr double, ptr %1402, i64 %1401
  %1404 = load double, ptr %1403, align 8, !tbaa !9
  %1405 = mul nsw i64 %indvars.iv2305, %990
  %1406 = mul nsw i32 %46, %indvars2312
  %1407 = sext i32 %1406 to i64
  %1408 = getelementptr double, ptr %48, i64 %indvars.iv2305
  %1409 = getelementptr double, ptr %1408, i64 %1407
  %1410 = load double, ptr %1409, align 8, !tbaa !9
  %1411 = fmul double %1410, %.pre-phi2329
  %1412 = call double @llvm.fmuladd.f64(double %1393, double %1404, double %1411)
  %1413 = fmul double %1410, %.pre-phi2330
  %1414 = fcmp oge double %1398, 0.000000e+00
  %1415 = fneg double %1398
  %1416 = select i1 %1414, double %1398, double %1415
  %1417 = fcmp oge double %1412, 0.000000e+00
  %1418 = fneg double %1412
  %1419 = select i1 %1417, double %1412, double %1418
  %1420 = fcmp oge double %1413, 0.000000e+00
  %1421 = fneg double %1413
  %1422 = select i1 %1420, double %1413, double %1421
  %1423 = fadd double %1419, %1422
  %1424 = fcmp ult double %1416, %1423
  %1425 = load i32, ptr %3, align 4, !tbaa !5
  %1426 = shl i32 %1425, 1
  %1427 = sext i32 %1426 to i64
  %1428 = add nsw i64 %indvars.iv2305, %1427
  %1429 = getelementptr double, ptr %55, i64 %1428
  br i1 %1424, label %1439, label %1430

1430:                                             ; preds = %1390
  store double 1.000000e+00, ptr %1429, align 8, !tbaa !9
  %1431 = mul nsw i32 %1425, 3
  %1432 = sext i32 %1431 to i64
  %1433 = getelementptr double, ptr %55, i64 %indvars.iv2305
  %1434 = getelementptr double, ptr %1433, i64 %1432
  store double 0.000000e+00, ptr %1434, align 8, !tbaa !9
  %1435 = fdiv double %1418, %1398
  %1436 = getelementptr i8, ptr %1429, i64 -8
  store double %1435, ptr %1436, align 8, !tbaa !9
  %1437 = fdiv double %1421, %1398
  %1438 = getelementptr i8, ptr %1434, i64 -8
  store double %1437, ptr %1438, align 8, !tbaa !9
  %.pre2328 = load double, ptr %1434, align 8, !tbaa !9
  br label %1459

1439:                                             ; preds = %1390
  %1440 = getelementptr i8, ptr %1429, i64 -8
  store double 1.000000e+00, ptr %1440, align 8, !tbaa !9
  %1441 = mul nsw i32 %1425, 3
  %1442 = sext i32 %1441 to i64
  %1443 = getelementptr double, ptr %55, i64 %indvars.iv2305
  %1444 = getelementptr double, ptr %1443, i64 %1442
  %1445 = getelementptr i8, ptr %1444, i64 -8
  store double 0.000000e+00, ptr %1445, align 8, !tbaa !9
  %1446 = getelementptr double, ptr %45, i64 %1311
  %1447 = getelementptr double, ptr %1446, i64 %1399
  %1448 = load double, ptr %1447, align 8, !tbaa !9
  %1449 = fmul double %1393, %1448
  store double %1449, ptr %27, align 8, !tbaa !9
  %1450 = load double, ptr %1322, align 8, !tbaa !9
  %1451 = load double, ptr %1317, align 8, !tbaa !9
  %1452 = fneg double %1393
  %1453 = fmul double %1451, %1452
  %1454 = call double @llvm.fmuladd.f64(double %1392, double %1450, double %1453)
  %1455 = fdiv double %1454, %1449
  store double %1455, ptr %1429, align 8, !tbaa !9
  %1456 = load double, ptr %1322, align 8, !tbaa !9
  %1457 = fmul double %1391, %1456
  %1458 = fdiv double %1457, %1449
  store double %1458, ptr %1444, align 8, !tbaa !9
  %.pre2324 = load double, ptr %1445, align 8, !tbaa !9
  br label %1459

1459:                                             ; preds = %1439, %1430
  %.pre-phi2334 = phi i64 [ %1442, %1439 ], [ %1432, %1430 ]
  %1460 = phi double [ %1458, %1439 ], [ %.pre2328, %1430 ]
  %1461 = phi double [ %.pre2324, %1439 ], [ %1437, %1430 ]
  %1462 = getelementptr inbounds double, ptr %55, i64 %1428
  %1463 = load double, ptr %1462, align 8, !tbaa !9
  %1464 = insertelement <2 x double> poison, double %1463, i64 0
  %1465 = insertelement <2 x double> %1464, double %1460, i64 1
  %1466 = fcmp oge <2 x double> %1465, zeroinitializer
  %1467 = fneg <2 x double> %1465
  %1468 = select <2 x i1> %1466, <2 x double> %1465, <2 x double> %1467
  %1469 = getelementptr i8, ptr %1462, i64 -8
  %1470 = load double, ptr %1469, align 8, !tbaa !9
  %1471 = insertelement <2 x double> poison, double %1470, i64 0
  %1472 = insertelement <2 x double> %1471, double %1461, i64 1
  %1473 = fcmp oge <2 x double> %1472, zeroinitializer
  %1474 = fneg <2 x double> %1472
  %1475 = select <2 x i1> %1473, <2 x double> %1472, <2 x double> %1474
  %1476 = shufflevector <2 x double> %1468, <2 x double> %1475, <2 x i32> <i32 0, i32 2>
  %1477 = shufflevector <2 x double> %1468, <2 x double> %1475, <2 x i32> <i32 1, i32 3>
  %1478 = fadd <2 x double> %1476, %1477
  %1479 = extractelement <2 x double> %1478, i64 0
  %1480 = extractelement <2 x double> %1478, i64 1
  %1481 = fcmp oge double %1479, %1480
  %1482 = select i1 %1481, double %1479, double %1480
  %1483 = fmul double %1461, %.pre-phi2330
  %1484 = call double @llvm.fmuladd.f64(double %1392, double %1470, double %1483)
  %1485 = fmul double %1392, %1461
  %1486 = call double @llvm.fmuladd.f64(double %1391, double %1470, double %1485)
  %1487 = fmul double %1460, %.pre-phi2330
  %1488 = call double @llvm.fmuladd.f64(double %1392, double %1463, double %1487)
  %1489 = fmul double %1392, %1460
  %1490 = call double @llvm.fmuladd.f64(double %1391, double %1463, double %1489)
  %1491 = trunc i64 %indvars.iv2305 to i32
  %1492 = add i32 %1491, -2
  store i32 %1492, ptr %23, align 4, !tbaa !5
  %.not15191848 = icmp slt i64 %indvars.iv2305, 3
  br i1 %.not15191848, label %.loopexit1676, label %.lr.ph1851

.lr.ph1851:                                       ; preds = %1459
  %1493 = fneg double %1393
  %1494 = fmul double %1470, %1493
  %1495 = fmul double %1463, %1493
  %1496 = fmul double %1461, %1493
  %1497 = fmul double %1460, %1493
  %invariant.gep2454 = getelementptr double, ptr %45, i64 %1313
  %invariant.gep2456 = getelementptr double, ptr %48, i64 %1318
  %invariant.gep2458 = getelementptr double, ptr %45, i64 %1399
  %invariant.gep2460 = getelementptr double, ptr %48, i64 %1405
  %invariant.gep2462 = getelementptr double, ptr %55, i64 %1427
  %invariant.gep2464 = getelementptr double, ptr %55, i64 %.pre-phi2334
  %min.iters.check2873 = icmp ult i64 %1075, 6
  br i1 %min.iters.check2873, label %scalar.ph2872.preheader, label %vector.memcheck2822

vector.memcheck2822:                              ; preds = %.lr.ph1851
  %1498 = shl nsw i64 %1427, 3
  %scevgep2823 = getelementptr i8, ptr %14, i64 %1498
  %scevgep2825 = getelementptr i8, ptr %scevgep2824, i64 %1498
  %1499 = shl nsw i64 %.pre-phi2334, 3
  %scevgep2826 = getelementptr i8, ptr %14, i64 %1499
  %scevgep2827 = getelementptr i8, ptr %scevgep2824, i64 %1499
  %bound02836 = icmp ult ptr %scevgep2823, %scevgep2827
  %bound12837 = icmp ult ptr %scevgep2826, %scevgep2825
  %found.conflict2838 = and i1 %bound02836, %bound12837
  %bound02839 = icmp ult ptr %scevgep2823, %scevgep2829
  %bound12840 = icmp ult ptr %scevgep2828, %scevgep2825
  %found.conflict2841 = and i1 %bound02839, %bound12840
  %conflict.rdx2842 = or i1 %found.conflict2838, %found.conflict2841
  %bound02843 = icmp ult ptr %scevgep2823, %scevgep2831
  %bound12844 = icmp ult ptr %scevgep2830, %scevgep2825
  %found.conflict2845 = and i1 %bound02843, %bound12844
  %conflict.rdx2846 = or i1 %conflict.rdx2842, %found.conflict2845
  %bound02847 = icmp ult ptr %scevgep2823, %scevgep2833
  %bound12848 = icmp ult ptr %scevgep2832, %scevgep2825
  %found.conflict2849 = and i1 %bound02847, %bound12848
  %conflict.rdx2850 = or i1 %conflict.rdx2846, %found.conflict2849
  %bound02851 = icmp ult ptr %scevgep2823, %scevgep2835
  %bound12852 = icmp ult ptr %scevgep2834, %scevgep2825
  %found.conflict2853 = and i1 %bound02851, %bound12852
  %conflict.rdx2854 = or i1 %conflict.rdx2850, %found.conflict2853
  %bound02855 = icmp ult ptr %scevgep2826, %scevgep2829
  %bound12856 = icmp ult ptr %scevgep2828, %scevgep2827
  %found.conflict2857 = and i1 %bound02855, %bound12856
  %conflict.rdx2858 = or i1 %conflict.rdx2854, %found.conflict2857
  %bound02859 = icmp ult ptr %scevgep2826, %scevgep2831
  %bound12860 = icmp ult ptr %scevgep2830, %scevgep2827
  %found.conflict2861 = and i1 %bound02859, %bound12860
  %conflict.rdx2862 = or i1 %conflict.rdx2858, %found.conflict2861
  %bound02863 = icmp ult ptr %scevgep2826, %scevgep2833
  %bound12864 = icmp ult ptr %scevgep2832, %scevgep2827
  %found.conflict2865 = and i1 %bound02863, %bound12864
  %conflict.rdx2866 = or i1 %conflict.rdx2862, %found.conflict2865
  %bound02867 = icmp ult ptr %scevgep2826, %scevgep2835
  %bound12868 = icmp ult ptr %scevgep2834, %scevgep2827
  %found.conflict2869 = and i1 %bound02867, %bound12868
  %conflict.rdx2870 = or i1 %conflict.rdx2866, %found.conflict2869
  br i1 %conflict.rdx2870, label %scalar.ph2872.preheader, label %vector.ph2874

vector.ph2874:                                    ; preds = %vector.memcheck2822
  %n.vec2876 = and i64 %1075, -2
  %ind.end2877 = or i64 %1075, 1
  %broadcast.splatinsert2884 = insertelement <2 x double> poison, double %1484, i64 0
  %broadcast.splat2885 = shufflevector <2 x double> %broadcast.splatinsert2884, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2886 = insertelement <2 x double> poison, double %1494, i64 0
  %broadcast.splat2887 = shufflevector <2 x double> %broadcast.splatinsert2886, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2889 = insertelement <2 x double> poison, double %1495, i64 0
  %broadcast.splat2890 = shufflevector <2 x double> %broadcast.splatinsert2889, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2892 = insertelement <2 x double> poison, double %1488, i64 0
  %broadcast.splat2893 = shufflevector <2 x double> %broadcast.splatinsert2892, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2896 = insertelement <2 x double> poison, double %1486, i64 0
  %broadcast.splat2897 = shufflevector <2 x double> %broadcast.splatinsert2896, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2898 = insertelement <2 x double> poison, double %1496, i64 0
  %broadcast.splat2899 = shufflevector <2 x double> %broadcast.splatinsert2898, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2901 = insertelement <2 x double> poison, double %1497, i64 0
  %broadcast.splat2902 = shufflevector <2 x double> %broadcast.splatinsert2901, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2904 = insertelement <2 x double> poison, double %1490, i64 0
  %broadcast.splat2905 = shufflevector <2 x double> %broadcast.splatinsert2904, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2879

vector.body2879:                                  ; preds = %vector.body2879, %vector.ph2874
  %index2880 = phi i64 [ 0, %vector.ph2874 ], [ %index.next2906, %vector.body2879 ]
  %offset.idx2881 = or disjoint i64 %index2880, 1
  %1500 = getelementptr double, ptr %invariant.gep2454, i64 %offset.idx2881
  %wide.load2882 = load <2 x double>, ptr %1500, align 8, !tbaa !9, !alias.scope !39
  %1501 = getelementptr double, ptr %invariant.gep2456, i64 %offset.idx2881
  %wide.load2883 = load <2 x double>, ptr %1501, align 8, !tbaa !9, !alias.scope !42
  %1502 = fmul <2 x double> %broadcast.splat2885, %wide.load2883
  %1503 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2887, <2 x double> %wide.load2882, <2 x double> %1502)
  %1504 = getelementptr double, ptr %invariant.gep2458, i64 %offset.idx2881
  %wide.load2888 = load <2 x double>, ptr %1504, align 8, !tbaa !9, !alias.scope !44
  %1505 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2890, <2 x double> %wide.load2888, <2 x double> %1503)
  %1506 = getelementptr double, ptr %invariant.gep2460, i64 %offset.idx2881
  %wide.load2891 = load <2 x double>, ptr %1506, align 8, !tbaa !9, !alias.scope !46
  %1507 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2893, <2 x double> %wide.load2891, <2 x double> %1505)
  %1508 = getelementptr double, ptr %invariant.gep2462, i64 %offset.idx2881
  store <2 x double> %1507, ptr %1508, align 8, !tbaa !9, !alias.scope !48, !noalias !50
  %wide.load2894 = load <2 x double>, ptr %1500, align 8, !tbaa !9, !alias.scope !39
  %wide.load2895 = load <2 x double>, ptr %1501, align 8, !tbaa !9, !alias.scope !42
  %1509 = fmul <2 x double> %broadcast.splat2897, %wide.load2895
  %1510 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2899, <2 x double> %wide.load2894, <2 x double> %1509)
  %wide.load2900 = load <2 x double>, ptr %1504, align 8, !tbaa !9, !alias.scope !44
  %1511 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2902, <2 x double> %wide.load2900, <2 x double> %1510)
  %wide.load2903 = load <2 x double>, ptr %1506, align 8, !tbaa !9, !alias.scope !46
  %1512 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2905, <2 x double> %wide.load2903, <2 x double> %1511)
  %1513 = getelementptr double, ptr %invariant.gep2464, i64 %offset.idx2881
  store <2 x double> %1512, ptr %1513, align 8, !tbaa !9, !alias.scope !52, !noalias !53
  %index.next2906 = add nuw i64 %index2880, 2
  %1514 = icmp eq i64 %index.next2906, %n.vec2876
  br i1 %1514, label %middle.block2871, label %vector.body2879, !llvm.loop !54

middle.block2871:                                 ; preds = %vector.body2879
  %cmp.n2907 = icmp eq i64 %1075, %n.vec2876
  br i1 %cmp.n2907, label %.loopexit1676, label %scalar.ph2872.preheader

scalar.ph2872.preheader:                          ; preds = %middle.block2871, %vector.memcheck2822, %.lr.ph1851
  %indvars.iv2151.ph = phi i64 [ 1, %vector.memcheck2822 ], [ 1, %.lr.ph1851 ], [ %ind.end2877, %middle.block2871 ]
  br label %scalar.ph2872

scalar.ph2872:                                    ; preds = %scalar.ph2872.preheader, %scalar.ph2872
  %indvars.iv2151 = phi i64 [ %indvars.iv.next2152, %scalar.ph2872 ], [ %indvars.iv2151.ph, %scalar.ph2872.preheader ]
  %gep2455 = getelementptr double, ptr %invariant.gep2454, i64 %indvars.iv2151
  %1515 = load double, ptr %gep2455, align 8, !tbaa !9
  %gep2457 = getelementptr double, ptr %invariant.gep2456, i64 %indvars.iv2151
  %1516 = load double, ptr %gep2457, align 8, !tbaa !9
  %1517 = fmul double %1484, %1516
  %1518 = call double @llvm.fmuladd.f64(double %1494, double %1515, double %1517)
  %gep2459 = getelementptr double, ptr %invariant.gep2458, i64 %indvars.iv2151
  %1519 = load double, ptr %gep2459, align 8, !tbaa !9
  %1520 = call double @llvm.fmuladd.f64(double %1495, double %1519, double %1518)
  %gep2461 = getelementptr double, ptr %invariant.gep2460, i64 %indvars.iv2151
  %1521 = load double, ptr %gep2461, align 8, !tbaa !9
  %1522 = call double @llvm.fmuladd.f64(double %1488, double %1521, double %1520)
  %gep2463 = getelementptr double, ptr %invariant.gep2462, i64 %indvars.iv2151
  store double %1522, ptr %gep2463, align 8, !tbaa !9
  %1523 = load double, ptr %gep2455, align 8, !tbaa !9
  %1524 = load double, ptr %gep2457, align 8, !tbaa !9
  %1525 = fmul double %1486, %1524
  %1526 = call double @llvm.fmuladd.f64(double %1496, double %1523, double %1525)
  %1527 = load double, ptr %gep2459, align 8, !tbaa !9
  %1528 = call double @llvm.fmuladd.f64(double %1497, double %1527, double %1526)
  %1529 = load double, ptr %gep2461, align 8, !tbaa !9
  %1530 = call double @llvm.fmuladd.f64(double %1490, double %1529, double %1528)
  %gep2465 = getelementptr double, ptr %invariant.gep2464, i64 %indvars.iv2151
  store double %1530, ptr %gep2465, align 8, !tbaa !9
  %indvars.iv.next2152 = add nuw nsw i64 %indvars.iv2151, 1
  %exitcond2158.not = icmp eq i64 %indvars.iv.next2152, %indvars.iv2303
  br i1 %exitcond2158.not, label %.loopexit1676, label %scalar.ph2872, !llvm.loop !55

.loopexit1676:                                    ; preds = %scalar.ph2872, %.lr.ph1855.prol.loopexit, %.lr.ph1855, %middle.block2871, %middle.block2801, %1459, %.thread2384
  %1531 = phi double [ %1071, %.thread2384 ], [ %1341, %1459 ], [ %1071, %middle.block2801 ], [ %1341, %middle.block2871 ], [ %1071, %.lr.ph1855 ], [ %1071, %.lr.ph1855.prol.loopexit ], [ %1341, %scalar.ph2872 ]
  %.81443 = phi double [ 1.000000e+00, %.thread2384 ], [ %1482, %1459 ], [ 1.000000e+00, %middle.block2801 ], [ %1482, %middle.block2871 ], [ 1.000000e+00, %.lr.ph1855 ], [ 1.000000e+00, %.lr.ph1855.prol.loopexit ], [ %1482, %scalar.ph2872 ]
  %1532 = phi <2 x double> [ %1267, %.thread2384 ], [ %1394, %1459 ], [ %1267, %middle.block2801 ], [ %1394, %middle.block2871 ], [ %1267, %.lr.ph1855 ], [ %1267, %.lr.ph1855.prol.loopexit ], [ %1394, %scalar.ph2872 ]
  %1533 = fmul <2 x double> %1049, %1532
  %1534 = fmul <2 x double> %279, %1533
  %1535 = extractelement <2 x double> %1534, i64 0
  %1536 = extractelement <2 x double> %1534, i64 1
  %1537 = fcmp oge double %1535, %1536
  %1538 = select i1 %1537, double %1535, double %1536
  store double %1538, ptr %25, align 8, !tbaa !9
  %1539 = fcmp oge double %1538, %1531
  %1540 = select i1 %1539, double %1538, double %1531
  store double %1540, ptr %26, align 8, !tbaa !9
  %1541 = load i32, ptr %38, align 4, !tbaa !5
  %1542 = sub i32 %indvars2312, %1541
  %1543 = icmp sgt i32 %1542, 0
  br i1 %1543, label %.lr.ph1907, label %._crit_edge1908

.lr.ph1907:                                       ; preds = %.loopexit1676
  %1544 = zext nneg i32 %1542 to i64
  %1545 = shl nuw nsw i64 %1544, 3
  %1546 = shl nuw nsw i64 %1544, 3
  %1547 = extractelement <2 x double> %1532, i64 0
  %1548 = extractelement <2 x double> %1532, i64 1
  %gep2993 = getelementptr i8, ptr %invariant.gep2992, i64 %1546
  %1549 = getelementptr i8, ptr %1066, i64 %1546
  %1550 = getelementptr i8, ptr %1067, i64 %1546
  %gep2995 = getelementptr i8, ptr %invariant.gep2994, i64 %1545
  %1551 = getelementptr i8, ptr %1068, i64 %1545
  %1552 = getelementptr i8, ptr %1069, i64 %1545
  %min.iters.check2782 = icmp ult i64 %1088, 4
  %n.vec2785 = and i64 %1088, -4
  %ind.end2786 = or disjoint i64 %n.vec2785, 1
  %cmp.n2796 = icmp eq i64 %1088, %n.vec2785
  %min.iters.check2748 = icmp ult i64 %1090, 4
  %n.vec2751 = and i64 %1090, -4
  %ind.end2752 = or disjoint i64 %n.vec2751, 1
  %cmp.n2762 = icmp eq i64 %1090, %n.vec2751
  br label %1553

1553:                                             ; preds = %.lr.ph1907, %.loopexit1670
  %indvar2642 = phi i64 [ 0, %.lr.ph1907 ], [ %indvar.next2643, %.loopexit1670 ]
  %1554 = phi i32 [ %1541, %.lr.ph1907 ], [ %1827, %.loopexit1670 ]
  %indvars.iv2218 = phi i64 [ %1544, %.lr.ph1907 ], [ %indvars.iv.next2219, %.loopexit1670 ]
  %.314201905 = phi i32 [ 0, %.lr.ph1907 ], [ %.41421, %.loopexit1670 ]
  %.914441900 = phi double [ %.81443, %.lr.ph1907 ], [ %.121447, %.loopexit1670 ]
  %1555 = trunc i64 %indvar2642 to i32
  %1556 = add i32 %1541, %1555
  %1557 = sub i32 %1089, %1556
  %1558 = xor i64 %indvar2642, -1
  %1559 = add i64 %1558, %1544
  %1560 = mul nsw i64 %indvar2642, -8
  %scevgep2684 = getelementptr i8, ptr %gep2993, i64 %1560
  %1561 = trunc i64 %indvar2642 to i32
  %1562 = sub i32 %1542, %1561
  %scevgep2692 = getelementptr i8, ptr %1549, i64 %1560
  %1563 = trunc i64 %indvar2642 to i32
  %1564 = sub i32 %1542, %1563
  %scevgep2696 = getelementptr i8, ptr %1550, i64 %1560
  %1565 = xor i64 %indvar2642, -1
  %1566 = add i64 %1565, %1544
  %1567 = mul nsw i64 %indvar2642, -8
  %scevgep2644 = getelementptr i8, ptr %gep2995, i64 %1567
  %1568 = trunc i64 %indvar2642 to i32
  %1569 = sub i32 %1542, %1568
  %scevgep2650 = getelementptr i8, ptr %1551, i64 %1567
  %1570 = trunc i64 %indvar2642 to i32
  %1571 = sub i32 %1542, %1570
  %scevgep2654 = getelementptr i8, ptr %1552, i64 %1567
  %indvars2221 = trunc i64 %indvars.iv2218 to i32
  %1572 = icmp eq i32 %.314201905, 0
  %1573 = icmp ne i64 %indvars.iv2218, 1
  %or.cond5 = and i1 %1573, %1572
  br i1 %or.cond5, label %1574, label %1586

1574:                                             ; preds = %1553
  %1575 = add nsw i32 %indvars2221, -1
  %1576 = mul nsw i32 %1575, %43
  %1577 = sext i32 %1576 to i64
  %1578 = getelementptr double, ptr %45, i64 %indvars.iv2218
  %1579 = getelementptr double, ptr %1578, i64 %1577
  %1580 = load double, ptr %1579, align 8, !tbaa !9
  %1581 = fcmp une double %1580, 0.000000e+00
  br i1 %1581, label %.loopexit1670, label %.thread1661

.thread1661:                                      ; preds = %1574
  %1582 = mul i32 %980, %indvars2221
  %1583 = sext i32 %1582 to i64
  %1584 = getelementptr inbounds double, ptr %48, i64 %1583
  %1585 = load double, ptr %1584, align 8, !tbaa !9
  store double %1585, ptr %31, align 16, !tbaa !9
  br label %1598

1586:                                             ; preds = %1553
  %1587 = mul i32 %980, %indvars2221
  %1588 = sext i32 %1587 to i64
  %1589 = getelementptr inbounds double, ptr %48, i64 %1588
  %1590 = load double, ptr %1589, align 8, !tbaa !9
  store double %1590, ptr %31, align 16, !tbaa !9
  br i1 %1572, label %1598, label %1591

1591:                                             ; preds = %1586
  store i32 2, ptr %35, align 4, !tbaa !5
  %1592 = trunc i64 %indvars.iv2218 to i32
  %1593 = add i32 %1592, 1
  %1594 = mul i32 %1593, %980
  %1595 = sext i32 %1594 to i64
  %1596 = getelementptr inbounds double, ptr %48, i64 %1595
  %1597 = load double, ptr %1596, align 8, !tbaa !9
  store double %1597, ptr %982, align 8, !tbaa !9
  br label %1599

1598:                                             ; preds = %.thread1661, %1586
  store i32 1, ptr %35, align 4, !tbaa !5
  br label %1599

1599:                                             ; preds = %1598, %1591
  %1600 = mul i32 %979, %indvars2221
  %1601 = sext i32 %1600 to i64
  %1602 = getelementptr inbounds double, ptr %45, i64 %1601
  %1603 = load i32, ptr %3, align 4, !tbaa !5
  %1604 = shl i32 %1603, 1
  %1605 = sext i32 %1604 to i64
  %1606 = getelementptr double, ptr %55, i64 %indvars.iv2218
  %1607 = getelementptr double, ptr %1606, i64 %1605
  call void @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull %35, ptr noundef nonnull %38, ptr noundef nonnull %26, ptr noundef nonnull %32, ptr noundef nonnull %1602, ptr noundef nonnull %5, ptr noundef nonnull %31, ptr noundef nonnull %982, ptr noundef nonnull %1607, ptr noundef nonnull %3, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef nonnull %41, ptr noundef nonnull @c__2, ptr noundef nonnull %33, ptr noundef nonnull %27, ptr noundef nonnull %34) #6
  %1608 = load double, ptr %33, align 8, !tbaa !9
  %1609 = fcmp olt double %1608, 1.000000e+00
  %.pre2325 = load i32, ptr %38, align 4, !tbaa !5
  br i1 %1609, label %1610, label %.loopexit1671

1610:                                             ; preds = %1599
  %1611 = add nsw i32 %.pre2325, -1
  store i32 %1611, ptr %23, align 4, !tbaa !5
  %.not1534.not1860 = icmp sgt i32 %.pre2325, 0
  br i1 %.not1534.not1860, label %.preheader1667.lr.ph.split, label %.loopexit1671

.preheader1667.lr.ph.split:                       ; preds = %1610
  %1612 = load i32, ptr %3, align 4, !tbaa !5
  %1613 = sext i32 %1612 to i64
  %wide.trip.count2177 = zext nneg i32 %.pre2325 to i64
  %broadcast.splatinsert2793 = insertelement <2 x double> poison, double %1608, i64 0
  %broadcast.splat2794 = shufflevector <2 x double> %broadcast.splatinsert2793, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.preheader1667

.preheader1667:                                   ; preds = %.preheader1667.lr.ph.split, %._crit_edge1859
  %indvars.iv2173 = phi i64 [ 0, %.preheader1667.lr.ph.split ], [ %indvars.iv.next2174, %._crit_edge1859 ]
  %1614 = add nuw nsw i64 %indvars.iv2173, 2
  %1615 = mul nsw i64 %1614, %1613
  %1616 = getelementptr double, ptr %55, i64 %1615
  br i1 %min.iters.check2782, label %scalar.ph2781.preheader, label %vector.body2788

vector.body2788:                                  ; preds = %.preheader1667, %vector.body2788
  %index2789 = phi i64 [ %index.next2795, %vector.body2788 ], [ 0, %.preheader1667 ]
  %offset.idx2790 = or disjoint i64 %index2789, 1
  %1617 = getelementptr double, ptr %1616, i64 %offset.idx2790
  %1618 = getelementptr i8, ptr %1617, i64 16
  %wide.load2791 = load <2 x double>, ptr %1617, align 8, !tbaa !9
  %wide.load2792 = load <2 x double>, ptr %1618, align 8, !tbaa !9
  %1619 = fmul <2 x double> %broadcast.splat2794, %wide.load2791
  %1620 = fmul <2 x double> %broadcast.splat2794, %wide.load2792
  store <2 x double> %1619, ptr %1617, align 8, !tbaa !9
  store <2 x double> %1620, ptr %1618, align 8, !tbaa !9
  %index.next2795 = add nuw i64 %index2789, 4
  %1621 = icmp eq i64 %index.next2795, %n.vec2785
  br i1 %1621, label %middle.block2780, label %vector.body2788, !llvm.loop !56

middle.block2780:                                 ; preds = %vector.body2788
  br i1 %cmp.n2796, label %._crit_edge1859, label %scalar.ph2781.preheader

scalar.ph2781.preheader:                          ; preds = %middle.block2780, %.preheader1667
  %indvars.iv2165.ph = phi i64 [ 1, %.preheader1667 ], [ %ind.end2786, %middle.block2780 ]
  br label %scalar.ph2781

scalar.ph2781:                                    ; preds = %scalar.ph2781.preheader, %scalar.ph2781
  %indvars.iv2165 = phi i64 [ %indvars.iv.next2166, %scalar.ph2781 ], [ %indvars.iv2165.ph, %scalar.ph2781.preheader ]
  %1622 = getelementptr double, ptr %1616, i64 %indvars.iv2165
  %1623 = load double, ptr %1622, align 8, !tbaa !9
  %1624 = fmul double %1608, %1623
  store double %1624, ptr %1622, align 8, !tbaa !9
  %indvars.iv.next2166 = add nuw nsw i64 %indvars.iv2165, 1
  %exitcond2172.not = icmp eq i64 %indvars.iv.next2166, %indvars.iv2301
  br i1 %exitcond2172.not, label %._crit_edge1859, label %scalar.ph2781, !llvm.loop !57

._crit_edge1859:                                  ; preds = %scalar.ph2781, %middle.block2780
  %indvars.iv.next2174 = add nuw nsw i64 %indvars.iv2173, 1
  %exitcond2178.not = icmp eq i64 %indvars.iv.next2174, %wide.trip.count2177
  br i1 %exitcond2178.not, label %.loopexit1671, label %.preheader1667, !llvm.loop !58

.loopexit1671:                                    ; preds = %._crit_edge1859, %1610, %1599
  %1625 = fmul double %.914441900, %1608
  store double %1625, ptr %25, align 8, !tbaa !9
  %1626 = load double, ptr %27, align 8
  %1627 = fcmp oge double %1625, %1626
  %1628 = select i1 %1627, double %1625, double %1626
  %.not15351869 = icmp slt i32 %.pre2325, 1
  br i1 %.not15351869, label %._crit_edge1873, label %.lr.ph1872

.lr.ph1872:                                       ; preds = %.loopexit1671
  %1629 = load i32, ptr %35, align 4, !tbaa !5
  %.not15411864 = icmp slt i32 %1629, 1
  br i1 %.not15411864, label %._crit_edge1873, label %.lr.ph1872.split

.lr.ph1872.split:                                 ; preds = %.lr.ph1872
  %1630 = load i32, ptr %3, align 4, !tbaa !5
  %1631 = add nuw i32 %1629, 1
  %wide.trip.count2183 = zext i32 %1631 to i64
  %1632 = add nsw i64 %wide.trip.count2183, -2
  %1633 = shl i32 %1630, 1
  %1634 = add i32 %1557, %1633
  %1635 = zext nneg i32 %1629 to i64
  %1636 = zext nneg i32 %1629 to i64
  %min.iters.check2767 = icmp ult i32 %1629, 10
  %1637 = trunc i64 %1632 to i32
  %1638 = trunc i64 %1632 to i32
  %1639 = icmp ugt i64 %1632, 4294967295
  %n.vec2770 = and i64 %1635, 2147483644
  %ind.end2771 = or disjoint i64 %n.vec2770, 1
  %cmp.n2779 = icmp eq i64 %n.vec2770, %1635
  %1640 = and i32 %1629, 1
  %lcmp.mod2943.not = icmp eq i32 %1640, 0
  br label %.lr.ph1867

.lr.ph1867:                                       ; preds = %.lr.ph1872.split, %._crit_edge1868
  %indvar2763 = phi i32 [ 0, %.lr.ph1872.split ], [ %indvar.next2764, %._crit_edge1868 ]
  %.713731870 = phi i32 [ 1, %.lr.ph1872.split ], [ %1643, %._crit_edge1868 ]
  %1641 = shl nuw i32 %.713731870, 1
  %1642 = add i32 %1641, -3
  %1643 = add nuw nsw i32 %.713731870, 1
  %1644 = mul nsw i32 %1630, %1643
  br i1 %min.iters.check2767, label %scalar.ph2766.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph1867
  %1645 = mul i32 %1630, %indvar2763
  %1646 = add i32 %1634, %1645
  %1647 = shl nuw i32 %indvar2763, 1
  %1648 = add i32 %1647, %1637
  %1649 = icmp slt i32 %1648, %1647
  %1650 = add i32 %1646, %1638
  %1651 = icmp slt i32 %1650, %1646
  %1652 = or i1 %1651, %1639
  %1653 = or i1 %1649, %1652
  br i1 %1653, label %scalar.ph2766.preheader, label %vector.body2773

vector.body2773:                                  ; preds = %vector.scevcheck, %vector.body2773
  %index2774 = phi i64 [ %index.next2778, %vector.body2773 ], [ 0, %vector.scevcheck ]
  %1654 = trunc i64 %index2774 to i32
  %1655 = or disjoint i32 %1654, 1
  %1656 = add i32 %1642, %1655
  %1657 = sext i32 %1656 to i64
  %1658 = getelementptr inbounds [4 x double], ptr %41, i64 0, i64 %1657
  %1659 = getelementptr inbounds i8, ptr %1658, i64 16
  %wide.load2776 = load <2 x double>, ptr %1658, align 16, !tbaa !9
  %wide.load2777 = load <2 x double>, ptr %1659, align 16, !tbaa !9
  %1660 = add i32 %1655, %indvars2221
  %1661 = add i32 %1660, %1644
  %1662 = sext i32 %1661 to i64
  %1663 = getelementptr double, ptr %invariant.gep1862, i64 %1662
  %1664 = getelementptr i8, ptr %1663, i64 16
  store <2 x double> %wide.load2776, ptr %1663, align 8, !tbaa !9
  store <2 x double> %wide.load2777, ptr %1664, align 8, !tbaa !9
  %index.next2778 = add nuw i64 %index2774, 4
  %1665 = icmp eq i64 %index.next2778, %n.vec2770
  br i1 %1665, label %middle.block2765, label %vector.body2773, !llvm.loop !59

middle.block2765:                                 ; preds = %vector.body2773
  br i1 %cmp.n2779, label %._crit_edge1868, label %scalar.ph2766.preheader

scalar.ph2766.preheader:                          ; preds = %middle.block2765, %vector.scevcheck, %.lr.ph1867
  %indvars.iv2179.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph1867 ], [ %ind.end2771, %middle.block2765 ]
  br i1 %lcmp.mod2943.not, label %scalar.ph2766.prol.loopexit, label %scalar.ph2766.prol

scalar.ph2766.prol:                               ; preds = %scalar.ph2766.preheader
  %1666 = trunc nuw nsw i64 %indvars.iv2179.ph to i32
  %1667 = add i32 %1642, %1666
  %1668 = sext i32 %1667 to i64
  %1669 = getelementptr inbounds [4 x double], ptr %41, i64 0, i64 %1668
  %1670 = load double, ptr %1669, align 16, !tbaa !9
  %1671 = add i32 %1666, %indvars2221
  %1672 = add i32 %1671, %1644
  %1673 = sext i32 %1672 to i64
  %gep1863.prol = getelementptr double, ptr %invariant.gep1862, i64 %1673
  store double %1670, ptr %gep1863.prol, align 8, !tbaa !9
  %indvars.iv.next2180.prol = add nuw nsw i64 %indvars.iv2179.ph, 1
  br label %scalar.ph2766.prol.loopexit

scalar.ph2766.prol.loopexit:                      ; preds = %scalar.ph2766.prol, %scalar.ph2766.preheader
  %indvars.iv2179.unr = phi i64 [ %indvars.iv2179.ph, %scalar.ph2766.preheader ], [ %indvars.iv.next2180.prol, %scalar.ph2766.prol ]
  %1674 = icmp eq i64 %indvars.iv2179.ph, %1636
  br i1 %1674, label %._crit_edge1868, label %scalar.ph2766

scalar.ph2766:                                    ; preds = %scalar.ph2766.prol.loopexit, %scalar.ph2766
  %indvars.iv2179 = phi i64 [ %indvars.iv.next2180.1, %scalar.ph2766 ], [ %indvars.iv2179.unr, %scalar.ph2766.prol.loopexit ]
  %1675 = trunc nuw nsw i64 %indvars.iv2179 to i32
  %1676 = add i32 %1642, %1675
  %1677 = sext i32 %1676 to i64
  %1678 = getelementptr inbounds [4 x double], ptr %41, i64 0, i64 %1677
  %1679 = load double, ptr %1678, align 8, !tbaa !9
  %1680 = add i32 %1675, %indvars2221
  %1681 = add i32 %1680, %1644
  %1682 = sext i32 %1681 to i64
  %gep1863 = getelementptr double, ptr %invariant.gep1862, i64 %1682
  store double %1679, ptr %gep1863, align 8, !tbaa !9
  %1683 = trunc i64 %indvars.iv2179 to i32
  %1684 = add i32 %1683, 1
  %1685 = add i32 %1642, %1684
  %1686 = sext i32 %1685 to i64
  %1687 = getelementptr inbounds [4 x double], ptr %41, i64 0, i64 %1686
  %1688 = load double, ptr %1687, align 8, !tbaa !9
  %1689 = add i32 %1684, %indvars2221
  %1690 = add i32 %1689, %1644
  %1691 = sext i32 %1690 to i64
  %gep1863.1 = getelementptr double, ptr %invariant.gep1862, i64 %1691
  store double %1688, ptr %gep1863.1, align 8, !tbaa !9
  %indvars.iv.next2180.1 = add nuw nsw i64 %indvars.iv2179, 2
  %exitcond2184.not.1 = icmp eq i64 %indvars.iv.next2180.1, %wide.trip.count2183
  br i1 %exitcond2184.not.1, label %._crit_edge1868, label %scalar.ph2766, !llvm.loop !60

._crit_edge1868:                                  ; preds = %scalar.ph2766.prol.loopexit, %scalar.ph2766, %middle.block2765
  %exitcond2185.not = icmp eq i32 %.713731870, %.pre2325
  %indvar.next2764 = add i32 %indvar2763, 1
  br i1 %exitcond2185.not, label %._crit_edge1873, label %.lr.ph1867, !llvm.loop !61

._crit_edge1873:                                  ; preds = %._crit_edge1868, %.lr.ph1872, %.loopexit1671
  br i1 %1573, label %1692, label %._crit_edge1908

1692:                                             ; preds = %._crit_edge1873
  %1693 = fcmp ole double %1628, 1.000000e+00
  %1694 = select i1 %1693, double 1.000000e+00, double %1628
  %1695 = fdiv double 1.000000e+00, %1694
  %1696 = getelementptr inbounds double, ptr %55, i64 %indvars.iv2218
  %1697 = load double, ptr %1696, align 8, !tbaa !9
  %1698 = load i32, ptr %3, align 4, !tbaa !5
  %1699 = sext i32 %1698 to i64
  %1700 = getelementptr double, ptr %55, i64 %indvars.iv2218
  %1701 = getelementptr double, ptr %1700, i64 %1699
  %1702 = load double, ptr %1701, align 8, !tbaa !9
  %1703 = fmul double %1548, %1702
  %1704 = call double @llvm.fmuladd.f64(double %1547, double %1697, double %1703)
  br i1 %1572, label %1714, label %1705

1705:                                             ; preds = %1692
  %1706 = getelementptr inbounds i8, ptr %1696, i64 8
  %1707 = load double, ptr %1706, align 8, !tbaa !9
  %1708 = getelementptr i8, ptr %1701, i64 8
  %1709 = load double, ptr %1708, align 8, !tbaa !9
  %1710 = fmul double %1548, %1709
  %1711 = call double @llvm.fmuladd.f64(double %1547, double %1707, double %1710)
  %1712 = fcmp oge double %1704, %1711
  %1713 = select i1 %1712, double %1704, double %1711
  br label %1714

1714:                                             ; preds = %1705, %1692
  %1715 = phi double [ %1713, %1705 ], [ %1704, %1692 ]
  %1716 = fcmp oge double %1715, %1547
  %1717 = select i1 %1716, double %1715, double %1547
  store double %1717, ptr %25, align 8, !tbaa !9
  %1718 = fcmp oge double %1717, %1548
  %1719 = select i1 %1718, double %1717, double %1548
  store double %1719, ptr %27, align 8, !tbaa !9
  %1720 = fmul double %168, %1695
  %1721 = fcmp ogt double %1719, %1720
  br i1 %1721, label %1722, label %1733

1722:                                             ; preds = %1714
  %.not1536.not1878 = icmp sgt i32 %.pre2325, 0
  br i1 %.not1536.not1878, label %.preheader.preheader, label %._crit_edge1880

.preheader.preheader:                             ; preds = %1722
  %wide.trip.count2196 = zext nneg i32 %.pre2325 to i64
  %broadcast.splatinsert2759 = insertelement <2 x double> poison, double %1695, i64 0
  %broadcast.splat2760 = shufflevector <2 x double> %broadcast.splatinsert2759, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge1877
  %indvars.iv2192 = phi i64 [ 0, %.preheader.preheader ], [ %indvars.iv.next2193, %._crit_edge1877 ]
  %1723 = add nuw nsw i64 %indvars.iv2192, 2
  %1724 = mul nsw i64 %1723, %1699
  %invariant.gep2472 = getelementptr double, ptr %55, i64 %1724
  br i1 %min.iters.check2748, label %scalar.ph2747.preheader, label %vector.body2754

vector.body2754:                                  ; preds = %.preheader, %vector.body2754
  %index2755 = phi i64 [ %index.next2761, %vector.body2754 ], [ 0, %.preheader ]
  %offset.idx2756 = or disjoint i64 %index2755, 1
  %1725 = getelementptr double, ptr %invariant.gep2472, i64 %offset.idx2756
  %1726 = getelementptr i8, ptr %1725, i64 16
  %wide.load2757 = load <2 x double>, ptr %1725, align 8, !tbaa !9
  %wide.load2758 = load <2 x double>, ptr %1726, align 8, !tbaa !9
  %1727 = fmul <2 x double> %broadcast.splat2760, %wide.load2757
  %1728 = fmul <2 x double> %broadcast.splat2760, %wide.load2758
  store <2 x double> %1727, ptr %1725, align 8, !tbaa !9
  store <2 x double> %1728, ptr %1726, align 8, !tbaa !9
  %index.next2761 = add nuw i64 %index2755, 4
  %1729 = icmp eq i64 %index.next2761, %n.vec2751
  br i1 %1729, label %middle.block2746, label %vector.body2754, !llvm.loop !62

middle.block2746:                                 ; preds = %vector.body2754
  br i1 %cmp.n2762, label %._crit_edge1877, label %scalar.ph2747.preheader

scalar.ph2747.preheader:                          ; preds = %middle.block2746, %.preheader
  %indvars.iv2186.ph = phi i64 [ 1, %.preheader ], [ %ind.end2752, %middle.block2746 ]
  br label %scalar.ph2747

scalar.ph2747:                                    ; preds = %scalar.ph2747.preheader, %scalar.ph2747
  %indvars.iv2186 = phi i64 [ %indvars.iv.next2187, %scalar.ph2747 ], [ %indvars.iv2186.ph, %scalar.ph2747.preheader ]
  %gep2473 = getelementptr double, ptr %invariant.gep2472, i64 %indvars.iv2186
  %1730 = load double, ptr %gep2473, align 8, !tbaa !9
  %1731 = fmul double %1695, %1730
  store double %1731, ptr %gep2473, align 8, !tbaa !9
  %indvars.iv.next2187 = add nuw nsw i64 %indvars.iv2186, 1
  %exitcond2191.not = icmp eq i64 %indvars.iv.next2187, %indvars.iv2301
  br i1 %exitcond2191.not, label %._crit_edge1877, label %scalar.ph2747, !llvm.loop !63

._crit_edge1877:                                  ; preds = %scalar.ph2747, %middle.block2746
  %indvars.iv.next2193 = add nuw nsw i64 %indvars.iv2192, 1
  %exitcond2197.not = icmp eq i64 %indvars.iv.next2193, %wide.trip.count2196
  br i1 %exitcond2197.not, label %._crit_edge1880, label %.preheader, !llvm.loop !64

._crit_edge1880:                                  ; preds = %._crit_edge1877, %1722
  %1732 = fmul double %1628, %1695
  br label %1733

1733:                                             ; preds = %._crit_edge1880, %1714
  %.101445 = phi double [ %1732, %._crit_edge1880 ], [ %1628, %1714 ]
  %1734 = load i32, ptr %35, align 4, !tbaa !5
  store i32 %1734, ptr %23, align 4, !tbaa !5
  %.not15371895 = icmp slt i32 %1734, 1
  br i1 %.not15371895, label %.loopexit1670, label %.lr.ph1899

.lr.ph1899:                                       ; preds = %1733
  %1735 = load double, ptr %32, align 8
  %1736 = shl i32 %1698, 1
  %1737 = sext i32 %1736 to i64
  %1738 = load double, ptr %37, align 8
  %1739 = load double, ptr %36, align 8
  %1740 = fneg double %1739
  %.not1539.not1881 = icmp sgt i64 %indvars.iv2218, 1
  %1741 = add i32 %indvars2221, -1
  %1742 = fneg double %1735
  %1743 = add nuw i32 %1734, 1
  %wide.trip.count2216 = zext i32 %1743 to i64
  %1744 = getelementptr double, ptr %invariant.gep1862, i64 %indvars.iv2218
  %1745 = getelementptr double, ptr %1744, i64 %1737
  br i1 %.not1512163716521653, label %.lr.ph1899.split.us.preheader, label %.lr.ph1899.split.preheader

.lr.ph1899.split.preheader:                       ; preds = %.lr.ph1899
  %1746 = mul nsw i32 %1698, 3
  %1747 = sext i32 %1746 to i64
  %1748 = getelementptr double, ptr %invariant.gep1862, i64 %indvars.iv2218
  %1749 = getelementptr double, ptr %1748, i64 %1747
  %invariant.gep2474 = getelementptr double, ptr %55, i64 %1737
  %invariant.gep2480 = getelementptr double, ptr %55, i64 %1747
  %1750 = shl nsw i64 %1737, 3
  %scevgep2683 = getelementptr i8, ptr %14, i64 %1750
  %scevgep2685 = getelementptr i8, ptr %scevgep2684, i64 %1750
  %1751 = shl nsw i64 %1747, 3
  %scevgep2686 = getelementptr i8, ptr %14, i64 %1751
  %scevgep2687 = getelementptr i8, ptr %scevgep2684, i64 %1751
  %min.iters.check2719 = icmp ult i64 %1559, 4
  %bound02698 = icmp ult ptr %scevgep2683, %scevgep2687
  %bound12699 = icmp ult ptr %scevgep2686, %scevgep2685
  %found.conflict2700 = and i1 %bound02698, %bound12699
  %n.vec2722 = and i64 %1559, -2
  %ind.end2723 = or i64 %1559, 1
  %cmp.n2743 = icmp eq i64 %1559, %n.vec2722
  br label %.lr.ph1899.split

.lr.ph1899.split.us.preheader:                    ; preds = %.lr.ph1899
  %invariant.gep2482 = getelementptr double, ptr %55, i64 %1737
  %1752 = shl nsw i64 %1737, 3
  %scevgep2641 = getelementptr i8, ptr %14, i64 %1752
  %scevgep2645 = getelementptr i8, ptr %scevgep2644, i64 %1752
  %min.iters.check2661 = icmp ult i64 %1566, 4
  %n.vec2664 = and i64 %1566, -4
  %ind.end2665 = or disjoint i64 %n.vec2664, 1
  %cmp.n2681 = icmp eq i64 %1566, %n.vec2664
  br label %.lr.ph1899.split.us

.lr.ph1899.split.us:                              ; preds = %.lr.ph1899.split.us.preheader, %.loopexit.us
  %indvar2647 = phi i32 [ 0, %.lr.ph1899.split.us.preheader ], [ %indvar.next2648, %.loopexit.us ]
  %indvars.iv2212 = phi i64 [ 1, %.lr.ph1899.split.us.preheader ], [ %indvars.iv.next2213, %.loopexit.us ]
  %1753 = add i32 %1569, %indvar2647
  %1754 = mul i32 %43, %1753
  %1755 = sext i32 %1754 to i64
  %1756 = shl nsw i64 %1755, 3
  %scevgep2649 = getelementptr i8, ptr %scevgep2646, i64 %1756
  %scevgep2651 = getelementptr i8, ptr %scevgep2650, i64 %1756
  %1757 = add i32 %1571, %indvar2647
  %1758 = mul i32 %46, %1757
  %1759 = sext i32 %1758 to i64
  %1760 = shl nsw i64 %1759, 3
  %scevgep2653 = getelementptr i8, ptr %scevgep2652, i64 %1760
  %scevgep2655 = getelementptr i8, ptr %scevgep2654, i64 %1760
  %gep1894.us = getelementptr double, ptr %1745, i64 %indvars.iv2212
  %1761 = load double, ptr %gep1894.us, align 8, !tbaa !9
  %1762 = fmul double %1761, %1738
  br i1 %.not1539.not1881, label %.lr.ph1888.us, label %.loopexit.us

scalar.ph2660:                                    ; preds = %scalar.ph2660.preheader, %scalar.ph2660
  %indvars.iv2208 = phi i64 [ %indvars.iv.next2209, %scalar.ph2660 ], [ %indvars.iv2208.ph, %scalar.ph2660.preheader ]
  %gep2483 = getelementptr double, ptr %invariant.gep2482, i64 %indvars.iv2208
  %1763 = load double, ptr %gep2483, align 8, !tbaa !9
  %gep2485 = getelementptr double, ptr %invariant.gep2484, i64 %indvars.iv2208
  %1764 = load double, ptr %gep2485, align 8, !tbaa !9
  %1765 = call double @llvm.fmuladd.f64(double %1771, double %1764, double %1763)
  %gep2487 = getelementptr double, ptr %invariant.gep2486, i64 %indvars.iv2208
  %1766 = load double, ptr %gep2487, align 8, !tbaa !9
  %1767 = call double @llvm.fmuladd.f64(double %1762, double %1766, double %1765)
  store double %1767, ptr %gep2483, align 8, !tbaa !9
  %indvars.iv.next2209 = add nuw nsw i64 %indvars.iv2208, 1
  %.not1538.not.us = icmp slt i64 %indvars.iv.next2209, %indvars.iv2218
  br i1 %.not1538.not.us, label %scalar.ph2660, label %.loopexit.us, !llvm.loop !65

.loopexit.us:                                     ; preds = %scalar.ph2660, %middle.block2659, %.lr.ph1899.split.us
  %indvars.iv.next2213 = add nuw nsw i64 %indvars.iv2212, 1
  %exitcond2217.not = icmp eq i64 %indvars.iv.next2213, %wide.trip.count2216
  %indvar.next2648 = add i32 %indvar2647, 1
  br i1 %exitcond2217.not, label %.loopexit1670, label %.lr.ph1899.split.us, !llvm.loop !66

.lr.ph1888.us:                                    ; preds = %.lr.ph1899.split.us
  %1768 = trunc nuw nsw i64 %indvars.iv2212 to i32
  %1769 = add i32 %1741, %1768
  %1770 = mul nsw i32 %1769, %43
  %1771 = fmul double %1761, %1742
  %1772 = mul nsw i32 %1769, %46
  %1773 = sext i32 %1770 to i64
  %1774 = sext i32 %1772 to i64
  %invariant.gep2484 = getelementptr double, ptr %45, i64 %1773
  %invariant.gep2486 = getelementptr double, ptr %48, i64 %1774
  br i1 %min.iters.check2661, label %scalar.ph2660.preheader, label %vector.memcheck2640

scalar.ph2660.preheader:                          ; preds = %middle.block2659, %vector.memcheck2640, %.lr.ph1888.us
  %indvars.iv2208.ph = phi i64 [ 1, %vector.memcheck2640 ], [ 1, %.lr.ph1888.us ], [ %ind.end2665, %middle.block2659 ]
  br label %scalar.ph2660

vector.memcheck2640:                              ; preds = %.lr.ph1888.us
  %bound0 = icmp ult ptr %scevgep2641, %scevgep2651
  %bound1 = icmp ult ptr %scevgep2649, %scevgep2645
  %found.conflict = and i1 %bound0, %bound1
  %bound02656 = icmp ult ptr %scevgep2641, %scevgep2655
  %bound12657 = icmp ult ptr %scevgep2653, %scevgep2645
  %found.conflict2658 = and i1 %bound02656, %bound12657
  %conflict.rdx = or i1 %found.conflict, %found.conflict2658
  br i1 %conflict.rdx, label %scalar.ph2660.preheader, label %vector.ph2662

vector.ph2662:                                    ; preds = %vector.memcheck2640
  %broadcast.splatinsert2674 = insertelement <2 x double> poison, double %1771, i64 0
  %broadcast.splat2675 = shufflevector <2 x double> %broadcast.splatinsert2674, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2678 = insertelement <2 x double> poison, double %1762, i64 0
  %broadcast.splat2679 = shufflevector <2 x double> %broadcast.splatinsert2678, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2667

vector.body2667:                                  ; preds = %vector.body2667, %vector.ph2662
  %index2668 = phi i64 [ 0, %vector.ph2662 ], [ %index.next2680, %vector.body2667 ]
  %offset.idx2669 = or disjoint i64 %index2668, 1
  %1775 = getelementptr double, ptr %invariant.gep2482, i64 %offset.idx2669
  %1776 = getelementptr i8, ptr %1775, i64 16
  %wide.load2670 = load <2 x double>, ptr %1775, align 8, !tbaa !9, !alias.scope !67, !noalias !70
  %wide.load2671 = load <2 x double>, ptr %1776, align 8, !tbaa !9, !alias.scope !67, !noalias !70
  %1777 = getelementptr double, ptr %invariant.gep2484, i64 %offset.idx2669
  %1778 = getelementptr i8, ptr %1777, i64 16
  %wide.load2672 = load <2 x double>, ptr %1777, align 8, !tbaa !9, !alias.scope !73
  %wide.load2673 = load <2 x double>, ptr %1778, align 8, !tbaa !9, !alias.scope !73
  %1779 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2675, <2 x double> %wide.load2672, <2 x double> %wide.load2670)
  %1780 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2675, <2 x double> %wide.load2673, <2 x double> %wide.load2671)
  %1781 = getelementptr double, ptr %invariant.gep2486, i64 %offset.idx2669
  %1782 = getelementptr i8, ptr %1781, i64 16
  %wide.load2676 = load <2 x double>, ptr %1781, align 8, !tbaa !9, !alias.scope !74
  %wide.load2677 = load <2 x double>, ptr %1782, align 8, !tbaa !9, !alias.scope !74
  %1783 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2679, <2 x double> %wide.load2676, <2 x double> %1779)
  %1784 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2679, <2 x double> %wide.load2677, <2 x double> %1780)
  store <2 x double> %1783, ptr %1775, align 8, !tbaa !9, !alias.scope !67, !noalias !70
  store <2 x double> %1784, ptr %1776, align 8, !tbaa !9, !alias.scope !67, !noalias !70
  %index.next2680 = add nuw i64 %index2668, 4
  %1785 = icmp eq i64 %index.next2680, %n.vec2664
  br i1 %1785, label %middle.block2659, label %vector.body2667, !llvm.loop !75

middle.block2659:                                 ; preds = %vector.body2667
  br i1 %cmp.n2681, label %.loopexit.us, label %scalar.ph2660.preheader

.lr.ph1899.split:                                 ; preds = %.lr.ph1899.split.preheader, %.loopexit1666
  %indvar2689 = phi i32 [ 0, %.lr.ph1899.split.preheader ], [ %indvar.next2690, %.loopexit1666 ]
  %indvars.iv2202 = phi i64 [ 1, %.lr.ph1899.split.preheader ], [ %indvars.iv.next2203, %.loopexit1666 ]
  %1786 = add i32 %1562, %indvar2689
  %1787 = mul i32 %43, %1786
  %1788 = sext i32 %1787 to i64
  %1789 = shl nsw i64 %1788, 3
  %scevgep2691 = getelementptr i8, ptr %scevgep2688, i64 %1789
  %scevgep2693 = getelementptr i8, ptr %scevgep2692, i64 %1789
  %1790 = add i32 %1564, %indvar2689
  %1791 = mul i32 %46, %1790
  %1792 = sext i32 %1791 to i64
  %1793 = shl nsw i64 %1792, 3
  %scevgep2695 = getelementptr i8, ptr %scevgep2694, i64 %1793
  %scevgep2697 = getelementptr i8, ptr %scevgep2696, i64 %1793
  %gep1890 = getelementptr double, ptr %1745, i64 %indvars.iv2202
  %1794 = load double, ptr %gep1890, align 8, !tbaa !9
  %gep1892 = getelementptr double, ptr %1749, i64 %indvars.iv2202
  %1795 = load double, ptr %gep1892, align 8, !tbaa !9
  %1796 = fmul double %1795, %1740
  %1797 = call double @llvm.fmuladd.f64(double %1738, double %1794, double %1796)
  %1798 = fmul double %1795, %1738
  %1799 = call double @llvm.fmuladd.f64(double %1739, double %1794, double %1798)
  br i1 %.not1539.not1881, label %.lr.ph1884, label %.loopexit1666

.lr.ph1884:                                       ; preds = %.lr.ph1899.split
  %1800 = trunc nuw nsw i64 %indvars.iv2202 to i32
  %1801 = add i32 %1741, %1800
  %1802 = mul nsw i32 %1801, %43
  %1803 = fmul double %1794, %1742
  %1804 = mul nsw i32 %1801, %46
  %1805 = fmul double %1795, %1742
  %1806 = sext i32 %1802 to i64
  %1807 = sext i32 %1804 to i64
  %invariant.gep2476 = getelementptr double, ptr %45, i64 %1806
  %invariant.gep2478 = getelementptr double, ptr %48, i64 %1807
  br i1 %min.iters.check2719, label %scalar.ph2718.preheader, label %vector.memcheck2682

vector.memcheck2682:                              ; preds = %.lr.ph1884
  %bound02701 = icmp ult ptr %scevgep2683, %scevgep2693
  %bound12702 = icmp ult ptr %scevgep2691, %scevgep2685
  %found.conflict2703 = and i1 %bound02701, %bound12702
  %conflict.rdx2704 = or i1 %found.conflict2700, %found.conflict2703
  %bound02705 = icmp ult ptr %scevgep2683, %scevgep2697
  %bound12706 = icmp ult ptr %scevgep2695, %scevgep2685
  %found.conflict2707 = and i1 %bound02705, %bound12706
  %conflict.rdx2708 = or i1 %conflict.rdx2704, %found.conflict2707
  %bound02709 = icmp ult ptr %scevgep2686, %scevgep2693
  %bound12710 = icmp ult ptr %scevgep2691, %scevgep2687
  %found.conflict2711 = and i1 %bound02709, %bound12710
  %conflict.rdx2712 = or i1 %conflict.rdx2708, %found.conflict2711
  %bound02713 = icmp ult ptr %scevgep2686, %scevgep2697
  %bound12714 = icmp ult ptr %scevgep2695, %scevgep2687
  %found.conflict2715 = and i1 %bound02713, %bound12714
  %conflict.rdx2716 = or i1 %conflict.rdx2712, %found.conflict2715
  br i1 %conflict.rdx2716, label %scalar.ph2718.preheader, label %vector.ph2720

vector.ph2720:                                    ; preds = %vector.memcheck2682
  %broadcast.splatinsert2730 = insertelement <2 x double> poison, double %1803, i64 0
  %broadcast.splat2731 = shufflevector <2 x double> %broadcast.splatinsert2730, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2733 = insertelement <2 x double> poison, double %1797, i64 0
  %broadcast.splat2734 = shufflevector <2 x double> %broadcast.splatinsert2733, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2737 = insertelement <2 x double> poison, double %1805, i64 0
  %broadcast.splat2738 = shufflevector <2 x double> %broadcast.splatinsert2737, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2740 = insertelement <2 x double> poison, double %1799, i64 0
  %broadcast.splat2741 = shufflevector <2 x double> %broadcast.splatinsert2740, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2725

vector.body2725:                                  ; preds = %vector.body2725, %vector.ph2720
  %index2726 = phi i64 [ 0, %vector.ph2720 ], [ %index.next2742, %vector.body2725 ]
  %offset.idx2727 = or disjoint i64 %index2726, 1
  %1808 = getelementptr double, ptr %invariant.gep2474, i64 %offset.idx2727
  %wide.load2728 = load <2 x double>, ptr %1808, align 8, !tbaa !9, !alias.scope !76, !noalias !79
  %1809 = getelementptr double, ptr %invariant.gep2476, i64 %offset.idx2727
  %wide.load2729 = load <2 x double>, ptr %1809, align 8, !tbaa !9, !alias.scope !83
  %1810 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2731, <2 x double> %wide.load2729, <2 x double> %wide.load2728)
  %1811 = getelementptr double, ptr %invariant.gep2478, i64 %offset.idx2727
  %wide.load2732 = load <2 x double>, ptr %1811, align 8, !tbaa !9, !alias.scope !84
  %1812 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2734, <2 x double> %wide.load2732, <2 x double> %1810)
  store <2 x double> %1812, ptr %1808, align 8, !tbaa !9, !alias.scope !76, !noalias !79
  %1813 = getelementptr double, ptr %invariant.gep2480, i64 %offset.idx2727
  %wide.load2735 = load <2 x double>, ptr %1813, align 8, !tbaa !9, !alias.scope !85, !noalias !86
  %wide.load2736 = load <2 x double>, ptr %1809, align 8, !tbaa !9, !alias.scope !83
  %1814 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2738, <2 x double> %wide.load2736, <2 x double> %wide.load2735)
  %wide.load2739 = load <2 x double>, ptr %1811, align 8, !tbaa !9, !alias.scope !84
  %1815 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2741, <2 x double> %wide.load2739, <2 x double> %1814)
  store <2 x double> %1815, ptr %1813, align 8, !tbaa !9, !alias.scope !85, !noalias !86
  %index.next2742 = add nuw i64 %index2726, 2
  %1816 = icmp eq i64 %index.next2742, %n.vec2722
  br i1 %1816, label %middle.block2717, label %vector.body2725, !llvm.loop !87

middle.block2717:                                 ; preds = %vector.body2725
  br i1 %cmp.n2743, label %.loopexit1666, label %scalar.ph2718.preheader

scalar.ph2718.preheader:                          ; preds = %middle.block2717, %vector.memcheck2682, %.lr.ph1884
  %indvars.iv2198.ph = phi i64 [ 1, %vector.memcheck2682 ], [ 1, %.lr.ph1884 ], [ %ind.end2723, %middle.block2717 ]
  br label %scalar.ph2718

scalar.ph2718:                                    ; preds = %scalar.ph2718.preheader, %scalar.ph2718
  %indvars.iv2198 = phi i64 [ %indvars.iv.next2199, %scalar.ph2718 ], [ %indvars.iv2198.ph, %scalar.ph2718.preheader ]
  %gep2475 = getelementptr double, ptr %invariant.gep2474, i64 %indvars.iv2198
  %1817 = load double, ptr %gep2475, align 8, !tbaa !9
  %gep2477 = getelementptr double, ptr %invariant.gep2476, i64 %indvars.iv2198
  %1818 = load double, ptr %gep2477, align 8, !tbaa !9
  %1819 = call double @llvm.fmuladd.f64(double %1803, double %1818, double %1817)
  %gep2479 = getelementptr double, ptr %invariant.gep2478, i64 %indvars.iv2198
  %1820 = load double, ptr %gep2479, align 8, !tbaa !9
  %1821 = call double @llvm.fmuladd.f64(double %1797, double %1820, double %1819)
  store double %1821, ptr %gep2475, align 8, !tbaa !9
  %gep2481 = getelementptr double, ptr %invariant.gep2480, i64 %indvars.iv2198
  %1822 = load double, ptr %gep2481, align 8, !tbaa !9
  %1823 = load double, ptr %gep2477, align 8, !tbaa !9
  %1824 = call double @llvm.fmuladd.f64(double %1805, double %1823, double %1822)
  %1825 = load double, ptr %gep2479, align 8, !tbaa !9
  %1826 = call double @llvm.fmuladd.f64(double %1799, double %1825, double %1824)
  store double %1826, ptr %gep2481, align 8, !tbaa !9
  %indvars.iv.next2199 = add nuw nsw i64 %indvars.iv2198, 1
  %.not1539.not = icmp slt i64 %indvars.iv.next2199, %indvars.iv2218
  br i1 %.not1539.not, label %scalar.ph2718, label %.loopexit1666, !llvm.loop !88

.loopexit1666:                                    ; preds = %scalar.ph2718, %middle.block2717, %.lr.ph1899.split
  %indvars.iv.next2203 = add nuw nsw i64 %indvars.iv2202, 1
  %exitcond2207.not = icmp eq i64 %indvars.iv.next2203, %wide.trip.count2216
  %indvar.next2690 = add i32 %indvar2689, 1
  br i1 %exitcond2207.not, label %.loopexit1670, label %.lr.ph1899.split, !llvm.loop !66

.loopexit1670:                                    ; preds = %.loopexit1666, %.loopexit.us, %1733, %1574
  %1827 = phi i32 [ %1554, %1574 ], [ %.pre2325, %1733 ], [ %.pre2325, %.loopexit.us ], [ %.pre2325, %.loopexit1666 ]
  %.121447 = phi double [ %.914441900, %1574 ], [ %.101445, %1733 ], [ %.101445, %.loopexit.us ], [ %.101445, %.loopexit1666 ]
  %.41421 = phi i32 [ 1, %1574 ], [ 0, %1733 ], [ 0, %.loopexit.us ], [ 0, %.loopexit1666 ]
  %indvars.iv.next2219 = add nsw i64 %indvars.iv2218, -1
  %1828 = icmp sgt i64 %indvars.iv2218, 1
  %indvar.next2643 = add i64 %indvar2642, 1
  br i1 %1828, label %1553, label %._crit_edge1908, !llvm.loop !89

._crit_edge1908:                                  ; preds = %._crit_edge1873, %.loopexit1670, %.loopexit1676
  %1829 = phi i32 [ %1541, %.loopexit1676 ], [ %.pre2325, %._crit_edge1873 ], [ %1827, %.loopexit1670 ]
  %1830 = sub i32 %.214551968, %1829
  %.not1521.not1944 = icmp slt i32 %1829, 1
  br i1 %.not1520, label %1910, label %1831

1831:                                             ; preds = %._crit_edge1908
  %.pre2326.pre = load i32, ptr %3, align 4, !tbaa !5
  br i1 %.not1521.not1944, label %.loopexit1675, label %.lr.ph1927

.lr.ph1927:                                       ; preds = %1831
  %.not15301911 = icmp slt i32 %.pre2326.pre, 1
  %.not15311920 = icmp slt i64 %indvars.iv2305, 2
  %1832 = add i32 %.pre2326.pre, 1
  %1833 = sext i32 %.pre2326.pre to i64
  %wide.trip.count2244 = zext nneg i32 %1829 to i64
  %wide.trip.count2226 = zext i32 %1832 to i64
  %1834 = add nsw i64 %wide.trip.count2226, -1
  %1835 = add nsw i64 %wide.trip.count2226, -2
  %xtraiter2945 = and i64 %1834, 3
  %1836 = icmp ult i64 %1835, 3
  %unroll_iter2947 = and i64 %1834, -4
  %lcmp.mod2946.not = icmp eq i64 %xtraiter2945, 0
  %xtraiter2950 = and i64 %1834, 1
  %1837 = icmp eq i64 %1835, 0
  %unroll_iter2953 = and i64 %1834, -2
  %lcmp.mod2952.not = icmp eq i64 %xtraiter2950, 0
  br label %1838

1838:                                             ; preds = %.lr.ph1927, %1875
  %indvars.iv2240 = phi i64 [ 0, %.lr.ph1927 ], [ %indvars.iv.next2241, %1875 ]
  br i1 %.not15301911, label %.preheader1669.thread, label %.lr.ph1914

.lr.ph1914:                                       ; preds = %1838
  %1839 = add nuw nsw i64 %indvars.iv2240, 2
  %1840 = mul nuw nsw i64 %1839, %1833
  %gep1910 = getelementptr double, ptr %14, i64 %1840
  %1841 = add nuw nsw i64 %indvars.iv2240, 4
  %1842 = mul nuw nsw i64 %1841, %1833
  %invariant.gep2490 = getelementptr double, ptr %55, i64 %1842
  br i1 %1836, label %.preheader1669.unr-lcssa, label %.lr.ph1914.new

.preheader1669.unr-lcssa:                         ; preds = %.lr.ph1914.new, %.lr.ph1914
  %indvars.iv2222.unr = phi i64 [ 1, %.lr.ph1914 ], [ %indvars.iv.next2223.3, %.lr.ph1914.new ]
  br i1 %lcmp.mod2946.not, label %.preheader1669, label %.epil.preheader2944

.epil.preheader2944:                              ; preds = %.preheader1669.unr-lcssa, %.epil.preheader2944
  %indvars.iv2222.epil = phi i64 [ %indvars.iv.next2223.epil, %.epil.preheader2944 ], [ %indvars.iv2222.unr, %.preheader1669.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader2944 ], [ 0, %.preheader1669.unr-lcssa ]
  %1843 = load double, ptr %gep1910, align 8, !tbaa !9
  %gep2489.epil = getelementptr double, ptr %invariant.gep2488, i64 %indvars.iv2222.epil
  %1844 = load double, ptr %gep2489.epil, align 8, !tbaa !9
  %1845 = fmul double %1843, %1844
  %gep2491.epil = getelementptr double, ptr %invariant.gep2490, i64 %indvars.iv2222.epil
  store double %1845, ptr %gep2491.epil, align 8, !tbaa !9
  %indvars.iv.next2223.epil = add nuw nsw i64 %indvars.iv2222.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter2945
  br i1 %epil.iter.cmp.not, label %.preheader1669, label %.epil.preheader2944, !llvm.loop !90

.preheader1669:                                   ; preds = %.epil.preheader2944, %.preheader1669.unr-lcssa
  br i1 %.not15311920, label %1875, label %.lr.ph1922

.preheader1669.thread:                            ; preds = %1838
  br i1 %.not15311920, label %1875, label %._crit_edge1923

.lr.ph1922:                                       ; preds = %.preheader1669
  br i1 %.not15301911, label %._crit_edge1923, label %.lr.ph1918.preheader

.lr.ph1918.preheader:                             ; preds = %.lr.ph1922
  %1846 = add nuw nsw i64 %indvars.iv2240, 4
  %1847 = mul nuw nsw i64 %1846, %1833
  %1848 = add nuw nsw i64 %indvars.iv2240, 2
  %1849 = mul nuw nsw i64 %1848, %1833
  %invariant.gep2496 = getelementptr double, ptr %55, i64 %1849
  %invariant.gep2494 = getelementptr double, ptr %55, i64 %1847
  br label %.lr.ph1918

.lr.ph1914.new:                                   ; preds = %.lr.ph1914, %.lr.ph1914.new
  %indvars.iv2222 = phi i64 [ %indvars.iv.next2223.3, %.lr.ph1914.new ], [ 1, %.lr.ph1914 ]
  %niter2948 = phi i64 [ %niter2948.next.3, %.lr.ph1914.new ], [ 0, %.lr.ph1914 ]
  %1850 = load double, ptr %gep1910, align 8, !tbaa !9
  %gep2489 = getelementptr double, ptr %invariant.gep2488, i64 %indvars.iv2222
  %1851 = load double, ptr %gep2489, align 8, !tbaa !9
  %1852 = fmul double %1850, %1851
  %gep2491 = getelementptr double, ptr %invariant.gep2490, i64 %indvars.iv2222
  store double %1852, ptr %gep2491, align 8, !tbaa !9
  %indvars.iv.next2223 = add nuw nsw i64 %indvars.iv2222, 1
  %1853 = load double, ptr %gep1910, align 8, !tbaa !9
  %gep2489.1 = getelementptr double, ptr %invariant.gep2488, i64 %indvars.iv.next2223
  %1854 = load double, ptr %gep2489.1, align 8, !tbaa !9
  %1855 = fmul double %1853, %1854
  %gep2491.1 = getelementptr double, ptr %invariant.gep2490, i64 %indvars.iv.next2223
  store double %1855, ptr %gep2491.1, align 8, !tbaa !9
  %indvars.iv.next2223.1 = add nuw nsw i64 %indvars.iv2222, 2
  %1856 = load double, ptr %gep1910, align 8, !tbaa !9
  %gep2489.2 = getelementptr double, ptr %invariant.gep2488, i64 %indvars.iv.next2223.1
  %1857 = load double, ptr %gep2489.2, align 8, !tbaa !9
  %1858 = fmul double %1856, %1857
  %gep2491.2 = getelementptr double, ptr %invariant.gep2490, i64 %indvars.iv.next2223.1
  store double %1858, ptr %gep2491.2, align 8, !tbaa !9
  %indvars.iv.next2223.2 = add nuw nsw i64 %indvars.iv2222, 3
  %1859 = load double, ptr %gep1910, align 8, !tbaa !9
  %gep2489.3 = getelementptr double, ptr %invariant.gep2488, i64 %indvars.iv.next2223.2
  %1860 = load double, ptr %gep2489.3, align 8, !tbaa !9
  %1861 = fmul double %1859, %1860
  %gep2491.3 = getelementptr double, ptr %invariant.gep2490, i64 %indvars.iv.next2223.2
  store double %1861, ptr %gep2491.3, align 8, !tbaa !9
  %indvars.iv.next2223.3 = add nuw nsw i64 %indvars.iv2222, 4
  %niter2948.next.3 = add i64 %niter2948, 4
  %niter2948.ncmp.3 = icmp eq i64 %niter2948.next.3, %unroll_iter2947
  br i1 %niter2948.ncmp.3, label %.preheader1669.unr-lcssa, label %.lr.ph1914.new, !llvm.loop !92

.lr.ph1918:                                       ; preds = %.lr.ph1918.preheader, %._crit_edge1919
  %indvars.iv2234 = phi i64 [ 2, %.lr.ph1918.preheader ], [ %indvars.iv.next2235, %._crit_edge1919 ]
  %gep2497 = getelementptr double, ptr %invariant.gep2496, i64 %indvars.iv2234
  %1862 = mul nsw i64 %indvars.iv2234, %986
  %invariant.gep2492 = getelementptr double, ptr %54, i64 %1862
  br i1 %1837, label %._crit_edge1919.unr-lcssa, label %.lr.ph1918.new

.lr.ph1918.new:                                   ; preds = %.lr.ph1918, %.lr.ph1918.new
  %indvars.iv2228 = phi i64 [ %indvars.iv.next2229.1, %.lr.ph1918.new ], [ 1, %.lr.ph1918 ]
  %niter2954 = phi i64 [ %niter2954.next.1, %.lr.ph1918.new ], [ 0, %.lr.ph1918 ]
  %1863 = load double, ptr %gep2497, align 8, !tbaa !9
  %gep2493 = getelementptr double, ptr %invariant.gep2492, i64 %indvars.iv2228
  %1864 = load double, ptr %gep2493, align 8, !tbaa !9
  %gep2495 = getelementptr double, ptr %invariant.gep2494, i64 %indvars.iv2228
  %1865 = load double, ptr %gep2495, align 8, !tbaa !9
  %1866 = call double @llvm.fmuladd.f64(double %1863, double %1864, double %1865)
  store double %1866, ptr %gep2495, align 8, !tbaa !9
  %indvars.iv.next2229 = add nuw nsw i64 %indvars.iv2228, 1
  %1867 = load double, ptr %gep2497, align 8, !tbaa !9
  %gep2493.1 = getelementptr double, ptr %invariant.gep2492, i64 %indvars.iv.next2229
  %1868 = load double, ptr %gep2493.1, align 8, !tbaa !9
  %gep2495.1 = getelementptr double, ptr %invariant.gep2494, i64 %indvars.iv.next2229
  %1869 = load double, ptr %gep2495.1, align 8, !tbaa !9
  %1870 = call double @llvm.fmuladd.f64(double %1867, double %1868, double %1869)
  store double %1870, ptr %gep2495.1, align 8, !tbaa !9
  %indvars.iv.next2229.1 = add nuw nsw i64 %indvars.iv2228, 2
  %niter2954.next.1 = add i64 %niter2954, 2
  %niter2954.ncmp.1 = icmp eq i64 %niter2954.next.1, %unroll_iter2953
  br i1 %niter2954.ncmp.1, label %._crit_edge1919.unr-lcssa, label %.lr.ph1918.new, !llvm.loop !93

._crit_edge1919.unr-lcssa:                        ; preds = %.lr.ph1918.new, %.lr.ph1918
  %indvars.iv2228.unr = phi i64 [ 1, %.lr.ph1918 ], [ %indvars.iv.next2229.1, %.lr.ph1918.new ]
  br i1 %lcmp.mod2952.not, label %._crit_edge1919, label %._crit_edge1919.epilog-lcssa

._crit_edge1919.epilog-lcssa:                     ; preds = %._crit_edge1919.unr-lcssa
  %1871 = load double, ptr %gep2497, align 8, !tbaa !9
  %gep2493.epil = getelementptr double, ptr %invariant.gep2492, i64 %indvars.iv2228.unr
  %1872 = load double, ptr %gep2493.epil, align 8, !tbaa !9
  %gep2495.epil = getelementptr double, ptr %invariant.gep2494, i64 %indvars.iv2228.unr
  %1873 = load double, ptr %gep2495.epil, align 8, !tbaa !9
  %1874 = call double @llvm.fmuladd.f64(double %1871, double %1872, double %1873)
  store double %1874, ptr %gep2495.epil, align 8, !tbaa !9
  br label %._crit_edge1919

._crit_edge1919:                                  ; preds = %._crit_edge1919.unr-lcssa, %._crit_edge1919.epilog-lcssa
  %indvars.iv.next2235 = add nuw nsw i64 %indvars.iv2234, 1
  %exitcond2239.not = icmp eq i64 %indvars.iv.next2235, %indvars.iv2301
  br i1 %exitcond2239.not, label %._crit_edge1923, label %.lr.ph1918, !llvm.loop !94

._crit_edge1923:                                  ; preds = %._crit_edge1919, %.preheader1669.thread, %.lr.ph1922
  store i32 %.pre2326.pre, ptr %24, align 4, !tbaa !5
  br label %1875

1875:                                             ; preds = %.preheader1669.thread, %._crit_edge1923, %.preheader1669
  %indvars.iv.next2241 = add nuw nsw i64 %indvars.iv2240, 1
  %exitcond2245.not = icmp eq i64 %indvars.iv.next2241, %wide.trip.count2244
  br i1 %exitcond2245.not, label %._crit_edge1928, label %1838, !llvm.loop !95

._crit_edge1928:                                  ; preds = %1875
  %.not15291929 = icmp slt i32 %.pre2326.pre, 1
  %or.cond2519 = select i1 %.not1521.not1944, i1 true, i1 %.not15291929
  br i1 %or.cond2519, label %.loopexit1675, label %.lr.ph1932.preheader

.lr.ph1932.preheader:                             ; preds = %._crit_edge1928
  %1876 = add nuw i32 %.pre2326.pre, 1
  %1877 = zext nneg i32 %.pre2326.pre to i64
  %wide.trip.count2259 = zext nneg i32 %1829 to i64
  %wide.trip.count2253 = zext i32 %1876 to i64
  %1878 = shl nuw nsw i64 %1877, 5
  %1879 = add i64 %1878, %19
  %1880 = sub i64 %997, %1879
  %1881 = mul nsw i64 %1877, -8
  %1882 = add nsw i64 %wide.trip.count2226, -1
  %min.iters.check2627 = icmp ult i32 %1832, 5
  %n.vec2630 = and i64 %1882, -4
  %ind.end2631 = or disjoint i64 %n.vec2630, 1
  %cmp.n2639 = icmp eq i64 %1882, %n.vec2630
  br label %.lr.ph1932

.lr.ph1932:                                       ; preds = %.lr.ph1932.preheader, %._crit_edge1933
  %indvars.iv2255 = phi i64 [ 0, %.lr.ph1932.preheader ], [ %indvars.iv.next2256, %._crit_edge1933 ]
  %1883 = add nuw nsw i64 %indvars.iv2255, 4
  %1884 = mul nuw nsw i64 %1883, %1877
  %1885 = trunc nuw nsw i64 %indvars.iv2255 to i32
  %1886 = add nsw i32 %1830, %1885
  %1887 = mul nsw i32 %1886, %52
  %1888 = sext i32 %1887 to i64
  %invariant.gep2498 = getelementptr inbounds double, ptr %55, i64 %1884
  %invariant.gep2500 = getelementptr double, ptr %54, i64 %1888
  br i1 %min.iters.check2627, label %scalar.ph2626.preheader, label %vector.memcheck2623

vector.memcheck2623:                              ; preds = %.lr.ph1932
  %1889 = mul i64 %1881, %indvars.iv2255
  %1890 = add i64 %1880, %1889
  %1891 = trunc i64 %indvars.iv2255 to i32
  %1892 = add i32 %1830, %1891
  %1893 = mul i32 %52, %1892
  %1894 = sext i32 %1893 to i64
  %1895 = shl nsw i64 %1894, 3
  %1896 = add i64 %1890, %1895
  %diff.check2624 = icmp ult i64 %1896, 32
  br i1 %diff.check2624, label %scalar.ph2626.preheader, label %vector.body2633

vector.body2633:                                  ; preds = %vector.memcheck2623, %vector.body2633
  %index2634 = phi i64 [ %index.next2638, %vector.body2633 ], [ 0, %vector.memcheck2623 ]
  %offset.idx2635 = or disjoint i64 %index2634, 1
  %1897 = getelementptr inbounds double, ptr %invariant.gep2498, i64 %offset.idx2635
  %1898 = getelementptr inbounds i8, ptr %1897, i64 16
  %wide.load2636 = load <2 x double>, ptr %1897, align 8, !tbaa !9
  %wide.load2637 = load <2 x double>, ptr %1898, align 8, !tbaa !9
  %1899 = getelementptr double, ptr %invariant.gep2500, i64 %offset.idx2635
  %1900 = getelementptr i8, ptr %1899, i64 16
  store <2 x double> %wide.load2636, ptr %1899, align 8, !tbaa !9
  store <2 x double> %wide.load2637, ptr %1900, align 8, !tbaa !9
  %index.next2638 = add nuw i64 %index2634, 4
  %1901 = icmp eq i64 %index.next2638, %n.vec2630
  br i1 %1901, label %middle.block2625, label %vector.body2633, !llvm.loop !96

middle.block2625:                                 ; preds = %vector.body2633
  br i1 %cmp.n2639, label %._crit_edge1933, label %scalar.ph2626.preheader

scalar.ph2626.preheader:                          ; preds = %middle.block2625, %vector.memcheck2623, %.lr.ph1932
  %indvars.iv2249.ph = phi i64 [ 1, %vector.memcheck2623 ], [ 1, %.lr.ph1932 ], [ %ind.end2631, %middle.block2625 ]
  %1902 = sub nsw i64 %wide.trip.count2226, %indvars.iv2249.ph
  %xtraiter2955 = and i64 %1902, 3
  %lcmp.mod2956.not = icmp eq i64 %xtraiter2955, 0
  br i1 %lcmp.mod2956.not, label %scalar.ph2626.prol.loopexit, label %scalar.ph2626.prol

scalar.ph2626.prol:                               ; preds = %scalar.ph2626.preheader, %scalar.ph2626.prol
  %indvars.iv2249.prol = phi i64 [ %indvars.iv.next2250.prol, %scalar.ph2626.prol ], [ %indvars.iv2249.ph, %scalar.ph2626.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph2626.prol ], [ 0, %scalar.ph2626.preheader ]
  %gep2499.prol = getelementptr inbounds double, ptr %invariant.gep2498, i64 %indvars.iv2249.prol
  %1903 = load double, ptr %gep2499.prol, align 8, !tbaa !9
  %gep2501.prol = getelementptr double, ptr %invariant.gep2500, i64 %indvars.iv2249.prol
  store double %1903, ptr %gep2501.prol, align 8, !tbaa !9
  %indvars.iv.next2250.prol = add nuw nsw i64 %indvars.iv2249.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter2955
  br i1 %prol.iter.cmp.not, label %scalar.ph2626.prol.loopexit, label %scalar.ph2626.prol, !llvm.loop !97

scalar.ph2626.prol.loopexit:                      ; preds = %scalar.ph2626.prol, %scalar.ph2626.preheader
  %indvars.iv2249.unr = phi i64 [ %indvars.iv2249.ph, %scalar.ph2626.preheader ], [ %indvars.iv.next2250.prol, %scalar.ph2626.prol ]
  %1904 = sub nsw i64 %indvars.iv2249.ph, %wide.trip.count2226
  %1905 = icmp ugt i64 %1904, -4
  br i1 %1905, label %._crit_edge1933, label %scalar.ph2626

scalar.ph2626:                                    ; preds = %scalar.ph2626.prol.loopexit, %scalar.ph2626
  %indvars.iv2249 = phi i64 [ %indvars.iv.next2250.3, %scalar.ph2626 ], [ %indvars.iv2249.unr, %scalar.ph2626.prol.loopexit ]
  %gep2499 = getelementptr inbounds double, ptr %invariant.gep2498, i64 %indvars.iv2249
  %1906 = load double, ptr %gep2499, align 8, !tbaa !9
  %gep2501 = getelementptr double, ptr %invariant.gep2500, i64 %indvars.iv2249
  store double %1906, ptr %gep2501, align 8, !tbaa !9
  %indvars.iv.next2250 = add nuw nsw i64 %indvars.iv2249, 1
  %gep2499.1 = getelementptr inbounds double, ptr %invariant.gep2498, i64 %indvars.iv.next2250
  %1907 = load double, ptr %gep2499.1, align 8, !tbaa !9
  %gep2501.1 = getelementptr double, ptr %invariant.gep2500, i64 %indvars.iv.next2250
  store double %1907, ptr %gep2501.1, align 8, !tbaa !9
  %indvars.iv.next2250.1 = add nuw nsw i64 %indvars.iv2249, 2
  %gep2499.2 = getelementptr inbounds double, ptr %invariant.gep2498, i64 %indvars.iv.next2250.1
  %1908 = load double, ptr %gep2499.2, align 8, !tbaa !9
  %gep2501.2 = getelementptr double, ptr %invariant.gep2500, i64 %indvars.iv.next2250.1
  store double %1908, ptr %gep2501.2, align 8, !tbaa !9
  %indvars.iv.next2250.2 = add nuw nsw i64 %indvars.iv2249, 3
  %gep2499.3 = getelementptr inbounds double, ptr %invariant.gep2498, i64 %indvars.iv.next2250.2
  %1909 = load double, ptr %gep2499.3, align 8, !tbaa !9
  %gep2501.3 = getelementptr double, ptr %invariant.gep2500, i64 %indvars.iv.next2250.2
  store double %1909, ptr %gep2501.3, align 8, !tbaa !9
  %indvars.iv.next2250.3 = add nuw nsw i64 %indvars.iv2249, 4
  %exitcond2254.not.3 = icmp eq i64 %indvars.iv.next2250.3, %wide.trip.count2253
  br i1 %exitcond2254.not.3, label %._crit_edge1933, label %scalar.ph2626, !llvm.loop !98

._crit_edge1933:                                  ; preds = %scalar.ph2626.prol.loopexit, %scalar.ph2626, %middle.block2625
  %indvars.iv.next2256 = add nuw nsw i64 %indvars.iv2255, 1
  %exitcond2260.not = icmp eq i64 %indvars.iv.next2256, %wide.trip.count2259
  br i1 %exitcond2260.not, label %.loopexit1675, label %.lr.ph1932, !llvm.loop !99

1910:                                             ; preds = %._crit_edge1908
  br i1 %.not1521.not1944, label %.loopexit1675, label %.lr.ph1947

.lr.ph1947:                                       ; preds = %1910
  %1911 = load i32, ptr %3, align 4, !tbaa !5
  %.not15221939 = icmp slt i32 %1911, 1
  %1912 = add i32 %1911, 1
  %1913 = sext i32 %1911 to i64
  %wide.trip.count2275 = zext nneg i32 %1829 to i64
  %wide.trip.count2269 = zext i32 %1912 to i64
  %1914 = shl nsw i64 %1913, 4
  %1915 = add i64 %1914, %21
  %1916 = sub i64 %994, %1915
  %1917 = mul nsw i64 %1913, -8
  %1918 = add nsw i64 %wide.trip.count2269, -1
  %min.iters.check2610 = icmp ult i32 %1912, 5
  %n.vec2613 = and i64 %1918, -4
  %ind.end2614 = or disjoint i64 %n.vec2613, 1
  %cmp.n2622 = icmp eq i64 %1918, %n.vec2613
  br label %1919

1919:                                             ; preds = %.lr.ph1947, %._crit_edge1943
  %indvars.iv2271 = phi i64 [ 0, %.lr.ph1947 ], [ %indvars.iv.next2272, %._crit_edge1943 ]
  br i1 %.not15221939, label %._crit_edge1943, label %.lr.ph1942

.lr.ph1942:                                       ; preds = %1919
  %1920 = mul i64 %1917, %indvars.iv2271
  %1921 = add i64 %1916, %1920
  %1922 = trunc i64 %indvars.iv2271 to i32
  %1923 = add i32 %1830, %1922
  %1924 = mul i32 %52, %1923
  %1925 = sext i32 %1924 to i64
  %1926 = shl nsw i64 %1925, 3
  %1927 = add i64 %1921, %1926
  %1928 = add nuw nsw i64 %indvars.iv2271, 2
  %1929 = mul nuw nsw i64 %1928, %1913
  %1930 = trunc nuw nsw i64 %indvars.iv2271 to i32
  %1931 = add nsw i32 %1830, %1930
  %1932 = mul nsw i32 %1931, %52
  %1933 = sext i32 %1932 to i64
  %invariant.gep2502 = getelementptr double, ptr %55, i64 %1929
  %invariant.gep2504 = getelementptr double, ptr %54, i64 %1933
  %diff.check = icmp ult i64 %1927, 32
  %or.cond2908 = select i1 %min.iters.check2610, i1 true, i1 %diff.check
  br i1 %or.cond2908, label %scalar.ph2609.preheader, label %vector.body2616

vector.body2616:                                  ; preds = %.lr.ph1942, %vector.body2616
  %index2617 = phi i64 [ %index.next2621, %vector.body2616 ], [ 0, %.lr.ph1942 ]
  %offset.idx2618 = or disjoint i64 %index2617, 1
  %1934 = getelementptr double, ptr %invariant.gep2502, i64 %offset.idx2618
  %1935 = getelementptr i8, ptr %1934, i64 16
  %wide.load2619 = load <2 x double>, ptr %1934, align 8, !tbaa !9
  %wide.load2620 = load <2 x double>, ptr %1935, align 8, !tbaa !9
  %1936 = getelementptr double, ptr %invariant.gep2504, i64 %offset.idx2618
  %1937 = getelementptr i8, ptr %1936, i64 16
  store <2 x double> %wide.load2619, ptr %1936, align 8, !tbaa !9
  store <2 x double> %wide.load2620, ptr %1937, align 8, !tbaa !9
  %index.next2621 = add nuw i64 %index2617, 4
  %1938 = icmp eq i64 %index.next2621, %n.vec2613
  br i1 %1938, label %middle.block2608, label %vector.body2616, !llvm.loop !100

middle.block2608:                                 ; preds = %vector.body2616
  br i1 %cmp.n2622, label %._crit_edge1943, label %scalar.ph2609.preheader

scalar.ph2609.preheader:                          ; preds = %middle.block2608, %.lr.ph1942
  %indvars.iv2265.ph = phi i64 [ 1, %.lr.ph1942 ], [ %ind.end2614, %middle.block2608 ]
  %1939 = sub nsw i64 %wide.trip.count2269, %indvars.iv2265.ph
  %xtraiter2957 = and i64 %1939, 3
  %lcmp.mod2958.not = icmp eq i64 %xtraiter2957, 0
  br i1 %lcmp.mod2958.not, label %scalar.ph2609.prol.loopexit, label %scalar.ph2609.prol

scalar.ph2609.prol:                               ; preds = %scalar.ph2609.preheader, %scalar.ph2609.prol
  %indvars.iv2265.prol = phi i64 [ %indvars.iv.next2266.prol, %scalar.ph2609.prol ], [ %indvars.iv2265.ph, %scalar.ph2609.preheader ]
  %prol.iter2959 = phi i64 [ %prol.iter2959.next, %scalar.ph2609.prol ], [ 0, %scalar.ph2609.preheader ]
  %gep2503.prol = getelementptr double, ptr %invariant.gep2502, i64 %indvars.iv2265.prol
  %1940 = load double, ptr %gep2503.prol, align 8, !tbaa !9
  %gep2505.prol = getelementptr double, ptr %invariant.gep2504, i64 %indvars.iv2265.prol
  store double %1940, ptr %gep2505.prol, align 8, !tbaa !9
  %indvars.iv.next2266.prol = add nuw nsw i64 %indvars.iv2265.prol, 1
  %prol.iter2959.next = add i64 %prol.iter2959, 1
  %prol.iter2959.cmp.not = icmp eq i64 %prol.iter2959.next, %xtraiter2957
  br i1 %prol.iter2959.cmp.not, label %scalar.ph2609.prol.loopexit, label %scalar.ph2609.prol, !llvm.loop !101

scalar.ph2609.prol.loopexit:                      ; preds = %scalar.ph2609.prol, %scalar.ph2609.preheader
  %indvars.iv2265.unr = phi i64 [ %indvars.iv2265.ph, %scalar.ph2609.preheader ], [ %indvars.iv.next2266.prol, %scalar.ph2609.prol ]
  %1941 = sub nsw i64 %indvars.iv2265.ph, %wide.trip.count2269
  %1942 = icmp ugt i64 %1941, -4
  br i1 %1942, label %._crit_edge1943, label %scalar.ph2609

scalar.ph2609:                                    ; preds = %scalar.ph2609.prol.loopexit, %scalar.ph2609
  %indvars.iv2265 = phi i64 [ %indvars.iv.next2266.3, %scalar.ph2609 ], [ %indvars.iv2265.unr, %scalar.ph2609.prol.loopexit ]
  %gep2503 = getelementptr double, ptr %invariant.gep2502, i64 %indvars.iv2265
  %1943 = load double, ptr %gep2503, align 8, !tbaa !9
  %gep2505 = getelementptr double, ptr %invariant.gep2504, i64 %indvars.iv2265
  store double %1943, ptr %gep2505, align 8, !tbaa !9
  %indvars.iv.next2266 = add nuw nsw i64 %indvars.iv2265, 1
  %gep2503.1 = getelementptr double, ptr %invariant.gep2502, i64 %indvars.iv.next2266
  %1944 = load double, ptr %gep2503.1, align 8, !tbaa !9
  %gep2505.1 = getelementptr double, ptr %invariant.gep2504, i64 %indvars.iv.next2266
  store double %1944, ptr %gep2505.1, align 8, !tbaa !9
  %indvars.iv.next2266.1 = add nuw nsw i64 %indvars.iv2265, 2
  %gep2503.2 = getelementptr double, ptr %invariant.gep2502, i64 %indvars.iv.next2266.1
  %1945 = load double, ptr %gep2503.2, align 8, !tbaa !9
  %gep2505.2 = getelementptr double, ptr %invariant.gep2504, i64 %indvars.iv.next2266.1
  store double %1945, ptr %gep2505.2, align 8, !tbaa !9
  %indvars.iv.next2266.2 = add nuw nsw i64 %indvars.iv2265, 3
  %gep2503.3 = getelementptr double, ptr %invariant.gep2502, i64 %indvars.iv.next2266.2
  %1946 = load double, ptr %gep2503.3, align 8, !tbaa !9
  %gep2505.3 = getelementptr double, ptr %invariant.gep2504, i64 %indvars.iv.next2266.2
  store double %1946, ptr %gep2505.3, align 8, !tbaa !9
  %indvars.iv.next2266.3 = add nuw nsw i64 %indvars.iv2265, 4
  %exitcond2270.not.3 = icmp eq i64 %indvars.iv.next2266.3, %wide.trip.count2269
  br i1 %exitcond2270.not.3, label %._crit_edge1943, label %scalar.ph2609, !llvm.loop !102

._crit_edge1943:                                  ; preds = %scalar.ph2609.prol.loopexit, %scalar.ph2609, %middle.block2608, %1919
  %indvars.iv.next2272 = add nuw nsw i64 %indvars.iv2271, 1
  %exitcond2276.not = icmp eq i64 %indvars.iv.next2272, %wide.trip.count2275
  br i1 %exitcond2276.not, label %.loopexit1675, label %1919, !llvm.loop !103

.loopexit1675:                                    ; preds = %._crit_edge1933, %._crit_edge1943, %1831, %._crit_edge1928, %1910
  %.11452 = phi i32 [ %indvars2312, %1910 ], [ %.pre2326.pre, %._crit_edge1928 ], [ %.pre2326.pre, %1831 ], [ %indvars2312, %._crit_edge1943 ], [ %.pre2326.pre, %._crit_edge1933 ]
  store i32 %.11452, ptr %23, align 4, !tbaa !5
  %.not15251955 = icmp slt i32 %.11452, 1
  br i1 %.not1512163716521653, label %1966, label %1947

1947:                                             ; preds = %.loopexit1675
  br i1 %.not15251955, label %.loopexit1673, label %.lr.ph1952

.lr.ph1952:                                       ; preds = %1947
  %1948 = mul nsw i32 %1830, %52
  %1949 = add nsw i32 %1830, 1
  %1950 = mul nsw i32 %1949, %52
  %1951 = sext i32 %1948 to i64
  %1952 = sext i32 %1950 to i64
  %1953 = add nuw i32 %.11452, 1
  %wide.trip.count2281 = zext i32 %1953 to i64
  %invariant.gep2506 = getelementptr double, ptr %54, i64 %1951
  %invariant.gep2508 = getelementptr double, ptr %54, i64 %1952
  br label %1954

1954:                                             ; preds = %.lr.ph1952, %1954
  %indvars.iv2277 = phi i64 [ 1, %.lr.ph1952 ], [ %indvars.iv.next2278, %1954 ]
  %.1314481949 = phi double [ 0.000000e+00, %.lr.ph1952 ], [ %1965, %1954 ]
  %gep2507 = getelementptr double, ptr %invariant.gep2506, i64 %indvars.iv2277
  %1955 = load double, ptr %gep2507, align 8, !tbaa !9
  %1956 = fcmp oge double %1955, 0.000000e+00
  %1957 = fneg double %1955
  %1958 = select i1 %1956, double %1955, double %1957
  %gep2509 = getelementptr double, ptr %invariant.gep2508, i64 %indvars.iv2277
  %1959 = load double, ptr %gep2509, align 8, !tbaa !9
  %1960 = fcmp oge double %1959, 0.000000e+00
  %1961 = fneg double %1959
  %1962 = select i1 %1960, double %1959, double %1961
  %1963 = fadd double %1958, %1962
  %1964 = fcmp oge double %.1314481949, %1963
  %1965 = select i1 %1964, double %.1314481949, double %1963
  %indvars.iv.next2278 = add nuw nsw i64 %indvars.iv2277, 1
  %exitcond2282.not = icmp eq i64 %indvars.iv.next2278, %wide.trip.count2281
  br i1 %exitcond2282.not, label %..loopexit1674_crit_edge, label %1954, !llvm.loop !104

1966:                                             ; preds = %.loopexit1675
  br i1 %.not15251955, label %.loopexit1673, label %.lr.ph1959

.lr.ph1959:                                       ; preds = %1966
  %1967 = mul nsw i32 %1830, %52
  %1968 = sext i32 %1967 to i64
  %invariant.gep2510 = getelementptr double, ptr %54, i64 %1968
  %1969 = zext nneg i32 %.11452 to i64
  %xtraiter2961 = and i64 %1969, 1
  %1970 = icmp eq i32 %.11452, 1
  br i1 %1970, label %..loopexit1673_crit_edge.unr-lcssa, label %.lr.ph1959.new

.lr.ph1959.new:                                   ; preds = %.lr.ph1959
  %unroll_iter2966 = and i64 %1969, 2147483646
  %invariant.gep2990 = getelementptr i8, ptr %invariant.gep2510, i64 8
  br label %1971

1971:                                             ; preds = %1971, %.lr.ph1959.new
  %indvars.iv2283 = phi i64 [ 1, %.lr.ph1959.new ], [ %indvars.iv.next2284.1, %1971 ]
  %.1414491956 = phi double [ 0.000000e+00, %.lr.ph1959.new ], [ %1983, %1971 ]
  %niter2967 = phi i64 [ 0, %.lr.ph1959.new ], [ %niter2967.next.1, %1971 ]
  %gep2511 = getelementptr double, ptr %invariant.gep2510, i64 %indvars.iv2283
  %1972 = load double, ptr %gep2511, align 8, !tbaa !9
  %1973 = fcmp oge double %1972, 0.000000e+00
  %1974 = fneg double %1972
  %1975 = select i1 %1973, double %1972, double %1974
  %1976 = fcmp oge double %.1414491956, %1975
  %1977 = select i1 %1976, double %.1414491956, double %1975
  %gep2991 = getelementptr double, ptr %invariant.gep2990, i64 %indvars.iv2283
  %1978 = load double, ptr %gep2991, align 8, !tbaa !9
  %1979 = fcmp oge double %1978, 0.000000e+00
  %1980 = fneg double %1978
  %1981 = select i1 %1979, double %1978, double %1980
  %1982 = fcmp oge double %1977, %1981
  %1983 = select i1 %1982, double %1977, double %1981
  %indvars.iv.next2284.1 = add nuw nsw i64 %indvars.iv2283, 2
  %niter2967.next.1 = add i64 %niter2967, 2
  %niter2967.ncmp.1 = icmp eq i64 %niter2967.next.1, %unroll_iter2966
  br i1 %niter2967.ncmp.1, label %..loopexit1673_crit_edge.unr-lcssa, label %1971, !llvm.loop !105

..loopexit1673_crit_edge.unr-lcssa:               ; preds = %1971, %.lr.ph1959
  %.lcssa2915.ph = phi double [ poison, %.lr.ph1959 ], [ %1978, %1971 ]
  %.lcssa2914.ph = phi double [ poison, %.lr.ph1959 ], [ %1983, %1971 ]
  %indvars.iv2283.unr = phi i64 [ 1, %.lr.ph1959 ], [ %indvars.iv.next2284.1, %1971 ]
  %.1414491956.unr = phi double [ 0.000000e+00, %.lr.ph1959 ], [ %1983, %1971 ]
  %lcmp.mod2963.not = icmp eq i64 %xtraiter2961, 0
  br i1 %lcmp.mod2963.not, label %..loopexit1673_crit_edge, label %..loopexit1673_crit_edge.epilog-lcssa

..loopexit1673_crit_edge.epilog-lcssa:            ; preds = %..loopexit1673_crit_edge.unr-lcssa
  %gep2511.epil = getelementptr double, ptr %invariant.gep2510, i64 %indvars.iv2283.unr
  %1984 = load double, ptr %gep2511.epil, align 8, !tbaa !9
  %1985 = fcmp oge double %1984, 0.000000e+00
  %1986 = fneg double %1984
  %1987 = select i1 %1985, double %1984, double %1986
  %1988 = fcmp oge double %.1414491956.unr, %1987
  %1989 = select i1 %1988, double %.1414491956.unr, double %1987
  br label %..loopexit1673_crit_edge

..loopexit1673_crit_edge:                         ; preds = %..loopexit1673_crit_edge.unr-lcssa, %..loopexit1673_crit_edge.epilog-lcssa
  %.lcssa2915 = phi double [ %.lcssa2915.ph, %..loopexit1673_crit_edge.unr-lcssa ], [ %1984, %..loopexit1673_crit_edge.epilog-lcssa ]
  %.lcssa2914 = phi double [ %.lcssa2914.ph, %..loopexit1673_crit_edge.unr-lcssa ], [ %1989, %..loopexit1673_crit_edge.epilog-lcssa ]
  store double %.lcssa2915, ptr %25, align 8, !tbaa !9
  br label %.loopexit1673

..loopexit1674_crit_edge:                         ; preds = %1954
  store double %1955, ptr %25, align 8, !tbaa !9
  br label %.loopexit1673

.loopexit1673:                                    ; preds = %1947, %..loopexit1674_crit_edge, %1966, %..loopexit1673_crit_edge
  %.151450 = phi double [ %.lcssa2914, %..loopexit1673_crit_edge ], [ 0.000000e+00, %1966 ], [ %1965, %..loopexit1674_crit_edge ], [ 0.000000e+00, %1947 ]
  %1990 = load double, ptr %39, align 8
  %1991 = fcmp ogt double %.151450, %1990
  br i1 %1991, label %1992, label %.loopexit1672

1992:                                             ; preds = %.loopexit1673
  %1993 = fdiv double 1.000000e+00, %.151450
  %1994 = add nsw i32 %1829, -1
  store i32 %1994, ptr %23, align 4, !tbaa !5
  %.not1527.not1966 = icmp sgt i32 %1829, 0
  br i1 %.not1527.not1966, label %.preheader1668.lr.ph, label %.loopexit1672

.preheader1668.lr.ph:                             ; preds = %1992
  %.not15281962 = icmp slt i32 %.11452, 1
  %1995 = add i32 %.11452, 1
  %wide.trip.count2299 = zext nneg i32 %1829 to i64
  %wide.trip.count2293 = zext i32 %1995 to i64
  %1996 = add nsw i64 %wide.trip.count2293, -1
  %min.iters.check2593 = icmp ult i32 %1995, 5
  %n.vec2596 = and i64 %1996, -4
  %ind.end2597 = or disjoint i64 %n.vec2596, 1
  %broadcast.splatinsert2604 = insertelement <2 x double> poison, double %1993, i64 0
  %broadcast.splat2605 = shufflevector <2 x double> %broadcast.splatinsert2604, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n2607 = icmp eq i64 %1996, %n.vec2596
  br label %.preheader1668

.preheader1668:                                   ; preds = %.preheader1668.lr.ph, %._crit_edge1965
  %indvars.iv2295 = phi i64 [ 0, %.preheader1668.lr.ph ], [ %indvars.iv.next2296, %._crit_edge1965 ]
  br i1 %.not15281962, label %._crit_edge1965, label %.lr.ph1964

.lr.ph1964:                                       ; preds = %.preheader1668
  %1997 = trunc nuw nsw i64 %indvars.iv2295 to i32
  %1998 = add nsw i32 %1830, %1997
  %1999 = mul nsw i32 %1998, %52
  %2000 = sext i32 %1999 to i64
  %invariant.gep2512 = getelementptr double, ptr %54, i64 %2000
  br i1 %min.iters.check2593, label %scalar.ph2592.preheader, label %vector.body2599

vector.body2599:                                  ; preds = %.lr.ph1964, %vector.body2599
  %index2600 = phi i64 [ %index.next2606, %vector.body2599 ], [ 0, %.lr.ph1964 ]
  %offset.idx2601 = or disjoint i64 %index2600, 1
  %2001 = getelementptr double, ptr %invariant.gep2512, i64 %offset.idx2601
  %2002 = getelementptr i8, ptr %2001, i64 16
  %wide.load2602 = load <2 x double>, ptr %2001, align 8, !tbaa !9
  %wide.load2603 = load <2 x double>, ptr %2002, align 8, !tbaa !9
  %2003 = fmul <2 x double> %broadcast.splat2605, %wide.load2602
  %2004 = fmul <2 x double> %broadcast.splat2605, %wide.load2603
  store <2 x double> %2003, ptr %2001, align 8, !tbaa !9
  store <2 x double> %2004, ptr %2002, align 8, !tbaa !9
  %index.next2606 = add nuw i64 %index2600, 4
  %2005 = icmp eq i64 %index.next2606, %n.vec2596
  br i1 %2005, label %middle.block2591, label %vector.body2599, !llvm.loop !106

middle.block2591:                                 ; preds = %vector.body2599
  br i1 %cmp.n2607, label %._crit_edge1965, label %scalar.ph2592.preheader

scalar.ph2592.preheader:                          ; preds = %middle.block2591, %.lr.ph1964
  %indvars.iv2289.ph = phi i64 [ 1, %.lr.ph1964 ], [ %ind.end2597, %middle.block2591 ]
  br label %scalar.ph2592

scalar.ph2592:                                    ; preds = %scalar.ph2592.preheader, %scalar.ph2592
  %indvars.iv2289 = phi i64 [ %indvars.iv.next2290, %scalar.ph2592 ], [ %indvars.iv2289.ph, %scalar.ph2592.preheader ]
  %gep2513 = getelementptr double, ptr %invariant.gep2512, i64 %indvars.iv2289
  %2006 = load double, ptr %gep2513, align 8, !tbaa !9
  %2007 = fmul double %1993, %2006
  store double %2007, ptr %gep2513, align 8, !tbaa !9
  %indvars.iv.next2290 = add nuw nsw i64 %indvars.iv2289, 1
  %exitcond2294.not = icmp eq i64 %indvars.iv.next2290, %wide.trip.count2293
  br i1 %exitcond2294.not, label %._crit_edge1965, label %scalar.ph2592, !llvm.loop !107

._crit_edge1965:                                  ; preds = %scalar.ph2592, %middle.block2591, %.preheader1668
  %indvars.iv.next2296 = add nuw nsw i64 %indvars.iv2295, 1
  %exitcond2300.not = icmp eq i64 %indvars.iv.next2296, %wide.trip.count2299
  br i1 %exitcond2300.not, label %.loopexit1672, label %.preheader1668, !llvm.loop !108

.loopexit1672:                                    ; preds = %._crit_edge1965, %.thread2373, %1992, %1070, %._crit_edge1838, %1104, %.loopexit1673
  %2008 = phi double [ %1990, %.loopexit1673 ], [ %1071, %._crit_edge1838 ], [ %1071, %1104 ], [ %1071, %1070 ], [ %1990, %1992 ], [ %1071, %.thread2373 ], [ %1990, %._crit_edge1965 ]
  %.31456 = phi i32 [ %1830, %.loopexit1673 ], [ %1127, %._crit_edge1838 ], [ %.214551968, %1104 ], [ %.214551968, %1070 ], [ %1830, %1992 ], [ %.214551968, %.thread2373 ], [ %1830, %._crit_edge1965 ]
  %.8 = phi i32 [ %.7163816511655, %.loopexit1673 ], [ 0, %._crit_edge1838 ], [ 0, %1104 ], [ 0, %1070 ], [ %.7163816511655, %1992 ], [ 1, %.thread2373 ], [ %.7163816511655, %._crit_edge1965 ]
  %indvars.iv.next2306 = add nsw i64 %indvars.iv2305, -1
  %2009 = icmp sgt i64 %indvars.iv2305, 1
  %indvars.iv.next2304 = add nsw i64 %indvars.iv2303, -1
  %indvars.iv.next2302 = add nsw i64 %indvars.iv2301, -1
  %indvar.next2745 = add i64 %indvar2744, 1
  br i1 %2009, label %1070, label %.loopexit1678, !llvm.loop !109

.loopexit1678:                                    ; preds = %.loopexit1672, %.loopexit1684, %153, %1325, %503, %.thread1602, %.thread1590
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #6
  ret void
}

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

declare i32 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @xerbla_(ptr noundef, ptr noundef, i32 noundef) local_unnamed_addr #2

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare void @dlabad_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlag2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare void @dlaln2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dgemv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.umax.i32(i32, i32) #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 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !12, !19, !18}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12, !18, !19}
!27 = distinct !{!27, !12, !19, !18}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12}
!33 = distinct !{!33, !12, !18, !19}
!34 = distinct !{!34, !12, !19, !18}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12, !18, !19}
!38 = distinct !{!38, !12, !18}
!39 = !{!40}
!40 = distinct !{!40, !41}
!41 = distinct !{!41, !"LVerDomain"}
!42 = !{!43}
!43 = distinct !{!43, !41}
!44 = !{!45}
!45 = distinct !{!45, !41}
!46 = !{!47}
!47 = distinct !{!47, !41}
!48 = !{!49}
!49 = distinct !{!49, !41}
!50 = !{!51, !40, !43, !45, !47}
!51 = distinct !{!51, !41}
!52 = !{!51}
!53 = !{!40, !43, !45, !47}
!54 = distinct !{!54, !12, !18, !19}
!55 = distinct !{!55, !12, !18}
!56 = distinct !{!56, !12, !18, !19}
!57 = distinct !{!57, !12, !19, !18}
!58 = distinct !{!58, !12}
!59 = distinct !{!59, !12, !18, !19}
!60 = distinct !{!60, !12, !18}
!61 = distinct !{!61, !12}
!62 = distinct !{!62, !12, !18, !19}
!63 = distinct !{!63, !12, !19, !18}
!64 = distinct !{!64, !12}
!65 = distinct !{!65, !12, !18}
!66 = distinct !{!66, !12}
!67 = !{!68}
!68 = distinct !{!68, !69}
!69 = distinct !{!69, !"LVerDomain"}
!70 = !{!71, !72}
!71 = distinct !{!71, !69}
!72 = distinct !{!72, !69}
!73 = !{!71}
!74 = !{!72}
!75 = distinct !{!75, !12, !18, !19}
!76 = !{!77}
!77 = distinct !{!77, !78}
!78 = distinct !{!78, !"LVerDomain"}
!79 = !{!80, !81, !82}
!80 = distinct !{!80, !78}
!81 = distinct !{!81, !78}
!82 = distinct !{!82, !78}
!83 = !{!81}
!84 = !{!82}
!85 = !{!80}
!86 = !{!81, !82}
!87 = distinct !{!87, !12, !18, !19}
!88 = distinct !{!88, !12, !18}
!89 = distinct !{!89, !12}
!90 = distinct !{!90, !91}
!91 = !{!"llvm.loop.unroll.disable"}
!92 = distinct !{!92, !12}
!93 = distinct !{!93, !12}
!94 = distinct !{!94, !12}
!95 = distinct !{!95, !12}
!96 = distinct !{!96, !12, !18, !19}
!97 = distinct !{!97, !91}
!98 = distinct !{!98, !12, !18}
!99 = distinct !{!99, !12}
!100 = distinct !{!100, !12, !18, !19}
!101 = distinct !{!101, !91}
!102 = distinct !{!102, !12, !18}
!103 = distinct !{!103, !12}
!104 = distinct !{!104, !12}
!105 = distinct !{!105, !12}
!106 = distinct !{!106, !12, !18, !19}
!107 = distinct !{!107, !12, !19, !18}
!108 = distinct !{!108, !12}
!109 = distinct !{!109, !12}


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