; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (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 i64, align 8
@c__2 = external hidden global i64, align 8
@.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 i64, align 8
@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 i64, align 8

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

156:                                              ; preds = %16
  store i64 1, ptr %115, align 8, !tbaa !9
  store i64 1, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %102, align 8, !tbaa !9
  br label %170

157:                                              ; preds = %16
  %158 = load ptr, ptr %19, align 8, !tbaa !5
  %159 = call i64 @lsame_(ptr noundef %158, ptr noundef @.str.1)
  %160 = icmp ne i64 %159, 0
  br i1 %160, label %161, label %162

161:                                              ; preds = %157
  store i64 2, ptr %115, align 8, !tbaa !9
  store i64 0, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %102, align 8, !tbaa !9
  br label %169

162:                                              ; preds = %157
  %163 = load ptr, ptr %19, align 8, !tbaa !5
  %164 = call i64 @lsame_(ptr noundef %163, ptr noundef @.str.2)
  %165 = icmp ne i64 %164, 0
  br i1 %165, label %166, label %167

166:                                              ; preds = %162
  store i64 3, ptr %115, align 8, !tbaa !9
  store i64 1, ptr %84, align 8, !tbaa !9
  store i64 1, ptr %102, align 8, !tbaa !9
  br label %168

167:                                              ; preds = %162
  store i64 -1, ptr %115, align 8, !tbaa !9
  store i64 1, ptr %84, align 8, !tbaa !9
  br label %168

168:                                              ; preds = %167, %166
  br label %169

169:                                              ; preds = %168, %161
  br label %170

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

174:                                              ; preds = %170
  store i64 1, ptr %85, align 8, !tbaa !9
  store i64 0, ptr %90, align 8, !tbaa !9
  store i64 1, ptr %93, align 8, !tbaa !9
  br label %188

175:                                              ; preds = %170
  %176 = load ptr, ptr %18, align 8, !tbaa !5
  %177 = call i64 @lsame_(ptr noundef %176, ptr noundef @.str.4)
  %178 = icmp ne i64 %177, 0
  br i1 %178, label %179, label %180

179:                                              ; preds = %175
  store i64 2, ptr %85, align 8, !tbaa !9
  store i64 1, ptr %90, align 8, !tbaa !9
  store i64 0, ptr %93, align 8, !tbaa !9
  br label %187

180:                                              ; preds = %175
  %181 = load ptr, ptr %18, align 8, !tbaa !5
  %182 = call i64 @lsame_(ptr noundef %181, ptr noundef @.str.2)
  %183 = icmp ne i64 %182, 0
  br i1 %183, label %184, label %185

184:                                              ; preds = %180
  store i64 3, ptr %85, align 8, !tbaa !9
  store i64 1, ptr %90, align 8, !tbaa !9
  store i64 1, ptr %93, align 8, !tbaa !9
  br label %186

185:                                              ; preds = %180
  store i64 -1, ptr %85, align 8, !tbaa !9
  br label %186

186:                                              ; preds = %185, %184
  br label %187

187:                                              ; preds = %186, %179
  br label %188

188:                                              ; preds = %187, %174
  %189 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 0, ptr %189, align 8, !tbaa !9
  %190 = load i64, ptr %85, align 8, !tbaa !9
  %191 = icmp slt i64 %190, 0
  br i1 %191, label %192, label %194

192:                                              ; preds = %188
  %193 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -1, ptr %193, align 8, !tbaa !9
  br label %239

194:                                              ; preds = %188
  %195 = load i64, ptr %115, align 8, !tbaa !9
  %196 = icmp slt i64 %195, 0
  br i1 %196, label %197, label %199

197:                                              ; preds = %194
  %198 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -2, ptr %198, align 8, !tbaa !9
  br label %238

199:                                              ; preds = %194
  %200 = load ptr, ptr %21, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = icmp slt i64 %201, 0
  br i1 %202, label %203, label %205

203:                                              ; preds = %199
  %204 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -4, ptr %204, align 8, !tbaa !9
  br label %237

205:                                              ; preds = %199
  %206 = load ptr, ptr %23, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = load ptr, ptr %21, align 8, !tbaa !5
  %209 = load i64, ptr %208, align 8, !tbaa !9
  %210 = icmp sge i64 1, %209
  br i1 %210, label %211, label %212

211:                                              ; preds = %205
  br label %215

212:                                              ; preds = %205
  %213 = load ptr, ptr %21, align 8, !tbaa !5
  %214 = load i64, ptr %213, align 8, !tbaa !9
  br label %215

215:                                              ; preds = %212, %211
  %216 = phi i64 [ 1, %211 ], [ %214, %212 ]
  %217 = icmp slt i64 %207, %216
  br i1 %217, label %218, label %220

218:                                              ; preds = %215
  %219 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -6, ptr %219, align 8, !tbaa !9
  br label %236

220:                                              ; preds = %215
  %221 = load ptr, ptr %25, align 8, !tbaa !5
  %222 = load i64, ptr %221, align 8, !tbaa !9
  %223 = load ptr, ptr %21, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = icmp sge i64 1, %224
  br i1 %225, label %226, label %227

226:                                              ; preds = %220
  br label %230

227:                                              ; preds = %220
  %228 = load ptr, ptr %21, align 8, !tbaa !5
  %229 = load i64, ptr %228, align 8, !tbaa !9
  br label %230

230:                                              ; preds = %227, %226
  %231 = phi i64 [ 1, %226 ], [ %229, %227 ]
  %232 = icmp slt i64 %222, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %230
  %234 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -8, ptr %234, align 8, !tbaa !9
  br label %235

235:                                              ; preds = %233, %230
  br label %236

236:                                              ; preds = %235, %218
  br label %237

237:                                              ; preds = %236, %203
  br label %238

238:                                              ; preds = %237, %197
  br label %239

239:                                              ; preds = %238, %192
  %240 = load ptr, ptr %33, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = icmp ne i64 %241, 0
  br i1 %242, label %243, label %248

243:                                              ; preds = %239
  %244 = load ptr, ptr %33, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = sub nsw i64 0, %245
  store i64 %246, ptr %42, align 8, !tbaa !9
  %247 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %42)
  store i32 0, ptr %17, align 4
  store i32 1, ptr %116, align 4
  br label %4557

248:                                              ; preds = %239
  %249 = load i64, ptr %84, align 8, !tbaa !9
  %250 = icmp ne i64 %249, 0
  br i1 %250, label %316, label %251

251:                                              ; preds = %248
  store i64 0, ptr %59, align 8, !tbaa !9
  store i64 0, ptr %114, align 8, !tbaa !9
  %252 = load ptr, ptr %21, align 8, !tbaa !5
  %253 = load i64, ptr %252, align 8, !tbaa !9
  store i64 %253, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %312, %251
  %255 = load i64, ptr %54, align 8, !tbaa !9
  %256 = load i64, ptr %42, align 8, !tbaa !9
  %257 = icmp sle i64 %255, %256
  br i1 %257, label %258, label %315

258:                                              ; preds = %254
  %259 = load i64, ptr %114, align 8, !tbaa !9
  %260 = icmp ne i64 %259, 0
  br i1 %260, label %261, label %262

261:                                              ; preds = %258
  store i64 0, ptr %114, align 8, !tbaa !9
  br label %311

262:                                              ; preds = %258
  %263 = load i64, ptr %54, align 8, !tbaa !9
  %264 = load ptr, ptr %21, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = icmp slt i64 %263, %265
  br i1 %266, label %267, label %280

267:                                              ; preds = %262
  %268 = load ptr, ptr %22, align 8, !tbaa !5
  %269 = load i64, ptr %54, align 8, !tbaa !9
  %270 = add nsw i64 %269, 1
  %271 = load i64, ptr %54, align 8, !tbaa !9
  %272 = load i64, ptr %36, align 8, !tbaa !9
  %273 = mul nsw i64 %271, %272
  %274 = add nsw i64 %270, %273
  %275 = getelementptr inbounds double, ptr %268, i64 %274
  %276 = load double, ptr %275, align 8, !tbaa !11
  %277 = fcmp une double %276, 0.000000e+00
  br i1 %277, label %278, label %279

278:                                              ; preds = %267
  store i64 1, ptr %114, align 8, !tbaa !9
  br label %279

279:                                              ; preds = %278, %267
  br label %280

280:                                              ; preds = %279, %262
  %281 = load i64, ptr %114, align 8, !tbaa !9
  %282 = icmp ne i64 %281, 0
  br i1 %282, label %283, label %300

283:                                              ; preds = %280
  %284 = load ptr, ptr %20, align 8, !tbaa !5
  %285 = load i64, ptr %54, align 8, !tbaa !9
  %286 = getelementptr inbounds i64, ptr %284, i64 %285
  %287 = load i64, ptr %286, align 8, !tbaa !9
  %288 = icmp ne i64 %287, 0
  br i1 %288, label %296, label %289

289:                                              ; preds = %283
  %290 = load ptr, ptr %20, align 8, !tbaa !5
  %291 = load i64, ptr %54, align 8, !tbaa !9
  %292 = add nsw i64 %291, 1
  %293 = getelementptr inbounds i64, ptr %290, i64 %292
  %294 = load i64, ptr %293, align 8, !tbaa !9
  %295 = icmp ne i64 %294, 0
  br i1 %295, label %296, label %299

296:                                              ; preds = %289, %283
  %297 = load i64, ptr %59, align 8, !tbaa !9
  %298 = add nsw i64 %297, 2
  store i64 %298, ptr %59, align 8, !tbaa !9
  br label %299

299:                                              ; preds = %296, %289
  br label %310

300:                                              ; preds = %280
  %301 = load ptr, ptr %20, align 8, !tbaa !5
  %302 = load i64, ptr %54, align 8, !tbaa !9
  %303 = getelementptr inbounds i64, ptr %301, i64 %302
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = icmp ne i64 %304, 0
  br i1 %305, label %306, label %309

306:                                              ; preds = %300
  %307 = load i64, ptr %59, align 8, !tbaa !9
  %308 = add nsw i64 %307, 1
  store i64 %308, ptr %59, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %306, %300
  br label %310

310:                                              ; preds = %309, %299
  br label %311

311:                                              ; preds = %310, %261
  br label %312

312:                                              ; preds = %311
  %313 = load i64, ptr %54, align 8, !tbaa !9
  %314 = add nsw i64 %313, 1
  store i64 %314, ptr %54, align 8, !tbaa !9
  br label %254, !llvm.loop !13

315:                                              ; preds = %254
  br label %319

316:                                              ; preds = %248
  %317 = load ptr, ptr %21, align 8, !tbaa !5
  %318 = load i64, ptr %317, align 8, !tbaa !9
  store i64 %318, ptr %59, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %316, %315
  store i64 0, ptr %96, align 8, !tbaa !9
  store i64 0, ptr %97, align 8, !tbaa !9
  %320 = load ptr, ptr %21, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = sub nsw i64 %321, 1
  store i64 %322, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %323

323:                                              ; preds = %394, %319
  %324 = load i64, ptr %54, align 8, !tbaa !9
  %325 = load i64, ptr %42, align 8, !tbaa !9
  %326 = icmp sle i64 %324, %325
  br i1 %326, label %327, label %397

327:                                              ; preds = %323
  %328 = load ptr, ptr %22, align 8, !tbaa !5
  %329 = load i64, ptr %54, align 8, !tbaa !9
  %330 = add nsw i64 %329, 1
  %331 = load i64, ptr %54, align 8, !tbaa !9
  %332 = load i64, ptr %36, align 8, !tbaa !9
  %333 = mul nsw i64 %331, %332
  %334 = add nsw i64 %330, %333
  %335 = getelementptr inbounds double, ptr %328, i64 %334
  %336 = load double, ptr %335, align 8, !tbaa !11
  %337 = fcmp une double %336, 0.000000e+00
  br i1 %337, label %338, label %393

338:                                              ; preds = %327
  %339 = load ptr, ptr %24, align 8, !tbaa !5
  %340 = load i64, ptr %54, align 8, !tbaa !9
  %341 = load i64, ptr %54, align 8, !tbaa !9
  %342 = load i64, ptr %34, align 8, !tbaa !9
  %343 = mul nsw i64 %341, %342
  %344 = add nsw i64 %340, %343
  %345 = getelementptr inbounds double, ptr %339, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !11
  %347 = fcmp oeq double %346, 0.000000e+00
  br i1 %347, label %371, label %348

348:                                              ; preds = %338
  %349 = load ptr, ptr %24, align 8, !tbaa !5
  %350 = load i64, ptr %54, align 8, !tbaa !9
  %351 = add nsw i64 %350, 1
  %352 = load i64, ptr %54, align 8, !tbaa !9
  %353 = add nsw i64 %352, 1
  %354 = load i64, ptr %34, align 8, !tbaa !9
  %355 = mul nsw i64 %353, %354
  %356 = add nsw i64 %351, %355
  %357 = getelementptr inbounds double, ptr %349, i64 %356
  %358 = load double, ptr %357, align 8, !tbaa !11
  %359 = fcmp oeq double %358, 0.000000e+00
  br i1 %359, label %371, label %360

360:                                              ; preds = %348
  %361 = load ptr, ptr %24, align 8, !tbaa !5
  %362 = load i64, ptr %54, align 8, !tbaa !9
  %363 = load i64, ptr %54, align 8, !tbaa !9
  %364 = add nsw i64 %363, 1
  %365 = load i64, ptr %34, align 8, !tbaa !9
  %366 = mul nsw i64 %364, %365
  %367 = add nsw i64 %362, %366
  %368 = getelementptr inbounds double, ptr %361, i64 %367
  %369 = load double, ptr %368, align 8, !tbaa !11
  %370 = fcmp une double %369, 0.000000e+00
  br i1 %370, label %371, label %372

371:                                              ; preds = %360, %348, %338
  store i64 1, ptr %97, align 8, !tbaa !9
  br label %372

372:                                              ; preds = %371, %360
  %373 = load i64, ptr %54, align 8, !tbaa !9
  %374 = load ptr, ptr %21, align 8, !tbaa !5
  %375 = load i64, ptr %374, align 8, !tbaa !9
  %376 = sub nsw i64 %375, 1
  %377 = icmp slt i64 %373, %376
  br i1 %377, label %378, label %392

378:                                              ; preds = %372
  %379 = load ptr, ptr %22, align 8, !tbaa !5
  %380 = load i64, ptr %54, align 8, !tbaa !9
  %381 = add nsw i64 %380, 2
  %382 = load i64, ptr %54, align 8, !tbaa !9
  %383 = add nsw i64 %382, 1
  %384 = load i64, ptr %36, align 8, !tbaa !9
  %385 = mul nsw i64 %383, %384
  %386 = add nsw i64 %381, %385
  %387 = getelementptr inbounds double, ptr %379, i64 %386
  %388 = load double, ptr %387, align 8, !tbaa !11
  %389 = fcmp une double %388, 0.000000e+00
  br i1 %389, label %390, label %391

390:                                              ; preds = %378
  store i64 1, ptr %96, align 8, !tbaa !9
  br label %391

391:                                              ; preds = %390, %378
  br label %392

392:                                              ; preds = %391, %372
  br label %393

393:                                              ; preds = %392, %327
  br label %394

394:                                              ; preds = %393
  %395 = load i64, ptr %54, align 8, !tbaa !9
  %396 = add nsw i64 %395, 1
  store i64 %396, ptr %54, align 8, !tbaa !9
  br label %323, !llvm.loop !15

397:                                              ; preds = %323
  %398 = load i64, ptr %96, align 8, !tbaa !9
  %399 = icmp ne i64 %398, 0
  br i1 %399, label %400, label %402

400:                                              ; preds = %397
  %401 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -5, ptr %401, align 8, !tbaa !9
  br label %448

402:                                              ; preds = %397
  %403 = load i64, ptr %97, align 8, !tbaa !9
  %404 = icmp ne i64 %403, 0
  br i1 %404, label %405, label %407

405:                                              ; preds = %402
  %406 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -7, ptr %406, align 8, !tbaa !9
  br label %447

407:                                              ; preds = %402
  %408 = load i64, ptr %90, align 8, !tbaa !9
  %409 = icmp ne i64 %408, 0
  br i1 %409, label %410, label %416

410:                                              ; preds = %407
  %411 = load ptr, ptr %27, align 8, !tbaa !5
  %412 = load i64, ptr %411, align 8, !tbaa !9
  %413 = load ptr, ptr %21, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = icmp slt i64 %412, %414
  br i1 %415, label %420, label %416

416:                                              ; preds = %410, %407
  %417 = load ptr, ptr %27, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = icmp slt i64 %418, 1
  br i1 %419, label %420, label %422

420:                                              ; preds = %416, %410
  %421 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -10, ptr %421, align 8, !tbaa !9
  br label %446

422:                                              ; preds = %416
  %423 = load i64, ptr %93, align 8, !tbaa !9
  %424 = icmp ne i64 %423, 0
  br i1 %424, label %425, label %431

425:                                              ; preds = %422
  %426 = load ptr, ptr %29, align 8, !tbaa !5
  %427 = load i64, ptr %426, align 8, !tbaa !9
  %428 = load ptr, ptr %21, align 8, !tbaa !5
  %429 = load i64, ptr %428, align 8, !tbaa !9
  %430 = icmp slt i64 %427, %429
  br i1 %430, label %435, label %431

431:                                              ; preds = %425, %422
  %432 = load ptr, ptr %29, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  %434 = icmp slt i64 %433, 1
  br i1 %434, label %435, label %437

435:                                              ; preds = %431, %425
  %436 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -12, ptr %436, align 8, !tbaa !9
  br label %445

437:                                              ; preds = %431
  %438 = load ptr, ptr %30, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = load i64, ptr %59, align 8, !tbaa !9
  %441 = icmp slt i64 %439, %440
  br i1 %441, label %442, label %444

442:                                              ; preds = %437
  %443 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 -13, ptr %443, align 8, !tbaa !9
  br label %444

444:                                              ; preds = %442, %437
  br label %445

445:                                              ; preds = %444, %435
  br label %446

446:                                              ; preds = %445, %420
  br label %447

447:                                              ; preds = %446, %405
  br label %448

448:                                              ; preds = %447, %400
  %449 = load ptr, ptr %33, align 8, !tbaa !5
  %450 = load i64, ptr %449, align 8, !tbaa !9
  %451 = icmp ne i64 %450, 0
  br i1 %451, label %452, label %457

452:                                              ; preds = %448
  %453 = load ptr, ptr %33, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = sub nsw i64 0, %454
  store i64 %455, ptr %42, align 8, !tbaa !9
  %456 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %42)
  store i32 0, ptr %17, align 4
  store i32 1, ptr %116, align 4
  br label %4557

457:                                              ; preds = %448
  %458 = load i64, ptr %59, align 8, !tbaa !9
  %459 = load ptr, ptr %31, align 8, !tbaa !5
  store i64 %458, ptr %459, align 8, !tbaa !9
  %460 = load ptr, ptr %21, align 8, !tbaa !5
  %461 = load i64, ptr %460, align 8, !tbaa !9
  %462 = icmp eq i64 %461, 0
  br i1 %462, label %463, label %464

463:                                              ; preds = %457
  store i32 0, ptr %17, align 4
  store i32 1, ptr %116, align 4
  br label %4557

464:                                              ; preds = %457
  %465 = call double @dlamch_(ptr noundef @.str.6)
  store double %465, ptr %110, align 8, !tbaa !11
  %466 = load double, ptr %110, align 8, !tbaa !11
  %467 = fdiv double 1.000000e+00, %466
  store double %467, ptr %63, align 8, !tbaa !11
  %468 = call i32 @dlabad_(ptr noundef %110, ptr noundef %63)
  %469 = call double @dlamch_(ptr noundef @.str.7)
  %470 = call double @dlamch_(ptr noundef @.str.8)
  %471 = fmul double %469, %470
  store double %471, ptr %66, align 8, !tbaa !11
  %472 = load double, ptr %110, align 8, !tbaa !11
  %473 = load ptr, ptr %21, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = sitofp i64 %474 to double
  %476 = fmul double %472, %475
  %477 = load double, ptr %66, align 8, !tbaa !11
  %478 = fdiv double %476, %477
  store double %478, ptr %89, align 8, !tbaa !11
  %479 = load double, ptr %89, align 8, !tbaa !11
  %480 = fdiv double 1.000000e+00, %479
  store double %480, ptr %63, align 8, !tbaa !11
  %481 = load double, ptr %110, align 8, !tbaa !11
  %482 = load ptr, ptr %21, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = sitofp i64 %483 to double
  %485 = fmul double %481, %484
  %486 = fdiv double 1.000000e+00, %485
  store double %486, ptr %112, align 8, !tbaa !11
  %487 = load ptr, ptr %22, align 8, !tbaa !5
  %488 = load i64, ptr %36, align 8, !tbaa !9
  %489 = add nsw i64 %488, 1
  %490 = getelementptr inbounds double, ptr %487, i64 %489
  %491 = load double, ptr %490, align 8, !tbaa !11
  store double %491, ptr %47, align 8, !tbaa !11
  %492 = load double, ptr %47, align 8, !tbaa !11
  %493 = fcmp oge double %492, 0.000000e+00
  br i1 %493, label %494, label %496

494:                                              ; preds = %464
  %495 = load double, ptr %47, align 8, !tbaa !11
  br label %499

496:                                              ; preds = %464
  %497 = load double, ptr %47, align 8, !tbaa !11
  %498 = fneg double %497
  br label %499

499:                                              ; preds = %496, %494
  %500 = phi double [ %495, %494 ], [ %498, %496 ]
  store double %500, ptr %91, align 8, !tbaa !11
  %501 = load ptr, ptr %21, align 8, !tbaa !5
  %502 = load i64, ptr %501, align 8, !tbaa !9
  %503 = icmp sgt i64 %502, 1
  br i1 %503, label %504, label %521

504:                                              ; preds = %499
  %505 = load ptr, ptr %22, align 8, !tbaa !5
  %506 = load i64, ptr %36, align 8, !tbaa !9
  %507 = add nsw i64 %506, 2
  %508 = getelementptr inbounds double, ptr %505, i64 %507
  %509 = load double, ptr %508, align 8, !tbaa !11
  store double %509, ptr %47, align 8, !tbaa !11
  %510 = load double, ptr %47, align 8, !tbaa !11
  %511 = fcmp oge double %510, 0.000000e+00
  br i1 %511, label %512, label %514

512:                                              ; preds = %504
  %513 = load double, ptr %47, align 8, !tbaa !11
  br label %517

514:                                              ; preds = %504
  %515 = load double, ptr %47, align 8, !tbaa !11
  %516 = fneg double %515
  br label %517

517:                                              ; preds = %514, %512
  %518 = phi double [ %513, %512 ], [ %516, %514 ]
  %519 = load double, ptr %91, align 8, !tbaa !11
  %520 = fadd double %519, %518
  store double %520, ptr %91, align 8, !tbaa !11
  br label %521

521:                                              ; preds = %517, %499
  %522 = load ptr, ptr %24, align 8, !tbaa !5
  %523 = load i64, ptr %34, align 8, !tbaa !9
  %524 = add nsw i64 %523, 1
  %525 = getelementptr inbounds double, ptr %522, i64 %524
  %526 = load double, ptr %525, align 8, !tbaa !11
  store double %526, ptr %47, align 8, !tbaa !11
  %527 = load double, ptr %47, align 8, !tbaa !11
  %528 = fcmp oge double %527, 0.000000e+00
  br i1 %528, label %529, label %531

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

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

534:                                              ; preds = %531, %529
  %535 = phi double [ %530, %529 ], [ %533, %531 ]
  store double %535, ptr %92, align 8, !tbaa !11
  %536 = load ptr, ptr %32, align 8, !tbaa !5
  %537 = getelementptr inbounds double, ptr %536, i64 1
  store double 0.000000e+00, ptr %537, align 8, !tbaa !11
  %538 = load ptr, ptr %32, align 8, !tbaa !5
  %539 = load ptr, ptr %21, align 8, !tbaa !5
  %540 = load i64, ptr %539, align 8, !tbaa !9
  %541 = add nsw i64 %540, 1
  %542 = getelementptr inbounds double, ptr %538, i64 %541
  store double 0.000000e+00, ptr %542, align 8, !tbaa !11
  %543 = load ptr, ptr %21, align 8, !tbaa !5
  %544 = load i64, ptr %543, align 8, !tbaa !9
  store i64 %544, ptr %42, align 8, !tbaa !9
  store i64 2, ptr %54, align 8, !tbaa !9
  br label %545

545:                                              ; preds = %706, %534
  %546 = load i64, ptr %54, align 8, !tbaa !9
  %547 = load i64, ptr %42, align 8, !tbaa !9
  %548 = icmp sle i64 %546, %547
  br i1 %548, label %549, label %709

549:                                              ; preds = %545
  store double 0.000000e+00, ptr %72, align 8, !tbaa !11
  store double 0.000000e+00, ptr %80, align 8, !tbaa !11
  %550 = load ptr, ptr %22, align 8, !tbaa !5
  %551 = load i64, ptr %54, align 8, !tbaa !9
  %552 = load i64, ptr %54, align 8, !tbaa !9
  %553 = sub nsw i64 %552, 1
  %554 = load i64, ptr %36, align 8, !tbaa !9
  %555 = mul nsw i64 %553, %554
  %556 = add nsw i64 %551, %555
  %557 = getelementptr inbounds double, ptr %550, i64 %556
  %558 = load double, ptr %557, align 8, !tbaa !11
  %559 = fcmp oeq double %558, 0.000000e+00
  br i1 %559, label %560, label %563

560:                                              ; preds = %549
  %561 = load i64, ptr %54, align 8, !tbaa !9
  %562 = sub nsw i64 %561, 1
  store i64 %562, ptr %70, align 8, !tbaa !9
  br label %566

563:                                              ; preds = %549
  %564 = load i64, ptr %54, align 8, !tbaa !9
  %565 = sub nsw i64 %564, 2
  store i64 %565, ptr %70, align 8, !tbaa !9
  br label %566

566:                                              ; preds = %563, %560
  %567 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %567, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %53, align 8, !tbaa !9
  br label %568

568:                                              ; preds = %611, %566
  %569 = load i64, ptr %53, align 8, !tbaa !9
  %570 = load i64, ptr %43, align 8, !tbaa !9
  %571 = icmp sle i64 %569, %570
  br i1 %571, label %572, label %614

572:                                              ; preds = %568
  %573 = load ptr, ptr %22, align 8, !tbaa !5
  %574 = load i64, ptr %53, align 8, !tbaa !9
  %575 = load i64, ptr %54, align 8, !tbaa !9
  %576 = load i64, ptr %36, align 8, !tbaa !9
  %577 = mul nsw i64 %575, %576
  %578 = add nsw i64 %574, %577
  %579 = getelementptr inbounds double, ptr %573, i64 %578
  %580 = load double, ptr %579, align 8, !tbaa !11
  store double %580, ptr %47, align 8, !tbaa !11
  %581 = load double, ptr %47, align 8, !tbaa !11
  %582 = fcmp oge double %581, 0.000000e+00
  br i1 %582, label %583, label %585

583:                                              ; preds = %572
  %584 = load double, ptr %47, align 8, !tbaa !11
  br label %588

585:                                              ; preds = %572
  %586 = load double, ptr %47, align 8, !tbaa !11
  %587 = fneg double %586
  br label %588

588:                                              ; preds = %585, %583
  %589 = phi double [ %584, %583 ], [ %587, %585 ]
  %590 = load double, ptr %72, align 8, !tbaa !11
  %591 = fadd double %590, %589
  store double %591, ptr %72, align 8, !tbaa !11
  %592 = load ptr, ptr %24, align 8, !tbaa !5
  %593 = load i64, ptr %53, align 8, !tbaa !9
  %594 = load i64, ptr %54, align 8, !tbaa !9
  %595 = load i64, ptr %34, align 8, !tbaa !9
  %596 = mul nsw i64 %594, %595
  %597 = add nsw i64 %593, %596
  %598 = getelementptr inbounds double, ptr %592, i64 %597
  %599 = load double, ptr %598, align 8, !tbaa !11
  store double %599, ptr %47, align 8, !tbaa !11
  %600 = load double, ptr %47, align 8, !tbaa !11
  %601 = fcmp oge double %600, 0.000000e+00
  br i1 %601, label %602, label %604

602:                                              ; preds = %588
  %603 = load double, ptr %47, align 8, !tbaa !11
  br label %607

604:                                              ; preds = %588
  %605 = load double, ptr %47, align 8, !tbaa !11
  %606 = fneg double %605
  br label %607

607:                                              ; preds = %604, %602
  %608 = phi double [ %603, %602 ], [ %606, %604 ]
  %609 = load double, ptr %80, align 8, !tbaa !11
  %610 = fadd double %609, %608
  store double %610, ptr %80, align 8, !tbaa !11
  br label %611

611:                                              ; preds = %607
  %612 = load i64, ptr %53, align 8, !tbaa !9
  %613 = add nsw i64 %612, 1
  store i64 %613, ptr %53, align 8, !tbaa !9
  br label %568, !llvm.loop !16

614:                                              ; preds = %568
  %615 = load double, ptr %72, align 8, !tbaa !11
  %616 = load ptr, ptr %32, align 8, !tbaa !5
  %617 = load i64, ptr %54, align 8, !tbaa !9
  %618 = getelementptr inbounds double, ptr %616, i64 %617
  store double %615, ptr %618, align 8, !tbaa !11
  %619 = load double, ptr %80, align 8, !tbaa !11
  %620 = load ptr, ptr %32, align 8, !tbaa !5
  %621 = load ptr, ptr %21, align 8, !tbaa !5
  %622 = load i64, ptr %621, align 8, !tbaa !9
  %623 = load i64, ptr %54, align 8, !tbaa !9
  %624 = add nsw i64 %622, %623
  %625 = getelementptr inbounds double, ptr %620, i64 %624
  store double %619, ptr %625, align 8, !tbaa !11
  %626 = load i64, ptr %54, align 8, !tbaa !9
  %627 = add nsw i64 %626, 1
  store i64 %627, ptr %44, align 8, !tbaa !9
  %628 = load i64, ptr %44, align 8, !tbaa !9
  %629 = load ptr, ptr %21, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  %631 = icmp sle i64 %628, %630
  br i1 %631, label %632, label %634

632:                                              ; preds = %614
  %633 = load i64, ptr %44, align 8, !tbaa !9
  br label %637

634:                                              ; preds = %614
  %635 = load ptr, ptr %21, align 8, !tbaa !5
  %636 = load i64, ptr %635, align 8, !tbaa !9
  br label %637

637:                                              ; preds = %634, %632
  %638 = phi i64 [ %633, %632 ], [ %636, %634 ]
  store i64 %638, ptr %43, align 8, !tbaa !9
  %639 = load i64, ptr %70, align 8, !tbaa !9
  %640 = add nsw i64 %639, 1
  store i64 %640, ptr %53, align 8, !tbaa !9
  br label %641

641:                                              ; preds = %684, %637
  %642 = load i64, ptr %53, align 8, !tbaa !9
  %643 = load i64, ptr %43, align 8, !tbaa !9
  %644 = icmp sle i64 %642, %643
  br i1 %644, label %645, label %687

645:                                              ; preds = %641
  %646 = load ptr, ptr %22, align 8, !tbaa !5
  %647 = load i64, ptr %53, align 8, !tbaa !9
  %648 = load i64, ptr %54, align 8, !tbaa !9
  %649 = load i64, ptr %36, align 8, !tbaa !9
  %650 = mul nsw i64 %648, %649
  %651 = add nsw i64 %647, %650
  %652 = getelementptr inbounds double, ptr %646, i64 %651
  %653 = load double, ptr %652, align 8, !tbaa !11
  store double %653, ptr %47, align 8, !tbaa !11
  %654 = load double, ptr %47, align 8, !tbaa !11
  %655 = fcmp oge double %654, 0.000000e+00
  br i1 %655, label %656, label %658

656:                                              ; preds = %645
  %657 = load double, ptr %47, align 8, !tbaa !11
  br label %661

658:                                              ; preds = %645
  %659 = load double, ptr %47, align 8, !tbaa !11
  %660 = fneg double %659
  br label %661

661:                                              ; preds = %658, %656
  %662 = phi double [ %657, %656 ], [ %660, %658 ]
  %663 = load double, ptr %72, align 8, !tbaa !11
  %664 = fadd double %663, %662
  store double %664, ptr %72, align 8, !tbaa !11
  %665 = load ptr, ptr %24, align 8, !tbaa !5
  %666 = load i64, ptr %53, align 8, !tbaa !9
  %667 = load i64, ptr %54, align 8, !tbaa !9
  %668 = load i64, ptr %34, align 8, !tbaa !9
  %669 = mul nsw i64 %667, %668
  %670 = add nsw i64 %666, %669
  %671 = getelementptr inbounds double, ptr %665, i64 %670
  %672 = load double, ptr %671, align 8, !tbaa !11
  store double %672, ptr %47, align 8, !tbaa !11
  %673 = load double, ptr %47, align 8, !tbaa !11
  %674 = fcmp oge double %673, 0.000000e+00
  br i1 %674, label %675, label %677

675:                                              ; preds = %661
  %676 = load double, ptr %47, align 8, !tbaa !11
  br label %680

677:                                              ; preds = %661
  %678 = load double, ptr %47, align 8, !tbaa !11
  %679 = fneg double %678
  br label %680

680:                                              ; preds = %677, %675
  %681 = phi double [ %676, %675 ], [ %679, %677 ]
  %682 = load double, ptr %80, align 8, !tbaa !11
  %683 = fadd double %682, %681
  store double %683, ptr %80, align 8, !tbaa !11
  br label %684

684:                                              ; preds = %680
  %685 = load i64, ptr %53, align 8, !tbaa !9
  %686 = add nsw i64 %685, 1
  store i64 %686, ptr %53, align 8, !tbaa !9
  br label %641, !llvm.loop !17

687:                                              ; preds = %641
  %688 = load double, ptr %91, align 8, !tbaa !11
  %689 = load double, ptr %72, align 8, !tbaa !11
  %690 = fcmp oge double %688, %689
  br i1 %690, label %691, label %693

691:                                              ; preds = %687
  %692 = load double, ptr %91, align 8, !tbaa !11
  br label %695

693:                                              ; preds = %687
  %694 = load double, ptr %72, align 8, !tbaa !11
  br label %695

695:                                              ; preds = %693, %691
  %696 = phi double [ %692, %691 ], [ %694, %693 ]
  store double %696, ptr %91, align 8, !tbaa !11
  %697 = load double, ptr %92, align 8, !tbaa !11
  %698 = load double, ptr %80, align 8, !tbaa !11
  %699 = fcmp oge double %697, %698
  br i1 %699, label %700, label %702

700:                                              ; preds = %695
  %701 = load double, ptr %92, align 8, !tbaa !11
  br label %704

702:                                              ; preds = %695
  %703 = load double, ptr %80, align 8, !tbaa !11
  br label %704

704:                                              ; preds = %702, %700
  %705 = phi double [ %701, %700 ], [ %703, %702 ]
  store double %705, ptr %92, align 8, !tbaa !11
  br label %706

706:                                              ; preds = %704
  %707 = load i64, ptr %54, align 8, !tbaa !9
  %708 = add nsw i64 %707, 1
  store i64 %708, ptr %54, align 8, !tbaa !9
  br label %545, !llvm.loop !18

709:                                              ; preds = %545
  %710 = load double, ptr %91, align 8, !tbaa !11
  %711 = load double, ptr %110, align 8, !tbaa !11
  %712 = fcmp oge double %710, %711
  br i1 %712, label %713, label %715

713:                                              ; preds = %709
  %714 = load double, ptr %91, align 8, !tbaa !11
  br label %717

715:                                              ; preds = %709
  %716 = load double, ptr %110, align 8, !tbaa !11
  br label %717

717:                                              ; preds = %715, %713
  %718 = phi double [ %714, %713 ], [ %716, %715 ]
  %719 = fdiv double 1.000000e+00, %718
  store double %719, ptr %104, align 8, !tbaa !11
  %720 = load double, ptr %92, align 8, !tbaa !11
  %721 = load double, ptr %110, align 8, !tbaa !11
  %722 = fcmp oge double %720, %721
  br i1 %722, label %723, label %725

723:                                              ; preds = %717
  %724 = load double, ptr %92, align 8, !tbaa !11
  br label %727

725:                                              ; preds = %717
  %726 = load double, ptr %110, align 8, !tbaa !11
  br label %727

727:                                              ; preds = %725, %723
  %728 = phi double [ %724, %723 ], [ %726, %725 ]
  %729 = fdiv double 1.000000e+00, %728
  store double %729, ptr %105, align 8, !tbaa !11
  %730 = load i64, ptr %90, align 8, !tbaa !9
  %731 = icmp ne i64 %730, 0
  br i1 %731, label %732, label %2404

732:                                              ; preds = %727
  store i64 0, ptr %69, align 8, !tbaa !9
  store i64 0, ptr %114, align 8, !tbaa !9
  %733 = load ptr, ptr %21, align 8, !tbaa !5
  %734 = load i64, ptr %733, align 8, !tbaa !9
  store i64 %734, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %57, align 8, !tbaa !9
  br label %735

735:                                              ; preds = %2400, %732
  %736 = load i64, ptr %57, align 8, !tbaa !9
  %737 = load i64, ptr %42, align 8, !tbaa !9
  %738 = icmp sle i64 %736, %737
  br i1 %738, label %739, label %2403

739:                                              ; preds = %735
  %740 = load i64, ptr %114, align 8, !tbaa !9
  %741 = icmp ne i64 %740, 0
  br i1 %741, label %742, label %743

742:                                              ; preds = %739
  store i64 0, ptr %114, align 8, !tbaa !9
  br label %2399

743:                                              ; preds = %739
  store i64 1, ptr %62, align 8, !tbaa !9
  %744 = load i64, ptr %57, align 8, !tbaa !9
  %745 = load ptr, ptr %21, align 8, !tbaa !5
  %746 = load i64, ptr %745, align 8, !tbaa !9
  %747 = icmp slt i64 %744, %746
  br i1 %747, label %748, label %761

748:                                              ; preds = %743
  %749 = load ptr, ptr %22, align 8, !tbaa !5
  %750 = load i64, ptr %57, align 8, !tbaa !9
  %751 = add nsw i64 %750, 1
  %752 = load i64, ptr %57, align 8, !tbaa !9
  %753 = load i64, ptr %36, align 8, !tbaa !9
  %754 = mul nsw i64 %752, %753
  %755 = add nsw i64 %751, %754
  %756 = getelementptr inbounds double, ptr %749, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !11
  %758 = fcmp une double %757, 0.000000e+00
  br i1 %758, label %759, label %760

759:                                              ; preds = %748
  store i64 1, ptr %114, align 8, !tbaa !9
  store i64 2, ptr %62, align 8, !tbaa !9
  br label %760

760:                                              ; preds = %759, %748
  br label %761

761:                                              ; preds = %760, %743
  %762 = load i64, ptr %84, align 8, !tbaa !9
  %763 = icmp ne i64 %762, 0
  br i1 %763, label %764, label %765

764:                                              ; preds = %761
  store i64 1, ptr %113, align 8, !tbaa !9
  br label %791

765:                                              ; preds = %761
  %766 = load i64, ptr %114, align 8, !tbaa !9
  %767 = icmp ne i64 %766, 0
  br i1 %767, label %768, label %785

768:                                              ; preds = %765
  %769 = load ptr, ptr %20, align 8, !tbaa !5
  %770 = load i64, ptr %57, align 8, !tbaa !9
  %771 = getelementptr inbounds i64, ptr %769, i64 %770
  %772 = load i64, ptr %771, align 8, !tbaa !9
  %773 = icmp ne i64 %772, 0
  br i1 %773, label %781, label %774

774:                                              ; preds = %768
  %775 = load ptr, ptr %20, align 8, !tbaa !5
  %776 = load i64, ptr %57, align 8, !tbaa !9
  %777 = add nsw i64 %776, 1
  %778 = getelementptr inbounds i64, ptr %775, i64 %777
  %779 = load i64, ptr %778, align 8, !tbaa !9
  %780 = icmp ne i64 %779, 0
  br label %781

781:                                              ; preds = %774, %768
  %782 = phi i1 [ true, %768 ], [ %780, %774 ]
  %783 = zext i1 %782 to i32
  %784 = sext i32 %783 to i64
  store i64 %784, ptr %113, align 8, !tbaa !9
  br label %790

785:                                              ; preds = %765
  %786 = load ptr, ptr %20, align 8, !tbaa !5
  %787 = load i64, ptr %57, align 8, !tbaa !9
  %788 = getelementptr inbounds i64, ptr %786, i64 %787
  %789 = load i64, ptr %788, align 8, !tbaa !9
  store i64 %789, ptr %113, align 8, !tbaa !9
  br label %790

790:                                              ; preds = %785, %781
  br label %791

791:                                              ; preds = %790, %764
  %792 = load i64, ptr %113, align 8, !tbaa !9
  %793 = icmp ne i64 %792, 0
  br i1 %793, label %795, label %794

794:                                              ; preds = %791
  br label %2399

795:                                              ; preds = %791
  %796 = load i64, ptr %114, align 8, !tbaa !9
  %797 = icmp ne i64 %796, 0
  br i1 %797, label %867, label %798

798:                                              ; preds = %795
  %799 = load ptr, ptr %22, align 8, !tbaa !5
  %800 = load i64, ptr %57, align 8, !tbaa !9
  %801 = load i64, ptr %57, align 8, !tbaa !9
  %802 = load i64, ptr %36, align 8, !tbaa !9
  %803 = mul nsw i64 %801, %802
  %804 = add nsw i64 %800, %803
  %805 = getelementptr inbounds double, ptr %799, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !11
  store double %806, ptr %47, align 8, !tbaa !11
  %807 = load double, ptr %47, align 8, !tbaa !11
  %808 = fcmp oge double %807, 0.000000e+00
  br i1 %808, label %809, label %811

809:                                              ; preds = %798
  %810 = load double, ptr %47, align 8, !tbaa !11
  br label %814

811:                                              ; preds = %798
  %812 = load double, ptr %47, align 8, !tbaa !11
  %813 = fneg double %812
  br label %814

814:                                              ; preds = %811, %809
  %815 = phi double [ %810, %809 ], [ %813, %811 ]
  %816 = load double, ptr %110, align 8, !tbaa !11
  %817 = fcmp ole double %815, %816
  br i1 %817, label %818, label %866

818:                                              ; preds = %814
  %819 = load ptr, ptr %24, align 8, !tbaa !5
  %820 = load i64, ptr %57, align 8, !tbaa !9
  %821 = load i64, ptr %57, align 8, !tbaa !9
  %822 = load i64, ptr %34, align 8, !tbaa !9
  %823 = mul nsw i64 %821, %822
  %824 = add nsw i64 %820, %823
  %825 = getelementptr inbounds double, ptr %819, i64 %824
  %826 = load double, ptr %825, align 8, !tbaa !11
  store double %826, ptr %48, align 8, !tbaa !11
  %827 = load double, ptr %48, align 8, !tbaa !11
  %828 = fcmp oge double %827, 0.000000e+00
  br i1 %828, label %829, label %831

829:                                              ; preds = %818
  %830 = load double, ptr %48, align 8, !tbaa !11
  br label %834

831:                                              ; preds = %818
  %832 = load double, ptr %48, align 8, !tbaa !11
  %833 = fneg double %832
  br label %834

834:                                              ; preds = %831, %829
  %835 = phi double [ %830, %829 ], [ %833, %831 ]
  %836 = load double, ptr %110, align 8, !tbaa !11
  %837 = fcmp ole double %835, %836
  br i1 %837, label %838, label %866

838:                                              ; preds = %834
  %839 = load i64, ptr %69, align 8, !tbaa !9
  %840 = add nsw i64 %839, 1
  store i64 %840, ptr %69, align 8, !tbaa !9
  %841 = load ptr, ptr %21, align 8, !tbaa !5
  %842 = load i64, ptr %841, align 8, !tbaa !9
  store i64 %842, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %843

843:                                              ; preds = %855, %838
  %844 = load i64, ptr %60, align 8, !tbaa !9
  %845 = load i64, ptr %43, align 8, !tbaa !9
  %846 = icmp sle i64 %844, %845
  br i1 %846, label %847, label %858

847:                                              ; preds = %843
  %848 = load ptr, ptr %26, align 8, !tbaa !5
  %849 = load i64, ptr %60, align 8, !tbaa !9
  %850 = load i64, ptr %69, align 8, !tbaa !9
  %851 = load i64, ptr %38, align 8, !tbaa !9
  %852 = mul nsw i64 %850, %851
  %853 = add nsw i64 %849, %852
  %854 = getelementptr inbounds double, ptr %848, i64 %853
  store double 0.000000e+00, ptr %854, align 8, !tbaa !11
  br label %855

855:                                              ; preds = %847
  %856 = load i64, ptr %60, align 8, !tbaa !9
  %857 = add nsw i64 %856, 1
  store i64 %857, ptr %60, align 8, !tbaa !9
  br label %843, !llvm.loop !19

858:                                              ; preds = %843
  %859 = load ptr, ptr %26, align 8, !tbaa !5
  %860 = load i64, ptr %69, align 8, !tbaa !9
  %861 = load i64, ptr %69, align 8, !tbaa !9
  %862 = load i64, ptr %38, align 8, !tbaa !9
  %863 = mul nsw i64 %861, %862
  %864 = add nsw i64 %860, %863
  %865 = getelementptr inbounds double, ptr %859, i64 %864
  store double 1.000000e+00, ptr %865, align 8, !tbaa !11
  br label %2399

866:                                              ; preds = %834, %814
  br label %867

867:                                              ; preds = %866, %795
  %868 = load i64, ptr %62, align 8, !tbaa !9
  %869 = load ptr, ptr %21, align 8, !tbaa !5
  %870 = load i64, ptr %869, align 8, !tbaa !9
  %871 = mul nsw i64 %868, %870
  store i64 %871, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %872

872:                                              ; preds = %884, %867
  %873 = load i64, ptr %60, align 8, !tbaa !9
  %874 = load i64, ptr %43, align 8, !tbaa !9
  %875 = icmp sle i64 %873, %874
  br i1 %875, label %876, label %887

876:                                              ; preds = %872
  %877 = load ptr, ptr %32, align 8, !tbaa !5
  %878 = load ptr, ptr %21, align 8, !tbaa !5
  %879 = load i64, ptr %878, align 8, !tbaa !9
  %880 = shl i64 %879, 1
  %881 = load i64, ptr %60, align 8, !tbaa !9
  %882 = add nsw i64 %880, %881
  %883 = getelementptr inbounds double, ptr %877, i64 %882
  store double 0.000000e+00, ptr %883, align 8, !tbaa !11
  br label %884

884:                                              ; preds = %876
  %885 = load i64, ptr %60, align 8, !tbaa !9
  %886 = add nsw i64 %885, 1
  store i64 %886, ptr %60, align 8, !tbaa !9
  br label %872, !llvm.loop !20

887:                                              ; preds = %872
  %888 = load i64, ptr %114, align 8, !tbaa !9
  %889 = icmp ne i64 %888, 0
  br i1 %889, label %1199, label %890

890:                                              ; preds = %887
  %891 = load ptr, ptr %22, align 8, !tbaa !5
  %892 = load i64, ptr %57, align 8, !tbaa !9
  %893 = load i64, ptr %57, align 8, !tbaa !9
  %894 = load i64, ptr %36, align 8, !tbaa !9
  %895 = mul nsw i64 %893, %894
  %896 = add nsw i64 %892, %895
  %897 = getelementptr inbounds double, ptr %891, i64 %896
  %898 = load double, ptr %897, align 8, !tbaa !11
  store double %898, ptr %47, align 8, !tbaa !11
  %899 = load double, ptr %47, align 8, !tbaa !11
  %900 = fcmp oge double %899, 0.000000e+00
  br i1 %900, label %901, label %903

901:                                              ; preds = %890
  %902 = load double, ptr %47, align 8, !tbaa !11
  br label %906

903:                                              ; preds = %890
  %904 = load double, ptr %47, align 8, !tbaa !11
  %905 = fneg double %904
  br label %906

906:                                              ; preds = %903, %901
  %907 = phi double [ %902, %901 ], [ %905, %903 ]
  %908 = load double, ptr %104, align 8, !tbaa !11
  %909 = fmul double %907, %908
  store double %909, ptr %49, align 8, !tbaa !11
  %910 = load ptr, ptr %24, align 8, !tbaa !5
  %911 = load i64, ptr %57, align 8, !tbaa !9
  %912 = load i64, ptr %57, align 8, !tbaa !9
  %913 = load i64, ptr %34, align 8, !tbaa !9
  %914 = mul nsw i64 %912, %913
  %915 = add nsw i64 %911, %914
  %916 = getelementptr inbounds double, ptr %910, i64 %915
  %917 = load double, ptr %916, align 8, !tbaa !11
  store double %917, ptr %48, align 8, !tbaa !11
  %918 = load double, ptr %48, align 8, !tbaa !11
  %919 = fcmp oge double %918, 0.000000e+00
  br i1 %919, label %920, label %922

920:                                              ; preds = %906
  %921 = load double, ptr %48, align 8, !tbaa !11
  br label %925

922:                                              ; preds = %906
  %923 = load double, ptr %48, align 8, !tbaa !11
  %924 = fneg double %923
  br label %925

925:                                              ; preds = %922, %920
  %926 = phi double [ %921, %920 ], [ %924, %922 ]
  %927 = load double, ptr %105, align 8, !tbaa !11
  %928 = fmul double %926, %927
  store double %928, ptr %50, align 8, !tbaa !11
  %929 = load double, ptr %49, align 8, !tbaa !11
  %930 = load double, ptr %50, align 8, !tbaa !11
  %931 = fcmp oge double %929, %930
  br i1 %931, label %932, label %934

932:                                              ; preds = %925
  %933 = load double, ptr %49, align 8, !tbaa !11
  br label %936

934:                                              ; preds = %925
  %935 = load double, ptr %50, align 8, !tbaa !11
  br label %936

936:                                              ; preds = %934, %932
  %937 = phi double [ %933, %932 ], [ %935, %934 ]
  store double %937, ptr %49, align 8, !tbaa !11
  %938 = load double, ptr %49, align 8, !tbaa !11
  %939 = load double, ptr %110, align 8, !tbaa !11
  %940 = fcmp oge double %938, %939
  br i1 %940, label %941, label %943

941:                                              ; preds = %936
  %942 = load double, ptr %49, align 8, !tbaa !11
  br label %945

943:                                              ; preds = %936
  %944 = load double, ptr %110, align 8, !tbaa !11
  br label %945

945:                                              ; preds = %943, %941
  %946 = phi double [ %942, %941 ], [ %944, %943 ]
  %947 = fdiv double 1.000000e+00, %946
  store double %947, ptr %72, align 8, !tbaa !11
  %948 = load double, ptr %72, align 8, !tbaa !11
  %949 = load ptr, ptr %22, align 8, !tbaa !5
  %950 = load i64, ptr %57, align 8, !tbaa !9
  %951 = load i64, ptr %57, align 8, !tbaa !9
  %952 = load i64, ptr %36, align 8, !tbaa !9
  %953 = mul nsw i64 %951, %952
  %954 = add nsw i64 %950, %953
  %955 = getelementptr inbounds double, ptr %949, i64 %954
  %956 = load double, ptr %955, align 8, !tbaa !11
  %957 = fmul double %948, %956
  %958 = load double, ptr %104, align 8, !tbaa !11
  %959 = fmul double %957, %958
  store double %959, ptr %109, align 8, !tbaa !11
  %960 = load double, ptr %72, align 8, !tbaa !11
  %961 = load ptr, ptr %24, align 8, !tbaa !5
  %962 = load i64, ptr %57, align 8, !tbaa !9
  %963 = load i64, ptr %57, align 8, !tbaa !9
  %964 = load i64, ptr %34, align 8, !tbaa !9
  %965 = mul nsw i64 %963, %964
  %966 = add nsw i64 %962, %965
  %967 = getelementptr inbounds double, ptr %961, i64 %966
  %968 = load double, ptr %967, align 8, !tbaa !11
  %969 = fmul double %960, %968
  %970 = load double, ptr %105, align 8, !tbaa !11
  %971 = fmul double %969, %970
  store double %971, ptr %86, align 8, !tbaa !11
  %972 = load double, ptr %86, align 8, !tbaa !11
  %973 = load double, ptr %104, align 8, !tbaa !11
  %974 = fmul double %972, %973
  store double %974, ptr %82, align 8, !tbaa !11
  %975 = load double, ptr %109, align 8, !tbaa !11
  %976 = load double, ptr %105, align 8, !tbaa !11
  %977 = fmul double %975, %976
  store double %977, ptr %108, align 8, !tbaa !11
  store double 0.000000e+00, ptr %103, align 8, !tbaa !11
  store double 1.000000e+00, ptr %83, align 8, !tbaa !11
  %978 = load double, ptr %86, align 8, !tbaa !11
  %979 = fcmp oge double %978, 0.000000e+00
  br i1 %979, label %980, label %982

980:                                              ; preds = %945
  %981 = load double, ptr %86, align 8, !tbaa !11
  br label %985

982:                                              ; preds = %945
  %983 = load double, ptr %86, align 8, !tbaa !11
  %984 = fneg double %983
  br label %985

985:                                              ; preds = %982, %980
  %986 = phi double [ %981, %980 ], [ %984, %982 ]
  %987 = load double, ptr %110, align 8, !tbaa !11
  %988 = fcmp oge double %986, %987
  br i1 %988, label %989, label %1001

989:                                              ; preds = %985
  %990 = load double, ptr %82, align 8, !tbaa !11
  %991 = fcmp oge double %990, 0.000000e+00
  br i1 %991, label %992, label %994

992:                                              ; preds = %989
  %993 = load double, ptr %82, align 8, !tbaa !11
  br label %997

994:                                              ; preds = %989
  %995 = load double, ptr %82, align 8, !tbaa !11
  %996 = fneg double %995
  br label %997

997:                                              ; preds = %994, %992
  %998 = phi double [ %993, %992 ], [ %996, %994 ]
  %999 = load double, ptr %89, align 8, !tbaa !11
  %1000 = fcmp olt double %998, %999
  br label %1001

1001:                                             ; preds = %997, %985
  %1002 = phi i1 [ false, %985 ], [ %1000, %997 ]
  %1003 = zext i1 %1002 to i32
  %1004 = sext i32 %1003 to i64
  store i64 %1004, ptr %64, align 8, !tbaa !9
  %1005 = load double, ptr %109, align 8, !tbaa !11
  %1006 = fcmp oge double %1005, 0.000000e+00
  br i1 %1006, label %1007, label %1009

1007:                                             ; preds = %1001
  %1008 = load double, ptr %109, align 8, !tbaa !11
  br label %1012

1009:                                             ; preds = %1001
  %1010 = load double, ptr %109, align 8, !tbaa !11
  %1011 = fneg double %1010
  br label %1012

1012:                                             ; preds = %1009, %1007
  %1013 = phi double [ %1008, %1007 ], [ %1011, %1009 ]
  %1014 = load double, ptr %110, align 8, !tbaa !11
  %1015 = fcmp oge double %1013, %1014
  br i1 %1015, label %1016, label %1028

1016:                                             ; preds = %1012
  %1017 = load double, ptr %108, align 8, !tbaa !11
  %1018 = fcmp oge double %1017, 0.000000e+00
  br i1 %1018, label %1019, label %1021

1019:                                             ; preds = %1016
  %1020 = load double, ptr %108, align 8, !tbaa !11
  br label %1024

1021:                                             ; preds = %1016
  %1022 = load double, ptr %108, align 8, !tbaa !11
  %1023 = fneg double %1022
  br label %1024

1024:                                             ; preds = %1021, %1019
  %1025 = phi double [ %1020, %1019 ], [ %1023, %1021 ]
  %1026 = load double, ptr %89, align 8, !tbaa !11
  %1027 = fcmp olt double %1025, %1026
  br label %1028

1028:                                             ; preds = %1024, %1012
  %1029 = phi i1 [ false, %1012 ], [ %1027, %1024 ]
  %1030 = zext i1 %1029 to i32
  %1031 = sext i32 %1030 to i64
  store i64 %1031, ptr %65, align 8, !tbaa !9
  %1032 = load i64, ptr %64, align 8, !tbaa !9
  %1033 = icmp ne i64 %1032, 0
  br i1 %1033, label %1034, label %1056

1034:                                             ; preds = %1028
  %1035 = load double, ptr %89, align 8, !tbaa !11
  %1036 = load double, ptr %86, align 8, !tbaa !11
  %1037 = fcmp oge double %1036, 0.000000e+00
  br i1 %1037, label %1038, label %1040

1038:                                             ; preds = %1034
  %1039 = load double, ptr %86, align 8, !tbaa !11
  br label %1043

1040:                                             ; preds = %1034
  %1041 = load double, ptr %86, align 8, !tbaa !11
  %1042 = fneg double %1041
  br label %1043

1043:                                             ; preds = %1040, %1038
  %1044 = phi double [ %1039, %1038 ], [ %1042, %1040 ]
  %1045 = fdiv double %1035, %1044
  %1046 = load double, ptr %91, align 8, !tbaa !11
  %1047 = load double, ptr %63, align 8, !tbaa !11
  %1048 = fcmp ole double %1046, %1047
  br i1 %1048, label %1049, label %1051

1049:                                             ; preds = %1043
  %1050 = load double, ptr %91, align 8, !tbaa !11
  br label %1053

1051:                                             ; preds = %1043
  %1052 = load double, ptr %63, align 8, !tbaa !11
  br label %1053

1053:                                             ; preds = %1051, %1049
  %1054 = phi double [ %1050, %1049 ], [ %1052, %1051 ]
  %1055 = fmul double %1045, %1054
  store double %1055, ptr %83, align 8, !tbaa !11
  br label %1056

1056:                                             ; preds = %1053, %1028
  %1057 = load i64, ptr %65, align 8, !tbaa !9
  %1058 = icmp ne i64 %1057, 0
  br i1 %1058, label %1059, label %1091

1059:                                             ; preds = %1056
  %1060 = load double, ptr %83, align 8, !tbaa !11
  store double %1060, ptr %47, align 8, !tbaa !11
  %1061 = load double, ptr %89, align 8, !tbaa !11
  %1062 = load double, ptr %109, align 8, !tbaa !11
  %1063 = fcmp oge double %1062, 0.000000e+00
  br i1 %1063, label %1064, label %1066

1064:                                             ; preds = %1059
  %1065 = load double, ptr %109, align 8, !tbaa !11
  br label %1069

1066:                                             ; preds = %1059
  %1067 = load double, ptr %109, align 8, !tbaa !11
  %1068 = fneg double %1067
  br label %1069

1069:                                             ; preds = %1066, %1064
  %1070 = phi double [ %1065, %1064 ], [ %1068, %1066 ]
  %1071 = fdiv double %1061, %1070
  %1072 = load double, ptr %92, align 8, !tbaa !11
  %1073 = load double, ptr %63, align 8, !tbaa !11
  %1074 = fcmp ole double %1072, %1073
  br i1 %1074, label %1075, label %1077

1075:                                             ; preds = %1069
  %1076 = load double, ptr %92, align 8, !tbaa !11
  br label %1079

1077:                                             ; preds = %1069
  %1078 = load double, ptr %63, align 8, !tbaa !11
  br label %1079

1079:                                             ; preds = %1077, %1075
  %1080 = phi double [ %1076, %1075 ], [ %1078, %1077 ]
  %1081 = fmul double %1071, %1080
  store double %1081, ptr %48, align 8, !tbaa !11
  %1082 = load double, ptr %47, align 8, !tbaa !11
  %1083 = load double, ptr %48, align 8, !tbaa !11
  %1084 = fcmp oge double %1082, %1083
  br i1 %1084, label %1085, label %1087

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

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

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

1091:                                             ; preds = %1089, %1056
  %1092 = load i64, ptr %64, align 8, !tbaa !9
  %1093 = icmp ne i64 %1092, 0
  br i1 %1093, label %1097, label %1094

1094:                                             ; preds = %1091
  %1095 = load i64, ptr %65, align 8, !tbaa !9
  %1096 = icmp ne i64 %1095, 0
  br i1 %1096, label %1097, label %1173

1097:                                             ; preds = %1094, %1091
  store double 1.000000e+00, ptr %49, align 8, !tbaa !11
  %1098 = load double, ptr %82, align 8, !tbaa !11
  %1099 = fcmp oge double %1098, 0.000000e+00
  br i1 %1099, label %1100, label %1102

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

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

1105:                                             ; preds = %1102, %1100
  %1106 = phi double [ %1101, %1100 ], [ %1104, %1102 ]
  store double %1106, ptr %50, align 8, !tbaa !11
  %1107 = load double, ptr %49, align 8, !tbaa !11
  %1108 = load double, ptr %50, align 8, !tbaa !11
  %1109 = fcmp oge double %1107, %1108
  br i1 %1109, label %1110, label %1112

1110:                                             ; preds = %1105
  %1111 = load double, ptr %49, align 8, !tbaa !11
  br label %1114

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

1114:                                             ; preds = %1112, %1110
  %1115 = phi double [ %1111, %1110 ], [ %1113, %1112 ]
  store double %1115, ptr %49, align 8, !tbaa !11
  %1116 = load double, ptr %108, align 8, !tbaa !11
  %1117 = fcmp oge double %1116, 0.000000e+00
  br i1 %1117, label %1118, label %1120

1118:                                             ; preds = %1114
  %1119 = load double, ptr %108, align 8, !tbaa !11
  br label %1123

1120:                                             ; preds = %1114
  %1121 = load double, ptr %108, align 8, !tbaa !11
  %1122 = fneg double %1121
  br label %1123

1123:                                             ; preds = %1120, %1118
  %1124 = phi double [ %1119, %1118 ], [ %1122, %1120 ]
  store double %1124, ptr %50, align 8, !tbaa !11
  %1125 = load double, ptr %83, align 8, !tbaa !11
  store double %1125, ptr %47, align 8, !tbaa !11
  %1126 = load double, ptr %110, align 8, !tbaa !11
  %1127 = load double, ptr %49, align 8, !tbaa !11
  %1128 = load double, ptr %50, align 8, !tbaa !11
  %1129 = fcmp oge double %1127, %1128
  br i1 %1129, label %1130, label %1132

1130:                                             ; preds = %1123
  %1131 = load double, ptr %49, align 8, !tbaa !11
  br label %1134

1132:                                             ; preds = %1123
  %1133 = load double, ptr %50, align 8, !tbaa !11
  br label %1134

1134:                                             ; preds = %1132, %1130
  %1135 = phi double [ %1131, %1130 ], [ %1133, %1132 ]
  %1136 = fmul double %1126, %1135
  %1137 = fdiv double 1.000000e+00, %1136
  store double %1137, ptr %48, align 8, !tbaa !11
  %1138 = load double, ptr %47, align 8, !tbaa !11
  %1139 = load double, ptr %48, align 8, !tbaa !11
  %1140 = fcmp ole double %1138, %1139
  br i1 %1140, label %1141, label %1143

1141:                                             ; preds = %1134
  %1142 = load double, ptr %47, align 8, !tbaa !11
  br label %1145

1143:                                             ; preds = %1134
  %1144 = load double, ptr %48, align 8, !tbaa !11
  br label %1145

1145:                                             ; preds = %1143, %1141
  %1146 = phi double [ %1142, %1141 ], [ %1144, %1143 ]
  store double %1146, ptr %83, align 8, !tbaa !11
  %1147 = load i64, ptr %64, align 8, !tbaa !9
  %1148 = icmp ne i64 %1147, 0
  br i1 %1148, label %1149, label %1155

1149:                                             ; preds = %1145
  %1150 = load double, ptr %104, align 8, !tbaa !11
  %1151 = load double, ptr %83, align 8, !tbaa !11
  %1152 = load double, ptr %86, align 8, !tbaa !11
  %1153 = fmul double %1151, %1152
  %1154 = fmul double %1150, %1153
  store double %1154, ptr %82, align 8, !tbaa !11
  br label %1159

1155:                                             ; preds = %1145
  %1156 = load double, ptr %83, align 8, !tbaa !11
  %1157 = load double, ptr %82, align 8, !tbaa !11
  %1158 = fmul double %1156, %1157
  store double %1158, ptr %82, align 8, !tbaa !11
  br label %1159

1159:                                             ; preds = %1155, %1149
  %1160 = load i64, ptr %65, align 8, !tbaa !9
  %1161 = icmp ne i64 %1160, 0
  br i1 %1161, label %1162, label %1168

1162:                                             ; preds = %1159
  %1163 = load double, ptr %105, align 8, !tbaa !11
  %1164 = load double, ptr %83, align 8, !tbaa !11
  %1165 = load double, ptr %109, align 8, !tbaa !11
  %1166 = fmul double %1164, %1165
  %1167 = fmul double %1163, %1166
  store double %1167, ptr %108, align 8, !tbaa !11
  br label %1172

1168:                                             ; preds = %1159
  %1169 = load double, ptr %83, align 8, !tbaa !11
  %1170 = load double, ptr %108, align 8, !tbaa !11
  %1171 = fmul double %1169, %1170
  store double %1171, ptr %108, align 8, !tbaa !11
  br label %1172

1172:                                             ; preds = %1168, %1162
  br label %1173

1173:                                             ; preds = %1172, %1094
  %1174 = load double, ptr %82, align 8, !tbaa !11
  %1175 = fcmp oge double %1174, 0.000000e+00
  br i1 %1175, label %1176, label %1178

1176:                                             ; preds = %1173
  %1177 = load double, ptr %82, align 8, !tbaa !11
  br label %1181

1178:                                             ; preds = %1173
  %1179 = load double, ptr %82, align 8, !tbaa !11
  %1180 = fneg double %1179
  br label %1181

1181:                                             ; preds = %1178, %1176
  %1182 = phi double [ %1177, %1176 ], [ %1180, %1178 ]
  store double %1182, ptr %98, align 8, !tbaa !11
  %1183 = load double, ptr %108, align 8, !tbaa !11
  %1184 = fcmp oge double %1183, 0.000000e+00
  br i1 %1184, label %1185, label %1187

1185:                                             ; preds = %1181
  %1186 = load double, ptr %108, align 8, !tbaa !11
  br label %1190

1187:                                             ; preds = %1181
  %1188 = load double, ptr %108, align 8, !tbaa !11
  %1189 = fneg double %1188
  br label %1190

1190:                                             ; preds = %1187, %1185
  %1191 = phi double [ %1186, %1185 ], [ %1189, %1187 ]
  store double %1191, ptr %99, align 8, !tbaa !11
  %1192 = load ptr, ptr %32, align 8, !tbaa !5
  %1193 = load ptr, ptr %21, align 8, !tbaa !5
  %1194 = load i64, ptr %1193, align 8, !tbaa !9
  %1195 = shl i64 %1194, 1
  %1196 = load i64, ptr %57, align 8, !tbaa !9
  %1197 = add nsw i64 %1195, %1196
  %1198 = getelementptr inbounds double, ptr %1192, i64 %1197
  store double 1.000000e+00, ptr %1198, align 8, !tbaa !11
  store double 1.000000e+00, ptr %73, align 8, !tbaa !11
  br label %1648

1199:                                             ; preds = %887
  %1200 = load double, ptr %110, align 8, !tbaa !11
  %1201 = fmul double %1200, 1.000000e+02
  store double %1201, ptr %47, align 8, !tbaa !11
  %1202 = load ptr, ptr %22, align 8, !tbaa !5
  %1203 = load i64, ptr %57, align 8, !tbaa !9
  %1204 = load i64, ptr %57, align 8, !tbaa !9
  %1205 = load i64, ptr %36, align 8, !tbaa !9
  %1206 = mul nsw i64 %1204, %1205
  %1207 = add nsw i64 %1203, %1206
  %1208 = getelementptr inbounds double, ptr %1202, i64 %1207
  %1209 = load ptr, ptr %23, align 8, !tbaa !5
  %1210 = load ptr, ptr %24, align 8, !tbaa !5
  %1211 = load i64, ptr %57, align 8, !tbaa !9
  %1212 = load i64, ptr %57, align 8, !tbaa !9
  %1213 = load i64, ptr %34, align 8, !tbaa !9
  %1214 = mul nsw i64 %1212, %1213
  %1215 = add nsw i64 %1211, %1214
  %1216 = getelementptr inbounds double, ptr %1210, i64 %1215
  %1217 = load ptr, ptr %25, align 8, !tbaa !5
  %1218 = call i32 @dlag2_(ptr noundef %1208, ptr noundef %1209, ptr noundef %1216, ptr noundef %1217, ptr noundef %47, ptr noundef %82, ptr noundef %72, ptr noundef %108, ptr noundef %80, ptr noundef %103)
  %1219 = load double, ptr %103, align 8, !tbaa !11
  %1220 = fneg double %1219
  store double %1220, ptr %103, align 8, !tbaa !11
  %1221 = load double, ptr %103, align 8, !tbaa !11
  %1222 = fcmp oeq double %1221, 0.000000e+00
  br i1 %1222, label %1223, label %1226

1223:                                             ; preds = %1199
  %1224 = load i64, ptr %57, align 8, !tbaa !9
  %1225 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 %1224, ptr %1225, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %116, align 4
  br label %4557

1226:                                             ; preds = %1199
  %1227 = load double, ptr %82, align 8, !tbaa !11
  %1228 = fcmp oge double %1227, 0.000000e+00
  br i1 %1228, label %1229, label %1231

1229:                                             ; preds = %1226
  %1230 = load double, ptr %82, align 8, !tbaa !11
  br label %1234

1231:                                             ; preds = %1226
  %1232 = load double, ptr %82, align 8, !tbaa !11
  %1233 = fneg double %1232
  br label %1234

1234:                                             ; preds = %1231, %1229
  %1235 = phi double [ %1230, %1229 ], [ %1233, %1231 ]
  store double %1235, ptr %98, align 8, !tbaa !11
  %1236 = load double, ptr %108, align 8, !tbaa !11
  %1237 = fcmp oge double %1236, 0.000000e+00
  br i1 %1237, label %1238, label %1240

1238:                                             ; preds = %1234
  %1239 = load double, ptr %108, align 8, !tbaa !11
  br label %1243

1240:                                             ; preds = %1234
  %1241 = load double, ptr %108, align 8, !tbaa !11
  %1242 = fneg double %1241
  br label %1243

1243:                                             ; preds = %1240, %1238
  %1244 = phi double [ %1239, %1238 ], [ %1242, %1240 ]
  %1245 = load double, ptr %103, align 8, !tbaa !11
  %1246 = fcmp oge double %1245, 0.000000e+00
  br i1 %1246, label %1247, label %1249

1247:                                             ; preds = %1243
  %1248 = load double, ptr %103, align 8, !tbaa !11
  br label %1252

1249:                                             ; preds = %1243
  %1250 = load double, ptr %103, align 8, !tbaa !11
  %1251 = fneg double %1250
  br label %1252

1252:                                             ; preds = %1249, %1247
  %1253 = phi double [ %1248, %1247 ], [ %1251, %1249 ]
  %1254 = fadd double %1244, %1253
  store double %1254, ptr %99, align 8, !tbaa !11
  store double 1.000000e+00, ptr %83, align 8, !tbaa !11
  %1255 = load double, ptr %98, align 8, !tbaa !11
  %1256 = load double, ptr %66, align 8, !tbaa !11
  %1257 = fmul double %1255, %1256
  %1258 = load double, ptr %110, align 8, !tbaa !11
  %1259 = fcmp olt double %1257, %1258
  br i1 %1259, label %1260, label %1270

1260:                                             ; preds = %1252
  %1261 = load double, ptr %98, align 8, !tbaa !11
  %1262 = load double, ptr %110, align 8, !tbaa !11
  %1263 = fcmp oge double %1261, %1262
  br i1 %1263, label %1264, label %1270

1264:                                             ; preds = %1260
  %1265 = load double, ptr %110, align 8, !tbaa !11
  %1266 = load double, ptr %66, align 8, !tbaa !11
  %1267 = fdiv double %1265, %1266
  %1268 = load double, ptr %98, align 8, !tbaa !11
  %1269 = fdiv double %1267, %1268
  store double %1269, ptr %83, align 8, !tbaa !11
  br label %1270

1270:                                             ; preds = %1264, %1260, %1252
  %1271 = load double, ptr %99, align 8, !tbaa !11
  %1272 = load double, ptr %66, align 8, !tbaa !11
  %1273 = fmul double %1271, %1272
  %1274 = load double, ptr %110, align 8, !tbaa !11
  %1275 = fcmp olt double %1273, %1274
  br i1 %1275, label %1276, label %1296

1276:                                             ; preds = %1270
  %1277 = load double, ptr %99, align 8, !tbaa !11
  %1278 = load double, ptr %110, align 8, !tbaa !11
  %1279 = fcmp oge double %1277, %1278
  br i1 %1279, label %1280, label %1296

1280:                                             ; preds = %1276
  %1281 = load double, ptr %83, align 8, !tbaa !11
  store double %1281, ptr %47, align 8, !tbaa !11
  %1282 = load double, ptr %110, align 8, !tbaa !11
  %1283 = load double, ptr %66, align 8, !tbaa !11
  %1284 = fdiv double %1282, %1283
  %1285 = load double, ptr %99, align 8, !tbaa !11
  %1286 = fdiv double %1284, %1285
  store double %1286, ptr %48, align 8, !tbaa !11
  %1287 = load double, ptr %47, align 8, !tbaa !11
  %1288 = load double, ptr %48, align 8, !tbaa !11
  %1289 = fcmp oge double %1287, %1288
  br i1 %1289, label %1290, label %1292

1290:                                             ; preds = %1280
  %1291 = load double, ptr %47, align 8, !tbaa !11
  br label %1294

1292:                                             ; preds = %1280
  %1293 = load double, ptr %48, align 8, !tbaa !11
  br label %1294

1294:                                             ; preds = %1292, %1290
  %1295 = phi double [ %1291, %1290 ], [ %1293, %1292 ]
  store double %1295, ptr %83, align 8, !tbaa !11
  br label %1296

1296:                                             ; preds = %1294, %1276, %1270
  %1297 = load double, ptr %110, align 8, !tbaa !11
  %1298 = load double, ptr %98, align 8, !tbaa !11
  %1299 = fmul double %1297, %1298
  %1300 = load double, ptr %104, align 8, !tbaa !11
  %1301 = fcmp ogt double %1299, %1300
  br i1 %1301, label %1302, label %1308

1302:                                             ; preds = %1296
  %1303 = load double, ptr %104, align 8, !tbaa !11
  %1304 = load double, ptr %110, align 8, !tbaa !11
  %1305 = load double, ptr %98, align 8, !tbaa !11
  %1306 = fmul double %1304, %1305
  %1307 = fdiv double %1303, %1306
  store double %1307, ptr %83, align 8, !tbaa !11
  br label %1308

1308:                                             ; preds = %1302, %1296
  %1309 = load double, ptr %110, align 8, !tbaa !11
  %1310 = load double, ptr %99, align 8, !tbaa !11
  %1311 = fmul double %1309, %1310
  %1312 = load double, ptr %105, align 8, !tbaa !11
  %1313 = fcmp ogt double %1311, %1312
  br i1 %1313, label %1314, label %1330

1314:                                             ; preds = %1308
  %1315 = load double, ptr %83, align 8, !tbaa !11
  store double %1315, ptr %47, align 8, !tbaa !11
  %1316 = load double, ptr %105, align 8, !tbaa !11
  %1317 = load double, ptr %110, align 8, !tbaa !11
  %1318 = load double, ptr %99, align 8, !tbaa !11
  %1319 = fmul double %1317, %1318
  %1320 = fdiv double %1316, %1319
  store double %1320, ptr %48, align 8, !tbaa !11
  %1321 = load double, ptr %47, align 8, !tbaa !11
  %1322 = load double, ptr %48, align 8, !tbaa !11
  %1323 = fcmp ole double %1321, %1322
  br i1 %1323, label %1324, label %1326

1324:                                             ; preds = %1314
  %1325 = load double, ptr %47, align 8, !tbaa !11
  br label %1328

1326:                                             ; preds = %1314
  %1327 = load double, ptr %48, align 8, !tbaa !11
  br label %1328

1328:                                             ; preds = %1326, %1324
  %1329 = phi double [ %1325, %1324 ], [ %1327, %1326 ]
  store double %1329, ptr %83, align 8, !tbaa !11
  br label %1330

1330:                                             ; preds = %1328, %1308
  %1331 = load double, ptr %83, align 8, !tbaa !11
  %1332 = fcmp une double %1331, 1.000000e+00
  br i1 %1332, label %1333, label %1371

1333:                                             ; preds = %1330
  %1334 = load double, ptr %83, align 8, !tbaa !11
  %1335 = load double, ptr %82, align 8, !tbaa !11
  %1336 = fmul double %1334, %1335
  store double %1336, ptr %82, align 8, !tbaa !11
  %1337 = load double, ptr %82, align 8, !tbaa !11
  %1338 = fcmp oge double %1337, 0.000000e+00
  br i1 %1338, label %1339, label %1341

1339:                                             ; preds = %1333
  %1340 = load double, ptr %82, align 8, !tbaa !11
  br label %1344

1341:                                             ; preds = %1333
  %1342 = load double, ptr %82, align 8, !tbaa !11
  %1343 = fneg double %1342
  br label %1344

1344:                                             ; preds = %1341, %1339
  %1345 = phi double [ %1340, %1339 ], [ %1343, %1341 ]
  store double %1345, ptr %98, align 8, !tbaa !11
  %1346 = load double, ptr %83, align 8, !tbaa !11
  %1347 = load double, ptr %108, align 8, !tbaa !11
  %1348 = fmul double %1346, %1347
  store double %1348, ptr %108, align 8, !tbaa !11
  %1349 = load double, ptr %83, align 8, !tbaa !11
  %1350 = load double, ptr %103, align 8, !tbaa !11
  %1351 = fmul double %1349, %1350
  store double %1351, ptr %103, align 8, !tbaa !11
  %1352 = load double, ptr %108, align 8, !tbaa !11
  %1353 = fcmp oge double %1352, 0.000000e+00
  br i1 %1353, label %1354, label %1356

1354:                                             ; preds = %1344
  %1355 = load double, ptr %108, align 8, !tbaa !11
  br label %1359

1356:                                             ; preds = %1344
  %1357 = load double, ptr %108, align 8, !tbaa !11
  %1358 = fneg double %1357
  br label %1359

1359:                                             ; preds = %1356, %1354
  %1360 = phi double [ %1355, %1354 ], [ %1358, %1356 ]
  %1361 = load double, ptr %103, align 8, !tbaa !11
  %1362 = fcmp oge double %1361, 0.000000e+00
  br i1 %1362, label %1363, label %1365

1363:                                             ; preds = %1359
  %1364 = load double, ptr %103, align 8, !tbaa !11
  br label %1368

1365:                                             ; preds = %1359
  %1366 = load double, ptr %103, align 8, !tbaa !11
  %1367 = fneg double %1366
  br label %1368

1368:                                             ; preds = %1365, %1363
  %1369 = phi double [ %1364, %1363 ], [ %1367, %1365 ]
  %1370 = fadd double %1360, %1369
  store double %1370, ptr %99, align 8, !tbaa !11
  br label %1371

1371:                                             ; preds = %1368, %1330
  %1372 = load double, ptr %82, align 8, !tbaa !11
  %1373 = load ptr, ptr %22, align 8, !tbaa !5
  %1374 = load i64, ptr %57, align 8, !tbaa !9
  %1375 = add nsw i64 %1374, 1
  %1376 = load i64, ptr %57, align 8, !tbaa !9
  %1377 = load i64, ptr %36, align 8, !tbaa !9
  %1378 = mul nsw i64 %1376, %1377
  %1379 = add nsw i64 %1375, %1378
  %1380 = getelementptr inbounds double, ptr %1373, i64 %1379
  %1381 = load double, ptr %1380, align 8, !tbaa !11
  %1382 = fmul double %1372, %1381
  store double %1382, ptr %72, align 8, !tbaa !11
  %1383 = load double, ptr %82, align 8, !tbaa !11
  %1384 = load ptr, ptr %22, align 8, !tbaa !5
  %1385 = load i64, ptr %57, align 8, !tbaa !9
  %1386 = load i64, ptr %57, align 8, !tbaa !9
  %1387 = load i64, ptr %36, align 8, !tbaa !9
  %1388 = mul nsw i64 %1386, %1387
  %1389 = add nsw i64 %1385, %1388
  %1390 = getelementptr inbounds double, ptr %1384, i64 %1389
  %1391 = load double, ptr %1390, align 8, !tbaa !11
  %1392 = load double, ptr %108, align 8, !tbaa !11
  %1393 = load ptr, ptr %24, align 8, !tbaa !5
  %1394 = load i64, ptr %57, align 8, !tbaa !9
  %1395 = load i64, ptr %57, align 8, !tbaa !9
  %1396 = load i64, ptr %34, align 8, !tbaa !9
  %1397 = mul nsw i64 %1395, %1396
  %1398 = add nsw i64 %1394, %1397
  %1399 = getelementptr inbounds double, ptr %1393, i64 %1398
  %1400 = load double, ptr %1399, align 8, !tbaa !11
  %1401 = fmul double %1392, %1400
  %1402 = fneg double %1401
  %1403 = call double @llvm.fmuladd.f64(double %1383, double %1391, double %1402)
  store double %1403, ptr %95, align 8, !tbaa !11
  %1404 = load double, ptr %103, align 8, !tbaa !11
  %1405 = fneg double %1404
  %1406 = load ptr, ptr %24, align 8, !tbaa !5
  %1407 = load i64, ptr %57, align 8, !tbaa !9
  %1408 = load i64, ptr %57, align 8, !tbaa !9
  %1409 = load i64, ptr %34, align 8, !tbaa !9
  %1410 = mul nsw i64 %1408, %1409
  %1411 = add nsw i64 %1407, %1410
  %1412 = getelementptr inbounds double, ptr %1406, i64 %1411
  %1413 = load double, ptr %1412, align 8, !tbaa !11
  %1414 = fmul double %1405, %1413
  store double %1414, ptr %94, align 8, !tbaa !11
  %1415 = load double, ptr %72, align 8, !tbaa !11
  %1416 = fcmp oge double %1415, 0.000000e+00
  br i1 %1416, label %1417, label %1419

1417:                                             ; preds = %1371
  %1418 = load double, ptr %72, align 8, !tbaa !11
  br label %1422

1419:                                             ; preds = %1371
  %1420 = load double, ptr %72, align 8, !tbaa !11
  %1421 = fneg double %1420
  br label %1422

1422:                                             ; preds = %1419, %1417
  %1423 = phi double [ %1418, %1417 ], [ %1421, %1419 ]
  %1424 = load double, ptr %95, align 8, !tbaa !11
  %1425 = fcmp oge double %1424, 0.000000e+00
  br i1 %1425, label %1426, label %1428

1426:                                             ; preds = %1422
  %1427 = load double, ptr %95, align 8, !tbaa !11
  br label %1431

1428:                                             ; preds = %1422
  %1429 = load double, ptr %95, align 8, !tbaa !11
  %1430 = fneg double %1429
  br label %1431

1431:                                             ; preds = %1428, %1426
  %1432 = phi double [ %1427, %1426 ], [ %1430, %1428 ]
  %1433 = load double, ptr %94, align 8, !tbaa !11
  %1434 = fcmp oge double %1433, 0.000000e+00
  br i1 %1434, label %1435, label %1437

1435:                                             ; preds = %1431
  %1436 = load double, ptr %94, align 8, !tbaa !11
  br label %1440

1437:                                             ; preds = %1431
  %1438 = load double, ptr %94, align 8, !tbaa !11
  %1439 = fneg double %1438
  br label %1440

1440:                                             ; preds = %1437, %1435
  %1441 = phi double [ %1436, %1435 ], [ %1439, %1437 ]
  %1442 = fadd double %1432, %1441
  %1443 = fcmp ogt double %1423, %1442
  br i1 %1443, label %1444, label %1483

1444:                                             ; preds = %1440
  %1445 = load ptr, ptr %32, align 8, !tbaa !5
  %1446 = load ptr, ptr %21, align 8, !tbaa !5
  %1447 = load i64, ptr %1446, align 8, !tbaa !9
  %1448 = shl i64 %1447, 1
  %1449 = load i64, ptr %57, align 8, !tbaa !9
  %1450 = add nsw i64 %1448, %1449
  %1451 = getelementptr inbounds double, ptr %1445, i64 %1450
  store double 1.000000e+00, ptr %1451, align 8, !tbaa !11
  %1452 = load ptr, ptr %32, align 8, !tbaa !5
  %1453 = load ptr, ptr %21, align 8, !tbaa !5
  %1454 = load i64, ptr %1453, align 8, !tbaa !9
  %1455 = mul nsw i64 %1454, 3
  %1456 = load i64, ptr %57, align 8, !tbaa !9
  %1457 = add nsw i64 %1455, %1456
  %1458 = getelementptr inbounds double, ptr %1452, i64 %1457
  store double 0.000000e+00, ptr %1458, align 8, !tbaa !11
  %1459 = load double, ptr %95, align 8, !tbaa !11
  %1460 = fneg double %1459
  %1461 = load double, ptr %72, align 8, !tbaa !11
  %1462 = fdiv double %1460, %1461
  %1463 = load ptr, ptr %32, align 8, !tbaa !5
  %1464 = load ptr, ptr %21, align 8, !tbaa !5
  %1465 = load i64, ptr %1464, align 8, !tbaa !9
  %1466 = shl i64 %1465, 1
  %1467 = load i64, ptr %57, align 8, !tbaa !9
  %1468 = add nsw i64 %1466, %1467
  %1469 = add nsw i64 %1468, 1
  %1470 = getelementptr inbounds double, ptr %1463, i64 %1469
  store double %1462, ptr %1470, align 8, !tbaa !11
  %1471 = load double, ptr %94, align 8, !tbaa !11
  %1472 = fneg double %1471
  %1473 = load double, ptr %72, align 8, !tbaa !11
  %1474 = fdiv double %1472, %1473
  %1475 = load ptr, ptr %32, align 8, !tbaa !5
  %1476 = load ptr, ptr %21, align 8, !tbaa !5
  %1477 = load i64, ptr %1476, align 8, !tbaa !9
  %1478 = mul nsw i64 %1477, 3
  %1479 = load i64, ptr %57, align 8, !tbaa !9
  %1480 = add nsw i64 %1478, %1479
  %1481 = add nsw i64 %1480, 1
  %1482 = getelementptr inbounds double, ptr %1475, i64 %1481
  store double %1474, ptr %1482, align 8, !tbaa !11
  br label %1566

1483:                                             ; preds = %1440
  %1484 = load ptr, ptr %32, align 8, !tbaa !5
  %1485 = load ptr, ptr %21, align 8, !tbaa !5
  %1486 = load i64, ptr %1485, align 8, !tbaa !9
  %1487 = shl i64 %1486, 1
  %1488 = load i64, ptr %57, align 8, !tbaa !9
  %1489 = add nsw i64 %1487, %1488
  %1490 = add nsw i64 %1489, 1
  %1491 = getelementptr inbounds double, ptr %1484, i64 %1490
  store double 1.000000e+00, ptr %1491, align 8, !tbaa !11
  %1492 = load ptr, ptr %32, align 8, !tbaa !5
  %1493 = load ptr, ptr %21, align 8, !tbaa !5
  %1494 = load i64, ptr %1493, align 8, !tbaa !9
  %1495 = mul nsw i64 %1494, 3
  %1496 = load i64, ptr %57, align 8, !tbaa !9
  %1497 = add nsw i64 %1495, %1496
  %1498 = add nsw i64 %1497, 1
  %1499 = getelementptr inbounds double, ptr %1492, i64 %1498
  store double 0.000000e+00, ptr %1499, align 8, !tbaa !11
  %1500 = load double, ptr %82, align 8, !tbaa !11
  %1501 = load ptr, ptr %22, align 8, !tbaa !5
  %1502 = load i64, ptr %57, align 8, !tbaa !9
  %1503 = load i64, ptr %57, align 8, !tbaa !9
  %1504 = add nsw i64 %1503, 1
  %1505 = load i64, ptr %36, align 8, !tbaa !9
  %1506 = mul nsw i64 %1504, %1505
  %1507 = add nsw i64 %1502, %1506
  %1508 = getelementptr inbounds double, ptr %1501, i64 %1507
  %1509 = load double, ptr %1508, align 8, !tbaa !11
  %1510 = fmul double %1500, %1509
  store double %1510, ptr %72, align 8, !tbaa !11
  %1511 = load double, ptr %108, align 8, !tbaa !11
  %1512 = load ptr, ptr %24, align 8, !tbaa !5
  %1513 = load i64, ptr %57, align 8, !tbaa !9
  %1514 = add nsw i64 %1513, 1
  %1515 = load i64, ptr %57, align 8, !tbaa !9
  %1516 = add nsw i64 %1515, 1
  %1517 = load i64, ptr %34, align 8, !tbaa !9
  %1518 = mul nsw i64 %1516, %1517
  %1519 = add nsw i64 %1514, %1518
  %1520 = getelementptr inbounds double, ptr %1512, i64 %1519
  %1521 = load double, ptr %1520, align 8, !tbaa !11
  %1522 = load double, ptr %82, align 8, !tbaa !11
  %1523 = load ptr, ptr %22, align 8, !tbaa !5
  %1524 = load i64, ptr %57, align 8, !tbaa !9
  %1525 = add nsw i64 %1524, 1
  %1526 = load i64, ptr %57, align 8, !tbaa !9
  %1527 = add nsw i64 %1526, 1
  %1528 = load i64, ptr %36, align 8, !tbaa !9
  %1529 = mul nsw i64 %1527, %1528
  %1530 = add nsw i64 %1525, %1529
  %1531 = getelementptr inbounds double, ptr %1523, i64 %1530
  %1532 = load double, ptr %1531, align 8, !tbaa !11
  %1533 = fmul double %1522, %1532
  %1534 = fneg double %1533
  %1535 = call double @llvm.fmuladd.f64(double %1511, double %1521, double %1534)
  %1536 = load double, ptr %72, align 8, !tbaa !11
  %1537 = fdiv double %1535, %1536
  %1538 = load ptr, ptr %32, align 8, !tbaa !5
  %1539 = load ptr, ptr %21, align 8, !tbaa !5
  %1540 = load i64, ptr %1539, align 8, !tbaa !9
  %1541 = shl i64 %1540, 1
  %1542 = load i64, ptr %57, align 8, !tbaa !9
  %1543 = add nsw i64 %1541, %1542
  %1544 = getelementptr inbounds double, ptr %1538, i64 %1543
  store double %1537, ptr %1544, align 8, !tbaa !11
  %1545 = load double, ptr %103, align 8, !tbaa !11
  %1546 = load ptr, ptr %24, align 8, !tbaa !5
  %1547 = load i64, ptr %57, align 8, !tbaa !9
  %1548 = add nsw i64 %1547, 1
  %1549 = load i64, ptr %57, align 8, !tbaa !9
  %1550 = add nsw i64 %1549, 1
  %1551 = load i64, ptr %34, align 8, !tbaa !9
  %1552 = mul nsw i64 %1550, %1551
  %1553 = add nsw i64 %1548, %1552
  %1554 = getelementptr inbounds double, ptr %1546, i64 %1553
  %1555 = load double, ptr %1554, align 8, !tbaa !11
  %1556 = fmul double %1545, %1555
  %1557 = load double, ptr %72, align 8, !tbaa !11
  %1558 = fdiv double %1556, %1557
  %1559 = load ptr, ptr %32, align 8, !tbaa !5
  %1560 = load ptr, ptr %21, align 8, !tbaa !5
  %1561 = load i64, ptr %1560, align 8, !tbaa !9
  %1562 = mul nsw i64 %1561, 3
  %1563 = load i64, ptr %57, align 8, !tbaa !9
  %1564 = add nsw i64 %1562, %1563
  %1565 = getelementptr inbounds double, ptr %1559, i64 %1564
  store double %1558, ptr %1565, align 8, !tbaa !11
  br label %1566

1566:                                             ; preds = %1483, %1444
  %1567 = load ptr, ptr %32, align 8, !tbaa !5
  %1568 = load ptr, ptr %21, align 8, !tbaa !5
  %1569 = load i64, ptr %1568, align 8, !tbaa !9
  %1570 = shl i64 %1569, 1
  %1571 = load i64, ptr %57, align 8, !tbaa !9
  %1572 = add nsw i64 %1570, %1571
  %1573 = getelementptr inbounds double, ptr %1567, i64 %1572
  %1574 = load double, ptr %1573, align 8, !tbaa !11
  store double %1574, ptr %47, align 8, !tbaa !11
  %1575 = load double, ptr %47, align 8, !tbaa !11
  %1576 = fcmp oge double %1575, 0.000000e+00
  br i1 %1576, label %1577, label %1579

1577:                                             ; preds = %1566
  %1578 = load double, ptr %47, align 8, !tbaa !11
  br label %1582

1579:                                             ; preds = %1566
  %1580 = load double, ptr %47, align 8, !tbaa !11
  %1581 = fneg double %1580
  br label %1582

1582:                                             ; preds = %1579, %1577
  %1583 = phi double [ %1578, %1577 ], [ %1581, %1579 ]
  %1584 = load ptr, ptr %32, align 8, !tbaa !5
  %1585 = load ptr, ptr %21, align 8, !tbaa !5
  %1586 = load i64, ptr %1585, align 8, !tbaa !9
  %1587 = mul nsw i64 %1586, 3
  %1588 = load i64, ptr %57, align 8, !tbaa !9
  %1589 = add nsw i64 %1587, %1588
  %1590 = getelementptr inbounds double, ptr %1584, i64 %1589
  %1591 = load double, ptr %1590, align 8, !tbaa !11
  store double %1591, ptr %48, align 8, !tbaa !11
  %1592 = load double, ptr %48, align 8, !tbaa !11
  %1593 = fcmp oge double %1592, 0.000000e+00
  br i1 %1593, label %1594, label %1596

1594:                                             ; preds = %1582
  %1595 = load double, ptr %48, align 8, !tbaa !11
  br label %1599

1596:                                             ; preds = %1582
  %1597 = load double, ptr %48, align 8, !tbaa !11
  %1598 = fneg double %1597
  br label %1599

1599:                                             ; preds = %1596, %1594
  %1600 = phi double [ %1595, %1594 ], [ %1598, %1596 ]
  %1601 = fadd double %1583, %1600
  store double %1601, ptr %51, align 8, !tbaa !11
  %1602 = load ptr, ptr %32, align 8, !tbaa !5
  %1603 = load ptr, ptr %21, align 8, !tbaa !5
  %1604 = load i64, ptr %1603, align 8, !tbaa !9
  %1605 = shl i64 %1604, 1
  %1606 = load i64, ptr %57, align 8, !tbaa !9
  %1607 = add nsw i64 %1605, %1606
  %1608 = add nsw i64 %1607, 1
  %1609 = getelementptr inbounds double, ptr %1602, i64 %1608
  %1610 = load double, ptr %1609, align 8, !tbaa !11
  store double %1610, ptr %49, align 8, !tbaa !11
  %1611 = load double, ptr %49, align 8, !tbaa !11
  %1612 = fcmp oge double %1611, 0.000000e+00
  br i1 %1612, label %1613, label %1615

1613:                                             ; preds = %1599
  %1614 = load double, ptr %49, align 8, !tbaa !11
  br label %1618

1615:                                             ; preds = %1599
  %1616 = load double, ptr %49, align 8, !tbaa !11
  %1617 = fneg double %1616
  br label %1618

1618:                                             ; preds = %1615, %1613
  %1619 = phi double [ %1614, %1613 ], [ %1617, %1615 ]
  %1620 = load ptr, ptr %32, align 8, !tbaa !5
  %1621 = load ptr, ptr %21, align 8, !tbaa !5
  %1622 = load i64, ptr %1621, align 8, !tbaa !9
  %1623 = mul nsw i64 %1622, 3
  %1624 = load i64, ptr %57, align 8, !tbaa !9
  %1625 = add nsw i64 %1623, %1624
  %1626 = add nsw i64 %1625, 1
  %1627 = getelementptr inbounds double, ptr %1620, i64 %1626
  %1628 = load double, ptr %1627, align 8, !tbaa !11
  store double %1628, ptr %50, align 8, !tbaa !11
  %1629 = load double, ptr %50, align 8, !tbaa !11
  %1630 = fcmp oge double %1629, 0.000000e+00
  br i1 %1630, label %1631, label %1633

1631:                                             ; preds = %1618
  %1632 = load double, ptr %50, align 8, !tbaa !11
  br label %1636

1633:                                             ; preds = %1618
  %1634 = load double, ptr %50, align 8, !tbaa !11
  %1635 = fneg double %1634
  br label %1636

1636:                                             ; preds = %1633, %1631
  %1637 = phi double [ %1632, %1631 ], [ %1635, %1633 ]
  %1638 = fadd double %1619, %1637
  store double %1638, ptr %52, align 8, !tbaa !11
  %1639 = load double, ptr %51, align 8, !tbaa !11
  %1640 = load double, ptr %52, align 8, !tbaa !11
  %1641 = fcmp oge double %1639, %1640
  br i1 %1641, label %1642, label %1644

1642:                                             ; preds = %1636
  %1643 = load double, ptr %51, align 8, !tbaa !11
  br label %1646

1644:                                             ; preds = %1636
  %1645 = load double, ptr %52, align 8, !tbaa !11
  br label %1646

1646:                                             ; preds = %1644, %1642
  %1647 = phi double [ %1643, %1642 ], [ %1645, %1644 ]
  store double %1647, ptr %73, align 8, !tbaa !11
  br label %1648

1648:                                             ; preds = %1646, %1190
  %1649 = load double, ptr %66, align 8, !tbaa !11
  %1650 = load double, ptr %98, align 8, !tbaa !11
  %1651 = fmul double %1649, %1650
  %1652 = load double, ptr %91, align 8, !tbaa !11
  %1653 = fmul double %1651, %1652
  store double %1653, ptr %47, align 8, !tbaa !11
  %1654 = load double, ptr %66, align 8, !tbaa !11
  %1655 = load double, ptr %99, align 8, !tbaa !11
  %1656 = fmul double %1654, %1655
  %1657 = load double, ptr %92, align 8, !tbaa !11
  %1658 = fmul double %1656, %1657
  store double %1658, ptr %48, align 8, !tbaa !11
  %1659 = load double, ptr %47, align 8, !tbaa !11
  %1660 = load double, ptr %48, align 8, !tbaa !11
  %1661 = fcmp oge double %1659, %1660
  br i1 %1661, label %1662, label %1664

1662:                                             ; preds = %1648
  %1663 = load double, ptr %47, align 8, !tbaa !11
  br label %1666

1664:                                             ; preds = %1648
  %1665 = load double, ptr %48, align 8, !tbaa !11
  br label %1666

1666:                                             ; preds = %1664, %1662
  %1667 = phi double [ %1663, %1662 ], [ %1665, %1664 ]
  store double %1667, ptr %47, align 8, !tbaa !11
  %1668 = load double, ptr %47, align 8, !tbaa !11
  %1669 = load double, ptr %110, align 8, !tbaa !11
  %1670 = fcmp oge double %1668, %1669
  br i1 %1670, label %1671, label %1673

1671:                                             ; preds = %1666
  %1672 = load double, ptr %47, align 8, !tbaa !11
  br label %1675

1673:                                             ; preds = %1666
  %1674 = load double, ptr %110, align 8, !tbaa !11
  br label %1675

1675:                                             ; preds = %1673, %1671
  %1676 = phi double [ %1672, %1671 ], [ %1674, %1673 ]
  store double %1676, ptr %71, align 8, !tbaa !11
  store i64 0, ptr %87, align 8, !tbaa !9
  %1677 = load ptr, ptr %21, align 8, !tbaa !5
  %1678 = load i64, ptr %1677, align 8, !tbaa !9
  store i64 %1678, ptr %43, align 8, !tbaa !9
  %1679 = load i64, ptr %57, align 8, !tbaa !9
  %1680 = load i64, ptr %62, align 8, !tbaa !9
  %1681 = add nsw i64 %1679, %1680
  store i64 %1681, ptr %54, align 8, !tbaa !9
  br label %1682

1682:                                             ; preds = %2156, %1675
  %1683 = load i64, ptr %54, align 8, !tbaa !9
  %1684 = load i64, ptr %43, align 8, !tbaa !9
  %1685 = icmp sle i64 %1683, %1684
  br i1 %1685, label %1686, label %2159

1686:                                             ; preds = %1682
  %1687 = load i64, ptr %87, align 8, !tbaa !9
  %1688 = icmp ne i64 %1687, 0
  br i1 %1688, label %1689, label %1690

1689:                                             ; preds = %1686
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %2155

1690:                                             ; preds = %1686
  store i64 1, ptr %58, align 8, !tbaa !9
  %1691 = load ptr, ptr %24, align 8, !tbaa !5
  %1692 = load i64, ptr %54, align 8, !tbaa !9
  %1693 = load i64, ptr %54, align 8, !tbaa !9
  %1694 = load i64, ptr %34, align 8, !tbaa !9
  %1695 = mul nsw i64 %1693, %1694
  %1696 = add nsw i64 %1692, %1695
  %1697 = getelementptr inbounds double, ptr %1691, i64 %1696
  %1698 = load double, ptr %1697, align 8, !tbaa !11
  %1699 = getelementptr inbounds [2 x double], ptr %81, i64 0, i64 0
  store double %1698, ptr %1699, align 16, !tbaa !11
  %1700 = load i64, ptr %54, align 8, !tbaa !9
  %1701 = load ptr, ptr %21, align 8, !tbaa !5
  %1702 = load i64, ptr %1701, align 8, !tbaa !9
  %1703 = icmp slt i64 %1700, %1702
  br i1 %1703, label %1704, label %1728

1704:                                             ; preds = %1690
  %1705 = load ptr, ptr %22, align 8, !tbaa !5
  %1706 = load i64, ptr %54, align 8, !tbaa !9
  %1707 = add nsw i64 %1706, 1
  %1708 = load i64, ptr %54, align 8, !tbaa !9
  %1709 = load i64, ptr %36, align 8, !tbaa !9
  %1710 = mul nsw i64 %1708, %1709
  %1711 = add nsw i64 %1707, %1710
  %1712 = getelementptr inbounds double, ptr %1705, i64 %1711
  %1713 = load double, ptr %1712, align 8, !tbaa !11
  %1714 = fcmp une double %1713, 0.000000e+00
  br i1 %1714, label %1715, label %1727

1715:                                             ; preds = %1704
  store i64 1, ptr %87, align 8, !tbaa !9
  %1716 = load ptr, ptr %24, align 8, !tbaa !5
  %1717 = load i64, ptr %54, align 8, !tbaa !9
  %1718 = add nsw i64 %1717, 1
  %1719 = load i64, ptr %54, align 8, !tbaa !9
  %1720 = add nsw i64 %1719, 1
  %1721 = load i64, ptr %34, align 8, !tbaa !9
  %1722 = mul nsw i64 %1720, %1721
  %1723 = add nsw i64 %1718, %1722
  %1724 = getelementptr inbounds double, ptr %1716, i64 %1723
  %1725 = load double, ptr %1724, align 8, !tbaa !11
  %1726 = getelementptr inbounds [2 x double], ptr %81, i64 0, i64 1
  store double %1725, ptr %1726, align 8, !tbaa !11
  store i64 2, ptr %58, align 8, !tbaa !9
  br label %1727

1727:                                             ; preds = %1715, %1704
  br label %1728

1728:                                             ; preds = %1727, %1690
  %1729 = load double, ptr %73, align 8, !tbaa !11
  %1730 = fcmp oge double 1.000000e+00, %1729
  br i1 %1730, label %1731, label %1732

1731:                                             ; preds = %1728
  br label %1734

1732:                                             ; preds = %1728
  %1733 = load double, ptr %73, align 8, !tbaa !11
  br label %1734

1734:                                             ; preds = %1732, %1731
  %1735 = phi double [ 1.000000e+00, %1731 ], [ %1733, %1732 ]
  %1736 = fdiv double 1.000000e+00, %1735
  store double %1736, ptr %111, align 8, !tbaa !11
  %1737 = load ptr, ptr %32, align 8, !tbaa !5
  %1738 = load i64, ptr %54, align 8, !tbaa !9
  %1739 = getelementptr inbounds double, ptr %1737, i64 %1738
  %1740 = load double, ptr %1739, align 8, !tbaa !11
  store double %1740, ptr %47, align 8, !tbaa !11
  %1741 = load ptr, ptr %32, align 8, !tbaa !5
  %1742 = load ptr, ptr %21, align 8, !tbaa !5
  %1743 = load i64, ptr %1742, align 8, !tbaa !9
  %1744 = load i64, ptr %54, align 8, !tbaa !9
  %1745 = add nsw i64 %1743, %1744
  %1746 = getelementptr inbounds double, ptr %1741, i64 %1745
  %1747 = load double, ptr %1746, align 8, !tbaa !11
  store double %1747, ptr %48, align 8, !tbaa !11
  %1748 = load double, ptr %47, align 8, !tbaa !11
  %1749 = load double, ptr %48, align 8, !tbaa !11
  %1750 = fcmp oge double %1748, %1749
  br i1 %1750, label %1751, label %1753

1751:                                             ; preds = %1734
  %1752 = load double, ptr %47, align 8, !tbaa !11
  br label %1755

1753:                                             ; preds = %1734
  %1754 = load double, ptr %48, align 8, !tbaa !11
  br label %1755

1755:                                             ; preds = %1753, %1751
  %1756 = phi double [ %1752, %1751 ], [ %1754, %1753 ]
  store double %1756, ptr %47, align 8, !tbaa !11
  %1757 = load double, ptr %98, align 8, !tbaa !11
  %1758 = load ptr, ptr %32, align 8, !tbaa !5
  %1759 = load i64, ptr %54, align 8, !tbaa !9
  %1760 = getelementptr inbounds double, ptr %1758, i64 %1759
  %1761 = load double, ptr %1760, align 8, !tbaa !11
  %1762 = load double, ptr %99, align 8, !tbaa !11
  %1763 = load ptr, ptr %32, align 8, !tbaa !5
  %1764 = load ptr, ptr %21, align 8, !tbaa !5
  %1765 = load i64, ptr %1764, align 8, !tbaa !9
  %1766 = load i64, ptr %54, align 8, !tbaa !9
  %1767 = add nsw i64 %1765, %1766
  %1768 = getelementptr inbounds double, ptr %1763, i64 %1767
  %1769 = load double, ptr %1768, align 8, !tbaa !11
  %1770 = fmul double %1762, %1769
  %1771 = call double @llvm.fmuladd.f64(double %1757, double %1761, double %1770)
  store double %1771, ptr %48, align 8, !tbaa !11
  %1772 = load double, ptr %47, align 8, !tbaa !11
  %1773 = load double, ptr %48, align 8, !tbaa !11
  %1774 = fcmp oge double %1772, %1773
  br i1 %1774, label %1775, label %1777

1775:                                             ; preds = %1755
  %1776 = load double, ptr %47, align 8, !tbaa !11
  br label %1779

1777:                                             ; preds = %1755
  %1778 = load double, ptr %48, align 8, !tbaa !11
  br label %1779

1779:                                             ; preds = %1777, %1775
  %1780 = phi double [ %1776, %1775 ], [ %1778, %1777 ]
  store double %1780, ptr %72, align 8, !tbaa !11
  %1781 = load i64, ptr %87, align 8, !tbaa !9
  %1782 = icmp ne i64 %1781, 0
  br i1 %1782, label %1783, label %1842

1783:                                             ; preds = %1779
  %1784 = load double, ptr %72, align 8, !tbaa !11
  store double %1784, ptr %47, align 8, !tbaa !11
  %1785 = load ptr, ptr %32, align 8, !tbaa !5
  %1786 = load i64, ptr %54, align 8, !tbaa !9
  %1787 = add nsw i64 %1786, 1
  %1788 = getelementptr inbounds double, ptr %1785, i64 %1787
  %1789 = load double, ptr %1788, align 8, !tbaa !11
  store double %1789, ptr %48, align 8, !tbaa !11
  %1790 = load double, ptr %47, align 8, !tbaa !11
  %1791 = load double, ptr %48, align 8, !tbaa !11
  %1792 = fcmp oge double %1790, %1791
  br i1 %1792, label %1793, label %1795

1793:                                             ; preds = %1783
  %1794 = load double, ptr %47, align 8, !tbaa !11
  br label %1797

1795:                                             ; preds = %1783
  %1796 = load double, ptr %48, align 8, !tbaa !11
  br label %1797

1797:                                             ; preds = %1795, %1793
  %1798 = phi double [ %1794, %1793 ], [ %1796, %1795 ]
  store double %1798, ptr %47, align 8, !tbaa !11
  %1799 = load ptr, ptr %32, align 8, !tbaa !5
  %1800 = load ptr, ptr %21, align 8, !tbaa !5
  %1801 = load i64, ptr %1800, align 8, !tbaa !9
  %1802 = load i64, ptr %54, align 8, !tbaa !9
  %1803 = add nsw i64 %1801, %1802
  %1804 = add nsw i64 %1803, 1
  %1805 = getelementptr inbounds double, ptr %1799, i64 %1804
  %1806 = load double, ptr %1805, align 8, !tbaa !11
  store double %1806, ptr %48, align 8, !tbaa !11
  %1807 = load double, ptr %47, align 8, !tbaa !11
  %1808 = load double, ptr %48, align 8, !tbaa !11
  %1809 = fcmp oge double %1807, %1808
  br i1 %1809, label %1810, label %1812

1810:                                             ; preds = %1797
  %1811 = load double, ptr %47, align 8, !tbaa !11
  br label %1814

1812:                                             ; preds = %1797
  %1813 = load double, ptr %48, align 8, !tbaa !11
  br label %1814

1814:                                             ; preds = %1812, %1810
  %1815 = phi double [ %1811, %1810 ], [ %1813, %1812 ]
  store double %1815, ptr %47, align 8, !tbaa !11
  %1816 = load double, ptr %98, align 8, !tbaa !11
  %1817 = load ptr, ptr %32, align 8, !tbaa !5
  %1818 = load i64, ptr %54, align 8, !tbaa !9
  %1819 = add nsw i64 %1818, 1
  %1820 = getelementptr inbounds double, ptr %1817, i64 %1819
  %1821 = load double, ptr %1820, align 8, !tbaa !11
  %1822 = load double, ptr %99, align 8, !tbaa !11
  %1823 = load ptr, ptr %32, align 8, !tbaa !5
  %1824 = load ptr, ptr %21, align 8, !tbaa !5
  %1825 = load i64, ptr %1824, align 8, !tbaa !9
  %1826 = load i64, ptr %54, align 8, !tbaa !9
  %1827 = add nsw i64 %1825, %1826
  %1828 = add nsw i64 %1827, 1
  %1829 = getelementptr inbounds double, ptr %1823, i64 %1828
  %1830 = load double, ptr %1829, align 8, !tbaa !11
  %1831 = fmul double %1822, %1830
  %1832 = call double @llvm.fmuladd.f64(double %1816, double %1821, double %1831)
  store double %1832, ptr %48, align 8, !tbaa !11
  %1833 = load double, ptr %47, align 8, !tbaa !11
  %1834 = load double, ptr %48, align 8, !tbaa !11
  %1835 = fcmp oge double %1833, %1834
  br i1 %1835, label %1836, label %1838

1836:                                             ; preds = %1814
  %1837 = load double, ptr %47, align 8, !tbaa !11
  br label %1840

1838:                                             ; preds = %1814
  %1839 = load double, ptr %48, align 8, !tbaa !11
  br label %1840

1840:                                             ; preds = %1838, %1836
  %1841 = phi double [ %1837, %1836 ], [ %1839, %1838 ]
  store double %1841, ptr %72, align 8, !tbaa !11
  br label %1842

1842:                                             ; preds = %1840, %1779
  %1843 = load double, ptr %72, align 8, !tbaa !11
  %1844 = load double, ptr %112, align 8, !tbaa !11
  %1845 = load double, ptr %111, align 8, !tbaa !11
  %1846 = fmul double %1844, %1845
  %1847 = fcmp ogt double %1843, %1846
  br i1 %1847, label %1848, label %1896

1848:                                             ; preds = %1842
  %1849 = load i64, ptr %62, align 8, !tbaa !9
  %1850 = sub nsw i64 %1849, 1
  store i64 %1850, ptr %44, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %1851

1851:                                             ; preds = %1889, %1848
  %1852 = load i64, ptr %61, align 8, !tbaa !9
  %1853 = load i64, ptr %44, align 8, !tbaa !9
  %1854 = icmp sle i64 %1852, %1853
  br i1 %1854, label %1855, label %1892

1855:                                             ; preds = %1851
  %1856 = load i64, ptr %54, align 8, !tbaa !9
  %1857 = sub nsw i64 %1856, 1
  store i64 %1857, ptr %45, align 8, !tbaa !9
  %1858 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %1858, ptr %60, align 8, !tbaa !9
  br label %1859

1859:                                             ; preds = %1885, %1855
  %1860 = load i64, ptr %60, align 8, !tbaa !9
  %1861 = load i64, ptr %45, align 8, !tbaa !9
  %1862 = icmp sle i64 %1860, %1861
  br i1 %1862, label %1863, label %1888

1863:                                             ; preds = %1859
  %1864 = load double, ptr %111, align 8, !tbaa !11
  %1865 = load ptr, ptr %32, align 8, !tbaa !5
  %1866 = load i64, ptr %61, align 8, !tbaa !9
  %1867 = add nsw i64 %1866, 2
  %1868 = load ptr, ptr %21, align 8, !tbaa !5
  %1869 = load i64, ptr %1868, align 8, !tbaa !9
  %1870 = mul nsw i64 %1867, %1869
  %1871 = load i64, ptr %60, align 8, !tbaa !9
  %1872 = add nsw i64 %1870, %1871
  %1873 = getelementptr inbounds double, ptr %1865, i64 %1872
  %1874 = load double, ptr %1873, align 8, !tbaa !11
  %1875 = fmul double %1864, %1874
  %1876 = load ptr, ptr %32, align 8, !tbaa !5
  %1877 = load i64, ptr %61, align 8, !tbaa !9
  %1878 = add nsw i64 %1877, 2
  %1879 = load ptr, ptr %21, align 8, !tbaa !5
  %1880 = load i64, ptr %1879, align 8, !tbaa !9
  %1881 = mul nsw i64 %1878, %1880
  %1882 = load i64, ptr %60, align 8, !tbaa !9
  %1883 = add nsw i64 %1881, %1882
  %1884 = getelementptr inbounds double, ptr %1876, i64 %1883
  store double %1875, ptr %1884, align 8, !tbaa !11
  br label %1885

1885:                                             ; preds = %1863
  %1886 = load i64, ptr %60, align 8, !tbaa !9
  %1887 = add nsw i64 %1886, 1
  store i64 %1887, ptr %60, align 8, !tbaa !9
  br label %1859, !llvm.loop !21

1888:                                             ; preds = %1859
  br label %1889

1889:                                             ; preds = %1888
  %1890 = load i64, ptr %61, align 8, !tbaa !9
  %1891 = add nsw i64 %1890, 1
  store i64 %1891, ptr %61, align 8, !tbaa !9
  br label %1851, !llvm.loop !22

1892:                                             ; preds = %1851
  %1893 = load double, ptr %111, align 8, !tbaa !11
  %1894 = load double, ptr %73, align 8, !tbaa !11
  %1895 = fmul double %1894, %1893
  store double %1895, ptr %73, align 8, !tbaa !11
  br label %1896

1896:                                             ; preds = %1892, %1842
  %1897 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %1897, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %1898

1898:                                             ; preds = %1995, %1896
  %1899 = load i64, ptr %61, align 8, !tbaa !9
  %1900 = load i64, ptr %44, align 8, !tbaa !9
  %1901 = icmp sle i64 %1899, %1900
  br i1 %1901, label %1902, label %1998

1902:                                             ; preds = %1898
  %1903 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %1903, ptr %45, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %1904

1904:                                             ; preds = %1991, %1902
  %1905 = load i64, ptr %55, align 8, !tbaa !9
  %1906 = load i64, ptr %45, align 8, !tbaa !9
  %1907 = icmp sle i64 %1905, %1906
  br i1 %1907, label %1908, label %1994

1908:                                             ; preds = %1904
  %1909 = load i64, ptr %55, align 8, !tbaa !9
  %1910 = load i64, ptr %61, align 8, !tbaa !9
  %1911 = shl i64 %1910, 1
  %1912 = add nsw i64 %1909, %1911
  %1913 = sub nsw i64 %1912, 3
  %1914 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %1913
  store double 0.000000e+00, ptr %1914, align 8, !tbaa !11
  %1915 = load i64, ptr %55, align 8, !tbaa !9
  %1916 = load i64, ptr %61, align 8, !tbaa !9
  %1917 = shl i64 %1916, 1
  %1918 = add nsw i64 %1915, %1917
  %1919 = sub nsw i64 %1918, 3
  %1920 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 %1919
  store double 0.000000e+00, ptr %1920, align 8, !tbaa !11
  %1921 = load i64, ptr %54, align 8, !tbaa !9
  %1922 = sub nsw i64 %1921, 1
  store i64 %1922, ptr %46, align 8, !tbaa !9
  %1923 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %1923, ptr %60, align 8, !tbaa !9
  br label %1924

1924:                                             ; preds = %1987, %1908
  %1925 = load i64, ptr %60, align 8, !tbaa !9
  %1926 = load i64, ptr %46, align 8, !tbaa !9
  %1927 = icmp sle i64 %1925, %1926
  br i1 %1927, label %1928, label %1990

1928:                                             ; preds = %1924
  %1929 = load ptr, ptr %22, align 8, !tbaa !5
  %1930 = load i64, ptr %60, align 8, !tbaa !9
  %1931 = load i64, ptr %54, align 8, !tbaa !9
  %1932 = load i64, ptr %55, align 8, !tbaa !9
  %1933 = add nsw i64 %1931, %1932
  %1934 = sub nsw i64 %1933, 1
  %1935 = load i64, ptr %36, align 8, !tbaa !9
  %1936 = mul nsw i64 %1934, %1935
  %1937 = add nsw i64 %1930, %1936
  %1938 = getelementptr inbounds double, ptr %1929, i64 %1937
  %1939 = load double, ptr %1938, align 8, !tbaa !11
  %1940 = load ptr, ptr %32, align 8, !tbaa !5
  %1941 = load i64, ptr %61, align 8, !tbaa !9
  %1942 = add nsw i64 %1941, 1
  %1943 = load ptr, ptr %21, align 8, !tbaa !5
  %1944 = load i64, ptr %1943, align 8, !tbaa !9
  %1945 = mul nsw i64 %1942, %1944
  %1946 = load i64, ptr %60, align 8, !tbaa !9
  %1947 = add nsw i64 %1945, %1946
  %1948 = getelementptr inbounds double, ptr %1940, i64 %1947
  %1949 = load double, ptr %1948, align 8, !tbaa !11
  %1950 = load i64, ptr %55, align 8, !tbaa !9
  %1951 = load i64, ptr %61, align 8, !tbaa !9
  %1952 = shl i64 %1951, 1
  %1953 = add nsw i64 %1950, %1952
  %1954 = sub nsw i64 %1953, 3
  %1955 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %1954
  %1956 = load double, ptr %1955, align 8, !tbaa !11
  %1957 = call double @llvm.fmuladd.f64(double %1939, double %1949, double %1956)
  store double %1957, ptr %1955, align 8, !tbaa !11
  %1958 = load ptr, ptr %24, align 8, !tbaa !5
  %1959 = load i64, ptr %60, align 8, !tbaa !9
  %1960 = load i64, ptr %54, align 8, !tbaa !9
  %1961 = load i64, ptr %55, align 8, !tbaa !9
  %1962 = add nsw i64 %1960, %1961
  %1963 = sub nsw i64 %1962, 1
  %1964 = load i64, ptr %34, align 8, !tbaa !9
  %1965 = mul nsw i64 %1963, %1964
  %1966 = add nsw i64 %1959, %1965
  %1967 = getelementptr inbounds double, ptr %1958, i64 %1966
  %1968 = load double, ptr %1967, align 8, !tbaa !11
  %1969 = load ptr, ptr %32, align 8, !tbaa !5
  %1970 = load i64, ptr %61, align 8, !tbaa !9
  %1971 = add nsw i64 %1970, 1
  %1972 = load ptr, ptr %21, align 8, !tbaa !5
  %1973 = load i64, ptr %1972, align 8, !tbaa !9
  %1974 = mul nsw i64 %1971, %1973
  %1975 = load i64, ptr %60, align 8, !tbaa !9
  %1976 = add nsw i64 %1974, %1975
  %1977 = getelementptr inbounds double, ptr %1969, i64 %1976
  %1978 = load double, ptr %1977, align 8, !tbaa !11
  %1979 = load i64, ptr %55, align 8, !tbaa !9
  %1980 = load i64, ptr %61, align 8, !tbaa !9
  %1981 = shl i64 %1980, 1
  %1982 = add nsw i64 %1979, %1981
  %1983 = sub nsw i64 %1982, 3
  %1984 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 %1983
  %1985 = load double, ptr %1984, align 8, !tbaa !11
  %1986 = call double @llvm.fmuladd.f64(double %1968, double %1978, double %1985)
  store double %1986, ptr %1984, align 8, !tbaa !11
  br label %1987

1987:                                             ; preds = %1928
  %1988 = load i64, ptr %60, align 8, !tbaa !9
  %1989 = add nsw i64 %1988, 1
  store i64 %1989, ptr %60, align 8, !tbaa !9
  br label %1924, !llvm.loop !23

1990:                                             ; preds = %1924
  br label %1991

1991:                                             ; preds = %1990
  %1992 = load i64, ptr %55, align 8, !tbaa !9
  %1993 = add nsw i64 %1992, 1
  store i64 %1993, ptr %55, align 8, !tbaa !9
  br label %1904, !llvm.loop !24

1994:                                             ; preds = %1904
  br label %1995

1995:                                             ; preds = %1994
  %1996 = load i64, ptr %61, align 8, !tbaa !9
  %1997 = add nsw i64 %1996, 1
  store i64 %1997, ptr %61, align 8, !tbaa !9
  br label %1898, !llvm.loop !25

1998:                                             ; preds = %1898
  %1999 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %1999, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %2000

2000:                                             ; preds = %2071, %1998
  %2001 = load i64, ptr %55, align 8, !tbaa !9
  %2002 = load i64, ptr %44, align 8, !tbaa !9
  %2003 = icmp sle i64 %2001, %2002
  br i1 %2003, label %2004, label %2074

2004:                                             ; preds = %2000
  %2005 = load i64, ptr %114, align 8, !tbaa !9
  %2006 = icmp ne i64 %2005, 0
  br i1 %2006, label %2007, label %2053

2007:                                             ; preds = %2004
  %2008 = load double, ptr %82, align 8, !tbaa !11
  %2009 = fneg double %2008
  %2010 = load i64, ptr %55, align 8, !tbaa !9
  %2011 = sub nsw i64 %2010, 1
  %2012 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %2011
  %2013 = load double, ptr %2012, align 8, !tbaa !11
  %2014 = load double, ptr %108, align 8, !tbaa !11
  %2015 = load i64, ptr %55, align 8, !tbaa !9
  %2016 = sub nsw i64 %2015, 1
  %2017 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 %2016
  %2018 = load double, ptr %2017, align 8, !tbaa !11
  %2019 = fmul double %2014, %2018
  %2020 = call double @llvm.fmuladd.f64(double %2009, double %2013, double %2019)
  %2021 = load double, ptr %103, align 8, !tbaa !11
  %2022 = load i64, ptr %55, align 8, !tbaa !9
  %2023 = add nsw i64 %2022, 1
  %2024 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 %2023
  %2025 = load double, ptr %2024, align 8, !tbaa !11
  %2026 = fneg double %2021
  %2027 = call double @llvm.fmuladd.f64(double %2026, double %2025, double %2020)
  %2028 = load i64, ptr %55, align 8, !tbaa !9
  %2029 = sub nsw i64 %2028, 1
  %2030 = getelementptr inbounds [4 x double], ptr %67, i64 0, i64 %2029
  store double %2027, ptr %2030, align 8, !tbaa !11
  %2031 = load double, ptr %82, align 8, !tbaa !11
  %2032 = fneg double %2031
  %2033 = load i64, ptr %55, align 8, !tbaa !9
  %2034 = add nsw i64 %2033, 1
  %2035 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %2034
  %2036 = load double, ptr %2035, align 8, !tbaa !11
  %2037 = load double, ptr %108, align 8, !tbaa !11
  %2038 = load i64, ptr %55, align 8, !tbaa !9
  %2039 = add nsw i64 %2038, 1
  %2040 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 %2039
  %2041 = load double, ptr %2040, align 8, !tbaa !11
  %2042 = fmul double %2037, %2041
  %2043 = call double @llvm.fmuladd.f64(double %2032, double %2036, double %2042)
  %2044 = load double, ptr %103, align 8, !tbaa !11
  %2045 = load i64, ptr %55, align 8, !tbaa !9
  %2046 = sub nsw i64 %2045, 1
  %2047 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 %2046
  %2048 = load double, ptr %2047, align 8, !tbaa !11
  %2049 = call double @llvm.fmuladd.f64(double %2044, double %2048, double %2043)
  %2050 = load i64, ptr %55, align 8, !tbaa !9
  %2051 = add nsw i64 %2050, 1
  %2052 = getelementptr inbounds [4 x double], ptr %67, i64 0, i64 %2051
  store double %2049, ptr %2052, align 8, !tbaa !11
  br label %2070

2053:                                             ; preds = %2004
  %2054 = load double, ptr %82, align 8, !tbaa !11
  %2055 = fneg double %2054
  %2056 = load i64, ptr %55, align 8, !tbaa !9
  %2057 = sub nsw i64 %2056, 1
  %2058 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %2057
  %2059 = load double, ptr %2058, align 8, !tbaa !11
  %2060 = load double, ptr %108, align 8, !tbaa !11
  %2061 = load i64, ptr %55, align 8, !tbaa !9
  %2062 = sub nsw i64 %2061, 1
  %2063 = getelementptr inbounds [4 x double], ptr %74, i64 0, i64 %2062
  %2064 = load double, ptr %2063, align 8, !tbaa !11
  %2065 = fmul double %2060, %2064
  %2066 = call double @llvm.fmuladd.f64(double %2055, double %2059, double %2065)
  %2067 = load i64, ptr %55, align 8, !tbaa !9
  %2068 = sub nsw i64 %2067, 1
  %2069 = getelementptr inbounds [4 x double], ptr %67, i64 0, i64 %2068
  store double %2066, ptr %2069, align 8, !tbaa !11
  br label %2070

2070:                                             ; preds = %2053, %2007
  br label %2071

2071:                                             ; preds = %2070
  %2072 = load i64, ptr %55, align 8, !tbaa !9
  %2073 = add nsw i64 %2072, 1
  store i64 %2073, ptr %55, align 8, !tbaa !9
  br label %2000, !llvm.loop !26

2074:                                             ; preds = %2000
  %2075 = load ptr, ptr %22, align 8, !tbaa !5
  %2076 = load i64, ptr %54, align 8, !tbaa !9
  %2077 = load i64, ptr %54, align 8, !tbaa !9
  %2078 = load i64, ptr %36, align 8, !tbaa !9
  %2079 = mul nsw i64 %2077, %2078
  %2080 = add nsw i64 %2076, %2079
  %2081 = getelementptr inbounds double, ptr %2075, i64 %2080
  %2082 = load ptr, ptr %23, align 8, !tbaa !5
  %2083 = getelementptr inbounds [2 x double], ptr %81, i64 0, i64 0
  %2084 = getelementptr inbounds [2 x double], ptr %81, i64 0, i64 1
  %2085 = getelementptr inbounds [4 x double], ptr %67, i64 0, i64 0
  %2086 = load ptr, ptr %32, align 8, !tbaa !5
  %2087 = load ptr, ptr %21, align 8, !tbaa !5
  %2088 = load i64, ptr %2087, align 8, !tbaa !9
  %2089 = shl i64 %2088, 1
  %2090 = load i64, ptr %54, align 8, !tbaa !9
  %2091 = add nsw i64 %2089, %2090
  %2092 = getelementptr inbounds double, ptr %2086, i64 %2091
  %2093 = load ptr, ptr %21, align 8, !tbaa !5
  %2094 = call i32 @dlaln2_(ptr noundef @c_true, ptr noundef %58, ptr noundef %62, ptr noundef %71, ptr noundef %82, ptr noundef %2081, ptr noundef %2082, ptr noundef %2083, ptr noundef %2084, ptr noundef %2085, ptr noundef @c__2, ptr noundef %108, ptr noundef %103, ptr noundef %2092, ptr noundef %2093, ptr noundef %83, ptr noundef %72, ptr noundef %88)
  %2095 = load double, ptr %83, align 8, !tbaa !11
  %2096 = fcmp olt double %2095, 1.000000e+00
  br i1 %2096, label %2097, label %2145

2097:                                             ; preds = %2074
  %2098 = load i64, ptr %62, align 8, !tbaa !9
  %2099 = sub nsw i64 %2098, 1
  store i64 %2099, ptr %44, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %2100

2100:                                             ; preds = %2138, %2097
  %2101 = load i64, ptr %61, align 8, !tbaa !9
  %2102 = load i64, ptr %44, align 8, !tbaa !9
  %2103 = icmp sle i64 %2101, %2102
  br i1 %2103, label %2104, label %2141

2104:                                             ; preds = %2100
  %2105 = load i64, ptr %54, align 8, !tbaa !9
  %2106 = sub nsw i64 %2105, 1
  store i64 %2106, ptr %45, align 8, !tbaa !9
  %2107 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %2107, ptr %60, align 8, !tbaa !9
  br label %2108

2108:                                             ; preds = %2134, %2104
  %2109 = load i64, ptr %60, align 8, !tbaa !9
  %2110 = load i64, ptr %45, align 8, !tbaa !9
  %2111 = icmp sle i64 %2109, %2110
  br i1 %2111, label %2112, label %2137

2112:                                             ; preds = %2108
  %2113 = load double, ptr %83, align 8, !tbaa !11
  %2114 = load ptr, ptr %32, align 8, !tbaa !5
  %2115 = load i64, ptr %61, align 8, !tbaa !9
  %2116 = add nsw i64 %2115, 2
  %2117 = load ptr, ptr %21, align 8, !tbaa !5
  %2118 = load i64, ptr %2117, align 8, !tbaa !9
  %2119 = mul nsw i64 %2116, %2118
  %2120 = load i64, ptr %60, align 8, !tbaa !9
  %2121 = add nsw i64 %2119, %2120
  %2122 = getelementptr inbounds double, ptr %2114, i64 %2121
  %2123 = load double, ptr %2122, align 8, !tbaa !11
  %2124 = fmul double %2113, %2123
  %2125 = load ptr, ptr %32, align 8, !tbaa !5
  %2126 = load i64, ptr %61, align 8, !tbaa !9
  %2127 = add nsw i64 %2126, 2
  %2128 = load ptr, ptr %21, align 8, !tbaa !5
  %2129 = load i64, ptr %2128, align 8, !tbaa !9
  %2130 = mul nsw i64 %2127, %2129
  %2131 = load i64, ptr %60, align 8, !tbaa !9
  %2132 = add nsw i64 %2130, %2131
  %2133 = getelementptr inbounds double, ptr %2125, i64 %2132
  store double %2124, ptr %2133, align 8, !tbaa !11
  br label %2134

2134:                                             ; preds = %2112
  %2135 = load i64, ptr %60, align 8, !tbaa !9
  %2136 = add nsw i64 %2135, 1
  store i64 %2136, ptr %60, align 8, !tbaa !9
  br label %2108, !llvm.loop !27

2137:                                             ; preds = %2108
  br label %2138

2138:                                             ; preds = %2137
  %2139 = load i64, ptr %61, align 8, !tbaa !9
  %2140 = add nsw i64 %2139, 1
  store i64 %2140, ptr %61, align 8, !tbaa !9
  br label %2100, !llvm.loop !28

2141:                                             ; preds = %2100
  %2142 = load double, ptr %83, align 8, !tbaa !11
  %2143 = load double, ptr %73, align 8, !tbaa !11
  %2144 = fmul double %2142, %2143
  store double %2144, ptr %73, align 8, !tbaa !11
  br label %2145

2145:                                             ; preds = %2141, %2074
  %2146 = load double, ptr %73, align 8, !tbaa !11
  %2147 = load double, ptr %72, align 8, !tbaa !11
  %2148 = fcmp oge double %2146, %2147
  br i1 %2148, label %2149, label %2151

2149:                                             ; preds = %2145
  %2150 = load double, ptr %73, align 8, !tbaa !11
  br label %2153

2151:                                             ; preds = %2145
  %2152 = load double, ptr %72, align 8, !tbaa !11
  br label %2153

2153:                                             ; preds = %2151, %2149
  %2154 = phi double [ %2150, %2149 ], [ %2152, %2151 ]
  store double %2154, ptr %73, align 8, !tbaa !11
  br label %2155

2155:                                             ; preds = %2153, %1689
  br label %2156

2156:                                             ; preds = %2155
  %2157 = load i64, ptr %54, align 8, !tbaa !9
  %2158 = add nsw i64 %2157, 1
  store i64 %2158, ptr %54, align 8, !tbaa !9
  br label %1682, !llvm.loop !29

2159:                                             ; preds = %1682
  %2160 = load i64, ptr %69, align 8, !tbaa !9
  %2161 = add nsw i64 %2160, 1
  store i64 %2161, ptr %69, align 8, !tbaa !9
  %2162 = load i64, ptr %102, align 8, !tbaa !9
  %2163 = icmp ne i64 %2162, 0
  br i1 %2163, label %2164, label %2223

2164:                                             ; preds = %2159
  %2165 = load i64, ptr %62, align 8, !tbaa !9
  %2166 = sub nsw i64 %2165, 1
  store i64 %2166, ptr %43, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %2167

2167:                                             ; preds = %2203, %2164
  %2168 = load i64, ptr %61, align 8, !tbaa !9
  %2169 = load i64, ptr %43, align 8, !tbaa !9
  %2170 = icmp sle i64 %2168, %2169
  br i1 %2170, label %2171, label %2206

2171:                                             ; preds = %2167
  %2172 = load ptr, ptr %21, align 8, !tbaa !5
  %2173 = load i64, ptr %2172, align 8, !tbaa !9
  %2174 = add nsw i64 %2173, 1
  %2175 = load i64, ptr %57, align 8, !tbaa !9
  %2176 = sub nsw i64 %2174, %2175
  store i64 %2176, ptr %44, align 8, !tbaa !9
  %2177 = load ptr, ptr %21, align 8, !tbaa !5
  %2178 = load ptr, ptr %26, align 8, !tbaa !5
  %2179 = load i64, ptr %57, align 8, !tbaa !9
  %2180 = load i64, ptr %38, align 8, !tbaa !9
  %2181 = mul nsw i64 %2179, %2180
  %2182 = add nsw i64 %2181, 1
  %2183 = getelementptr inbounds double, ptr %2178, i64 %2182
  %2184 = load ptr, ptr %27, align 8, !tbaa !5
  %2185 = load ptr, ptr %32, align 8, !tbaa !5
  %2186 = load i64, ptr %61, align 8, !tbaa !9
  %2187 = add nsw i64 %2186, 2
  %2188 = load ptr, ptr %21, align 8, !tbaa !5
  %2189 = load i64, ptr %2188, align 8, !tbaa !9
  %2190 = mul nsw i64 %2187, %2189
  %2191 = load i64, ptr %57, align 8, !tbaa !9
  %2192 = add nsw i64 %2190, %2191
  %2193 = getelementptr inbounds double, ptr %2185, i64 %2192
  %2194 = load ptr, ptr %32, align 8, !tbaa !5
  %2195 = load i64, ptr %61, align 8, !tbaa !9
  %2196 = add nsw i64 %2195, 4
  %2197 = load ptr, ptr %21, align 8, !tbaa !5
  %2198 = load i64, ptr %2197, align 8, !tbaa !9
  %2199 = mul nsw i64 %2196, %2198
  %2200 = add nsw i64 %2199, 1
  %2201 = getelementptr inbounds double, ptr %2194, i64 %2200
  %2202 = call i32 @f2c_dgemv(ptr noundef @.str.9, ptr noundef %2177, ptr noundef %44, ptr noundef @c_b34, ptr noundef %2183, ptr noundef %2184, ptr noundef %2193, ptr noundef @c__1, ptr noundef @c_b36, ptr noundef %2201, ptr noundef @c__1)
  br label %2203

2203:                                             ; preds = %2171
  %2204 = load i64, ptr %61, align 8, !tbaa !9
  %2205 = add nsw i64 %2204, 1
  store i64 %2205, ptr %61, align 8, !tbaa !9
  br label %2167, !llvm.loop !30

2206:                                             ; preds = %2167
  %2207 = load ptr, ptr %21, align 8, !tbaa !5
  %2208 = load ptr, ptr %32, align 8, !tbaa !5
  %2209 = load ptr, ptr %21, align 8, !tbaa !5
  %2210 = load i64, ptr %2209, align 8, !tbaa !9
  %2211 = shl i64 %2210, 2
  %2212 = add nsw i64 %2211, 1
  %2213 = getelementptr inbounds double, ptr %2208, i64 %2212
  %2214 = load ptr, ptr %21, align 8, !tbaa !5
  %2215 = load ptr, ptr %26, align 8, !tbaa !5
  %2216 = load i64, ptr %57, align 8, !tbaa !9
  %2217 = load i64, ptr %38, align 8, !tbaa !9
  %2218 = mul nsw i64 %2216, %2217
  %2219 = add nsw i64 %2218, 1
  %2220 = getelementptr inbounds double, ptr %2215, i64 %2219
  %2221 = load ptr, ptr %27, align 8, !tbaa !5
  %2222 = call i32 @dlacpy_(ptr noundef @.str.10, ptr noundef %2207, ptr noundef %62, ptr noundef %2213, ptr noundef %2214, ptr noundef %2220, ptr noundef %2221)
  store i64 1, ptr %68, align 8, !tbaa !9
  br label %2241

2223:                                             ; preds = %2159
  %2224 = load ptr, ptr %21, align 8, !tbaa !5
  %2225 = load ptr, ptr %32, align 8, !tbaa !5
  %2226 = load ptr, ptr %21, align 8, !tbaa !5
  %2227 = load i64, ptr %2226, align 8, !tbaa !9
  %2228 = shl i64 %2227, 1
  %2229 = add nsw i64 %2228, 1
  %2230 = getelementptr inbounds double, ptr %2225, i64 %2229
  %2231 = load ptr, ptr %21, align 8, !tbaa !5
  %2232 = load ptr, ptr %26, align 8, !tbaa !5
  %2233 = load i64, ptr %69, align 8, !tbaa !9
  %2234 = load i64, ptr %38, align 8, !tbaa !9
  %2235 = mul nsw i64 %2233, %2234
  %2236 = add nsw i64 %2235, 1
  %2237 = getelementptr inbounds double, ptr %2232, i64 %2236
  %2238 = load ptr, ptr %27, align 8, !tbaa !5
  %2239 = call i32 @dlacpy_(ptr noundef @.str.10, ptr noundef %2224, ptr noundef %62, ptr noundef %2230, ptr noundef %2231, ptr noundef %2237, ptr noundef %2238)
  %2240 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %2240, ptr %68, align 8, !tbaa !9
  br label %2241

2241:                                             ; preds = %2223, %2206
  store double 0.000000e+00, ptr %73, align 8, !tbaa !11
  %2242 = load i64, ptr %114, align 8, !tbaa !9
  %2243 = icmp ne i64 %2242, 0
  br i1 %2243, label %2244, label %2303

2244:                                             ; preds = %2241
  %2245 = load ptr, ptr %21, align 8, !tbaa !5
  %2246 = load i64, ptr %2245, align 8, !tbaa !9
  store i64 %2246, ptr %43, align 8, !tbaa !9
  %2247 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %2247, ptr %54, align 8, !tbaa !9
  br label %2248

2248:                                             ; preds = %2299, %2244
  %2249 = load i64, ptr %54, align 8, !tbaa !9
  %2250 = load i64, ptr %43, align 8, !tbaa !9
  %2251 = icmp sle i64 %2249, %2250
  br i1 %2251, label %2252, label %2302

2252:                                             ; preds = %2248
  %2253 = load double, ptr %73, align 8, !tbaa !11
  store double %2253, ptr %49, align 8, !tbaa !11
  %2254 = load ptr, ptr %26, align 8, !tbaa !5
  %2255 = load i64, ptr %54, align 8, !tbaa !9
  %2256 = load i64, ptr %69, align 8, !tbaa !9
  %2257 = load i64, ptr %38, align 8, !tbaa !9
  %2258 = mul nsw i64 %2256, %2257
  %2259 = add nsw i64 %2255, %2258
  %2260 = getelementptr inbounds double, ptr %2254, i64 %2259
  %2261 = load double, ptr %2260, align 8, !tbaa !11
  store double %2261, ptr %47, align 8, !tbaa !11
  %2262 = load double, ptr %47, align 8, !tbaa !11
  %2263 = fcmp oge double %2262, 0.000000e+00
  br i1 %2263, label %2264, label %2266

2264:                                             ; preds = %2252
  %2265 = load double, ptr %47, align 8, !tbaa !11
  br label %2269

2266:                                             ; preds = %2252
  %2267 = load double, ptr %47, align 8, !tbaa !11
  %2268 = fneg double %2267
  br label %2269

2269:                                             ; preds = %2266, %2264
  %2270 = phi double [ %2265, %2264 ], [ %2268, %2266 ]
  %2271 = load ptr, ptr %26, align 8, !tbaa !5
  %2272 = load i64, ptr %54, align 8, !tbaa !9
  %2273 = load i64, ptr %69, align 8, !tbaa !9
  %2274 = add nsw i64 %2273, 1
  %2275 = load i64, ptr %38, align 8, !tbaa !9
  %2276 = mul nsw i64 %2274, %2275
  %2277 = add nsw i64 %2272, %2276
  %2278 = getelementptr inbounds double, ptr %2271, i64 %2277
  %2279 = load double, ptr %2278, align 8, !tbaa !11
  store double %2279, ptr %48, align 8, !tbaa !11
  %2280 = load double, ptr %48, align 8, !tbaa !11
  %2281 = fcmp oge double %2280, 0.000000e+00
  br i1 %2281, label %2282, label %2284

2282:                                             ; preds = %2269
  %2283 = load double, ptr %48, align 8, !tbaa !11
  br label %2287

2284:                                             ; preds = %2269
  %2285 = load double, ptr %48, align 8, !tbaa !11
  %2286 = fneg double %2285
  br label %2287

2287:                                             ; preds = %2284, %2282
  %2288 = phi double [ %2283, %2282 ], [ %2286, %2284 ]
  %2289 = fadd double %2270, %2288
  store double %2289, ptr %50, align 8, !tbaa !11
  %2290 = load double, ptr %49, align 8, !tbaa !11
  %2291 = load double, ptr %50, align 8, !tbaa !11
  %2292 = fcmp oge double %2290, %2291
  br i1 %2292, label %2293, label %2295

2293:                                             ; preds = %2287
  %2294 = load double, ptr %49, align 8, !tbaa !11
  br label %2297

2295:                                             ; preds = %2287
  %2296 = load double, ptr %50, align 8, !tbaa !11
  br label %2297

2297:                                             ; preds = %2295, %2293
  %2298 = phi double [ %2294, %2293 ], [ %2296, %2295 ]
  store double %2298, ptr %73, align 8, !tbaa !11
  br label %2299

2299:                                             ; preds = %2297
  %2300 = load i64, ptr %54, align 8, !tbaa !9
  %2301 = add nsw i64 %2300, 1
  store i64 %2301, ptr %54, align 8, !tbaa !9
  br label %2248, !llvm.loop !31

2302:                                             ; preds = %2248
  br label %2343

2303:                                             ; preds = %2241
  %2304 = load ptr, ptr %21, align 8, !tbaa !5
  %2305 = load i64, ptr %2304, align 8, !tbaa !9
  store i64 %2305, ptr %43, align 8, !tbaa !9
  %2306 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %2306, ptr %54, align 8, !tbaa !9
  br label %2307

2307:                                             ; preds = %2339, %2303
  %2308 = load i64, ptr %54, align 8, !tbaa !9
  %2309 = load i64, ptr %43, align 8, !tbaa !9
  %2310 = icmp sle i64 %2308, %2309
  br i1 %2310, label %2311, label %2342

2311:                                             ; preds = %2307
  %2312 = load double, ptr %73, align 8, !tbaa !11
  store double %2312, ptr %48, align 8, !tbaa !11
  %2313 = load ptr, ptr %26, align 8, !tbaa !5
  %2314 = load i64, ptr %54, align 8, !tbaa !9
  %2315 = load i64, ptr %69, align 8, !tbaa !9
  %2316 = load i64, ptr %38, align 8, !tbaa !9
  %2317 = mul nsw i64 %2315, %2316
  %2318 = add nsw i64 %2314, %2317
  %2319 = getelementptr inbounds double, ptr %2313, i64 %2318
  %2320 = load double, ptr %2319, align 8, !tbaa !11
  store double %2320, ptr %47, align 8, !tbaa !11
  %2321 = load double, ptr %47, align 8, !tbaa !11
  %2322 = fcmp oge double %2321, 0.000000e+00
  br i1 %2322, label %2323, label %2325

2323:                                             ; preds = %2311
  %2324 = load double, ptr %47, align 8, !tbaa !11
  br label %2328

2325:                                             ; preds = %2311
  %2326 = load double, ptr %47, align 8, !tbaa !11
  %2327 = fneg double %2326
  br label %2328

2328:                                             ; preds = %2325, %2323
  %2329 = phi double [ %2324, %2323 ], [ %2327, %2325 ]
  store double %2329, ptr %49, align 8, !tbaa !11
  %2330 = load double, ptr %48, align 8, !tbaa !11
  %2331 = load double, ptr %49, align 8, !tbaa !11
  %2332 = fcmp oge double %2330, %2331
  br i1 %2332, label %2333, label %2335

2333:                                             ; preds = %2328
  %2334 = load double, ptr %48, align 8, !tbaa !11
  br label %2337

2335:                                             ; preds = %2328
  %2336 = load double, ptr %49, align 8, !tbaa !11
  br label %2337

2337:                                             ; preds = %2335, %2333
  %2338 = phi double [ %2334, %2333 ], [ %2336, %2335 ]
  store double %2338, ptr %73, align 8, !tbaa !11
  br label %2339

2339:                                             ; preds = %2337
  %2340 = load i64, ptr %54, align 8, !tbaa !9
  %2341 = add nsw i64 %2340, 1
  store i64 %2341, ptr %54, align 8, !tbaa !9
  br label %2307, !llvm.loop !32

2342:                                             ; preds = %2307
  br label %2343

2343:                                             ; preds = %2342, %2302
  %2344 = load double, ptr %73, align 8, !tbaa !11
  %2345 = load double, ptr %110, align 8, !tbaa !11
  %2346 = fcmp ogt double %2344, %2345
  br i1 %2346, label %2347, label %2394

2347:                                             ; preds = %2343
  %2348 = load double, ptr %73, align 8, !tbaa !11
  %2349 = fdiv double 1.000000e+00, %2348
  store double %2349, ptr %111, align 8, !tbaa !11
  %2350 = load i64, ptr %62, align 8, !tbaa !9
  %2351 = sub nsw i64 %2350, 1
  store i64 %2351, ptr %43, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %2352

2352:                                             ; preds = %2390, %2347
  %2353 = load i64, ptr %61, align 8, !tbaa !9
  %2354 = load i64, ptr %43, align 8, !tbaa !9
  %2355 = icmp sle i64 %2353, %2354
  br i1 %2355, label %2356, label %2393

2356:                                             ; preds = %2352
  %2357 = load ptr, ptr %21, align 8, !tbaa !5
  %2358 = load i64, ptr %2357, align 8, !tbaa !9
  store i64 %2358, ptr %44, align 8, !tbaa !9
  %2359 = load i64, ptr %68, align 8, !tbaa !9
  store i64 %2359, ptr %60, align 8, !tbaa !9
  br label %2360

2360:                                             ; preds = %2386, %2356
  %2361 = load i64, ptr %60, align 8, !tbaa !9
  %2362 = load i64, ptr %44, align 8, !tbaa !9
  %2363 = icmp sle i64 %2361, %2362
  br i1 %2363, label %2364, label %2389

2364:                                             ; preds = %2360
  %2365 = load double, ptr %111, align 8, !tbaa !11
  %2366 = load ptr, ptr %26, align 8, !tbaa !5
  %2367 = load i64, ptr %60, align 8, !tbaa !9
  %2368 = load i64, ptr %69, align 8, !tbaa !9
  %2369 = load i64, ptr %61, align 8, !tbaa !9
  %2370 = add nsw i64 %2368, %2369
  %2371 = load i64, ptr %38, align 8, !tbaa !9
  %2372 = mul nsw i64 %2370, %2371
  %2373 = add nsw i64 %2367, %2372
  %2374 = getelementptr inbounds double, ptr %2366, i64 %2373
  %2375 = load double, ptr %2374, align 8, !tbaa !11
  %2376 = fmul double %2365, %2375
  %2377 = load ptr, ptr %26, align 8, !tbaa !5
  %2378 = load i64, ptr %60, align 8, !tbaa !9
  %2379 = load i64, ptr %69, align 8, !tbaa !9
  %2380 = load i64, ptr %61, align 8, !tbaa !9
  %2381 = add nsw i64 %2379, %2380
  %2382 = load i64, ptr %38, align 8, !tbaa !9
  %2383 = mul nsw i64 %2381, %2382
  %2384 = add nsw i64 %2378, %2383
  %2385 = getelementptr inbounds double, ptr %2377, i64 %2384
  store double %2376, ptr %2385, align 8, !tbaa !11
  br label %2386

2386:                                             ; preds = %2364
  %2387 = load i64, ptr %60, align 8, !tbaa !9
  %2388 = add nsw i64 %2387, 1
  store i64 %2388, ptr %60, align 8, !tbaa !9
  br label %2360, !llvm.loop !33

2389:                                             ; preds = %2360
  br label %2390

2390:                                             ; preds = %2389
  %2391 = load i64, ptr %61, align 8, !tbaa !9
  %2392 = add nsw i64 %2391, 1
  store i64 %2392, ptr %61, align 8, !tbaa !9
  br label %2352, !llvm.loop !34

2393:                                             ; preds = %2352
  br label %2394

2394:                                             ; preds = %2393, %2343
  %2395 = load i64, ptr %69, align 8, !tbaa !9
  %2396 = load i64, ptr %62, align 8, !tbaa !9
  %2397 = add nsw i64 %2395, %2396
  %2398 = sub nsw i64 %2397, 1
  store i64 %2398, ptr %69, align 8, !tbaa !9
  br label %2399

2399:                                             ; preds = %2394, %858, %794, %742
  br label %2400

2400:                                             ; preds = %2399
  %2401 = load i64, ptr %57, align 8, !tbaa !9
  %2402 = add nsw i64 %2401, 1
  store i64 %2402, ptr %57, align 8, !tbaa !9
  br label %735, !llvm.loop !35

2403:                                             ; preds = %735
  br label %2404

2404:                                             ; preds = %2403, %727
  %2405 = load i64, ptr %93, align 8, !tbaa !9
  %2406 = icmp ne i64 %2405, 0
  br i1 %2406, label %2407, label %4556

2407:                                             ; preds = %2404
  %2408 = load i64, ptr %59, align 8, !tbaa !9
  %2409 = add nsw i64 %2408, 1
  store i64 %2409, ptr %69, align 8, !tbaa !9
  store i64 0, ptr %114, align 8, !tbaa !9
  %2410 = load ptr, ptr %21, align 8, !tbaa !5
  %2411 = load i64, ptr %2410, align 8, !tbaa !9
  store i64 %2411, ptr %57, align 8, !tbaa !9
  br label %2412

2412:                                             ; preds = %4552, %2407
  %2413 = load i64, ptr %57, align 8, !tbaa !9
  %2414 = icmp sge i64 %2413, 1
  br i1 %2414, label %2415, label %4555

2415:                                             ; preds = %2412
  %2416 = load i64, ptr %114, align 8, !tbaa !9
  %2417 = icmp ne i64 %2416, 0
  br i1 %2417, label %2418, label %2419

2418:                                             ; preds = %2415
  store i64 0, ptr %114, align 8, !tbaa !9
  br label %4551

2419:                                             ; preds = %2415
  store i64 1, ptr %62, align 8, !tbaa !9
  %2420 = load i64, ptr %57, align 8, !tbaa !9
  %2421 = icmp sgt i64 %2420, 1
  br i1 %2421, label %2422, label %2435

2422:                                             ; preds = %2419
  %2423 = load ptr, ptr %22, align 8, !tbaa !5
  %2424 = load i64, ptr %57, align 8, !tbaa !9
  %2425 = load i64, ptr %57, align 8, !tbaa !9
  %2426 = sub nsw i64 %2425, 1
  %2427 = load i64, ptr %36, align 8, !tbaa !9
  %2428 = mul nsw i64 %2426, %2427
  %2429 = add nsw i64 %2424, %2428
  %2430 = getelementptr inbounds double, ptr %2423, i64 %2429
  %2431 = load double, ptr %2430, align 8, !tbaa !11
  %2432 = fcmp une double %2431, 0.000000e+00
  br i1 %2432, label %2433, label %2434

2433:                                             ; preds = %2422
  store i64 1, ptr %114, align 8, !tbaa !9
  store i64 2, ptr %62, align 8, !tbaa !9
  br label %2434

2434:                                             ; preds = %2433, %2422
  br label %2435

2435:                                             ; preds = %2434, %2419
  %2436 = load i64, ptr %84, align 8, !tbaa !9
  %2437 = icmp ne i64 %2436, 0
  br i1 %2437, label %2438, label %2439

2438:                                             ; preds = %2435
  store i64 1, ptr %113, align 8, !tbaa !9
  br label %2465

2439:                                             ; preds = %2435
  %2440 = load i64, ptr %114, align 8, !tbaa !9
  %2441 = icmp ne i64 %2440, 0
  br i1 %2441, label %2442, label %2459

2442:                                             ; preds = %2439
  %2443 = load ptr, ptr %20, align 8, !tbaa !5
  %2444 = load i64, ptr %57, align 8, !tbaa !9
  %2445 = getelementptr inbounds i64, ptr %2443, i64 %2444
  %2446 = load i64, ptr %2445, align 8, !tbaa !9
  %2447 = icmp ne i64 %2446, 0
  br i1 %2447, label %2455, label %2448

2448:                                             ; preds = %2442
  %2449 = load ptr, ptr %20, align 8, !tbaa !5
  %2450 = load i64, ptr %57, align 8, !tbaa !9
  %2451 = sub nsw i64 %2450, 1
  %2452 = getelementptr inbounds i64, ptr %2449, i64 %2451
  %2453 = load i64, ptr %2452, align 8, !tbaa !9
  %2454 = icmp ne i64 %2453, 0
  br label %2455

2455:                                             ; preds = %2448, %2442
  %2456 = phi i1 [ true, %2442 ], [ %2454, %2448 ]
  %2457 = zext i1 %2456 to i32
  %2458 = sext i32 %2457 to i64
  store i64 %2458, ptr %113, align 8, !tbaa !9
  br label %2464

2459:                                             ; preds = %2439
  %2460 = load ptr, ptr %20, align 8, !tbaa !5
  %2461 = load i64, ptr %57, align 8, !tbaa !9
  %2462 = getelementptr inbounds i64, ptr %2460, i64 %2461
  %2463 = load i64, ptr %2462, align 8, !tbaa !9
  store i64 %2463, ptr %113, align 8, !tbaa !9
  br label %2464

2464:                                             ; preds = %2459, %2455
  br label %2465

2465:                                             ; preds = %2464, %2438
  %2466 = load i64, ptr %113, align 8, !tbaa !9
  %2467 = icmp ne i64 %2466, 0
  br i1 %2467, label %2469, label %2468

2468:                                             ; preds = %2465
  br label %4551

2469:                                             ; preds = %2465
  %2470 = load i64, ptr %114, align 8, !tbaa !9
  %2471 = icmp ne i64 %2470, 0
  br i1 %2471, label %2541, label %2472

2472:                                             ; preds = %2469
  %2473 = load ptr, ptr %22, align 8, !tbaa !5
  %2474 = load i64, ptr %57, align 8, !tbaa !9
  %2475 = load i64, ptr %57, align 8, !tbaa !9
  %2476 = load i64, ptr %36, align 8, !tbaa !9
  %2477 = mul nsw i64 %2475, %2476
  %2478 = add nsw i64 %2474, %2477
  %2479 = getelementptr inbounds double, ptr %2473, i64 %2478
  %2480 = load double, ptr %2479, align 8, !tbaa !11
  store double %2480, ptr %47, align 8, !tbaa !11
  %2481 = load double, ptr %47, align 8, !tbaa !11
  %2482 = fcmp oge double %2481, 0.000000e+00
  br i1 %2482, label %2483, label %2485

2483:                                             ; preds = %2472
  %2484 = load double, ptr %47, align 8, !tbaa !11
  br label %2488

2485:                                             ; preds = %2472
  %2486 = load double, ptr %47, align 8, !tbaa !11
  %2487 = fneg double %2486
  br label %2488

2488:                                             ; preds = %2485, %2483
  %2489 = phi double [ %2484, %2483 ], [ %2487, %2485 ]
  %2490 = load double, ptr %110, align 8, !tbaa !11
  %2491 = fcmp ole double %2489, %2490
  br i1 %2491, label %2492, label %2540

2492:                                             ; preds = %2488
  %2493 = load ptr, ptr %24, align 8, !tbaa !5
  %2494 = load i64, ptr %57, align 8, !tbaa !9
  %2495 = load i64, ptr %57, align 8, !tbaa !9
  %2496 = load i64, ptr %34, align 8, !tbaa !9
  %2497 = mul nsw i64 %2495, %2496
  %2498 = add nsw i64 %2494, %2497
  %2499 = getelementptr inbounds double, ptr %2493, i64 %2498
  %2500 = load double, ptr %2499, align 8, !tbaa !11
  store double %2500, ptr %48, align 8, !tbaa !11
  %2501 = load double, ptr %48, align 8, !tbaa !11
  %2502 = fcmp oge double %2501, 0.000000e+00
  br i1 %2502, label %2503, label %2505

2503:                                             ; preds = %2492
  %2504 = load double, ptr %48, align 8, !tbaa !11
  br label %2508

2505:                                             ; preds = %2492
  %2506 = load double, ptr %48, align 8, !tbaa !11
  %2507 = fneg double %2506
  br label %2508

2508:                                             ; preds = %2505, %2503
  %2509 = phi double [ %2504, %2503 ], [ %2507, %2505 ]
  %2510 = load double, ptr %110, align 8, !tbaa !11
  %2511 = fcmp ole double %2509, %2510
  br i1 %2511, label %2512, label %2540

2512:                                             ; preds = %2508
  %2513 = load i64, ptr %69, align 8, !tbaa !9
  %2514 = add nsw i64 %2513, -1
  store i64 %2514, ptr %69, align 8, !tbaa !9
  %2515 = load ptr, ptr %21, align 8, !tbaa !5
  %2516 = load i64, ptr %2515, align 8, !tbaa !9
  store i64 %2516, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %2517

2517:                                             ; preds = %2529, %2512
  %2518 = load i64, ptr %60, align 8, !tbaa !9
  %2519 = load i64, ptr %42, align 8, !tbaa !9
  %2520 = icmp sle i64 %2518, %2519
  br i1 %2520, label %2521, label %2532

2521:                                             ; preds = %2517
  %2522 = load ptr, ptr %28, align 8, !tbaa !5
  %2523 = load i64, ptr %60, align 8, !tbaa !9
  %2524 = load i64, ptr %69, align 8, !tbaa !9
  %2525 = load i64, ptr %40, align 8, !tbaa !9
  %2526 = mul nsw i64 %2524, %2525
  %2527 = add nsw i64 %2523, %2526
  %2528 = getelementptr inbounds double, ptr %2522, i64 %2527
  store double 0.000000e+00, ptr %2528, align 8, !tbaa !11
  br label %2529

2529:                                             ; preds = %2521
  %2530 = load i64, ptr %60, align 8, !tbaa !9
  %2531 = add nsw i64 %2530, 1
  store i64 %2531, ptr %60, align 8, !tbaa !9
  br label %2517, !llvm.loop !36

2532:                                             ; preds = %2517
  %2533 = load ptr, ptr %28, align 8, !tbaa !5
  %2534 = load i64, ptr %69, align 8, !tbaa !9
  %2535 = load i64, ptr %69, align 8, !tbaa !9
  %2536 = load i64, ptr %40, align 8, !tbaa !9
  %2537 = mul nsw i64 %2535, %2536
  %2538 = add nsw i64 %2534, %2537
  %2539 = getelementptr inbounds double, ptr %2533, i64 %2538
  store double 1.000000e+00, ptr %2539, align 8, !tbaa !11
  br label %4551

2540:                                             ; preds = %2508, %2488
  br label %2541

2541:                                             ; preds = %2540, %2469
  %2542 = load i64, ptr %62, align 8, !tbaa !9
  %2543 = sub nsw i64 %2542, 1
  store i64 %2543, ptr %42, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %2544

2544:                                             ; preds = %2569, %2541
  %2545 = load i64, ptr %61, align 8, !tbaa !9
  %2546 = load i64, ptr %42, align 8, !tbaa !9
  %2547 = icmp sle i64 %2545, %2546
  br i1 %2547, label %2548, label %2572

2548:                                             ; preds = %2544
  %2549 = load ptr, ptr %21, align 8, !tbaa !5
  %2550 = load i64, ptr %2549, align 8, !tbaa !9
  store i64 %2550, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %2551

2551:                                             ; preds = %2565, %2548
  %2552 = load i64, ptr %60, align 8, !tbaa !9
  %2553 = load i64, ptr %43, align 8, !tbaa !9
  %2554 = icmp sle i64 %2552, %2553
  br i1 %2554, label %2555, label %2568

2555:                                             ; preds = %2551
  %2556 = load ptr, ptr %32, align 8, !tbaa !5
  %2557 = load i64, ptr %61, align 8, !tbaa !9
  %2558 = add nsw i64 %2557, 2
  %2559 = load ptr, ptr %21, align 8, !tbaa !5
  %2560 = load i64, ptr %2559, align 8, !tbaa !9
  %2561 = mul nsw i64 %2558, %2560
  %2562 = load i64, ptr %60, align 8, !tbaa !9
  %2563 = add nsw i64 %2561, %2562
  %2564 = getelementptr inbounds double, ptr %2556, i64 %2563
  store double 0.000000e+00, ptr %2564, align 8, !tbaa !11
  br label %2565

2565:                                             ; preds = %2555
  %2566 = load i64, ptr %60, align 8, !tbaa !9
  %2567 = add nsw i64 %2566, 1
  store i64 %2567, ptr %60, align 8, !tbaa !9
  br label %2551, !llvm.loop !37

2568:                                             ; preds = %2551
  br label %2569

2569:                                             ; preds = %2568
  %2570 = load i64, ptr %61, align 8, !tbaa !9
  %2571 = add nsw i64 %2570, 1
  store i64 %2571, ptr %61, align 8, !tbaa !9
  br label %2544, !llvm.loop !38

2572:                                             ; preds = %2544
  %2573 = load i64, ptr %114, align 8, !tbaa !9
  %2574 = icmp ne i64 %2573, 0
  br i1 %2574, label %2923, label %2575

2575:                                             ; preds = %2572
  %2576 = load ptr, ptr %22, align 8, !tbaa !5
  %2577 = load i64, ptr %57, align 8, !tbaa !9
  %2578 = load i64, ptr %57, align 8, !tbaa !9
  %2579 = load i64, ptr %36, align 8, !tbaa !9
  %2580 = mul nsw i64 %2578, %2579
  %2581 = add nsw i64 %2577, %2580
  %2582 = getelementptr inbounds double, ptr %2576, i64 %2581
  %2583 = load double, ptr %2582, align 8, !tbaa !11
  store double %2583, ptr %47, align 8, !tbaa !11
  %2584 = load double, ptr %47, align 8, !tbaa !11
  %2585 = fcmp oge double %2584, 0.000000e+00
  br i1 %2585, label %2586, label %2588

2586:                                             ; preds = %2575
  %2587 = load double, ptr %47, align 8, !tbaa !11
  br label %2591

2588:                                             ; preds = %2575
  %2589 = load double, ptr %47, align 8, !tbaa !11
  %2590 = fneg double %2589
  br label %2591

2591:                                             ; preds = %2588, %2586
  %2592 = phi double [ %2587, %2586 ], [ %2590, %2588 ]
  %2593 = load double, ptr %104, align 8, !tbaa !11
  %2594 = fmul double %2592, %2593
  store double %2594, ptr %49, align 8, !tbaa !11
  %2595 = load ptr, ptr %24, align 8, !tbaa !5
  %2596 = load i64, ptr %57, align 8, !tbaa !9
  %2597 = load i64, ptr %57, align 8, !tbaa !9
  %2598 = load i64, ptr %34, align 8, !tbaa !9
  %2599 = mul nsw i64 %2597, %2598
  %2600 = add nsw i64 %2596, %2599
  %2601 = getelementptr inbounds double, ptr %2595, i64 %2600
  %2602 = load double, ptr %2601, align 8, !tbaa !11
  store double %2602, ptr %48, align 8, !tbaa !11
  %2603 = load double, ptr %48, align 8, !tbaa !11
  %2604 = fcmp oge double %2603, 0.000000e+00
  br i1 %2604, label %2605, label %2607

2605:                                             ; preds = %2591
  %2606 = load double, ptr %48, align 8, !tbaa !11
  br label %2610

2607:                                             ; preds = %2591
  %2608 = load double, ptr %48, align 8, !tbaa !11
  %2609 = fneg double %2608
  br label %2610

2610:                                             ; preds = %2607, %2605
  %2611 = phi double [ %2606, %2605 ], [ %2609, %2607 ]
  %2612 = load double, ptr %105, align 8, !tbaa !11
  %2613 = fmul double %2611, %2612
  store double %2613, ptr %50, align 8, !tbaa !11
  %2614 = load double, ptr %49, align 8, !tbaa !11
  %2615 = load double, ptr %50, align 8, !tbaa !11
  %2616 = fcmp oge double %2614, %2615
  br i1 %2616, label %2617, label %2619

2617:                                             ; preds = %2610
  %2618 = load double, ptr %49, align 8, !tbaa !11
  br label %2621

2619:                                             ; preds = %2610
  %2620 = load double, ptr %50, align 8, !tbaa !11
  br label %2621

2621:                                             ; preds = %2619, %2617
  %2622 = phi double [ %2618, %2617 ], [ %2620, %2619 ]
  store double %2622, ptr %49, align 8, !tbaa !11
  %2623 = load double, ptr %49, align 8, !tbaa !11
  %2624 = load double, ptr %110, align 8, !tbaa !11
  %2625 = fcmp oge double %2623, %2624
  br i1 %2625, label %2626, label %2628

2626:                                             ; preds = %2621
  %2627 = load double, ptr %49, align 8, !tbaa !11
  br label %2630

2628:                                             ; preds = %2621
  %2629 = load double, ptr %110, align 8, !tbaa !11
  br label %2630

2630:                                             ; preds = %2628, %2626
  %2631 = phi double [ %2627, %2626 ], [ %2629, %2628 ]
  %2632 = fdiv double 1.000000e+00, %2631
  store double %2632, ptr %72, align 8, !tbaa !11
  %2633 = load double, ptr %72, align 8, !tbaa !11
  %2634 = load ptr, ptr %22, align 8, !tbaa !5
  %2635 = load i64, ptr %57, align 8, !tbaa !9
  %2636 = load i64, ptr %57, align 8, !tbaa !9
  %2637 = load i64, ptr %36, align 8, !tbaa !9
  %2638 = mul nsw i64 %2636, %2637
  %2639 = add nsw i64 %2635, %2638
  %2640 = getelementptr inbounds double, ptr %2634, i64 %2639
  %2641 = load double, ptr %2640, align 8, !tbaa !11
  %2642 = fmul double %2633, %2641
  %2643 = load double, ptr %104, align 8, !tbaa !11
  %2644 = fmul double %2642, %2643
  store double %2644, ptr %109, align 8, !tbaa !11
  %2645 = load double, ptr %72, align 8, !tbaa !11
  %2646 = load ptr, ptr %24, align 8, !tbaa !5
  %2647 = load i64, ptr %57, align 8, !tbaa !9
  %2648 = load i64, ptr %57, align 8, !tbaa !9
  %2649 = load i64, ptr %34, align 8, !tbaa !9
  %2650 = mul nsw i64 %2648, %2649
  %2651 = add nsw i64 %2647, %2650
  %2652 = getelementptr inbounds double, ptr %2646, i64 %2651
  %2653 = load double, ptr %2652, align 8, !tbaa !11
  %2654 = fmul double %2645, %2653
  %2655 = load double, ptr %105, align 8, !tbaa !11
  %2656 = fmul double %2654, %2655
  store double %2656, ptr %86, align 8, !tbaa !11
  %2657 = load double, ptr %86, align 8, !tbaa !11
  %2658 = load double, ptr %104, align 8, !tbaa !11
  %2659 = fmul double %2657, %2658
  store double %2659, ptr %82, align 8, !tbaa !11
  %2660 = load double, ptr %109, align 8, !tbaa !11
  %2661 = load double, ptr %105, align 8, !tbaa !11
  %2662 = fmul double %2660, %2661
  store double %2662, ptr %108, align 8, !tbaa !11
  store double 0.000000e+00, ptr %103, align 8, !tbaa !11
  store double 1.000000e+00, ptr %83, align 8, !tbaa !11
  %2663 = load double, ptr %86, align 8, !tbaa !11
  %2664 = fcmp oge double %2663, 0.000000e+00
  br i1 %2664, label %2665, label %2667

2665:                                             ; preds = %2630
  %2666 = load double, ptr %86, align 8, !tbaa !11
  br label %2670

2667:                                             ; preds = %2630
  %2668 = load double, ptr %86, align 8, !tbaa !11
  %2669 = fneg double %2668
  br label %2670

2670:                                             ; preds = %2667, %2665
  %2671 = phi double [ %2666, %2665 ], [ %2669, %2667 ]
  %2672 = load double, ptr %110, align 8, !tbaa !11
  %2673 = fcmp oge double %2671, %2672
  br i1 %2673, label %2674, label %2686

2674:                                             ; preds = %2670
  %2675 = load double, ptr %82, align 8, !tbaa !11
  %2676 = fcmp oge double %2675, 0.000000e+00
  br i1 %2676, label %2677, label %2679

2677:                                             ; preds = %2674
  %2678 = load double, ptr %82, align 8, !tbaa !11
  br label %2682

2679:                                             ; preds = %2674
  %2680 = load double, ptr %82, align 8, !tbaa !11
  %2681 = fneg double %2680
  br label %2682

2682:                                             ; preds = %2679, %2677
  %2683 = phi double [ %2678, %2677 ], [ %2681, %2679 ]
  %2684 = load double, ptr %89, align 8, !tbaa !11
  %2685 = fcmp olt double %2683, %2684
  br label %2686

2686:                                             ; preds = %2682, %2670
  %2687 = phi i1 [ false, %2670 ], [ %2685, %2682 ]
  %2688 = zext i1 %2687 to i32
  %2689 = sext i32 %2688 to i64
  store i64 %2689, ptr %64, align 8, !tbaa !9
  %2690 = load double, ptr %109, align 8, !tbaa !11
  %2691 = fcmp oge double %2690, 0.000000e+00
  br i1 %2691, label %2692, label %2694

2692:                                             ; preds = %2686
  %2693 = load double, ptr %109, align 8, !tbaa !11
  br label %2697

2694:                                             ; preds = %2686
  %2695 = load double, ptr %109, align 8, !tbaa !11
  %2696 = fneg double %2695
  br label %2697

2697:                                             ; preds = %2694, %2692
  %2698 = phi double [ %2693, %2692 ], [ %2696, %2694 ]
  %2699 = load double, ptr %110, align 8, !tbaa !11
  %2700 = fcmp oge double %2698, %2699
  br i1 %2700, label %2701, label %2713

2701:                                             ; preds = %2697
  %2702 = load double, ptr %108, align 8, !tbaa !11
  %2703 = fcmp oge double %2702, 0.000000e+00
  br i1 %2703, label %2704, label %2706

2704:                                             ; preds = %2701
  %2705 = load double, ptr %108, align 8, !tbaa !11
  br label %2709

2706:                                             ; preds = %2701
  %2707 = load double, ptr %108, align 8, !tbaa !11
  %2708 = fneg double %2707
  br label %2709

2709:                                             ; preds = %2706, %2704
  %2710 = phi double [ %2705, %2704 ], [ %2708, %2706 ]
  %2711 = load double, ptr %89, align 8, !tbaa !11
  %2712 = fcmp olt double %2710, %2711
  br label %2713

2713:                                             ; preds = %2709, %2697
  %2714 = phi i1 [ false, %2697 ], [ %2712, %2709 ]
  %2715 = zext i1 %2714 to i32
  %2716 = sext i32 %2715 to i64
  store i64 %2716, ptr %65, align 8, !tbaa !9
  %2717 = load i64, ptr %64, align 8, !tbaa !9
  %2718 = icmp ne i64 %2717, 0
  br i1 %2718, label %2719, label %2741

2719:                                             ; preds = %2713
  %2720 = load double, ptr %89, align 8, !tbaa !11
  %2721 = load double, ptr %86, align 8, !tbaa !11
  %2722 = fcmp oge double %2721, 0.000000e+00
  br i1 %2722, label %2723, label %2725

2723:                                             ; preds = %2719
  %2724 = load double, ptr %86, align 8, !tbaa !11
  br label %2728

2725:                                             ; preds = %2719
  %2726 = load double, ptr %86, align 8, !tbaa !11
  %2727 = fneg double %2726
  br label %2728

2728:                                             ; preds = %2725, %2723
  %2729 = phi double [ %2724, %2723 ], [ %2727, %2725 ]
  %2730 = fdiv double %2720, %2729
  %2731 = load double, ptr %91, align 8, !tbaa !11
  %2732 = load double, ptr %63, align 8, !tbaa !11
  %2733 = fcmp ole double %2731, %2732
  br i1 %2733, label %2734, label %2736

2734:                                             ; preds = %2728
  %2735 = load double, ptr %91, align 8, !tbaa !11
  br label %2738

2736:                                             ; preds = %2728
  %2737 = load double, ptr %63, align 8, !tbaa !11
  br label %2738

2738:                                             ; preds = %2736, %2734
  %2739 = phi double [ %2735, %2734 ], [ %2737, %2736 ]
  %2740 = fmul double %2730, %2739
  store double %2740, ptr %83, align 8, !tbaa !11
  br label %2741

2741:                                             ; preds = %2738, %2713
  %2742 = load i64, ptr %65, align 8, !tbaa !9
  %2743 = icmp ne i64 %2742, 0
  br i1 %2743, label %2744, label %2776

2744:                                             ; preds = %2741
  %2745 = load double, ptr %83, align 8, !tbaa !11
  store double %2745, ptr %47, align 8, !tbaa !11
  %2746 = load double, ptr %89, align 8, !tbaa !11
  %2747 = load double, ptr %109, align 8, !tbaa !11
  %2748 = fcmp oge double %2747, 0.000000e+00
  br i1 %2748, label %2749, label %2751

2749:                                             ; preds = %2744
  %2750 = load double, ptr %109, align 8, !tbaa !11
  br label %2754

2751:                                             ; preds = %2744
  %2752 = load double, ptr %109, align 8, !tbaa !11
  %2753 = fneg double %2752
  br label %2754

2754:                                             ; preds = %2751, %2749
  %2755 = phi double [ %2750, %2749 ], [ %2753, %2751 ]
  %2756 = fdiv double %2746, %2755
  %2757 = load double, ptr %92, align 8, !tbaa !11
  %2758 = load double, ptr %63, align 8, !tbaa !11
  %2759 = fcmp ole double %2757, %2758
  br i1 %2759, label %2760, label %2762

2760:                                             ; preds = %2754
  %2761 = load double, ptr %92, align 8, !tbaa !11
  br label %2764

2762:                                             ; preds = %2754
  %2763 = load double, ptr %63, align 8, !tbaa !11
  br label %2764

2764:                                             ; preds = %2762, %2760
  %2765 = phi double [ %2761, %2760 ], [ %2763, %2762 ]
  %2766 = fmul double %2756, %2765
  store double %2766, ptr %48, align 8, !tbaa !11
  %2767 = load double, ptr %47, align 8, !tbaa !11
  %2768 = load double, ptr %48, align 8, !tbaa !11
  %2769 = fcmp oge double %2767, %2768
  br i1 %2769, label %2770, label %2772

2770:                                             ; preds = %2764
  %2771 = load double, ptr %47, align 8, !tbaa !11
  br label %2774

2772:                                             ; preds = %2764
  %2773 = load double, ptr %48, align 8, !tbaa !11
  br label %2774

2774:                                             ; preds = %2772, %2770
  %2775 = phi double [ %2771, %2770 ], [ %2773, %2772 ]
  store double %2775, ptr %83, align 8, !tbaa !11
  br label %2776

2776:                                             ; preds = %2774, %2741
  %2777 = load i64, ptr %64, align 8, !tbaa !9
  %2778 = icmp ne i64 %2777, 0
  br i1 %2778, label %2782, label %2779

2779:                                             ; preds = %2776
  %2780 = load i64, ptr %65, align 8, !tbaa !9
  %2781 = icmp ne i64 %2780, 0
  br i1 %2781, label %2782, label %2858

2782:                                             ; preds = %2779, %2776
  store double 1.000000e+00, ptr %49, align 8, !tbaa !11
  %2783 = load double, ptr %82, align 8, !tbaa !11
  %2784 = fcmp oge double %2783, 0.000000e+00
  br i1 %2784, label %2785, label %2787

2785:                                             ; preds = %2782
  %2786 = load double, ptr %82, align 8, !tbaa !11
  br label %2790

2787:                                             ; preds = %2782
  %2788 = load double, ptr %82, align 8, !tbaa !11
  %2789 = fneg double %2788
  br label %2790

2790:                                             ; preds = %2787, %2785
  %2791 = phi double [ %2786, %2785 ], [ %2789, %2787 ]
  store double %2791, ptr %50, align 8, !tbaa !11
  %2792 = load double, ptr %49, align 8, !tbaa !11
  %2793 = load double, ptr %50, align 8, !tbaa !11
  %2794 = fcmp oge double %2792, %2793
  br i1 %2794, label %2795, label %2797

2795:                                             ; preds = %2790
  %2796 = load double, ptr %49, align 8, !tbaa !11
  br label %2799

2797:                                             ; preds = %2790
  %2798 = load double, ptr %50, align 8, !tbaa !11
  br label %2799

2799:                                             ; preds = %2797, %2795
  %2800 = phi double [ %2796, %2795 ], [ %2798, %2797 ]
  store double %2800, ptr %49, align 8, !tbaa !11
  %2801 = load double, ptr %108, align 8, !tbaa !11
  %2802 = fcmp oge double %2801, 0.000000e+00
  br i1 %2802, label %2803, label %2805

2803:                                             ; preds = %2799
  %2804 = load double, ptr %108, align 8, !tbaa !11
  br label %2808

2805:                                             ; preds = %2799
  %2806 = load double, ptr %108, align 8, !tbaa !11
  %2807 = fneg double %2806
  br label %2808

2808:                                             ; preds = %2805, %2803
  %2809 = phi double [ %2804, %2803 ], [ %2807, %2805 ]
  store double %2809, ptr %50, align 8, !tbaa !11
  %2810 = load double, ptr %83, align 8, !tbaa !11
  store double %2810, ptr %47, align 8, !tbaa !11
  %2811 = load double, ptr %110, align 8, !tbaa !11
  %2812 = load double, ptr %49, align 8, !tbaa !11
  %2813 = load double, ptr %50, align 8, !tbaa !11
  %2814 = fcmp oge double %2812, %2813
  br i1 %2814, label %2815, label %2817

2815:                                             ; preds = %2808
  %2816 = load double, ptr %49, align 8, !tbaa !11
  br label %2819

2817:                                             ; preds = %2808
  %2818 = load double, ptr %50, align 8, !tbaa !11
  br label %2819

2819:                                             ; preds = %2817, %2815
  %2820 = phi double [ %2816, %2815 ], [ %2818, %2817 ]
  %2821 = fmul double %2811, %2820
  %2822 = fdiv double 1.000000e+00, %2821
  store double %2822, ptr %48, align 8, !tbaa !11
  %2823 = load double, ptr %47, align 8, !tbaa !11
  %2824 = load double, ptr %48, align 8, !tbaa !11
  %2825 = fcmp ole double %2823, %2824
  br i1 %2825, label %2826, label %2828

2826:                                             ; preds = %2819
  %2827 = load double, ptr %47, align 8, !tbaa !11
  br label %2830

2828:                                             ; preds = %2819
  %2829 = load double, ptr %48, align 8, !tbaa !11
  br label %2830

2830:                                             ; preds = %2828, %2826
  %2831 = phi double [ %2827, %2826 ], [ %2829, %2828 ]
  store double %2831, ptr %83, align 8, !tbaa !11
  %2832 = load i64, ptr %64, align 8, !tbaa !9
  %2833 = icmp ne i64 %2832, 0
  br i1 %2833, label %2834, label %2840

2834:                                             ; preds = %2830
  %2835 = load double, ptr %104, align 8, !tbaa !11
  %2836 = load double, ptr %83, align 8, !tbaa !11
  %2837 = load double, ptr %86, align 8, !tbaa !11
  %2838 = fmul double %2836, %2837
  %2839 = fmul double %2835, %2838
  store double %2839, ptr %82, align 8, !tbaa !11
  br label %2844

2840:                                             ; preds = %2830
  %2841 = load double, ptr %83, align 8, !tbaa !11
  %2842 = load double, ptr %82, align 8, !tbaa !11
  %2843 = fmul double %2841, %2842
  store double %2843, ptr %82, align 8, !tbaa !11
  br label %2844

2844:                                             ; preds = %2840, %2834
  %2845 = load i64, ptr %65, align 8, !tbaa !9
  %2846 = icmp ne i64 %2845, 0
  br i1 %2846, label %2847, label %2853

2847:                                             ; preds = %2844
  %2848 = load double, ptr %105, align 8, !tbaa !11
  %2849 = load double, ptr %83, align 8, !tbaa !11
  %2850 = load double, ptr %109, align 8, !tbaa !11
  %2851 = fmul double %2849, %2850
  %2852 = fmul double %2848, %2851
  store double %2852, ptr %108, align 8, !tbaa !11
  br label %2857

2853:                                             ; preds = %2844
  %2854 = load double, ptr %83, align 8, !tbaa !11
  %2855 = load double, ptr %108, align 8, !tbaa !11
  %2856 = fmul double %2854, %2855
  store double %2856, ptr %108, align 8, !tbaa !11
  br label %2857

2857:                                             ; preds = %2853, %2847
  br label %2858

2858:                                             ; preds = %2857, %2779
  %2859 = load double, ptr %82, align 8, !tbaa !11
  %2860 = fcmp oge double %2859, 0.000000e+00
  br i1 %2860, label %2861, label %2863

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

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

2866:                                             ; preds = %2863, %2861
  %2867 = phi double [ %2862, %2861 ], [ %2865, %2863 ]
  store double %2867, ptr %98, align 8, !tbaa !11
  %2868 = load double, ptr %108, align 8, !tbaa !11
  %2869 = fcmp oge double %2868, 0.000000e+00
  br i1 %2869, label %2870, label %2872

2870:                                             ; preds = %2866
  %2871 = load double, ptr %108, align 8, !tbaa !11
  br label %2875

2872:                                             ; preds = %2866
  %2873 = load double, ptr %108, align 8, !tbaa !11
  %2874 = fneg double %2873
  br label %2875

2875:                                             ; preds = %2872, %2870
  %2876 = phi double [ %2871, %2870 ], [ %2874, %2872 ]
  store double %2876, ptr %99, align 8, !tbaa !11
  %2877 = load ptr, ptr %32, align 8, !tbaa !5
  %2878 = load ptr, ptr %21, align 8, !tbaa !5
  %2879 = load i64, ptr %2878, align 8, !tbaa !9
  %2880 = shl i64 %2879, 1
  %2881 = load i64, ptr %57, align 8, !tbaa !9
  %2882 = add nsw i64 %2880, %2881
  %2883 = getelementptr inbounds double, ptr %2877, i64 %2882
  store double 1.000000e+00, ptr %2883, align 8, !tbaa !11
  store double 1.000000e+00, ptr %73, align 8, !tbaa !11
  %2884 = load i64, ptr %57, align 8, !tbaa !9
  %2885 = sub nsw i64 %2884, 1
  store i64 %2885, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %2886

2886:                                             ; preds = %2919, %2875
  %2887 = load i64, ptr %60, align 8, !tbaa !9
  %2888 = load i64, ptr %42, align 8, !tbaa !9
  %2889 = icmp sle i64 %2887, %2888
  br i1 %2889, label %2890, label %2922

2890:                                             ; preds = %2886
  %2891 = load double, ptr %108, align 8, !tbaa !11
  %2892 = load ptr, ptr %24, align 8, !tbaa !5
  %2893 = load i64, ptr %60, align 8, !tbaa !9
  %2894 = load i64, ptr %57, align 8, !tbaa !9
  %2895 = load i64, ptr %34, align 8, !tbaa !9
  %2896 = mul nsw i64 %2894, %2895
  %2897 = add nsw i64 %2893, %2896
  %2898 = getelementptr inbounds double, ptr %2892, i64 %2897
  %2899 = load double, ptr %2898, align 8, !tbaa !11
  %2900 = load double, ptr %82, align 8, !tbaa !11
  %2901 = load ptr, ptr %22, align 8, !tbaa !5
  %2902 = load i64, ptr %60, align 8, !tbaa !9
  %2903 = load i64, ptr %57, align 8, !tbaa !9
  %2904 = load i64, ptr %36, align 8, !tbaa !9
  %2905 = mul nsw i64 %2903, %2904
  %2906 = add nsw i64 %2902, %2905
  %2907 = getelementptr inbounds double, ptr %2901, i64 %2906
  %2908 = load double, ptr %2907, align 8, !tbaa !11
  %2909 = fmul double %2900, %2908
  %2910 = fneg double %2909
  %2911 = call double @llvm.fmuladd.f64(double %2891, double %2899, double %2910)
  %2912 = load ptr, ptr %32, align 8, !tbaa !5
  %2913 = load ptr, ptr %21, align 8, !tbaa !5
  %2914 = load i64, ptr %2913, align 8, !tbaa !9
  %2915 = shl i64 %2914, 1
  %2916 = load i64, ptr %60, align 8, !tbaa !9
  %2917 = add nsw i64 %2915, %2916
  %2918 = getelementptr inbounds double, ptr %2912, i64 %2917
  store double %2911, ptr %2918, align 8, !tbaa !11
  br label %2919

2919:                                             ; preds = %2890
  %2920 = load i64, ptr %60, align 8, !tbaa !9
  %2921 = add nsw i64 %2920, 1
  store i64 %2921, ptr %60, align 8, !tbaa !9
  br label %2886, !llvm.loop !39

2922:                                             ; preds = %2886
  br label %3616

2923:                                             ; preds = %2572
  %2924 = load double, ptr %110, align 8, !tbaa !11
  %2925 = fmul double %2924, 1.000000e+02
  store double %2925, ptr %47, align 8, !tbaa !11
  %2926 = load ptr, ptr %22, align 8, !tbaa !5
  %2927 = load i64, ptr %57, align 8, !tbaa !9
  %2928 = sub nsw i64 %2927, 1
  %2929 = load i64, ptr %57, align 8, !tbaa !9
  %2930 = sub nsw i64 %2929, 1
  %2931 = load i64, ptr %36, align 8, !tbaa !9
  %2932 = mul nsw i64 %2930, %2931
  %2933 = add nsw i64 %2928, %2932
  %2934 = getelementptr inbounds double, ptr %2926, i64 %2933
  %2935 = load ptr, ptr %23, align 8, !tbaa !5
  %2936 = load ptr, ptr %24, align 8, !tbaa !5
  %2937 = load i64, ptr %57, align 8, !tbaa !9
  %2938 = sub nsw i64 %2937, 1
  %2939 = load i64, ptr %57, align 8, !tbaa !9
  %2940 = sub nsw i64 %2939, 1
  %2941 = load i64, ptr %34, align 8, !tbaa !9
  %2942 = mul nsw i64 %2940, %2941
  %2943 = add nsw i64 %2938, %2942
  %2944 = getelementptr inbounds double, ptr %2936, i64 %2943
  %2945 = load ptr, ptr %25, align 8, !tbaa !5
  %2946 = call i32 @dlag2_(ptr noundef %2934, ptr noundef %2935, ptr noundef %2944, ptr noundef %2945, ptr noundef %47, ptr noundef %82, ptr noundef %72, ptr noundef %108, ptr noundef %80, ptr noundef %103)
  %2947 = load double, ptr %103, align 8, !tbaa !11
  %2948 = fcmp oeq double %2947, 0.000000e+00
  br i1 %2948, label %2949, label %2953

2949:                                             ; preds = %2923
  %2950 = load i64, ptr %57, align 8, !tbaa !9
  %2951 = sub nsw i64 %2950, 1
  %2952 = load ptr, ptr %33, align 8, !tbaa !5
  store i64 %2951, ptr %2952, align 8, !tbaa !9
  store i32 0, ptr %17, align 4
  store i32 1, ptr %116, align 4
  br label %4557

2953:                                             ; preds = %2923
  %2954 = load double, ptr %82, align 8, !tbaa !11
  %2955 = fcmp oge double %2954, 0.000000e+00
  br i1 %2955, label %2956, label %2958

2956:                                             ; preds = %2953
  %2957 = load double, ptr %82, align 8, !tbaa !11
  br label %2961

2958:                                             ; preds = %2953
  %2959 = load double, ptr %82, align 8, !tbaa !11
  %2960 = fneg double %2959
  br label %2961

2961:                                             ; preds = %2958, %2956
  %2962 = phi double [ %2957, %2956 ], [ %2960, %2958 ]
  store double %2962, ptr %98, align 8, !tbaa !11
  %2963 = load double, ptr %108, align 8, !tbaa !11
  %2964 = fcmp oge double %2963, 0.000000e+00
  br i1 %2964, label %2965, label %2967

2965:                                             ; preds = %2961
  %2966 = load double, ptr %108, align 8, !tbaa !11
  br label %2970

2967:                                             ; preds = %2961
  %2968 = load double, ptr %108, align 8, !tbaa !11
  %2969 = fneg double %2968
  br label %2970

2970:                                             ; preds = %2967, %2965
  %2971 = phi double [ %2966, %2965 ], [ %2969, %2967 ]
  %2972 = load double, ptr %103, align 8, !tbaa !11
  %2973 = fcmp oge double %2972, 0.000000e+00
  br i1 %2973, label %2974, label %2976

2974:                                             ; preds = %2970
  %2975 = load double, ptr %103, align 8, !tbaa !11
  br label %2979

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

2979:                                             ; preds = %2976, %2974
  %2980 = phi double [ %2975, %2974 ], [ %2978, %2976 ]
  %2981 = fadd double %2971, %2980
  store double %2981, ptr %99, align 8, !tbaa !11
  store double 1.000000e+00, ptr %83, align 8, !tbaa !11
  %2982 = load double, ptr %98, align 8, !tbaa !11
  %2983 = load double, ptr %66, align 8, !tbaa !11
  %2984 = fmul double %2982, %2983
  %2985 = load double, ptr %110, align 8, !tbaa !11
  %2986 = fcmp olt double %2984, %2985
  br i1 %2986, label %2987, label %2997

2987:                                             ; preds = %2979
  %2988 = load double, ptr %98, align 8, !tbaa !11
  %2989 = load double, ptr %110, align 8, !tbaa !11
  %2990 = fcmp oge double %2988, %2989
  br i1 %2990, label %2991, label %2997

2991:                                             ; preds = %2987
  %2992 = load double, ptr %110, align 8, !tbaa !11
  %2993 = load double, ptr %66, align 8, !tbaa !11
  %2994 = fdiv double %2992, %2993
  %2995 = load double, ptr %98, align 8, !tbaa !11
  %2996 = fdiv double %2994, %2995
  store double %2996, ptr %83, align 8, !tbaa !11
  br label %2997

2997:                                             ; preds = %2991, %2987, %2979
  %2998 = load double, ptr %99, align 8, !tbaa !11
  %2999 = load double, ptr %66, align 8, !tbaa !11
  %3000 = fmul double %2998, %2999
  %3001 = load double, ptr %110, align 8, !tbaa !11
  %3002 = fcmp olt double %3000, %3001
  br i1 %3002, label %3003, label %3023

3003:                                             ; preds = %2997
  %3004 = load double, ptr %99, align 8, !tbaa !11
  %3005 = load double, ptr %110, align 8, !tbaa !11
  %3006 = fcmp oge double %3004, %3005
  br i1 %3006, label %3007, label %3023

3007:                                             ; preds = %3003
  %3008 = load double, ptr %83, align 8, !tbaa !11
  store double %3008, ptr %47, align 8, !tbaa !11
  %3009 = load double, ptr %110, align 8, !tbaa !11
  %3010 = load double, ptr %66, align 8, !tbaa !11
  %3011 = fdiv double %3009, %3010
  %3012 = load double, ptr %99, align 8, !tbaa !11
  %3013 = fdiv double %3011, %3012
  store double %3013, ptr %48, align 8, !tbaa !11
  %3014 = load double, ptr %47, align 8, !tbaa !11
  %3015 = load double, ptr %48, align 8, !tbaa !11
  %3016 = fcmp oge double %3014, %3015
  br i1 %3016, label %3017, label %3019

3017:                                             ; preds = %3007
  %3018 = load double, ptr %47, align 8, !tbaa !11
  br label %3021

3019:                                             ; preds = %3007
  %3020 = load double, ptr %48, align 8, !tbaa !11
  br label %3021

3021:                                             ; preds = %3019, %3017
  %3022 = phi double [ %3018, %3017 ], [ %3020, %3019 ]
  store double %3022, ptr %83, align 8, !tbaa !11
  br label %3023

3023:                                             ; preds = %3021, %3003, %2997
  %3024 = load double, ptr %110, align 8, !tbaa !11
  %3025 = load double, ptr %98, align 8, !tbaa !11
  %3026 = fmul double %3024, %3025
  %3027 = load double, ptr %104, align 8, !tbaa !11
  %3028 = fcmp ogt double %3026, %3027
  br i1 %3028, label %3029, label %3035

3029:                                             ; preds = %3023
  %3030 = load double, ptr %104, align 8, !tbaa !11
  %3031 = load double, ptr %110, align 8, !tbaa !11
  %3032 = load double, ptr %98, align 8, !tbaa !11
  %3033 = fmul double %3031, %3032
  %3034 = fdiv double %3030, %3033
  store double %3034, ptr %83, align 8, !tbaa !11
  br label %3035

3035:                                             ; preds = %3029, %3023
  %3036 = load double, ptr %110, align 8, !tbaa !11
  %3037 = load double, ptr %99, align 8, !tbaa !11
  %3038 = fmul double %3036, %3037
  %3039 = load double, ptr %105, align 8, !tbaa !11
  %3040 = fcmp ogt double %3038, %3039
  br i1 %3040, label %3041, label %3057

3041:                                             ; preds = %3035
  %3042 = load double, ptr %83, align 8, !tbaa !11
  store double %3042, ptr %47, align 8, !tbaa !11
  %3043 = load double, ptr %105, align 8, !tbaa !11
  %3044 = load double, ptr %110, align 8, !tbaa !11
  %3045 = load double, ptr %99, align 8, !tbaa !11
  %3046 = fmul double %3044, %3045
  %3047 = fdiv double %3043, %3046
  store double %3047, ptr %48, align 8, !tbaa !11
  %3048 = load double, ptr %47, align 8, !tbaa !11
  %3049 = load double, ptr %48, align 8, !tbaa !11
  %3050 = fcmp ole double %3048, %3049
  br i1 %3050, label %3051, label %3053

3051:                                             ; preds = %3041
  %3052 = load double, ptr %47, align 8, !tbaa !11
  br label %3055

3053:                                             ; preds = %3041
  %3054 = load double, ptr %48, align 8, !tbaa !11
  br label %3055

3055:                                             ; preds = %3053, %3051
  %3056 = phi double [ %3052, %3051 ], [ %3054, %3053 ]
  store double %3056, ptr %83, align 8, !tbaa !11
  br label %3057

3057:                                             ; preds = %3055, %3035
  %3058 = load double, ptr %83, align 8, !tbaa !11
  %3059 = fcmp une double %3058, 1.000000e+00
  br i1 %3059, label %3060, label %3098

3060:                                             ; preds = %3057
  %3061 = load double, ptr %83, align 8, !tbaa !11
  %3062 = load double, ptr %82, align 8, !tbaa !11
  %3063 = fmul double %3061, %3062
  store double %3063, ptr %82, align 8, !tbaa !11
  %3064 = load double, ptr %82, align 8, !tbaa !11
  %3065 = fcmp oge double %3064, 0.000000e+00
  br i1 %3065, label %3066, label %3068

3066:                                             ; preds = %3060
  %3067 = load double, ptr %82, align 8, !tbaa !11
  br label %3071

3068:                                             ; preds = %3060
  %3069 = load double, ptr %82, align 8, !tbaa !11
  %3070 = fneg double %3069
  br label %3071

3071:                                             ; preds = %3068, %3066
  %3072 = phi double [ %3067, %3066 ], [ %3070, %3068 ]
  store double %3072, ptr %98, align 8, !tbaa !11
  %3073 = load double, ptr %83, align 8, !tbaa !11
  %3074 = load double, ptr %108, align 8, !tbaa !11
  %3075 = fmul double %3073, %3074
  store double %3075, ptr %108, align 8, !tbaa !11
  %3076 = load double, ptr %83, align 8, !tbaa !11
  %3077 = load double, ptr %103, align 8, !tbaa !11
  %3078 = fmul double %3076, %3077
  store double %3078, ptr %103, align 8, !tbaa !11
  %3079 = load double, ptr %108, align 8, !tbaa !11
  %3080 = fcmp oge double %3079, 0.000000e+00
  br i1 %3080, label %3081, label %3083

3081:                                             ; preds = %3071
  %3082 = load double, ptr %108, align 8, !tbaa !11
  br label %3086

3083:                                             ; preds = %3071
  %3084 = load double, ptr %108, align 8, !tbaa !11
  %3085 = fneg double %3084
  br label %3086

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

3090:                                             ; preds = %3086
  %3091 = load double, ptr %103, align 8, !tbaa !11
  br label %3095

3092:                                             ; preds = %3086
  %3093 = load double, ptr %103, align 8, !tbaa !11
  %3094 = fneg double %3093
  br label %3095

3095:                                             ; preds = %3092, %3090
  %3096 = phi double [ %3091, %3090 ], [ %3094, %3092 ]
  %3097 = fadd double %3087, %3096
  store double %3097, ptr %99, align 8, !tbaa !11
  br label %3098

3098:                                             ; preds = %3095, %3057
  %3099 = load double, ptr %82, align 8, !tbaa !11
  %3100 = load ptr, ptr %22, align 8, !tbaa !5
  %3101 = load i64, ptr %57, align 8, !tbaa !9
  %3102 = load i64, ptr %57, align 8, !tbaa !9
  %3103 = sub nsw i64 %3102, 1
  %3104 = load i64, ptr %36, align 8, !tbaa !9
  %3105 = mul nsw i64 %3103, %3104
  %3106 = add nsw i64 %3101, %3105
  %3107 = getelementptr inbounds double, ptr %3100, i64 %3106
  %3108 = load double, ptr %3107, align 8, !tbaa !11
  %3109 = fmul double %3099, %3108
  store double %3109, ptr %72, align 8, !tbaa !11
  %3110 = load double, ptr %82, align 8, !tbaa !11
  %3111 = load ptr, ptr %22, align 8, !tbaa !5
  %3112 = load i64, ptr %57, align 8, !tbaa !9
  %3113 = load i64, ptr %57, align 8, !tbaa !9
  %3114 = load i64, ptr %36, align 8, !tbaa !9
  %3115 = mul nsw i64 %3113, %3114
  %3116 = add nsw i64 %3112, %3115
  %3117 = getelementptr inbounds double, ptr %3111, i64 %3116
  %3118 = load double, ptr %3117, align 8, !tbaa !11
  %3119 = load double, ptr %108, align 8, !tbaa !11
  %3120 = load ptr, ptr %24, align 8, !tbaa !5
  %3121 = load i64, ptr %57, align 8, !tbaa !9
  %3122 = load i64, ptr %57, align 8, !tbaa !9
  %3123 = load i64, ptr %34, align 8, !tbaa !9
  %3124 = mul nsw i64 %3122, %3123
  %3125 = add nsw i64 %3121, %3124
  %3126 = getelementptr inbounds double, ptr %3120, i64 %3125
  %3127 = load double, ptr %3126, align 8, !tbaa !11
  %3128 = fmul double %3119, %3127
  %3129 = fneg double %3128
  %3130 = call double @llvm.fmuladd.f64(double %3110, double %3118, double %3129)
  store double %3130, ptr %95, align 8, !tbaa !11
  %3131 = load double, ptr %103, align 8, !tbaa !11
  %3132 = fneg double %3131
  %3133 = load ptr, ptr %24, align 8, !tbaa !5
  %3134 = load i64, ptr %57, align 8, !tbaa !9
  %3135 = load i64, ptr %57, align 8, !tbaa !9
  %3136 = load i64, ptr %34, align 8, !tbaa !9
  %3137 = mul nsw i64 %3135, %3136
  %3138 = add nsw i64 %3134, %3137
  %3139 = getelementptr inbounds double, ptr %3133, i64 %3138
  %3140 = load double, ptr %3139, align 8, !tbaa !11
  %3141 = fmul double %3132, %3140
  store double %3141, ptr %94, align 8, !tbaa !11
  %3142 = load double, ptr %72, align 8, !tbaa !11
  %3143 = fcmp oge double %3142, 0.000000e+00
  br i1 %3143, label %3144, label %3146

3144:                                             ; preds = %3098
  %3145 = load double, ptr %72, align 8, !tbaa !11
  br label %3149

3146:                                             ; preds = %3098
  %3147 = load double, ptr %72, align 8, !tbaa !11
  %3148 = fneg double %3147
  br label %3149

3149:                                             ; preds = %3146, %3144
  %3150 = phi double [ %3145, %3144 ], [ %3148, %3146 ]
  %3151 = load double, ptr %95, align 8, !tbaa !11
  %3152 = fcmp oge double %3151, 0.000000e+00
  br i1 %3152, label %3153, label %3155

3153:                                             ; preds = %3149
  %3154 = load double, ptr %95, align 8, !tbaa !11
  br label %3158

3155:                                             ; preds = %3149
  %3156 = load double, ptr %95, align 8, !tbaa !11
  %3157 = fneg double %3156
  br label %3158

3158:                                             ; preds = %3155, %3153
  %3159 = phi double [ %3154, %3153 ], [ %3157, %3155 ]
  %3160 = load double, ptr %94, align 8, !tbaa !11
  %3161 = fcmp oge double %3160, 0.000000e+00
  br i1 %3161, label %3162, label %3164

3162:                                             ; preds = %3158
  %3163 = load double, ptr %94, align 8, !tbaa !11
  br label %3167

3164:                                             ; preds = %3158
  %3165 = load double, ptr %94, align 8, !tbaa !11
  %3166 = fneg double %3165
  br label %3167

3167:                                             ; preds = %3164, %3162
  %3168 = phi double [ %3163, %3162 ], [ %3166, %3164 ]
  %3169 = fadd double %3159, %3168
  %3170 = fcmp oge double %3150, %3169
  br i1 %3170, label %3171, label %3210

3171:                                             ; preds = %3167
  %3172 = load ptr, ptr %32, align 8, !tbaa !5
  %3173 = load ptr, ptr %21, align 8, !tbaa !5
  %3174 = load i64, ptr %3173, align 8, !tbaa !9
  %3175 = shl i64 %3174, 1
  %3176 = load i64, ptr %57, align 8, !tbaa !9
  %3177 = add nsw i64 %3175, %3176
  %3178 = getelementptr inbounds double, ptr %3172, i64 %3177
  store double 1.000000e+00, ptr %3178, align 8, !tbaa !11
  %3179 = load ptr, ptr %32, align 8, !tbaa !5
  %3180 = load ptr, ptr %21, align 8, !tbaa !5
  %3181 = load i64, ptr %3180, align 8, !tbaa !9
  %3182 = mul nsw i64 %3181, 3
  %3183 = load i64, ptr %57, align 8, !tbaa !9
  %3184 = add nsw i64 %3182, %3183
  %3185 = getelementptr inbounds double, ptr %3179, i64 %3184
  store double 0.000000e+00, ptr %3185, align 8, !tbaa !11
  %3186 = load double, ptr %95, align 8, !tbaa !11
  %3187 = fneg double %3186
  %3188 = load double, ptr %72, align 8, !tbaa !11
  %3189 = fdiv double %3187, %3188
  %3190 = load ptr, ptr %32, align 8, !tbaa !5
  %3191 = load ptr, ptr %21, align 8, !tbaa !5
  %3192 = load i64, ptr %3191, align 8, !tbaa !9
  %3193 = shl i64 %3192, 1
  %3194 = load i64, ptr %57, align 8, !tbaa !9
  %3195 = add nsw i64 %3193, %3194
  %3196 = sub nsw i64 %3195, 1
  %3197 = getelementptr inbounds double, ptr %3190, i64 %3196
  store double %3189, ptr %3197, align 8, !tbaa !11
  %3198 = load double, ptr %94, align 8, !tbaa !11
  %3199 = fneg double %3198
  %3200 = load double, ptr %72, align 8, !tbaa !11
  %3201 = fdiv double %3199, %3200
  %3202 = load ptr, ptr %32, align 8, !tbaa !5
  %3203 = load ptr, ptr %21, align 8, !tbaa !5
  %3204 = load i64, ptr %3203, align 8, !tbaa !9
  %3205 = mul nsw i64 %3204, 3
  %3206 = load i64, ptr %57, align 8, !tbaa !9
  %3207 = add nsw i64 %3205, %3206
  %3208 = sub nsw i64 %3207, 1
  %3209 = getelementptr inbounds double, ptr %3202, i64 %3208
  store double %3201, ptr %3209, align 8, !tbaa !11
  br label %3293

3210:                                             ; preds = %3167
  %3211 = load ptr, ptr %32, align 8, !tbaa !5
  %3212 = load ptr, ptr %21, align 8, !tbaa !5
  %3213 = load i64, ptr %3212, align 8, !tbaa !9
  %3214 = shl i64 %3213, 1
  %3215 = load i64, ptr %57, align 8, !tbaa !9
  %3216 = add nsw i64 %3214, %3215
  %3217 = sub nsw i64 %3216, 1
  %3218 = getelementptr inbounds double, ptr %3211, i64 %3217
  store double 1.000000e+00, ptr %3218, align 8, !tbaa !11
  %3219 = load ptr, ptr %32, align 8, !tbaa !5
  %3220 = load ptr, ptr %21, align 8, !tbaa !5
  %3221 = load i64, ptr %3220, align 8, !tbaa !9
  %3222 = mul nsw i64 %3221, 3
  %3223 = load i64, ptr %57, align 8, !tbaa !9
  %3224 = add nsw i64 %3222, %3223
  %3225 = sub nsw i64 %3224, 1
  %3226 = getelementptr inbounds double, ptr %3219, i64 %3225
  store double 0.000000e+00, ptr %3226, align 8, !tbaa !11
  %3227 = load double, ptr %82, align 8, !tbaa !11
  %3228 = load ptr, ptr %22, align 8, !tbaa !5
  %3229 = load i64, ptr %57, align 8, !tbaa !9
  %3230 = sub nsw i64 %3229, 1
  %3231 = load i64, ptr %57, align 8, !tbaa !9
  %3232 = load i64, ptr %36, align 8, !tbaa !9
  %3233 = mul nsw i64 %3231, %3232
  %3234 = add nsw i64 %3230, %3233
  %3235 = getelementptr inbounds double, ptr %3228, i64 %3234
  %3236 = load double, ptr %3235, align 8, !tbaa !11
  %3237 = fmul double %3227, %3236
  store double %3237, ptr %72, align 8, !tbaa !11
  %3238 = load double, ptr %108, align 8, !tbaa !11
  %3239 = load ptr, ptr %24, align 8, !tbaa !5
  %3240 = load i64, ptr %57, align 8, !tbaa !9
  %3241 = sub nsw i64 %3240, 1
  %3242 = load i64, ptr %57, align 8, !tbaa !9
  %3243 = sub nsw i64 %3242, 1
  %3244 = load i64, ptr %34, align 8, !tbaa !9
  %3245 = mul nsw i64 %3243, %3244
  %3246 = add nsw i64 %3241, %3245
  %3247 = getelementptr inbounds double, ptr %3239, i64 %3246
  %3248 = load double, ptr %3247, align 8, !tbaa !11
  %3249 = load double, ptr %82, align 8, !tbaa !11
  %3250 = load ptr, ptr %22, align 8, !tbaa !5
  %3251 = load i64, ptr %57, align 8, !tbaa !9
  %3252 = sub nsw i64 %3251, 1
  %3253 = load i64, ptr %57, align 8, !tbaa !9
  %3254 = sub nsw i64 %3253, 1
  %3255 = load i64, ptr %36, align 8, !tbaa !9
  %3256 = mul nsw i64 %3254, %3255
  %3257 = add nsw i64 %3252, %3256
  %3258 = getelementptr inbounds double, ptr %3250, i64 %3257
  %3259 = load double, ptr %3258, align 8, !tbaa !11
  %3260 = fmul double %3249, %3259
  %3261 = fneg double %3260
  %3262 = call double @llvm.fmuladd.f64(double %3238, double %3248, double %3261)
  %3263 = load double, ptr %72, align 8, !tbaa !11
  %3264 = fdiv double %3262, %3263
  %3265 = load ptr, ptr %32, align 8, !tbaa !5
  %3266 = load ptr, ptr %21, align 8, !tbaa !5
  %3267 = load i64, ptr %3266, align 8, !tbaa !9
  %3268 = shl i64 %3267, 1
  %3269 = load i64, ptr %57, align 8, !tbaa !9
  %3270 = add nsw i64 %3268, %3269
  %3271 = getelementptr inbounds double, ptr %3265, i64 %3270
  store double %3264, ptr %3271, align 8, !tbaa !11
  %3272 = load double, ptr %103, align 8, !tbaa !11
  %3273 = load ptr, ptr %24, align 8, !tbaa !5
  %3274 = load i64, ptr %57, align 8, !tbaa !9
  %3275 = sub nsw i64 %3274, 1
  %3276 = load i64, ptr %57, align 8, !tbaa !9
  %3277 = sub nsw i64 %3276, 1
  %3278 = load i64, ptr %34, align 8, !tbaa !9
  %3279 = mul nsw i64 %3277, %3278
  %3280 = add nsw i64 %3275, %3279
  %3281 = getelementptr inbounds double, ptr %3273, i64 %3280
  %3282 = load double, ptr %3281, align 8, !tbaa !11
  %3283 = fmul double %3272, %3282
  %3284 = load double, ptr %72, align 8, !tbaa !11
  %3285 = fdiv double %3283, %3284
  %3286 = load ptr, ptr %32, align 8, !tbaa !5
  %3287 = load ptr, ptr %21, align 8, !tbaa !5
  %3288 = load i64, ptr %3287, align 8, !tbaa !9
  %3289 = mul nsw i64 %3288, 3
  %3290 = load i64, ptr %57, align 8, !tbaa !9
  %3291 = add nsw i64 %3289, %3290
  %3292 = getelementptr inbounds double, ptr %3286, i64 %3291
  store double %3285, ptr %3292, align 8, !tbaa !11
  br label %3293

3293:                                             ; preds = %3210, %3171
  %3294 = load ptr, ptr %32, align 8, !tbaa !5
  %3295 = load ptr, ptr %21, align 8, !tbaa !5
  %3296 = load i64, ptr %3295, align 8, !tbaa !9
  %3297 = shl i64 %3296, 1
  %3298 = load i64, ptr %57, align 8, !tbaa !9
  %3299 = add nsw i64 %3297, %3298
  %3300 = getelementptr inbounds double, ptr %3294, i64 %3299
  %3301 = load double, ptr %3300, align 8, !tbaa !11
  store double %3301, ptr %47, align 8, !tbaa !11
  %3302 = load double, ptr %47, align 8, !tbaa !11
  %3303 = fcmp oge double %3302, 0.000000e+00
  br i1 %3303, label %3304, label %3306

3304:                                             ; preds = %3293
  %3305 = load double, ptr %47, align 8, !tbaa !11
  br label %3309

3306:                                             ; preds = %3293
  %3307 = load double, ptr %47, align 8, !tbaa !11
  %3308 = fneg double %3307
  br label %3309

3309:                                             ; preds = %3306, %3304
  %3310 = phi double [ %3305, %3304 ], [ %3308, %3306 ]
  %3311 = load ptr, ptr %32, align 8, !tbaa !5
  %3312 = load ptr, ptr %21, align 8, !tbaa !5
  %3313 = load i64, ptr %3312, align 8, !tbaa !9
  %3314 = mul nsw i64 %3313, 3
  %3315 = load i64, ptr %57, align 8, !tbaa !9
  %3316 = add nsw i64 %3314, %3315
  %3317 = getelementptr inbounds double, ptr %3311, i64 %3316
  %3318 = load double, ptr %3317, align 8, !tbaa !11
  store double %3318, ptr %48, align 8, !tbaa !11
  %3319 = load double, ptr %48, align 8, !tbaa !11
  %3320 = fcmp oge double %3319, 0.000000e+00
  br i1 %3320, label %3321, label %3323

3321:                                             ; preds = %3309
  %3322 = load double, ptr %48, align 8, !tbaa !11
  br label %3326

3323:                                             ; preds = %3309
  %3324 = load double, ptr %48, align 8, !tbaa !11
  %3325 = fneg double %3324
  br label %3326

3326:                                             ; preds = %3323, %3321
  %3327 = phi double [ %3322, %3321 ], [ %3325, %3323 ]
  %3328 = fadd double %3310, %3327
  store double %3328, ptr %51, align 8, !tbaa !11
  %3329 = load ptr, ptr %32, align 8, !tbaa !5
  %3330 = load ptr, ptr %21, align 8, !tbaa !5
  %3331 = load i64, ptr %3330, align 8, !tbaa !9
  %3332 = shl i64 %3331, 1
  %3333 = load i64, ptr %57, align 8, !tbaa !9
  %3334 = add nsw i64 %3332, %3333
  %3335 = sub nsw i64 %3334, 1
  %3336 = getelementptr inbounds double, ptr %3329, i64 %3335
  %3337 = load double, ptr %3336, align 8, !tbaa !11
  store double %3337, ptr %49, align 8, !tbaa !11
  %3338 = load double, ptr %49, align 8, !tbaa !11
  %3339 = fcmp oge double %3338, 0.000000e+00
  br i1 %3339, label %3340, label %3342

3340:                                             ; preds = %3326
  %3341 = load double, ptr %49, align 8, !tbaa !11
  br label %3345

3342:                                             ; preds = %3326
  %3343 = load double, ptr %49, align 8, !tbaa !11
  %3344 = fneg double %3343
  br label %3345

3345:                                             ; preds = %3342, %3340
  %3346 = phi double [ %3341, %3340 ], [ %3344, %3342 ]
  %3347 = load ptr, ptr %32, align 8, !tbaa !5
  %3348 = load ptr, ptr %21, align 8, !tbaa !5
  %3349 = load i64, ptr %3348, align 8, !tbaa !9
  %3350 = mul nsw i64 %3349, 3
  %3351 = load i64, ptr %57, align 8, !tbaa !9
  %3352 = add nsw i64 %3350, %3351
  %3353 = sub nsw i64 %3352, 1
  %3354 = getelementptr inbounds double, ptr %3347, i64 %3353
  %3355 = load double, ptr %3354, align 8, !tbaa !11
  store double %3355, ptr %50, align 8, !tbaa !11
  %3356 = load double, ptr %50, align 8, !tbaa !11
  %3357 = fcmp oge double %3356, 0.000000e+00
  br i1 %3357, label %3358, label %3360

3358:                                             ; preds = %3345
  %3359 = load double, ptr %50, align 8, !tbaa !11
  br label %3363

3360:                                             ; preds = %3345
  %3361 = load double, ptr %50, align 8, !tbaa !11
  %3362 = fneg double %3361
  br label %3363

3363:                                             ; preds = %3360, %3358
  %3364 = phi double [ %3359, %3358 ], [ %3362, %3360 ]
  %3365 = fadd double %3346, %3364
  store double %3365, ptr %52, align 8, !tbaa !11
  %3366 = load double, ptr %51, align 8, !tbaa !11
  %3367 = load double, ptr %52, align 8, !tbaa !11
  %3368 = fcmp oge double %3366, %3367
  br i1 %3368, label %3369, label %3371

3369:                                             ; preds = %3363
  %3370 = load double, ptr %51, align 8, !tbaa !11
  br label %3373

3371:                                             ; preds = %3363
  %3372 = load double, ptr %52, align 8, !tbaa !11
  br label %3373

3373:                                             ; preds = %3371, %3369
  %3374 = phi double [ %3370, %3369 ], [ %3372, %3371 ]
  store double %3374, ptr %73, align 8, !tbaa !11
  %3375 = load double, ptr %82, align 8, !tbaa !11
  %3376 = load ptr, ptr %32, align 8, !tbaa !5
  %3377 = load ptr, ptr %21, align 8, !tbaa !5
  %3378 = load i64, ptr %3377, align 8, !tbaa !9
  %3379 = shl i64 %3378, 1
  %3380 = load i64, ptr %57, align 8, !tbaa !9
  %3381 = add nsw i64 %3379, %3380
  %3382 = sub nsw i64 %3381, 1
  %3383 = getelementptr inbounds double, ptr %3376, i64 %3382
  %3384 = load double, ptr %3383, align 8, !tbaa !11
  %3385 = fmul double %3375, %3384
  store double %3385, ptr %106, align 8, !tbaa !11
  %3386 = load double, ptr %82, align 8, !tbaa !11
  %3387 = load ptr, ptr %32, align 8, !tbaa !5
  %3388 = load ptr, ptr %21, align 8, !tbaa !5
  %3389 = load i64, ptr %3388, align 8, !tbaa !9
  %3390 = mul nsw i64 %3389, 3
  %3391 = load i64, ptr %57, align 8, !tbaa !9
  %3392 = add nsw i64 %3390, %3391
  %3393 = sub nsw i64 %3392, 1
  %3394 = getelementptr inbounds double, ptr %3387, i64 %3393
  %3395 = load double, ptr %3394, align 8, !tbaa !11
  %3396 = fmul double %3386, %3395
  store double %3396, ptr %100, align 8, !tbaa !11
  %3397 = load double, ptr %108, align 8, !tbaa !11
  %3398 = load ptr, ptr %32, align 8, !tbaa !5
  %3399 = load ptr, ptr %21, align 8, !tbaa !5
  %3400 = load i64, ptr %3399, align 8, !tbaa !9
  %3401 = shl i64 %3400, 1
  %3402 = load i64, ptr %57, align 8, !tbaa !9
  %3403 = add nsw i64 %3401, %3402
  %3404 = sub nsw i64 %3403, 1
  %3405 = getelementptr inbounds double, ptr %3398, i64 %3404
  %3406 = load double, ptr %3405, align 8, !tbaa !11
  %3407 = load double, ptr %103, align 8, !tbaa !11
  %3408 = load ptr, ptr %32, align 8, !tbaa !5
  %3409 = load ptr, ptr %21, align 8, !tbaa !5
  %3410 = load i64, ptr %3409, align 8, !tbaa !9
  %3411 = mul nsw i64 %3410, 3
  %3412 = load i64, ptr %57, align 8, !tbaa !9
  %3413 = add nsw i64 %3411, %3412
  %3414 = sub nsw i64 %3413, 1
  %3415 = getelementptr inbounds double, ptr %3408, i64 %3414
  %3416 = load double, ptr %3415, align 8, !tbaa !11
  %3417 = fmul double %3407, %3416
  %3418 = fneg double %3417
  %3419 = call double @llvm.fmuladd.f64(double %3397, double %3406, double %3418)
  store double %3419, ptr %107, align 8, !tbaa !11
  %3420 = load double, ptr %103, align 8, !tbaa !11
  %3421 = load ptr, ptr %32, align 8, !tbaa !5
  %3422 = load ptr, ptr %21, align 8, !tbaa !5
  %3423 = load i64, ptr %3422, align 8, !tbaa !9
  %3424 = shl i64 %3423, 1
  %3425 = load i64, ptr %57, align 8, !tbaa !9
  %3426 = add nsw i64 %3424, %3425
  %3427 = sub nsw i64 %3426, 1
  %3428 = getelementptr inbounds double, ptr %3421, i64 %3427
  %3429 = load double, ptr %3428, align 8, !tbaa !11
  %3430 = load double, ptr %108, align 8, !tbaa !11
  %3431 = load ptr, ptr %32, align 8, !tbaa !5
  %3432 = load ptr, ptr %21, align 8, !tbaa !5
  %3433 = load i64, ptr %3432, align 8, !tbaa !9
  %3434 = mul nsw i64 %3433, 3
  %3435 = load i64, ptr %57, align 8, !tbaa !9
  %3436 = add nsw i64 %3434, %3435
  %3437 = sub nsw i64 %3436, 1
  %3438 = getelementptr inbounds double, ptr %3431, i64 %3437
  %3439 = load double, ptr %3438, align 8, !tbaa !11
  %3440 = fmul double %3430, %3439
  %3441 = call double @llvm.fmuladd.f64(double %3420, double %3429, double %3440)
  store double %3441, ptr %101, align 8, !tbaa !11
  %3442 = load double, ptr %82, align 8, !tbaa !11
  %3443 = load ptr, ptr %32, align 8, !tbaa !5
  %3444 = load ptr, ptr %21, align 8, !tbaa !5
  %3445 = load i64, ptr %3444, align 8, !tbaa !9
  %3446 = shl i64 %3445, 1
  %3447 = load i64, ptr %57, align 8, !tbaa !9
  %3448 = add nsw i64 %3446, %3447
  %3449 = getelementptr inbounds double, ptr %3443, i64 %3448
  %3450 = load double, ptr %3449, align 8, !tbaa !11
  %3451 = fmul double %3442, %3450
  store double %3451, ptr %78, align 8, !tbaa !11
  %3452 = load double, ptr %82, align 8, !tbaa !11
  %3453 = load ptr, ptr %32, align 8, !tbaa !5
  %3454 = load ptr, ptr %21, align 8, !tbaa !5
  %3455 = load i64, ptr %3454, align 8, !tbaa !9
  %3456 = mul nsw i64 %3455, 3
  %3457 = load i64, ptr %57, align 8, !tbaa !9
  %3458 = add nsw i64 %3456, %3457
  %3459 = getelementptr inbounds double, ptr %3453, i64 %3458
  %3460 = load double, ptr %3459, align 8, !tbaa !11
  %3461 = fmul double %3452, %3460
  store double %3461, ptr %76, align 8, !tbaa !11
  %3462 = load double, ptr %108, align 8, !tbaa !11
  %3463 = load ptr, ptr %32, align 8, !tbaa !5
  %3464 = load ptr, ptr %21, align 8, !tbaa !5
  %3465 = load i64, ptr %3464, align 8, !tbaa !9
  %3466 = shl i64 %3465, 1
  %3467 = load i64, ptr %57, align 8, !tbaa !9
  %3468 = add nsw i64 %3466, %3467
  %3469 = getelementptr inbounds double, ptr %3463, i64 %3468
  %3470 = load double, ptr %3469, align 8, !tbaa !11
  %3471 = load double, ptr %103, align 8, !tbaa !11
  %3472 = load ptr, ptr %32, align 8, !tbaa !5
  %3473 = load ptr, ptr %21, align 8, !tbaa !5
  %3474 = load i64, ptr %3473, align 8, !tbaa !9
  %3475 = mul nsw i64 %3474, 3
  %3476 = load i64, ptr %57, align 8, !tbaa !9
  %3477 = add nsw i64 %3475, %3476
  %3478 = getelementptr inbounds double, ptr %3472, i64 %3477
  %3479 = load double, ptr %3478, align 8, !tbaa !11
  %3480 = fmul double %3471, %3479
  %3481 = fneg double %3480
  %3482 = call double @llvm.fmuladd.f64(double %3462, double %3470, double %3481)
  store double %3482, ptr %79, align 8, !tbaa !11
  %3483 = load double, ptr %103, align 8, !tbaa !11
  %3484 = load ptr, ptr %32, align 8, !tbaa !5
  %3485 = load ptr, ptr %21, align 8, !tbaa !5
  %3486 = load i64, ptr %3485, align 8, !tbaa !9
  %3487 = shl i64 %3486, 1
  %3488 = load i64, ptr %57, align 8, !tbaa !9
  %3489 = add nsw i64 %3487, %3488
  %3490 = getelementptr inbounds double, ptr %3484, i64 %3489
  %3491 = load double, ptr %3490, align 8, !tbaa !11
  %3492 = load double, ptr %108, align 8, !tbaa !11
  %3493 = load ptr, ptr %32, align 8, !tbaa !5
  %3494 = load ptr, ptr %21, align 8, !tbaa !5
  %3495 = load i64, ptr %3494, align 8, !tbaa !9
  %3496 = mul nsw i64 %3495, 3
  %3497 = load i64, ptr %57, align 8, !tbaa !9
  %3498 = add nsw i64 %3496, %3497
  %3499 = getelementptr inbounds double, ptr %3493, i64 %3498
  %3500 = load double, ptr %3499, align 8, !tbaa !11
  %3501 = fmul double %3492, %3500
  %3502 = call double @llvm.fmuladd.f64(double %3483, double %3491, double %3501)
  store double %3502, ptr %77, align 8, !tbaa !11
  %3503 = load i64, ptr %57, align 8, !tbaa !9
  %3504 = sub nsw i64 %3503, 2
  store i64 %3504, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %3505

3505:                                             ; preds = %3612, %3373
  %3506 = load i64, ptr %60, align 8, !tbaa !9
  %3507 = load i64, ptr %42, align 8, !tbaa !9
  %3508 = icmp sle i64 %3506, %3507
  br i1 %3508, label %3509, label %3615

3509:                                             ; preds = %3505
  %3510 = load double, ptr %106, align 8, !tbaa !11
  %3511 = fneg double %3510
  %3512 = load ptr, ptr %22, align 8, !tbaa !5
  %3513 = load i64, ptr %60, align 8, !tbaa !9
  %3514 = load i64, ptr %57, align 8, !tbaa !9
  %3515 = sub nsw i64 %3514, 1
  %3516 = load i64, ptr %36, align 8, !tbaa !9
  %3517 = mul nsw i64 %3515, %3516
  %3518 = add nsw i64 %3513, %3517
  %3519 = getelementptr inbounds double, ptr %3512, i64 %3518
  %3520 = load double, ptr %3519, align 8, !tbaa !11
  %3521 = load double, ptr %107, align 8, !tbaa !11
  %3522 = load ptr, ptr %24, align 8, !tbaa !5
  %3523 = load i64, ptr %60, align 8, !tbaa !9
  %3524 = load i64, ptr %57, align 8, !tbaa !9
  %3525 = sub nsw i64 %3524, 1
  %3526 = load i64, ptr %34, align 8, !tbaa !9
  %3527 = mul nsw i64 %3525, %3526
  %3528 = add nsw i64 %3523, %3527
  %3529 = getelementptr inbounds double, ptr %3522, i64 %3528
  %3530 = load double, ptr %3529, align 8, !tbaa !11
  %3531 = fmul double %3521, %3530
  %3532 = call double @llvm.fmuladd.f64(double %3511, double %3520, double %3531)
  %3533 = load double, ptr %78, align 8, !tbaa !11
  %3534 = load ptr, ptr %22, align 8, !tbaa !5
  %3535 = load i64, ptr %60, align 8, !tbaa !9
  %3536 = load i64, ptr %57, align 8, !tbaa !9
  %3537 = load i64, ptr %36, align 8, !tbaa !9
  %3538 = mul nsw i64 %3536, %3537
  %3539 = add nsw i64 %3535, %3538
  %3540 = getelementptr inbounds double, ptr %3534, i64 %3539
  %3541 = load double, ptr %3540, align 8, !tbaa !11
  %3542 = fneg double %3533
  %3543 = call double @llvm.fmuladd.f64(double %3542, double %3541, double %3532)
  %3544 = load double, ptr %79, align 8, !tbaa !11
  %3545 = load ptr, ptr %24, align 8, !tbaa !5
  %3546 = load i64, ptr %60, align 8, !tbaa !9
  %3547 = load i64, ptr %57, align 8, !tbaa !9
  %3548 = load i64, ptr %34, align 8, !tbaa !9
  %3549 = mul nsw i64 %3547, %3548
  %3550 = add nsw i64 %3546, %3549
  %3551 = getelementptr inbounds double, ptr %3545, i64 %3550
  %3552 = load double, ptr %3551, align 8, !tbaa !11
  %3553 = call double @llvm.fmuladd.f64(double %3544, double %3552, double %3543)
  %3554 = load ptr, ptr %32, align 8, !tbaa !5
  %3555 = load ptr, ptr %21, align 8, !tbaa !5
  %3556 = load i64, ptr %3555, align 8, !tbaa !9
  %3557 = shl i64 %3556, 1
  %3558 = load i64, ptr %60, align 8, !tbaa !9
  %3559 = add nsw i64 %3557, %3558
  %3560 = getelementptr inbounds double, ptr %3554, i64 %3559
  store double %3553, ptr %3560, align 8, !tbaa !11
  %3561 = load double, ptr %100, align 8, !tbaa !11
  %3562 = fneg double %3561
  %3563 = load ptr, ptr %22, align 8, !tbaa !5
  %3564 = load i64, ptr %60, align 8, !tbaa !9
  %3565 = load i64, ptr %57, align 8, !tbaa !9
  %3566 = sub nsw i64 %3565, 1
  %3567 = load i64, ptr %36, align 8, !tbaa !9
  %3568 = mul nsw i64 %3566, %3567
  %3569 = add nsw i64 %3564, %3568
  %3570 = getelementptr inbounds double, ptr %3563, i64 %3569
  %3571 = load double, ptr %3570, align 8, !tbaa !11
  %3572 = load double, ptr %101, align 8, !tbaa !11
  %3573 = load ptr, ptr %24, align 8, !tbaa !5
  %3574 = load i64, ptr %60, align 8, !tbaa !9
  %3575 = load i64, ptr %57, align 8, !tbaa !9
  %3576 = sub nsw i64 %3575, 1
  %3577 = load i64, ptr %34, align 8, !tbaa !9
  %3578 = mul nsw i64 %3576, %3577
  %3579 = add nsw i64 %3574, %3578
  %3580 = getelementptr inbounds double, ptr %3573, i64 %3579
  %3581 = load double, ptr %3580, align 8, !tbaa !11
  %3582 = fmul double %3572, %3581
  %3583 = call double @llvm.fmuladd.f64(double %3562, double %3571, double %3582)
  %3584 = load double, ptr %76, align 8, !tbaa !11
  %3585 = load ptr, ptr %22, align 8, !tbaa !5
  %3586 = load i64, ptr %60, align 8, !tbaa !9
  %3587 = load i64, ptr %57, align 8, !tbaa !9
  %3588 = load i64, ptr %36, align 8, !tbaa !9
  %3589 = mul nsw i64 %3587, %3588
  %3590 = add nsw i64 %3586, %3589
  %3591 = getelementptr inbounds double, ptr %3585, i64 %3590
  %3592 = load double, ptr %3591, align 8, !tbaa !11
  %3593 = fneg double %3584
  %3594 = call double @llvm.fmuladd.f64(double %3593, double %3592, double %3583)
  %3595 = load double, ptr %77, align 8, !tbaa !11
  %3596 = load ptr, ptr %24, align 8, !tbaa !5
  %3597 = load i64, ptr %60, align 8, !tbaa !9
  %3598 = load i64, ptr %57, align 8, !tbaa !9
  %3599 = load i64, ptr %34, align 8, !tbaa !9
  %3600 = mul nsw i64 %3598, %3599
  %3601 = add nsw i64 %3597, %3600
  %3602 = getelementptr inbounds double, ptr %3596, i64 %3601
  %3603 = load double, ptr %3602, align 8, !tbaa !11
  %3604 = call double @llvm.fmuladd.f64(double %3595, double %3603, double %3594)
  %3605 = load ptr, ptr %32, align 8, !tbaa !5
  %3606 = load ptr, ptr %21, align 8, !tbaa !5
  %3607 = load i64, ptr %3606, align 8, !tbaa !9
  %3608 = mul nsw i64 %3607, 3
  %3609 = load i64, ptr %60, align 8, !tbaa !9
  %3610 = add nsw i64 %3608, %3609
  %3611 = getelementptr inbounds double, ptr %3605, i64 %3610
  store double %3604, ptr %3611, align 8, !tbaa !11
  br label %3612

3612:                                             ; preds = %3509
  %3613 = load i64, ptr %60, align 8, !tbaa !9
  %3614 = add nsw i64 %3613, 1
  store i64 %3614, ptr %60, align 8, !tbaa !9
  br label %3505, !llvm.loop !40

3615:                                             ; preds = %3505
  br label %3616

3616:                                             ; preds = %3615, %2922
  %3617 = load double, ptr %66, align 8, !tbaa !11
  %3618 = load double, ptr %98, align 8, !tbaa !11
  %3619 = fmul double %3617, %3618
  %3620 = load double, ptr %91, align 8, !tbaa !11
  %3621 = fmul double %3619, %3620
  store double %3621, ptr %47, align 8, !tbaa !11
  %3622 = load double, ptr %66, align 8, !tbaa !11
  %3623 = load double, ptr %99, align 8, !tbaa !11
  %3624 = fmul double %3622, %3623
  %3625 = load double, ptr %92, align 8, !tbaa !11
  %3626 = fmul double %3624, %3625
  store double %3626, ptr %48, align 8, !tbaa !11
  %3627 = load double, ptr %47, align 8, !tbaa !11
  %3628 = load double, ptr %48, align 8, !tbaa !11
  %3629 = fcmp oge double %3627, %3628
  br i1 %3629, label %3630, label %3632

3630:                                             ; preds = %3616
  %3631 = load double, ptr %47, align 8, !tbaa !11
  br label %3634

3632:                                             ; preds = %3616
  %3633 = load double, ptr %48, align 8, !tbaa !11
  br label %3634

3634:                                             ; preds = %3632, %3630
  %3635 = phi double [ %3631, %3630 ], [ %3633, %3632 ]
  store double %3635, ptr %47, align 8, !tbaa !11
  %3636 = load double, ptr %47, align 8, !tbaa !11
  %3637 = load double, ptr %110, align 8, !tbaa !11
  %3638 = fcmp oge double %3636, %3637
  br i1 %3638, label %3639, label %3641

3639:                                             ; preds = %3634
  %3640 = load double, ptr %47, align 8, !tbaa !11
  br label %3643

3641:                                             ; preds = %3634
  %3642 = load double, ptr %110, align 8, !tbaa !11
  br label %3643

3643:                                             ; preds = %3641, %3639
  %3644 = phi double [ %3640, %3639 ], [ %3642, %3641 ]
  store double %3644, ptr %71, align 8, !tbaa !11
  store i64 0, ptr %87, align 8, !tbaa !9
  %3645 = load i64, ptr %57, align 8, !tbaa !9
  %3646 = load i64, ptr %62, align 8, !tbaa !9
  %3647 = sub nsw i64 %3645, %3646
  store i64 %3647, ptr %54, align 8, !tbaa !9
  br label %3648

3648:                                             ; preds = %4210, %3643
  %3649 = load i64, ptr %54, align 8, !tbaa !9
  %3650 = icmp sge i64 %3649, 1
  br i1 %3650, label %3651, label %4213

3651:                                             ; preds = %3648
  %3652 = load i64, ptr %87, align 8, !tbaa !9
  %3653 = icmp ne i64 %3652, 0
  br i1 %3653, label %3670, label %3654

3654:                                             ; preds = %3651
  %3655 = load i64, ptr %54, align 8, !tbaa !9
  %3656 = icmp sgt i64 %3655, 1
  br i1 %3656, label %3657, label %3670

3657:                                             ; preds = %3654
  %3658 = load ptr, ptr %22, align 8, !tbaa !5
  %3659 = load i64, ptr %54, align 8, !tbaa !9
  %3660 = load i64, ptr %54, align 8, !tbaa !9
  %3661 = sub nsw i64 %3660, 1
  %3662 = load i64, ptr %36, align 8, !tbaa !9
  %3663 = mul nsw i64 %3661, %3662
  %3664 = add nsw i64 %3659, %3663
  %3665 = getelementptr inbounds double, ptr %3658, i64 %3664
  %3666 = load double, ptr %3665, align 8, !tbaa !11
  %3667 = fcmp une double %3666, 0.000000e+00
  br i1 %3667, label %3668, label %3669

3668:                                             ; preds = %3657
  store i64 1, ptr %87, align 8, !tbaa !9
  br label %4209

3669:                                             ; preds = %3657
  br label %3670

3670:                                             ; preds = %3669, %3654, %3651
  %3671 = load ptr, ptr %24, align 8, !tbaa !5
  %3672 = load i64, ptr %54, align 8, !tbaa !9
  %3673 = load i64, ptr %54, align 8, !tbaa !9
  %3674 = load i64, ptr %34, align 8, !tbaa !9
  %3675 = mul nsw i64 %3673, %3674
  %3676 = add nsw i64 %3672, %3675
  %3677 = getelementptr inbounds double, ptr %3671, i64 %3676
  %3678 = load double, ptr %3677, align 8, !tbaa !11
  %3679 = getelementptr inbounds [2 x double], ptr %81, i64 0, i64 0
  store double %3678, ptr %3679, align 16, !tbaa !11
  %3680 = load i64, ptr %87, align 8, !tbaa !9
  %3681 = icmp ne i64 %3680, 0
  br i1 %3681, label %3682, label %3694

3682:                                             ; preds = %3670
  store i64 2, ptr %58, align 8, !tbaa !9
  %3683 = load ptr, ptr %24, align 8, !tbaa !5
  %3684 = load i64, ptr %54, align 8, !tbaa !9
  %3685 = add nsw i64 %3684, 1
  %3686 = load i64, ptr %54, align 8, !tbaa !9
  %3687 = add nsw i64 %3686, 1
  %3688 = load i64, ptr %34, align 8, !tbaa !9
  %3689 = mul nsw i64 %3687, %3688
  %3690 = add nsw i64 %3685, %3689
  %3691 = getelementptr inbounds double, ptr %3683, i64 %3690
  %3692 = load double, ptr %3691, align 8, !tbaa !11
  %3693 = getelementptr inbounds [2 x double], ptr %81, i64 0, i64 1
  store double %3692, ptr %3693, align 8, !tbaa !11
  br label %3695

3694:                                             ; preds = %3670
  store i64 1, ptr %58, align 8, !tbaa !9
  br label %3695

3695:                                             ; preds = %3694, %3682
  %3696 = load ptr, ptr %22, align 8, !tbaa !5
  %3697 = load i64, ptr %54, align 8, !tbaa !9
  %3698 = load i64, ptr %54, align 8, !tbaa !9
  %3699 = load i64, ptr %36, align 8, !tbaa !9
  %3700 = mul nsw i64 %3698, %3699
  %3701 = add nsw i64 %3697, %3700
  %3702 = getelementptr inbounds double, ptr %3696, i64 %3701
  %3703 = load ptr, ptr %23, align 8, !tbaa !5
  %3704 = getelementptr inbounds [2 x double], ptr %81, i64 0, i64 0
  %3705 = getelementptr inbounds [2 x double], ptr %81, i64 0, i64 1
  %3706 = load ptr, ptr %32, align 8, !tbaa !5
  %3707 = load ptr, ptr %21, align 8, !tbaa !5
  %3708 = load i64, ptr %3707, align 8, !tbaa !9
  %3709 = shl i64 %3708, 1
  %3710 = load i64, ptr %54, align 8, !tbaa !9
  %3711 = add nsw i64 %3709, %3710
  %3712 = getelementptr inbounds double, ptr %3706, i64 %3711
  %3713 = load ptr, ptr %21, align 8, !tbaa !5
  %3714 = getelementptr inbounds [4 x double], ptr %67, i64 0, i64 0
  %3715 = call i32 @dlaln2_(ptr noundef @c_false, ptr noundef %58, ptr noundef %62, ptr noundef %71, ptr noundef %82, ptr noundef %3702, ptr noundef %3703, ptr noundef %3704, ptr noundef %3705, ptr noundef %3712, ptr noundef %3713, ptr noundef %108, ptr noundef %103, ptr noundef %3714, ptr noundef @c__2, ptr noundef %83, ptr noundef %72, ptr noundef %88)
  %3716 = load double, ptr %83, align 8, !tbaa !11
  %3717 = fcmp olt double %3716, 1.000000e+00
  br i1 %3717, label %3718, label %3761

3718:                                             ; preds = %3695
  %3719 = load i64, ptr %62, align 8, !tbaa !9
  %3720 = sub nsw i64 %3719, 1
  store i64 %3720, ptr %42, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %3721

3721:                                             ; preds = %3757, %3718
  %3722 = load i64, ptr %61, align 8, !tbaa !9
  %3723 = load i64, ptr %42, align 8, !tbaa !9
  %3724 = icmp sle i64 %3722, %3723
  br i1 %3724, label %3725, label %3760

3725:                                             ; preds = %3721
  %3726 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %3726, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %3727

3727:                                             ; preds = %3753, %3725
  %3728 = load i64, ptr %60, align 8, !tbaa !9
  %3729 = load i64, ptr %43, align 8, !tbaa !9
  %3730 = icmp sle i64 %3728, %3729
  br i1 %3730, label %3731, label %3756

3731:                                             ; preds = %3727
  %3732 = load double, ptr %83, align 8, !tbaa !11
  %3733 = load ptr, ptr %32, align 8, !tbaa !5
  %3734 = load i64, ptr %61, align 8, !tbaa !9
  %3735 = add nsw i64 %3734, 2
  %3736 = load ptr, ptr %21, align 8, !tbaa !5
  %3737 = load i64, ptr %3736, align 8, !tbaa !9
  %3738 = mul nsw i64 %3735, %3737
  %3739 = load i64, ptr %60, align 8, !tbaa !9
  %3740 = add nsw i64 %3738, %3739
  %3741 = getelementptr inbounds double, ptr %3733, i64 %3740
  %3742 = load double, ptr %3741, align 8, !tbaa !11
  %3743 = fmul double %3732, %3742
  %3744 = load ptr, ptr %32, align 8, !tbaa !5
  %3745 = load i64, ptr %61, align 8, !tbaa !9
  %3746 = add nsw i64 %3745, 2
  %3747 = load ptr, ptr %21, align 8, !tbaa !5
  %3748 = load i64, ptr %3747, align 8, !tbaa !9
  %3749 = mul nsw i64 %3746, %3748
  %3750 = load i64, ptr %60, align 8, !tbaa !9
  %3751 = add nsw i64 %3749, %3750
  %3752 = getelementptr inbounds double, ptr %3744, i64 %3751
  store double %3743, ptr %3752, align 8, !tbaa !11
  br label %3753

3753:                                             ; preds = %3731
  %3754 = load i64, ptr %60, align 8, !tbaa !9
  %3755 = add nsw i64 %3754, 1
  store i64 %3755, ptr %60, align 8, !tbaa !9
  br label %3727, !llvm.loop !41

3756:                                             ; preds = %3727
  br label %3757

3757:                                             ; preds = %3756
  %3758 = load i64, ptr %61, align 8, !tbaa !9
  %3759 = add nsw i64 %3758, 1
  store i64 %3759, ptr %61, align 8, !tbaa !9
  br label %3721, !llvm.loop !42

3760:                                             ; preds = %3721
  br label %3761

3761:                                             ; preds = %3760, %3695
  %3762 = load double, ptr %83, align 8, !tbaa !11
  %3763 = load double, ptr %73, align 8, !tbaa !11
  %3764 = fmul double %3762, %3763
  store double %3764, ptr %47, align 8, !tbaa !11
  %3765 = load double, ptr %47, align 8, !tbaa !11
  %3766 = load double, ptr %72, align 8, !tbaa !11
  %3767 = fcmp oge double %3765, %3766
  br i1 %3767, label %3768, label %3770

3768:                                             ; preds = %3761
  %3769 = load double, ptr %47, align 8, !tbaa !11
  br label %3772

3770:                                             ; preds = %3761
  %3771 = load double, ptr %72, align 8, !tbaa !11
  br label %3772

3772:                                             ; preds = %3770, %3768
  %3773 = phi double [ %3769, %3768 ], [ %3771, %3770 ]
  store double %3773, ptr %73, align 8, !tbaa !11
  %3774 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %3774, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %61, align 8, !tbaa !9
  br label %3775

3775:                                             ; preds = %3809, %3772
  %3776 = load i64, ptr %61, align 8, !tbaa !9
  %3777 = load i64, ptr %42, align 8, !tbaa !9
  %3778 = icmp sle i64 %3776, %3777
  br i1 %3778, label %3779, label %3812

3779:                                             ; preds = %3775
  %3780 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %3780, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %3781

3781:                                             ; preds = %3805, %3779
  %3782 = load i64, ptr %55, align 8, !tbaa !9
  %3783 = load i64, ptr %43, align 8, !tbaa !9
  %3784 = icmp sle i64 %3782, %3783
  br i1 %3784, label %3785, label %3808

3785:                                             ; preds = %3781
  %3786 = load i64, ptr %55, align 8, !tbaa !9
  %3787 = load i64, ptr %61, align 8, !tbaa !9
  %3788 = shl i64 %3787, 1
  %3789 = add nsw i64 %3786, %3788
  %3790 = sub nsw i64 %3789, 3
  %3791 = getelementptr inbounds [4 x double], ptr %67, i64 0, i64 %3790
  %3792 = load double, ptr %3791, align 8, !tbaa !11
  %3793 = load ptr, ptr %32, align 8, !tbaa !5
  %3794 = load i64, ptr %61, align 8, !tbaa !9
  %3795 = add nsw i64 %3794, 1
  %3796 = load ptr, ptr %21, align 8, !tbaa !5
  %3797 = load i64, ptr %3796, align 8, !tbaa !9
  %3798 = mul nsw i64 %3795, %3797
  %3799 = load i64, ptr %54, align 8, !tbaa !9
  %3800 = add nsw i64 %3798, %3799
  %3801 = load i64, ptr %55, align 8, !tbaa !9
  %3802 = add nsw i64 %3800, %3801
  %3803 = sub nsw i64 %3802, 1
  %3804 = getelementptr inbounds double, ptr %3793, i64 %3803
  store double %3792, ptr %3804, align 8, !tbaa !11
  br label %3805

3805:                                             ; preds = %3785
  %3806 = load i64, ptr %55, align 8, !tbaa !9
  %3807 = add nsw i64 %3806, 1
  store i64 %3807, ptr %55, align 8, !tbaa !9
  br label %3781, !llvm.loop !43

3808:                                             ; preds = %3781
  br label %3809

3809:                                             ; preds = %3808
  %3810 = load i64, ptr %61, align 8, !tbaa !9
  %3811 = add nsw i64 %3810, 1
  store i64 %3811, ptr %61, align 8, !tbaa !9
  br label %3775, !llvm.loop !44

3812:                                             ; preds = %3775
  %3813 = load i64, ptr %54, align 8, !tbaa !9
  %3814 = icmp sgt i64 %3813, 1
  br i1 %3814, label %3815, label %4208

3815:                                             ; preds = %3812
  %3816 = load double, ptr %73, align 8, !tbaa !11
  %3817 = fcmp oge double 1.000000e+00, %3816
  br i1 %3817, label %3818, label %3819

3818:                                             ; preds = %3815
  br label %3821

3819:                                             ; preds = %3815
  %3820 = load double, ptr %73, align 8, !tbaa !11
  br label %3821

3821:                                             ; preds = %3819, %3818
  %3822 = phi double [ 1.000000e+00, %3818 ], [ %3820, %3819 ]
  %3823 = fdiv double 1.000000e+00, %3822
  store double %3823, ptr %111, align 8, !tbaa !11
  %3824 = load double, ptr %98, align 8, !tbaa !11
  %3825 = load ptr, ptr %32, align 8, !tbaa !5
  %3826 = load i64, ptr %54, align 8, !tbaa !9
  %3827 = getelementptr inbounds double, ptr %3825, i64 %3826
  %3828 = load double, ptr %3827, align 8, !tbaa !11
  %3829 = load double, ptr %99, align 8, !tbaa !11
  %3830 = load ptr, ptr %32, align 8, !tbaa !5
  %3831 = load ptr, ptr %21, align 8, !tbaa !5
  %3832 = load i64, ptr %3831, align 8, !tbaa !9
  %3833 = load i64, ptr %54, align 8, !tbaa !9
  %3834 = add nsw i64 %3832, %3833
  %3835 = getelementptr inbounds double, ptr %3830, i64 %3834
  %3836 = load double, ptr %3835, align 8, !tbaa !11
  %3837 = fmul double %3829, %3836
  %3838 = call double @llvm.fmuladd.f64(double %3824, double %3828, double %3837)
  store double %3838, ptr %72, align 8, !tbaa !11
  %3839 = load i64, ptr %87, align 8, !tbaa !9
  %3840 = icmp ne i64 %3839, 0
  br i1 %3840, label %3841, label %3869

3841:                                             ; preds = %3821
  %3842 = load double, ptr %72, align 8, !tbaa !11
  store double %3842, ptr %47, align 8, !tbaa !11
  %3843 = load double, ptr %98, align 8, !tbaa !11
  %3844 = load ptr, ptr %32, align 8, !tbaa !5
  %3845 = load i64, ptr %54, align 8, !tbaa !9
  %3846 = add nsw i64 %3845, 1
  %3847 = getelementptr inbounds double, ptr %3844, i64 %3846
  %3848 = load double, ptr %3847, align 8, !tbaa !11
  %3849 = load double, ptr %99, align 8, !tbaa !11
  %3850 = load ptr, ptr %32, align 8, !tbaa !5
  %3851 = load ptr, ptr %21, align 8, !tbaa !5
  %3852 = load i64, ptr %3851, align 8, !tbaa !9
  %3853 = load i64, ptr %54, align 8, !tbaa !9
  %3854 = add nsw i64 %3852, %3853
  %3855 = add nsw i64 %3854, 1
  %3856 = getelementptr inbounds double, ptr %3850, i64 %3855
  %3857 = load double, ptr %3856, align 8, !tbaa !11
  %3858 = fmul double %3849, %3857
  %3859 = call double @llvm.fmuladd.f64(double %3843, double %3848, double %3858)
  store double %3859, ptr %48, align 8, !tbaa !11
  %3860 = load double, ptr %47, align 8, !tbaa !11
  %3861 = load double, ptr %48, align 8, !tbaa !11
  %3862 = fcmp oge double %3860, %3861
  br i1 %3862, label %3863, label %3865

3863:                                             ; preds = %3841
  %3864 = load double, ptr %47, align 8, !tbaa !11
  br label %3867

3865:                                             ; preds = %3841
  %3866 = load double, ptr %48, align 8, !tbaa !11
  br label %3867

3867:                                             ; preds = %3865, %3863
  %3868 = phi double [ %3864, %3863 ], [ %3866, %3865 ]
  store double %3868, ptr %72, align 8, !tbaa !11
  br label %3869

3869:                                             ; preds = %3867, %3821
  %3870 = load double, ptr %72, align 8, !tbaa !11
  %3871 = load double, ptr %98, align 8, !tbaa !11
  %3872 = fcmp oge double %3870, %3871
  br i1 %3872, label %3873, label %3875

3873:                                             ; preds = %3869
  %3874 = load double, ptr %72, align 8, !tbaa !11
  br label %3877

3875:                                             ; preds = %3869
  %3876 = load double, ptr %98, align 8, !tbaa !11
  br label %3877

3877:                                             ; preds = %3875, %3873
  %3878 = phi double [ %3874, %3873 ], [ %3876, %3875 ]
  store double %3878, ptr %47, align 8, !tbaa !11
  %3879 = load double, ptr %47, align 8, !tbaa !11
  %3880 = load double, ptr %99, align 8, !tbaa !11
  %3881 = fcmp oge double %3879, %3880
  br i1 %3881, label %3882, label %3884

3882:                                             ; preds = %3877
  %3883 = load double, ptr %47, align 8, !tbaa !11
  br label %3886

3884:                                             ; preds = %3877
  %3885 = load double, ptr %99, align 8, !tbaa !11
  br label %3886

3886:                                             ; preds = %3884, %3882
  %3887 = phi double [ %3883, %3882 ], [ %3885, %3884 ]
  store double %3887, ptr %72, align 8, !tbaa !11
  %3888 = load double, ptr %72, align 8, !tbaa !11
  %3889 = load double, ptr %112, align 8, !tbaa !11
  %3890 = load double, ptr %111, align 8, !tbaa !11
  %3891 = fmul double %3889, %3890
  %3892 = fcmp ogt double %3888, %3891
  br i1 %3892, label %3893, label %3939

3893:                                             ; preds = %3886
  %3894 = load i64, ptr %62, align 8, !tbaa !9
  %3895 = sub nsw i64 %3894, 1
  store i64 %3895, ptr %42, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %3896

3896:                                             ; preds = %3932, %3893
  %3897 = load i64, ptr %61, align 8, !tbaa !9
  %3898 = load i64, ptr %42, align 8, !tbaa !9
  %3899 = icmp sle i64 %3897, %3898
  br i1 %3899, label %3900, label %3935

3900:                                             ; preds = %3896
  %3901 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %3901, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %3902

3902:                                             ; preds = %3928, %3900
  %3903 = load i64, ptr %60, align 8, !tbaa !9
  %3904 = load i64, ptr %43, align 8, !tbaa !9
  %3905 = icmp sle i64 %3903, %3904
  br i1 %3905, label %3906, label %3931

3906:                                             ; preds = %3902
  %3907 = load double, ptr %111, align 8, !tbaa !11
  %3908 = load ptr, ptr %32, align 8, !tbaa !5
  %3909 = load i64, ptr %61, align 8, !tbaa !9
  %3910 = add nsw i64 %3909, 2
  %3911 = load ptr, ptr %21, align 8, !tbaa !5
  %3912 = load i64, ptr %3911, align 8, !tbaa !9
  %3913 = mul nsw i64 %3910, %3912
  %3914 = load i64, ptr %60, align 8, !tbaa !9
  %3915 = add nsw i64 %3913, %3914
  %3916 = getelementptr inbounds double, ptr %3908, i64 %3915
  %3917 = load double, ptr %3916, align 8, !tbaa !11
  %3918 = fmul double %3907, %3917
  %3919 = load ptr, ptr %32, align 8, !tbaa !5
  %3920 = load i64, ptr %61, align 8, !tbaa !9
  %3921 = add nsw i64 %3920, 2
  %3922 = load ptr, ptr %21, align 8, !tbaa !5
  %3923 = load i64, ptr %3922, align 8, !tbaa !9
  %3924 = mul nsw i64 %3921, %3923
  %3925 = load i64, ptr %60, align 8, !tbaa !9
  %3926 = add nsw i64 %3924, %3925
  %3927 = getelementptr inbounds double, ptr %3919, i64 %3926
  store double %3918, ptr %3927, align 8, !tbaa !11
  br label %3928

3928:                                             ; preds = %3906
  %3929 = load i64, ptr %60, align 8, !tbaa !9
  %3930 = add nsw i64 %3929, 1
  store i64 %3930, ptr %60, align 8, !tbaa !9
  br label %3902, !llvm.loop !45

3931:                                             ; preds = %3902
  br label %3932

3932:                                             ; preds = %3931
  %3933 = load i64, ptr %61, align 8, !tbaa !9
  %3934 = add nsw i64 %3933, 1
  store i64 %3934, ptr %61, align 8, !tbaa !9
  br label %3896, !llvm.loop !46

3935:                                             ; preds = %3896
  %3936 = load double, ptr %111, align 8, !tbaa !11
  %3937 = load double, ptr %73, align 8, !tbaa !11
  %3938 = fmul double %3937, %3936
  store double %3938, ptr %73, align 8, !tbaa !11
  br label %3939

3939:                                             ; preds = %3935, %3886
  %3940 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %3940, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %3941

3941:                                             ; preds = %4204, %3939
  %3942 = load i64, ptr %55, align 8, !tbaa !9
  %3943 = load i64, ptr %42, align 8, !tbaa !9
  %3944 = icmp sle i64 %3942, %3943
  br i1 %3944, label %3945, label %4207

3945:                                             ; preds = %3941
  %3946 = load i64, ptr %114, align 8, !tbaa !9
  %3947 = icmp ne i64 %3946, 0
  br i1 %3947, label %3948, label %4123

3948:                                             ; preds = %3945
  %3949 = load double, ptr %82, align 8, !tbaa !11
  %3950 = load ptr, ptr %32, align 8, !tbaa !5
  %3951 = load ptr, ptr %21, align 8, !tbaa !5
  %3952 = load i64, ptr %3951, align 8, !tbaa !9
  %3953 = shl i64 %3952, 1
  %3954 = load i64, ptr %54, align 8, !tbaa !9
  %3955 = add nsw i64 %3953, %3954
  %3956 = load i64, ptr %55, align 8, !tbaa !9
  %3957 = add nsw i64 %3955, %3956
  %3958 = sub nsw i64 %3957, 1
  %3959 = getelementptr inbounds double, ptr %3950, i64 %3958
  %3960 = load double, ptr %3959, align 8, !tbaa !11
  %3961 = fmul double %3949, %3960
  store double %3961, ptr %106, align 8, !tbaa !11
  %3962 = load double, ptr %82, align 8, !tbaa !11
  %3963 = load ptr, ptr %32, align 8, !tbaa !5
  %3964 = load ptr, ptr %21, align 8, !tbaa !5
  %3965 = load i64, ptr %3964, align 8, !tbaa !9
  %3966 = mul nsw i64 %3965, 3
  %3967 = load i64, ptr %54, align 8, !tbaa !9
  %3968 = add nsw i64 %3966, %3967
  %3969 = load i64, ptr %55, align 8, !tbaa !9
  %3970 = add nsw i64 %3968, %3969
  %3971 = sub nsw i64 %3970, 1
  %3972 = getelementptr inbounds double, ptr %3963, i64 %3971
  %3973 = load double, ptr %3972, align 8, !tbaa !11
  %3974 = fmul double %3962, %3973
  store double %3974, ptr %100, align 8, !tbaa !11
  %3975 = load double, ptr %108, align 8, !tbaa !11
  %3976 = load ptr, ptr %32, align 8, !tbaa !5
  %3977 = load ptr, ptr %21, align 8, !tbaa !5
  %3978 = load i64, ptr %3977, align 8, !tbaa !9
  %3979 = shl i64 %3978, 1
  %3980 = load i64, ptr %54, align 8, !tbaa !9
  %3981 = add nsw i64 %3979, %3980
  %3982 = load i64, ptr %55, align 8, !tbaa !9
  %3983 = add nsw i64 %3981, %3982
  %3984 = sub nsw i64 %3983, 1
  %3985 = getelementptr inbounds double, ptr %3976, i64 %3984
  %3986 = load double, ptr %3985, align 8, !tbaa !11
  %3987 = load double, ptr %103, align 8, !tbaa !11
  %3988 = load ptr, ptr %32, align 8, !tbaa !5
  %3989 = load ptr, ptr %21, align 8, !tbaa !5
  %3990 = load i64, ptr %3989, align 8, !tbaa !9
  %3991 = mul nsw i64 %3990, 3
  %3992 = load i64, ptr %54, align 8, !tbaa !9
  %3993 = add nsw i64 %3991, %3992
  %3994 = load i64, ptr %55, align 8, !tbaa !9
  %3995 = add nsw i64 %3993, %3994
  %3996 = sub nsw i64 %3995, 1
  %3997 = getelementptr inbounds double, ptr %3988, i64 %3996
  %3998 = load double, ptr %3997, align 8, !tbaa !11
  %3999 = fmul double %3987, %3998
  %4000 = fneg double %3999
  %4001 = call double @llvm.fmuladd.f64(double %3975, double %3986, double %4000)
  store double %4001, ptr %107, align 8, !tbaa !11
  %4002 = load double, ptr %103, align 8, !tbaa !11
  %4003 = load ptr, ptr %32, align 8, !tbaa !5
  %4004 = load ptr, ptr %21, align 8, !tbaa !5
  %4005 = load i64, ptr %4004, align 8, !tbaa !9
  %4006 = shl i64 %4005, 1
  %4007 = load i64, ptr %54, align 8, !tbaa !9
  %4008 = add nsw i64 %4006, %4007
  %4009 = load i64, ptr %55, align 8, !tbaa !9
  %4010 = add nsw i64 %4008, %4009
  %4011 = sub nsw i64 %4010, 1
  %4012 = getelementptr inbounds double, ptr %4003, i64 %4011
  %4013 = load double, ptr %4012, align 8, !tbaa !11
  %4014 = load double, ptr %108, align 8, !tbaa !11
  %4015 = load ptr, ptr %32, align 8, !tbaa !5
  %4016 = load ptr, ptr %21, align 8, !tbaa !5
  %4017 = load i64, ptr %4016, align 8, !tbaa !9
  %4018 = mul nsw i64 %4017, 3
  %4019 = load i64, ptr %54, align 8, !tbaa !9
  %4020 = add nsw i64 %4018, %4019
  %4021 = load i64, ptr %55, align 8, !tbaa !9
  %4022 = add nsw i64 %4020, %4021
  %4023 = sub nsw i64 %4022, 1
  %4024 = getelementptr inbounds double, ptr %4015, i64 %4023
  %4025 = load double, ptr %4024, align 8, !tbaa !11
  %4026 = fmul double %4014, %4025
  %4027 = call double @llvm.fmuladd.f64(double %4002, double %4013, double %4026)
  store double %4027, ptr %101, align 8, !tbaa !11
  %4028 = load i64, ptr %54, align 8, !tbaa !9
  %4029 = sub nsw i64 %4028, 1
  store i64 %4029, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %4030

4030:                                             ; preds = %4119, %3948
  %4031 = load i64, ptr %60, align 8, !tbaa !9
  %4032 = load i64, ptr %43, align 8, !tbaa !9
  %4033 = icmp sle i64 %4031, %4032
  br i1 %4033, label %4034, label %4122

4034:                                             ; preds = %4030
  %4035 = load ptr, ptr %32, align 8, !tbaa !5
  %4036 = load ptr, ptr %21, align 8, !tbaa !5
  %4037 = load i64, ptr %4036, align 8, !tbaa !9
  %4038 = shl i64 %4037, 1
  %4039 = load i64, ptr %60, align 8, !tbaa !9
  %4040 = add nsw i64 %4038, %4039
  %4041 = getelementptr inbounds double, ptr %4035, i64 %4040
  %4042 = load double, ptr %4041, align 8, !tbaa !11
  %4043 = load double, ptr %106, align 8, !tbaa !11
  %4044 = load ptr, ptr %22, align 8, !tbaa !5
  %4045 = load i64, ptr %60, align 8, !tbaa !9
  %4046 = load i64, ptr %54, align 8, !tbaa !9
  %4047 = load i64, ptr %55, align 8, !tbaa !9
  %4048 = add nsw i64 %4046, %4047
  %4049 = sub nsw i64 %4048, 1
  %4050 = load i64, ptr %36, align 8, !tbaa !9
  %4051 = mul nsw i64 %4049, %4050
  %4052 = add nsw i64 %4045, %4051
  %4053 = getelementptr inbounds double, ptr %4044, i64 %4052
  %4054 = load double, ptr %4053, align 8, !tbaa !11
  %4055 = fneg double %4043
  %4056 = call double @llvm.fmuladd.f64(double %4055, double %4054, double %4042)
  %4057 = load double, ptr %107, align 8, !tbaa !11
  %4058 = load ptr, ptr %24, align 8, !tbaa !5
  %4059 = load i64, ptr %60, align 8, !tbaa !9
  %4060 = load i64, ptr %54, align 8, !tbaa !9
  %4061 = load i64, ptr %55, align 8, !tbaa !9
  %4062 = add nsw i64 %4060, %4061
  %4063 = sub nsw i64 %4062, 1
  %4064 = load i64, ptr %34, align 8, !tbaa !9
  %4065 = mul nsw i64 %4063, %4064
  %4066 = add nsw i64 %4059, %4065
  %4067 = getelementptr inbounds double, ptr %4058, i64 %4066
  %4068 = load double, ptr %4067, align 8, !tbaa !11
  %4069 = call double @llvm.fmuladd.f64(double %4057, double %4068, double %4056)
  %4070 = load ptr, ptr %32, align 8, !tbaa !5
  %4071 = load ptr, ptr %21, align 8, !tbaa !5
  %4072 = load i64, ptr %4071, align 8, !tbaa !9
  %4073 = shl i64 %4072, 1
  %4074 = load i64, ptr %60, align 8, !tbaa !9
  %4075 = add nsw i64 %4073, %4074
  %4076 = getelementptr inbounds double, ptr %4070, i64 %4075
  store double %4069, ptr %4076, align 8, !tbaa !11
  %4077 = load ptr, ptr %32, align 8, !tbaa !5
  %4078 = load ptr, ptr %21, align 8, !tbaa !5
  %4079 = load i64, ptr %4078, align 8, !tbaa !9
  %4080 = mul nsw i64 %4079, 3
  %4081 = load i64, ptr %60, align 8, !tbaa !9
  %4082 = add nsw i64 %4080, %4081
  %4083 = getelementptr inbounds double, ptr %4077, i64 %4082
  %4084 = load double, ptr %4083, align 8, !tbaa !11
  %4085 = load double, ptr %100, align 8, !tbaa !11
  %4086 = load ptr, ptr %22, align 8, !tbaa !5
  %4087 = load i64, ptr %60, align 8, !tbaa !9
  %4088 = load i64, ptr %54, align 8, !tbaa !9
  %4089 = load i64, ptr %55, align 8, !tbaa !9
  %4090 = add nsw i64 %4088, %4089
  %4091 = sub nsw i64 %4090, 1
  %4092 = load i64, ptr %36, align 8, !tbaa !9
  %4093 = mul nsw i64 %4091, %4092
  %4094 = add nsw i64 %4087, %4093
  %4095 = getelementptr inbounds double, ptr %4086, i64 %4094
  %4096 = load double, ptr %4095, align 8, !tbaa !11
  %4097 = fneg double %4085
  %4098 = call double @llvm.fmuladd.f64(double %4097, double %4096, double %4084)
  %4099 = load double, ptr %101, align 8, !tbaa !11
  %4100 = load ptr, ptr %24, align 8, !tbaa !5
  %4101 = load i64, ptr %60, align 8, !tbaa !9
  %4102 = load i64, ptr %54, align 8, !tbaa !9
  %4103 = load i64, ptr %55, align 8, !tbaa !9
  %4104 = add nsw i64 %4102, %4103
  %4105 = sub nsw i64 %4104, 1
  %4106 = load i64, ptr %34, align 8, !tbaa !9
  %4107 = mul nsw i64 %4105, %4106
  %4108 = add nsw i64 %4101, %4107
  %4109 = getelementptr inbounds double, ptr %4100, i64 %4108
  %4110 = load double, ptr %4109, align 8, !tbaa !11
  %4111 = call double @llvm.fmuladd.f64(double %4099, double %4110, double %4098)
  %4112 = load ptr, ptr %32, align 8, !tbaa !5
  %4113 = load ptr, ptr %21, align 8, !tbaa !5
  %4114 = load i64, ptr %4113, align 8, !tbaa !9
  %4115 = mul nsw i64 %4114, 3
  %4116 = load i64, ptr %60, align 8, !tbaa !9
  %4117 = add nsw i64 %4115, %4116
  %4118 = getelementptr inbounds double, ptr %4112, i64 %4117
  store double %4111, ptr %4118, align 8, !tbaa !11
  br label %4119

4119:                                             ; preds = %4034
  %4120 = load i64, ptr %60, align 8, !tbaa !9
  %4121 = add nsw i64 %4120, 1
  store i64 %4121, ptr %60, align 8, !tbaa !9
  br label %4030, !llvm.loop !47

4122:                                             ; preds = %4030
  br label %4203

4123:                                             ; preds = %3945
  %4124 = load double, ptr %82, align 8, !tbaa !11
  %4125 = load ptr, ptr %32, align 8, !tbaa !5
  %4126 = load ptr, ptr %21, align 8, !tbaa !5
  %4127 = load i64, ptr %4126, align 8, !tbaa !9
  %4128 = shl i64 %4127, 1
  %4129 = load i64, ptr %54, align 8, !tbaa !9
  %4130 = add nsw i64 %4128, %4129
  %4131 = load i64, ptr %55, align 8, !tbaa !9
  %4132 = add nsw i64 %4130, %4131
  %4133 = sub nsw i64 %4132, 1
  %4134 = getelementptr inbounds double, ptr %4125, i64 %4133
  %4135 = load double, ptr %4134, align 8, !tbaa !11
  %4136 = fmul double %4124, %4135
  store double %4136, ptr %106, align 8, !tbaa !11
  %4137 = load double, ptr %108, align 8, !tbaa !11
  %4138 = load ptr, ptr %32, align 8, !tbaa !5
  %4139 = load ptr, ptr %21, align 8, !tbaa !5
  %4140 = load i64, ptr %4139, align 8, !tbaa !9
  %4141 = shl i64 %4140, 1
  %4142 = load i64, ptr %54, align 8, !tbaa !9
  %4143 = add nsw i64 %4141, %4142
  %4144 = load i64, ptr %55, align 8, !tbaa !9
  %4145 = add nsw i64 %4143, %4144
  %4146 = sub nsw i64 %4145, 1
  %4147 = getelementptr inbounds double, ptr %4138, i64 %4146
  %4148 = load double, ptr %4147, align 8, !tbaa !11
  %4149 = fmul double %4137, %4148
  store double %4149, ptr %107, align 8, !tbaa !11
  %4150 = load i64, ptr %54, align 8, !tbaa !9
  %4151 = sub nsw i64 %4150, 1
  store i64 %4151, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %4152

4152:                                             ; preds = %4199, %4123
  %4153 = load i64, ptr %60, align 8, !tbaa !9
  %4154 = load i64, ptr %43, align 8, !tbaa !9
  %4155 = icmp sle i64 %4153, %4154
  br i1 %4155, label %4156, label %4202

4156:                                             ; preds = %4152
  %4157 = load ptr, ptr %32, align 8, !tbaa !5
  %4158 = load ptr, ptr %21, align 8, !tbaa !5
  %4159 = load i64, ptr %4158, align 8, !tbaa !9
  %4160 = shl i64 %4159, 1
  %4161 = load i64, ptr %60, align 8, !tbaa !9
  %4162 = add nsw i64 %4160, %4161
  %4163 = getelementptr inbounds double, ptr %4157, i64 %4162
  %4164 = load double, ptr %4163, align 8, !tbaa !11
  %4165 = load double, ptr %106, align 8, !tbaa !11
  %4166 = load ptr, ptr %22, align 8, !tbaa !5
  %4167 = load i64, ptr %60, align 8, !tbaa !9
  %4168 = load i64, ptr %54, align 8, !tbaa !9
  %4169 = load i64, ptr %55, align 8, !tbaa !9
  %4170 = add nsw i64 %4168, %4169
  %4171 = sub nsw i64 %4170, 1
  %4172 = load i64, ptr %36, align 8, !tbaa !9
  %4173 = mul nsw i64 %4171, %4172
  %4174 = add nsw i64 %4167, %4173
  %4175 = getelementptr inbounds double, ptr %4166, i64 %4174
  %4176 = load double, ptr %4175, align 8, !tbaa !11
  %4177 = fneg double %4165
  %4178 = call double @llvm.fmuladd.f64(double %4177, double %4176, double %4164)
  %4179 = load double, ptr %107, align 8, !tbaa !11
  %4180 = load ptr, ptr %24, align 8, !tbaa !5
  %4181 = load i64, ptr %60, align 8, !tbaa !9
  %4182 = load i64, ptr %54, align 8, !tbaa !9
  %4183 = load i64, ptr %55, align 8, !tbaa !9
  %4184 = add nsw i64 %4182, %4183
  %4185 = sub nsw i64 %4184, 1
  %4186 = load i64, ptr %34, align 8, !tbaa !9
  %4187 = mul nsw i64 %4185, %4186
  %4188 = add nsw i64 %4181, %4187
  %4189 = getelementptr inbounds double, ptr %4180, i64 %4188
  %4190 = load double, ptr %4189, align 8, !tbaa !11
  %4191 = call double @llvm.fmuladd.f64(double %4179, double %4190, double %4178)
  %4192 = load ptr, ptr %32, align 8, !tbaa !5
  %4193 = load ptr, ptr %21, align 8, !tbaa !5
  %4194 = load i64, ptr %4193, align 8, !tbaa !9
  %4195 = shl i64 %4194, 1
  %4196 = load i64, ptr %60, align 8, !tbaa !9
  %4197 = add nsw i64 %4195, %4196
  %4198 = getelementptr inbounds double, ptr %4192, i64 %4197
  store double %4191, ptr %4198, align 8, !tbaa !11
  br label %4199

4199:                                             ; preds = %4156
  %4200 = load i64, ptr %60, align 8, !tbaa !9
  %4201 = add nsw i64 %4200, 1
  store i64 %4201, ptr %60, align 8, !tbaa !9
  br label %4152, !llvm.loop !48

4202:                                             ; preds = %4152
  br label %4203

4203:                                             ; preds = %4202, %4122
  br label %4204

4204:                                             ; preds = %4203
  %4205 = load i64, ptr %55, align 8, !tbaa !9
  %4206 = add nsw i64 %4205, 1
  store i64 %4206, ptr %55, align 8, !tbaa !9
  br label %3941, !llvm.loop !49

4207:                                             ; preds = %3941
  br label %4208

4208:                                             ; preds = %4207, %3812
  store i64 0, ptr %87, align 8, !tbaa !9
  br label %4209

4209:                                             ; preds = %4208, %3668
  br label %4210

4210:                                             ; preds = %4209
  %4211 = load i64, ptr %54, align 8, !tbaa !9
  %4212 = add nsw i64 %4211, -1
  store i64 %4212, ptr %54, align 8, !tbaa !9
  br label %3648, !llvm.loop !50

4213:                                             ; preds = %3648
  %4214 = load i64, ptr %62, align 8, !tbaa !9
  %4215 = load i64, ptr %69, align 8, !tbaa !9
  %4216 = sub nsw i64 %4215, %4214
  store i64 %4216, ptr %69, align 8, !tbaa !9
  %4217 = load i64, ptr %102, align 8, !tbaa !9
  %4218 = icmp ne i64 %4217, 0
  br i1 %4218, label %4219, label %4360

4219:                                             ; preds = %4213
  %4220 = load i64, ptr %62, align 8, !tbaa !9
  %4221 = sub nsw i64 %4220, 1
  store i64 %4221, ptr %42, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %4222

4222:                                             ; preds = %4313, %4219
  %4223 = load i64, ptr %61, align 8, !tbaa !9
  %4224 = load i64, ptr %42, align 8, !tbaa !9
  %4225 = icmp sle i64 %4223, %4224
  br i1 %4225, label %4226, label %4316

4226:                                             ; preds = %4222
  %4227 = load ptr, ptr %21, align 8, !tbaa !5
  %4228 = load i64, ptr %4227, align 8, !tbaa !9
  store i64 %4228, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %4229

4229:                                             ; preds = %4259, %4226
  %4230 = load i64, ptr %60, align 8, !tbaa !9
  %4231 = load i64, ptr %43, align 8, !tbaa !9
  %4232 = icmp sle i64 %4230, %4231
  br i1 %4232, label %4233, label %4262

4233:                                             ; preds = %4229
  %4234 = load ptr, ptr %32, align 8, !tbaa !5
  %4235 = load i64, ptr %61, align 8, !tbaa !9
  %4236 = add nsw i64 %4235, 2
  %4237 = load ptr, ptr %21, align 8, !tbaa !5
  %4238 = load i64, ptr %4237, align 8, !tbaa !9
  %4239 = mul nsw i64 %4236, %4238
  %4240 = add nsw i64 %4239, 1
  %4241 = getelementptr inbounds double, ptr %4234, i64 %4240
  %4242 = load double, ptr %4241, align 8, !tbaa !11
  %4243 = load ptr, ptr %28, align 8, !tbaa !5
  %4244 = load i64, ptr %60, align 8, !tbaa !9
  %4245 = load i64, ptr %40, align 8, !tbaa !9
  %4246 = add nsw i64 %4244, %4245
  %4247 = getelementptr inbounds double, ptr %4243, i64 %4246
  %4248 = load double, ptr %4247, align 8, !tbaa !11
  %4249 = fmul double %4242, %4248
  %4250 = load ptr, ptr %32, align 8, !tbaa !5
  %4251 = load i64, ptr %61, align 8, !tbaa !9
  %4252 = add nsw i64 %4251, 4
  %4253 = load ptr, ptr %21, align 8, !tbaa !5
  %4254 = load i64, ptr %4253, align 8, !tbaa !9
  %4255 = mul nsw i64 %4252, %4254
  %4256 = load i64, ptr %60, align 8, !tbaa !9
  %4257 = add nsw i64 %4255, %4256
  %4258 = getelementptr inbounds double, ptr %4250, i64 %4257
  store double %4249, ptr %4258, align 8, !tbaa !11
  br label %4259

4259:                                             ; preds = %4233
  %4260 = load i64, ptr %60, align 8, !tbaa !9
  %4261 = add nsw i64 %4260, 1
  store i64 %4261, ptr %60, align 8, !tbaa !9
  br label %4229, !llvm.loop !51

4262:                                             ; preds = %4229
  %4263 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %4263, ptr %43, align 8, !tbaa !9
  store i64 2, ptr %56, align 8, !tbaa !9
  br label %4264

4264:                                             ; preds = %4309, %4262
  %4265 = load i64, ptr %56, align 8, !tbaa !9
  %4266 = load i64, ptr %43, align 8, !tbaa !9
  %4267 = icmp sle i64 %4265, %4266
  br i1 %4267, label %4268, label %4312

4268:                                             ; preds = %4264
  %4269 = load ptr, ptr %21, align 8, !tbaa !5
  %4270 = load i64, ptr %4269, align 8, !tbaa !9
  store i64 %4270, ptr %44, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %4271

4271:                                             ; preds = %4305, %4268
  %4272 = load i64, ptr %60, align 8, !tbaa !9
  %4273 = load i64, ptr %44, align 8, !tbaa !9
  %4274 = icmp sle i64 %4272, %4273
  br i1 %4274, label %4275, label %4308

4275:                                             ; preds = %4271
  %4276 = load ptr, ptr %32, align 8, !tbaa !5
  %4277 = load i64, ptr %61, align 8, !tbaa !9
  %4278 = add nsw i64 %4277, 2
  %4279 = load ptr, ptr %21, align 8, !tbaa !5
  %4280 = load i64, ptr %4279, align 8, !tbaa !9
  %4281 = mul nsw i64 %4278, %4280
  %4282 = load i64, ptr %56, align 8, !tbaa !9
  %4283 = add nsw i64 %4281, %4282
  %4284 = getelementptr inbounds double, ptr %4276, i64 %4283
  %4285 = load double, ptr %4284, align 8, !tbaa !11
  %4286 = load ptr, ptr %28, align 8, !tbaa !5
  %4287 = load i64, ptr %60, align 8, !tbaa !9
  %4288 = load i64, ptr %56, align 8, !tbaa !9
  %4289 = load i64, ptr %40, align 8, !tbaa !9
  %4290 = mul nsw i64 %4288, %4289
  %4291 = add nsw i64 %4287, %4290
  %4292 = getelementptr inbounds double, ptr %4286, i64 %4291
  %4293 = load double, ptr %4292, align 8, !tbaa !11
  %4294 = load ptr, ptr %32, align 8, !tbaa !5
  %4295 = load i64, ptr %61, align 8, !tbaa !9
  %4296 = add nsw i64 %4295, 4
  %4297 = load ptr, ptr %21, align 8, !tbaa !5
  %4298 = load i64, ptr %4297, align 8, !tbaa !9
  %4299 = mul nsw i64 %4296, %4298
  %4300 = load i64, ptr %60, align 8, !tbaa !9
  %4301 = add nsw i64 %4299, %4300
  %4302 = getelementptr inbounds double, ptr %4294, i64 %4301
  %4303 = load double, ptr %4302, align 8, !tbaa !11
  %4304 = call double @llvm.fmuladd.f64(double %4285, double %4293, double %4303)
  store double %4304, ptr %4302, align 8, !tbaa !11
  br label %4305

4305:                                             ; preds = %4275
  %4306 = load i64, ptr %60, align 8, !tbaa !9
  %4307 = add nsw i64 %4306, 1
  store i64 %4307, ptr %60, align 8, !tbaa !9
  br label %4271, !llvm.loop !52

4308:                                             ; preds = %4271
  br label %4309

4309:                                             ; preds = %4308
  %4310 = load i64, ptr %56, align 8, !tbaa !9
  %4311 = add nsw i64 %4310, 1
  store i64 %4311, ptr %56, align 8, !tbaa !9
  br label %4264, !llvm.loop !53

4312:                                             ; preds = %4264
  br label %4313

4313:                                             ; preds = %4312
  %4314 = load i64, ptr %61, align 8, !tbaa !9
  %4315 = add nsw i64 %4314, 1
  store i64 %4315, ptr %61, align 8, !tbaa !9
  br label %4222, !llvm.loop !54

4316:                                             ; preds = %4222
  %4317 = load i64, ptr %62, align 8, !tbaa !9
  %4318 = sub nsw i64 %4317, 1
  store i64 %4318, ptr %42, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %4319

4319:                                             ; preds = %4354, %4316
  %4320 = load i64, ptr %61, align 8, !tbaa !9
  %4321 = load i64, ptr %42, align 8, !tbaa !9
  %4322 = icmp sle i64 %4320, %4321
  br i1 %4322, label %4323, label %4357

4323:                                             ; preds = %4319
  %4324 = load ptr, ptr %21, align 8, !tbaa !5
  %4325 = load i64, ptr %4324, align 8, !tbaa !9
  store i64 %4325, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %4326

4326:                                             ; preds = %4350, %4323
  %4327 = load i64, ptr %60, align 8, !tbaa !9
  %4328 = load i64, ptr %43, align 8, !tbaa !9
  %4329 = icmp sle i64 %4327, %4328
  br i1 %4329, label %4330, label %4353

4330:                                             ; preds = %4326
  %4331 = load ptr, ptr %32, align 8, !tbaa !5
  %4332 = load i64, ptr %61, align 8, !tbaa !9
  %4333 = add nsw i64 %4332, 4
  %4334 = load ptr, ptr %21, align 8, !tbaa !5
  %4335 = load i64, ptr %4334, align 8, !tbaa !9
  %4336 = mul nsw i64 %4333, %4335
  %4337 = load i64, ptr %60, align 8, !tbaa !9
  %4338 = add nsw i64 %4336, %4337
  %4339 = getelementptr inbounds double, ptr %4331, i64 %4338
  %4340 = load double, ptr %4339, align 8, !tbaa !11
  %4341 = load ptr, ptr %28, align 8, !tbaa !5
  %4342 = load i64, ptr %60, align 8, !tbaa !9
  %4343 = load i64, ptr %69, align 8, !tbaa !9
  %4344 = load i64, ptr %61, align 8, !tbaa !9
  %4345 = add nsw i64 %4343, %4344
  %4346 = load i64, ptr %40, align 8, !tbaa !9
  %4347 = mul nsw i64 %4345, %4346
  %4348 = add nsw i64 %4342, %4347
  %4349 = getelementptr inbounds double, ptr %4341, i64 %4348
  store double %4340, ptr %4349, align 8, !tbaa !11
  br label %4350

4350:                                             ; preds = %4330
  %4351 = load i64, ptr %60, align 8, !tbaa !9
  %4352 = add nsw i64 %4351, 1
  store i64 %4352, ptr %60, align 8, !tbaa !9
  br label %4326, !llvm.loop !55

4353:                                             ; preds = %4326
  br label %4354

4354:                                             ; preds = %4353
  %4355 = load i64, ptr %61, align 8, !tbaa !9
  %4356 = add nsw i64 %4355, 1
  store i64 %4356, ptr %61, align 8, !tbaa !9
  br label %4319, !llvm.loop !56

4357:                                             ; preds = %4319
  %4358 = load ptr, ptr %21, align 8, !tbaa !5
  %4359 = load i64, ptr %4358, align 8, !tbaa !9
  store i64 %4359, ptr %70, align 8, !tbaa !9
  br label %4403

4360:                                             ; preds = %4213
  %4361 = load i64, ptr %62, align 8, !tbaa !9
  %4362 = sub nsw i64 %4361, 1
  store i64 %4362, ptr %42, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %4363

4363:                                             ; preds = %4398, %4360
  %4364 = load i64, ptr %61, align 8, !tbaa !9
  %4365 = load i64, ptr %42, align 8, !tbaa !9
  %4366 = icmp sle i64 %4364, %4365
  br i1 %4366, label %4367, label %4401

4367:                                             ; preds = %4363
  %4368 = load ptr, ptr %21, align 8, !tbaa !5
  %4369 = load i64, ptr %4368, align 8, !tbaa !9
  store i64 %4369, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %4370

4370:                                             ; preds = %4394, %4367
  %4371 = load i64, ptr %60, align 8, !tbaa !9
  %4372 = load i64, ptr %43, align 8, !tbaa !9
  %4373 = icmp sle i64 %4371, %4372
  br i1 %4373, label %4374, label %4397

4374:                                             ; preds = %4370
  %4375 = load ptr, ptr %32, align 8, !tbaa !5
  %4376 = load i64, ptr %61, align 8, !tbaa !9
  %4377 = add nsw i64 %4376, 2
  %4378 = load ptr, ptr %21, align 8, !tbaa !5
  %4379 = load i64, ptr %4378, align 8, !tbaa !9
  %4380 = mul nsw i64 %4377, %4379
  %4381 = load i64, ptr %60, align 8, !tbaa !9
  %4382 = add nsw i64 %4380, %4381
  %4383 = getelementptr inbounds double, ptr %4375, i64 %4382
  %4384 = load double, ptr %4383, align 8, !tbaa !11
  %4385 = load ptr, ptr %28, align 8, !tbaa !5
  %4386 = load i64, ptr %60, align 8, !tbaa !9
  %4387 = load i64, ptr %69, align 8, !tbaa !9
  %4388 = load i64, ptr %61, align 8, !tbaa !9
  %4389 = add nsw i64 %4387, %4388
  %4390 = load i64, ptr %40, align 8, !tbaa !9
  %4391 = mul nsw i64 %4389, %4390
  %4392 = add nsw i64 %4386, %4391
  %4393 = getelementptr inbounds double, ptr %4385, i64 %4392
  store double %4384, ptr %4393, align 8, !tbaa !11
  br label %4394

4394:                                             ; preds = %4374
  %4395 = load i64, ptr %60, align 8, !tbaa !9
  %4396 = add nsw i64 %4395, 1
  store i64 %4396, ptr %60, align 8, !tbaa !9
  br label %4370, !llvm.loop !57

4397:                                             ; preds = %4370
  br label %4398

4398:                                             ; preds = %4397
  %4399 = load i64, ptr %61, align 8, !tbaa !9
  %4400 = add nsw i64 %4399, 1
  store i64 %4400, ptr %61, align 8, !tbaa !9
  br label %4363, !llvm.loop !58

4401:                                             ; preds = %4363
  %4402 = load i64, ptr %57, align 8, !tbaa !9
  store i64 %4402, ptr %70, align 8, !tbaa !9
  br label %4403

4403:                                             ; preds = %4401, %4357
  store double 0.000000e+00, ptr %73, align 8, !tbaa !11
  %4404 = load i64, ptr %114, align 8, !tbaa !9
  %4405 = icmp ne i64 %4404, 0
  br i1 %4405, label %4406, label %4463

4406:                                             ; preds = %4403
  %4407 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %4407, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %4408

4408:                                             ; preds = %4459, %4406
  %4409 = load i64, ptr %54, align 8, !tbaa !9
  %4410 = load i64, ptr %42, align 8, !tbaa !9
  %4411 = icmp sle i64 %4409, %4410
  br i1 %4411, label %4412, label %4462

4412:                                             ; preds = %4408
  %4413 = load double, ptr %73, align 8, !tbaa !11
  store double %4413, ptr %49, align 8, !tbaa !11
  %4414 = load ptr, ptr %28, align 8, !tbaa !5
  %4415 = load i64, ptr %54, align 8, !tbaa !9
  %4416 = load i64, ptr %69, align 8, !tbaa !9
  %4417 = load i64, ptr %40, align 8, !tbaa !9
  %4418 = mul nsw i64 %4416, %4417
  %4419 = add nsw i64 %4415, %4418
  %4420 = getelementptr inbounds double, ptr %4414, i64 %4419
  %4421 = load double, ptr %4420, align 8, !tbaa !11
  store double %4421, ptr %47, align 8, !tbaa !11
  %4422 = load double, ptr %47, align 8, !tbaa !11
  %4423 = fcmp oge double %4422, 0.000000e+00
  br i1 %4423, label %4424, label %4426

4424:                                             ; preds = %4412
  %4425 = load double, ptr %47, align 8, !tbaa !11
  br label %4429

4426:                                             ; preds = %4412
  %4427 = load double, ptr %47, align 8, !tbaa !11
  %4428 = fneg double %4427
  br label %4429

4429:                                             ; preds = %4426, %4424
  %4430 = phi double [ %4425, %4424 ], [ %4428, %4426 ]
  %4431 = load ptr, ptr %28, align 8, !tbaa !5
  %4432 = load i64, ptr %54, align 8, !tbaa !9
  %4433 = load i64, ptr %69, align 8, !tbaa !9
  %4434 = add nsw i64 %4433, 1
  %4435 = load i64, ptr %40, align 8, !tbaa !9
  %4436 = mul nsw i64 %4434, %4435
  %4437 = add nsw i64 %4432, %4436
  %4438 = getelementptr inbounds double, ptr %4431, i64 %4437
  %4439 = load double, ptr %4438, align 8, !tbaa !11
  store double %4439, ptr %48, align 8, !tbaa !11
  %4440 = load double, ptr %48, align 8, !tbaa !11
  %4441 = fcmp oge double %4440, 0.000000e+00
  br i1 %4441, label %4442, label %4444

4442:                                             ; preds = %4429
  %4443 = load double, ptr %48, align 8, !tbaa !11
  br label %4447

4444:                                             ; preds = %4429
  %4445 = load double, ptr %48, align 8, !tbaa !11
  %4446 = fneg double %4445
  br label %4447

4447:                                             ; preds = %4444, %4442
  %4448 = phi double [ %4443, %4442 ], [ %4446, %4444 ]
  %4449 = fadd double %4430, %4448
  store double %4449, ptr %50, align 8, !tbaa !11
  %4450 = load double, ptr %49, align 8, !tbaa !11
  %4451 = load double, ptr %50, align 8, !tbaa !11
  %4452 = fcmp oge double %4450, %4451
  br i1 %4452, label %4453, label %4455

4453:                                             ; preds = %4447
  %4454 = load double, ptr %49, align 8, !tbaa !11
  br label %4457

4455:                                             ; preds = %4447
  %4456 = load double, ptr %50, align 8, !tbaa !11
  br label %4457

4457:                                             ; preds = %4455, %4453
  %4458 = phi double [ %4454, %4453 ], [ %4456, %4455 ]
  store double %4458, ptr %73, align 8, !tbaa !11
  br label %4459

4459:                                             ; preds = %4457
  %4460 = load i64, ptr %54, align 8, !tbaa !9
  %4461 = add nsw i64 %4460, 1
  store i64 %4461, ptr %54, align 8, !tbaa !9
  br label %4408, !llvm.loop !59

4462:                                             ; preds = %4408
  br label %4501

4463:                                             ; preds = %4403
  %4464 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %4464, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %4465

4465:                                             ; preds = %4497, %4463
  %4466 = load i64, ptr %54, align 8, !tbaa !9
  %4467 = load i64, ptr %42, align 8, !tbaa !9
  %4468 = icmp sle i64 %4466, %4467
  br i1 %4468, label %4469, label %4500

4469:                                             ; preds = %4465
  %4470 = load double, ptr %73, align 8, !tbaa !11
  store double %4470, ptr %48, align 8, !tbaa !11
  %4471 = load ptr, ptr %28, align 8, !tbaa !5
  %4472 = load i64, ptr %54, align 8, !tbaa !9
  %4473 = load i64, ptr %69, align 8, !tbaa !9
  %4474 = load i64, ptr %40, align 8, !tbaa !9
  %4475 = mul nsw i64 %4473, %4474
  %4476 = add nsw i64 %4472, %4475
  %4477 = getelementptr inbounds double, ptr %4471, i64 %4476
  %4478 = load double, ptr %4477, align 8, !tbaa !11
  store double %4478, ptr %47, align 8, !tbaa !11
  %4479 = load double, ptr %47, align 8, !tbaa !11
  %4480 = fcmp oge double %4479, 0.000000e+00
  br i1 %4480, label %4481, label %4483

4481:                                             ; preds = %4469
  %4482 = load double, ptr %47, align 8, !tbaa !11
  br label %4486

4483:                                             ; preds = %4469
  %4484 = load double, ptr %47, align 8, !tbaa !11
  %4485 = fneg double %4484
  br label %4486

4486:                                             ; preds = %4483, %4481
  %4487 = phi double [ %4482, %4481 ], [ %4485, %4483 ]
  store double %4487, ptr %49, align 8, !tbaa !11
  %4488 = load double, ptr %48, align 8, !tbaa !11
  %4489 = load double, ptr %49, align 8, !tbaa !11
  %4490 = fcmp oge double %4488, %4489
  br i1 %4490, label %4491, label %4493

4491:                                             ; preds = %4486
  %4492 = load double, ptr %48, align 8, !tbaa !11
  br label %4495

4493:                                             ; preds = %4486
  %4494 = load double, ptr %49, align 8, !tbaa !11
  br label %4495

4495:                                             ; preds = %4493, %4491
  %4496 = phi double [ %4492, %4491 ], [ %4494, %4493 ]
  store double %4496, ptr %73, align 8, !tbaa !11
  br label %4497

4497:                                             ; preds = %4495
  %4498 = load i64, ptr %54, align 8, !tbaa !9
  %4499 = add nsw i64 %4498, 1
  store i64 %4499, ptr %54, align 8, !tbaa !9
  br label %4465, !llvm.loop !60

4500:                                             ; preds = %4465
  br label %4501

4501:                                             ; preds = %4500, %4462
  %4502 = load double, ptr %73, align 8, !tbaa !11
  %4503 = load double, ptr %110, align 8, !tbaa !11
  %4504 = fcmp ogt double %4502, %4503
  br i1 %4504, label %4505, label %4550

4505:                                             ; preds = %4501
  %4506 = load double, ptr %73, align 8, !tbaa !11
  %4507 = fdiv double 1.000000e+00, %4506
  store double %4507, ptr %111, align 8, !tbaa !11
  %4508 = load i64, ptr %62, align 8, !tbaa !9
  %4509 = sub nsw i64 %4508, 1
  store i64 %4509, ptr %42, align 8, !tbaa !9
  store i64 0, ptr %61, align 8, !tbaa !9
  br label %4510

4510:                                             ; preds = %4546, %4505
  %4511 = load i64, ptr %61, align 8, !tbaa !9
  %4512 = load i64, ptr %42, align 8, !tbaa !9
  %4513 = icmp sle i64 %4511, %4512
  br i1 %4513, label %4514, label %4549

4514:                                             ; preds = %4510
  %4515 = load i64, ptr %70, align 8, !tbaa !9
  store i64 %4515, ptr %43, align 8, !tbaa !9
  store i64 1, ptr %60, align 8, !tbaa !9
  br label %4516

4516:                                             ; preds = %4542, %4514
  %4517 = load i64, ptr %60, align 8, !tbaa !9
  %4518 = load i64, ptr %43, align 8, !tbaa !9
  %4519 = icmp sle i64 %4517, %4518
  br i1 %4519, label %4520, label %4545

4520:                                             ; preds = %4516
  %4521 = load double, ptr %111, align 8, !tbaa !11
  %4522 = load ptr, ptr %28, align 8, !tbaa !5
  %4523 = load i64, ptr %60, align 8, !tbaa !9
  %4524 = load i64, ptr %69, align 8, !tbaa !9
  %4525 = load i64, ptr %61, align 8, !tbaa !9
  %4526 = add nsw i64 %4524, %4525
  %4527 = load i64, ptr %40, align 8, !tbaa !9
  %4528 = mul nsw i64 %4526, %4527
  %4529 = add nsw i64 %4523, %4528
  %4530 = getelementptr inbounds double, ptr %4522, i64 %4529
  %4531 = load double, ptr %4530, align 8, !tbaa !11
  %4532 = fmul double %4521, %4531
  %4533 = load ptr, ptr %28, align 8, !tbaa !5
  %4534 = load i64, ptr %60, align 8, !tbaa !9
  %4535 = load i64, ptr %69, align 8, !tbaa !9
  %4536 = load i64, ptr %61, align 8, !tbaa !9
  %4537 = add nsw i64 %4535, %4536
  %4538 = load i64, ptr %40, align 8, !tbaa !9
  %4539 = mul nsw i64 %4537, %4538
  %4540 = add nsw i64 %4534, %4539
  %4541 = getelementptr inbounds double, ptr %4533, i64 %4540
  store double %4532, ptr %4541, align 8, !tbaa !11
  br label %4542

4542:                                             ; preds = %4520
  %4543 = load i64, ptr %60, align 8, !tbaa !9
  %4544 = add nsw i64 %4543, 1
  store i64 %4544, ptr %60, align 8, !tbaa !9
  br label %4516, !llvm.loop !61

4545:                                             ; preds = %4516
  br label %4546

4546:                                             ; preds = %4545
  %4547 = load i64, ptr %61, align 8, !tbaa !9
  %4548 = add nsw i64 %4547, 1
  store i64 %4548, ptr %61, align 8, !tbaa !9
  br label %4510, !llvm.loop !62

4549:                                             ; preds = %4510
  br label %4550

4550:                                             ; preds = %4549, %4501
  br label %4551

4551:                                             ; preds = %4550, %2532, %2468, %2418
  br label %4552

4552:                                             ; preds = %4551
  %4553 = load i64, ptr %57, align 8, !tbaa !9
  %4554 = add nsw i64 %4553, -1
  store i64 %4554, ptr %57, align 8, !tbaa !9
  br label %2412, !llvm.loop !63

4555:                                             ; preds = %2412
  br label %4556

4556:                                             ; preds = %4555, %2404
  store i32 0, ptr %17, align 4
  store i32 1, ptr %116, align 4
  br label %4557

4557:                                             ; preds = %4556, %2949, %1223, %463, %452, %243
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %102) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, 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 8, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 32, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #4
  %4558 = load i32, ptr %17, align 4
  ret i32 %4558
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

declare i32 @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 i32 @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 i32 @f2c_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 i32 @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 = !{!"long", !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 i64, align 8
@c__2 = external hidden global i64, align 8
@.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 i64, align 8
@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 i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @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 = alloca i64, align 8
  %21 = alloca i64, align 8
  %22 = alloca double, align 8
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  %26 = alloca [4 x double], align 16
  %27 = alloca double, align 8
  %28 = alloca double, align 8
  %29 = alloca [4 x double], align 16
  %30 = alloca [4 x double], align 16
  %31 = alloca double, align 8
  %32 = alloca [2 x double], align 16
  %33 = alloca double, align 8
  %34 = alloca double, align 8
  %35 = alloca i64, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %29) #7
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  %39 = getelementptr inbounds i8, ptr %2, i64 -8
  %40 = load i64, ptr %5, align 8, !tbaa !5
  %41 = xor i64 %40, -1
  %42 = getelementptr inbounds double, ptr %4, i64 %41
  %43 = load i64, ptr %7, align 8, !tbaa !5
  %44 = xor i64 %43, -1
  %45 = getelementptr inbounds double, ptr %6, i64 %44
  %46 = load i64, ptr %9, align 8, !tbaa !5
  %47 = xor i64 %46, -1
  %48 = getelementptr inbounds double, ptr %8, i64 %47
  %49 = load i64, ptr %11, align 8, !tbaa !5
  %50 = xor i64 %49, -1
  %51 = getelementptr inbounds double, ptr %10, i64 %50
  %52 = getelementptr inbounds i8, ptr %14, i64 -8
  %53 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #7
  %.not = icmp eq i64 %53, 0
  br i1 %.not, label %54, label %58

54:                                               ; preds = %16
  %55 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #7
  %.not1486 = icmp eq i64 %55, 0
  br i1 %.not1486, label %56, label %58

56:                                               ; preds = %54
  %57 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #7
  %.not1487 = icmp eq i64 %57, 0
  br label %58

58:                                               ; preds = %56, %54, %16
  %.not1492 = phi i1 [ false, %16 ], [ true, %54 ], [ false, %56 ]
  %.not1529 = phi i1 [ true, %16 ], [ true, %54 ], [ false, %56 ]
  %59 = phi i1 [ false, %16 ], [ false, %54 ], [ %.not1487, %56 ]
  %60 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #7
  %.not1488.not2270 = icmp eq i64 %60, 0
  br i1 %.not1488.not2270, label %61, label %.thread

61:                                               ; preds = %58
  %62 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #7
  %.not1489 = icmp eq i64 %62, 0
  br i1 %.not1489, label %63, label %.thread

.thread:                                          ; preds = %58, %61
  store i64 0, ptr %15, align 8, !tbaa !5
  br label %65

63:                                               ; preds = %61
  %64 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #7
  %.not1490 = icmp eq i64 %64, 0
  store i64 0, ptr %15, align 8, !tbaa !5
  br i1 %.not1490, label %.thread1623, label %65

65:                                               ; preds = %.thread, %63
  %.not15031620 = phi i1 [ %.not1488.not2270, %.thread ], [ false, %63 ]
  br i1 %59, label %.thread1623, label %66

66:                                               ; preds = %65
  %67 = load i64, ptr %3, align 8, !tbaa !5
  %68 = icmp slt i64 %67, 0
  br i1 %68, label %.thread1623, label %69

69:                                               ; preds = %66
  %70 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %67, i64 1)
  %71 = icmp slt i64 %70, %spec.select
  br i1 %71, label %.thread1623, label %72

72:                                               ; preds = %69
  %73 = load i64, ptr %7, align 8, !tbaa !5
  %74 = icmp slt i64 %73, %spec.select
  br i1 %74, label %.thread1623, label %76

.thread1623:                                      ; preds = %72, %69, %66, %65, %63
  %.sink = phi i64 [ -1, %63 ], [ -2, %65 ], [ -4, %66 ], [ -6, %69 ], [ -8, %72 ]
  %.neg2177 = phi i64 [ 1, %63 ], [ 2, %65 ], [ 4, %66 ], [ 6, %69 ], [ 8, %72 ]
  store i64 %.sink, ptr %15, align 8, !tbaa !5
  store i64 %.neg2177, ptr %20, align 8, !tbaa !5
  %75 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %20) #7
  br label %.loopexit1713

76:                                               ; preds = %72
  br i1 %.not1492, label %77, label %.loopexit1720

77:                                               ; preds = %76
  %invariant.gep = getelementptr i8, ptr %42, i64 8
  %.not14931722 = icmp eq i64 %67, 0
  br i1 %.not14931722, label %.loopexit1720.thread, label %.lr.ph

.loopexit1720.thread:                             ; preds = %77
  store i64 -1, ptr %20, align 8, !tbaa !5
  br label %.thread2188

.lr.ph:                                           ; preds = %77, %96
  %.013641726 = phi i64 [ %.2, %96 ], [ 0, %77 ]
  %.014391725 = phi i64 [ %.11440, %96 ], [ 0, %77 ]
  %.014491723 = phi i64 [ %97, %96 ], [ 1, %77 ]
  %.not1494 = icmp eq i64 %.013641726, 0
  br i1 %.not1494, label %78, label %96

78:                                               ; preds = %.lr.ph
  %79 = icmp slt i64 %.014491723, %67
  br i1 %79, label %80, label %92

80:                                               ; preds = %78
  %81 = mul nsw i64 %.014491723, %40
  %gep = getelementptr double, ptr %invariant.gep, i64 %.014491723
  %82 = getelementptr double, ptr %gep, i64 %81
  %83 = load double, ptr %82, align 8, !tbaa !9
  %84 = fcmp une double %83, 0.000000e+00
  br i1 %84, label %.critedge, label %92

.critedge:                                        ; preds = %80
  %85 = getelementptr inbounds i64, ptr %39, i64 %.014491723
  %86 = load i64, ptr %85, align 8, !tbaa !5
  %.not1497 = icmp eq i64 %86, 0
  br i1 %.not1497, label %87, label %90

87:                                               ; preds = %.critedge
  %88 = getelementptr i64, ptr %2, i64 %.014491723
  %89 = load i64, ptr %88, align 8, !tbaa !5
  %.not1498 = icmp eq i64 %89, 0
  br i1 %.not1498, label %96, label %90

90:                                               ; preds = %87, %.critedge
  %91 = add nsw i64 %.014391725, 2
  br label %96

92:                                               ; preds = %78, %80
  %93 = getelementptr inbounds i64, ptr %39, i64 %.014491723
  %94 = load i64, ptr %93, align 8, !tbaa !5
  %.not1496 = icmp ne i64 %94, 0
  %95 = zext i1 %.not1496 to i64
  %spec.select1609 = add nsw i64 %.014391725, %95
  br label %96

96:                                               ; preds = %92, %.lr.ph, %87, %90
  %.11440 = phi i64 [ %91, %90 ], [ %.014391725, %87 ], [ %.014391725, %.lr.ph ], [ %spec.select1609, %92 ]
  %.2 = phi i64 [ 1, %90 ], [ 1, %87 ], [ 0, %.lr.ph ], [ 0, %92 ]
  %97 = add nuw i64 %.014491723, 1
  %exitcond.not = icmp eq i64 %.014491723, %67
  br i1 %exitcond.not, label %.loopexit1720, label %.lr.ph, !llvm.loop !11

.loopexit1720:                                    ; preds = %96, %76
  %.21441 = phi i64 [ %67, %76 ], [ %.11440, %96 ]
  %98 = add nsw i64 %67, -1
  store i64 %98, ptr %20, align 8, !tbaa !5
  %invariant.gep1727 = getelementptr i8, ptr %42, i64 16
  %.not1499.not1729 = icmp sgt i64 %67, 1
  br i1 %.not1499.not1729, label %.lr.ph1733, label %.thread2188

.lr.ph1733:                                       ; preds = %.loopexit1720
  %99 = add i64 %43, 1
  br label %100

100:                                              ; preds = %.lr.ph1733, %132
  %.013771732 = phi i64 [ 0, %.lr.ph1733 ], [ %.21379, %132 ]
  %.013801731 = phi i64 [ 0, %.lr.ph1733 ], [ %.11381, %132 ]
  %.114501730 = phi i64 [ 1, %.lr.ph1733 ], [ %101, %132 ]
  %101 = add nuw nsw i64 %.114501730, 1
  %102 = mul nsw i64 %.114501730, %40
  %103 = getelementptr double, ptr %42, i64 %101
  %104 = getelementptr double, ptr %103, i64 %102
  %105 = load double, ptr %104, align 8, !tbaa !9
  %106 = fcmp une double %105, 0.000000e+00
  br i1 %106, label %107, label %132

107:                                              ; preds = %100
  %108 = mul i64 %.114501730, %99
  %109 = getelementptr inbounds double, ptr %45, i64 %108
  %110 = load double, ptr %109, align 8, !tbaa !9
  %111 = fcmp oeq double %110, 0.000000e+00
  br i1 %111, label %123, label %112

112:                                              ; preds = %107
  %113 = mul nsw i64 %101, %43
  %114 = getelementptr double, ptr %45, i64 %101
  %115 = getelementptr double, ptr %114, i64 %113
  %116 = load double, ptr %115, align 8, !tbaa !9
  %117 = fcmp oeq double %116, 0.000000e+00
  br i1 %117, label %123, label %118

118:                                              ; preds = %112
  %119 = getelementptr double, ptr %45, i64 %.114501730
  %120 = getelementptr double, ptr %119, i64 %113
  %121 = load double, ptr %120, align 8, !tbaa !9
  %122 = fcmp une double %121, 0.000000e+00
  br i1 %122, label %123, label %124

123:                                              ; preds = %118, %112, %107
  br label %124

124:                                              ; preds = %123, %118
  %.11378 = phi i64 [ 1, %123 ], [ %.013771732, %118 ]
  %125 = icmp slt i64 %.114501730, %98
  br i1 %125, label %126, label %132

126:                                              ; preds = %124
  %127 = mul nsw i64 %101, %40
  %gep1728 = getelementptr double, ptr %invariant.gep1727, i64 %.114501730
  %128 = getelementptr double, ptr %gep1728, i64 %127
  %129 = load double, ptr %128, align 8, !tbaa !9
  %130 = fcmp une double %129, 0.000000e+00
  br i1 %130, label %131, label %132

131:                                              ; preds = %126
  br label %132

132:                                              ; preds = %100, %126, %131, %124
  %.11381 = phi i64 [ 1, %131 ], [ %.013801731, %126 ], [ %.013801731, %124 ], [ %.013801731, %100 ]
  %.21379 = phi i64 [ %.11378, %131 ], [ %.11378, %126 ], [ %.11378, %124 ], [ %.013771732, %100 ]
  %exitcond2106.not = icmp eq i64 %101, %67
  br i1 %exitcond2106.not, label %._crit_edge, label %100, !llvm.loop !13

._crit_edge:                                      ; preds = %132
  %.not1500 = icmp eq i64 %.11381, 0
  br i1 %.not1500, label %133, label %.thread1635

133:                                              ; preds = %._crit_edge
  %.not1501 = icmp eq i64 %.21379, 0
  br i1 %.not1501, label %.thread2188, label %.thread1635

.thread2188:                                      ; preds = %.loopexit1720, %.loopexit1720.thread, %133
  %.21441218121862192 = phi i64 [ %.21441, %133 ], [ 0, %.loopexit1720.thread ], [ %.21441, %.loopexit1720 ]
  %.pr1628 = load i64, ptr %9, align 8, !tbaa !5
  %134 = icmp slt i64 %.pr1628, %67
  %or.cond2265 = select i1 %.not1488.not2270, i1 %134, i1 false
  %135 = icmp slt i64 %.pr1628, 1
  %or.cond2266 = select i1 %or.cond2265, i1 true, i1 %135
  br i1 %or.cond2266, label %.thread1635, label %136

136:                                              ; preds = %.thread2188
  %.pr1630 = load i64, ptr %11, align 8, !tbaa !5
  %.not15031620.not2267 = xor i1 %.not15031620, true
  %137 = icmp slt i64 %.pr1630, %67
  %or.cond2268 = select i1 %.not15031620.not2267, i1 %137, i1 false
  %138 = icmp slt i64 %.pr1630, 1
  %or.cond2269 = select i1 %or.cond2268, i1 true, i1 %138
  br i1 %or.cond2269, label %.thread1635, label %139

139:                                              ; preds = %136
  %140 = load i64, ptr %12, align 8, !tbaa !5
  %141 = icmp slt i64 %140, %.21441218121862192
  br i1 %141, label %.thread1635, label %143

.thread1635:                                      ; preds = %139, %136, %.thread2188, %133, %._crit_edge
  %.sink2255 = phi i64 [ -5, %._crit_edge ], [ -7, %133 ], [ -10, %.thread2188 ], [ -12, %136 ], [ -13, %139 ]
  %.neg = phi i64 [ 5, %._crit_edge ], [ 7, %133 ], [ 10, %.thread2188 ], [ 12, %136 ], [ 13, %139 ]
  store i64 %.sink2255, ptr %15, align 8, !tbaa !5
  store i64 %.neg, ptr %20, align 8, !tbaa !5
  %142 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %20) #7
  br label %.loopexit1713

143:                                              ; preds = %139
  store i64 %.21441218121862192, ptr %13, align 8, !tbaa !5
  %144 = load i64, ptr %3, align 8, !tbaa !5
  %145 = icmp eq i64 %144, 0
  br i1 %145, label %.loopexit1713, label %146

146:                                              ; preds = %143
  %147 = tail call double @dlamch_(ptr noundef nonnull @.str.6) #7
  store double %147, ptr %38, align 8, !tbaa !9
  %148 = fdiv double 1.000000e+00, %147
  store double %148, ptr %25, align 8, !tbaa !9
  %149 = call i32 @dlabad_(ptr noundef nonnull %38, ptr noundef nonnull %25) #7
  %150 = call double @dlamch_(ptr noundef nonnull @.str.7) #7
  %151 = call double @dlamch_(ptr noundef nonnull @.str.8) #7
  %152 = fmul double %150, %151
  %153 = load double, ptr %38, align 8
  %154 = load i64, ptr %3, align 8, !tbaa !5
  %155 = sitofp i64 %154 to double
  %156 = fmul double %153, %155
  %157 = fdiv double %156, %152
  %158 = fdiv double 1.000000e+00, %157
  store double %158, ptr %25, align 8, !tbaa !9
  %159 = fdiv double 1.000000e+00, %156
  %160 = load double, ptr %4, align 8, !tbaa !9
  %161 = fcmp oge double %160, 0.000000e+00
  %162 = fneg double %160
  %163 = select i1 %161, double %160, double %162
  %164 = icmp sgt i64 %154, 1
  br i1 %164, label %165, label %172

165:                                              ; preds = %146
  %166 = getelementptr inbounds i8, ptr %4, i64 8
  %167 = load double, ptr %166, align 8, !tbaa !9
  store double %167, ptr %22, align 8, !tbaa !9
  %168 = fcmp oge double %167, 0.000000e+00
  %169 = fneg double %167
  %170 = select i1 %168, double %167, double %169
  %171 = fadd double %163, %170
  br label %172

172:                                              ; preds = %165, %146
  %.01384 = phi double [ %171, %165 ], [ %163, %146 ]
  %173 = load double, ptr %6, align 8, !tbaa !9
  %174 = fcmp oge double %173, 0.000000e+00
  %175 = fneg double %173
  %176 = select i1 %174, double %173, double %175
  store double 0.000000e+00, ptr %14, align 8, !tbaa !9
  %177 = getelementptr double, ptr %14, i64 %154
  store double 0.000000e+00, ptr %177, align 8, !tbaa !9
  %.not15051768 = icmp slt i64 %154, 2
  %178 = insertelement <2 x double> poison, double %.01384, i64 0
  %179 = insertelement <2 x double> %178, double %176, i64 1
  br i1 %.not15051768, label %263, label %.lr.ph1773

.lr.ph1773:                                       ; preds = %172
  %180 = getelementptr double, ptr %52, i64 %154
  %181 = add nuw i64 %154, 1
  br label %182

182:                                              ; preds = %.lr.ph1773, %257
  %.214511769 = phi i64 [ 2, %.lr.ph1773 ], [ %227, %257 ]
  %183 = phi <2 x double> [ %179, %.lr.ph1773 ], [ %260, %257 ]
  %184 = add nsw i64 %.214511769, -1
  %185 = mul nsw i64 %184, %40
  %186 = getelementptr double, ptr %42, i64 %.214511769
  %187 = getelementptr double, ptr %186, i64 %185
  %188 = load double, ptr %187, align 8, !tbaa !9
  %189 = fcmp oeq double %188, 0.000000e+00
  %190 = add nsw i64 %.214511769, -2
  %.01403 = select i1 %189, i64 %184, i64 %190
  %.not16021737 = icmp slt i64 %.01403, 1
  br i1 %.not16021737, label %._crit_edge1741, label %.lr.ph1740

.lr.ph1740:                                       ; preds = %182
  %191 = mul nsw i64 %.214511769, %40
  %invariant.gep1742 = getelementptr double, ptr %42, i64 %191
  %192 = mul nsw i64 %.214511769, %43
  %invariant.gep1744 = getelementptr double, ptr %45, i64 %192
  %xtraiter = and i64 %.01403, 1
  %193 = icmp eq i64 %.01403, 1
  br i1 %193, label %._crit_edge1741.loopexit.unr-lcssa, label %.lr.ph1740.new

.lr.ph1740.new:                                   ; preds = %.lr.ph1740
  %unroll_iter = and i64 %.01403, 9223372036854775806
  br label %194

194:                                              ; preds = %194, %.lr.ph1740.new
  %.014581738 = phi i64 [ 1, %.lr.ph1740.new ], [ %213, %194 ]
  %195 = phi <2 x double> [ zeroinitializer, %.lr.ph1740.new ], [ %212, %194 ]
  %niter = phi i64 [ 0, %.lr.ph1740.new ], [ %niter.next.1, %194 ]
  %gep1743 = getelementptr double, ptr %invariant.gep1742, i64 %.014581738
  %196 = load double, ptr %gep1743, align 8, !tbaa !9
  %gep1745 = getelementptr double, ptr %invariant.gep1744, i64 %.014581738
  %197 = load double, ptr %gep1745, align 8, !tbaa !9
  %198 = insertelement <2 x double> poison, double %196, i64 0
  %199 = insertelement <2 x double> %198, double %197, i64 1
  %200 = fcmp oge <2 x double> %199, zeroinitializer
  %201 = fneg <2 x double> %199
  %202 = select <2 x i1> %200, <2 x double> %199, <2 x double> %201
  %203 = fadd <2 x double> %195, %202
  %204 = add nuw i64 %.014581738, 1
  %gep1743.1 = getelementptr double, ptr %invariant.gep1742, i64 %204
  %205 = load double, ptr %gep1743.1, align 8, !tbaa !9
  %gep1745.1 = getelementptr double, ptr %invariant.gep1744, i64 %204
  %206 = load double, ptr %gep1745.1, align 8, !tbaa !9
  %207 = insertelement <2 x double> poison, double %205, i64 0
  %208 = insertelement <2 x double> %207, double %206, i64 1
  %209 = fcmp oge <2 x double> %208, zeroinitializer
  %210 = fneg <2 x double> %208
  %211 = select <2 x i1> %209, <2 x double> %208, <2 x double> %210
  %212 = fadd <2 x double> %203, %211
  %213 = add nuw i64 %.014581738, 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_edge1741.loopexit.unr-lcssa, label %194, !llvm.loop !14

._crit_edge1741.loopexit.unr-lcssa:               ; preds = %194, %.lr.ph1740
  %.lcssa2663.ph = phi <2 x double> [ poison, %.lr.ph1740 ], [ %212, %194 ]
  %.014581738.unr = phi i64 [ 1, %.lr.ph1740 ], [ %213, %194 ]
  %.unr = phi <2 x double> [ zeroinitializer, %.lr.ph1740 ], [ %212, %194 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge1741, label %._crit_edge1741.loopexit.epilog-lcssa

._crit_edge1741.loopexit.epilog-lcssa:            ; preds = %._crit_edge1741.loopexit.unr-lcssa
  %gep1743.epil = getelementptr double, ptr %invariant.gep1742, i64 %.014581738.unr
  %214 = load double, ptr %gep1743.epil, align 8, !tbaa !9
  %gep1745.epil = getelementptr double, ptr %invariant.gep1744, i64 %.014581738.unr
  %215 = load double, ptr %gep1745.epil, align 8, !tbaa !9
  %216 = insertelement <2 x double> poison, double %214, i64 0
  %217 = insertelement <2 x double> %216, double %215, i64 1
  %218 = fcmp oge <2 x double> %217, zeroinitializer
  %219 = fneg <2 x double> %217
  %220 = select <2 x i1> %218, <2 x double> %217, <2 x double> %219
  %221 = fadd <2 x double> %.unr, %220
  br label %._crit_edge1741

._crit_edge1741:                                  ; preds = %._crit_edge1741.loopexit.epilog-lcssa, %._crit_edge1741.loopexit.unr-lcssa, %182
  %222 = phi <2 x double> [ zeroinitializer, %182 ], [ %.lcssa2663.ph, %._crit_edge1741.loopexit.unr-lcssa ], [ %221, %._crit_edge1741.loopexit.epilog-lcssa ]
  %223 = getelementptr inbounds double, ptr %52, i64 %.214511769
  %224 = extractelement <2 x double> %222, i64 0
  store double %224, ptr %223, align 8, !tbaa !9
  %225 = getelementptr double, ptr %180, i64 %.214511769
  %226 = extractelement <2 x double> %222, i64 1
  store double %226, ptr %225, align 8, !tbaa !9
  %227 = add nuw i64 %.214511769, 1
  %.not1603.not = icmp slt i64 %.214511769, %154
  %.1610 = select i1 %.not1603.not, i64 %227, i64 %154
  %.not1604.not1751 = icmp slt i64 %.01403, %.1610
  br i1 %.not1604.not1751, label %.lr.ph1754, label %257

.lr.ph1754:                                       ; preds = %._crit_edge1741
  %228 = mul nsw i64 %.214511769, %40
  %invariant.gep1756 = getelementptr double, ptr %42, i64 %228
  %229 = mul nsw i64 %.214511769, %43
  %invariant.gep1758 = getelementptr double, ptr %45, i64 %229
  %230 = sub i64 %.1610, %.01403
  %.neg2711 = add nsw i64 %.01403, 1
  %xtraiter2669 = and i64 %230, 1
  %lcmp.mod2670.not = icmp eq i64 %xtraiter2669, 0
  br i1 %lcmp.mod2670.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph1754
  %.11459.prol = add nsw i64 %.01403, 1
  %gep1757.prol = getelementptr double, ptr %invariant.gep1756, i64 %.11459.prol
  %231 = load double, ptr %gep1757.prol, align 8, !tbaa !9
  %gep1759.prol = getelementptr double, ptr %invariant.gep1758, i64 %.11459.prol
  %232 = load double, ptr %gep1759.prol, align 8, !tbaa !9
  %233 = insertelement <2 x double> poison, double %231, i64 0
  %234 = insertelement <2 x double> %233, double %232, i64 1
  %235 = fcmp oge <2 x double> %234, zeroinitializer
  %236 = fneg <2 x double> %234
  %237 = select <2 x i1> %235, <2 x double> %234, <2 x double> %236
  %238 = fadd <2 x double> %222, %237
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph1754
  %.lcssa2665.unr = phi double [ poison, %.lr.ph1754 ], [ %232, %.prol.loopexit.unr-lcssa ]
  %.lcssa2664.unr = phi <2 x double> [ poison, %.lr.ph1754 ], [ %238, %.prol.loopexit.unr-lcssa ]
  %.11459.in1752.unr = phi i64 [ %.01403, %.lr.ph1754 ], [ %.11459.prol, %.prol.loopexit.unr-lcssa ]
  %.unr2671 = phi <2 x double> [ %222, %.lr.ph1754 ], [ %238, %.prol.loopexit.unr-lcssa ]
  %239 = icmp eq i64 %.1610, %.neg2711
  br i1 %239, label %._crit_edge1755, label %.lr.ph1754.new

.lr.ph1754.new:                                   ; preds = %.prol.loopexit, %.lr.ph1754.new
  %.11459.in1752 = phi i64 [ %.11459.1, %.lr.ph1754.new ], [ %.11459.in1752.unr, %.prol.loopexit ]
  %240 = phi <2 x double> [ %256, %.lr.ph1754.new ], [ %.unr2671, %.prol.loopexit ]
  %.11459 = add nsw i64 %.11459.in1752, 1
  %gep1757 = getelementptr double, ptr %invariant.gep1756, i64 %.11459
  %241 = load double, ptr %gep1757, align 8, !tbaa !9
  %gep1759 = getelementptr double, ptr %invariant.gep1758, i64 %.11459
  %242 = load double, ptr %gep1759, align 8, !tbaa !9
  %243 = insertelement <2 x double> poison, double %241, i64 0
  %244 = insertelement <2 x double> %243, double %242, i64 1
  %245 = fcmp oge <2 x double> %244, zeroinitializer
  %246 = fneg <2 x double> %244
  %247 = select <2 x i1> %245, <2 x double> %244, <2 x double> %246
  %248 = fadd <2 x double> %240, %247
  %.11459.1 = add nsw i64 %.11459.in1752, 2
  %gep1757.1 = getelementptr double, ptr %invariant.gep1756, i64 %.11459.1
  %249 = load double, ptr %gep1757.1, align 8, !tbaa !9
  %gep1759.1 = getelementptr double, ptr %invariant.gep1758, i64 %.11459.1
  %250 = load double, ptr %gep1759.1, align 8, !tbaa !9
  %251 = insertelement <2 x double> poison, double %249, i64 0
  %252 = insertelement <2 x double> %251, double %250, i64 1
  %253 = fcmp oge <2 x double> %252, zeroinitializer
  %254 = fneg <2 x double> %252
  %255 = select <2 x i1> %253, <2 x double> %252, <2 x double> %254
  %256 = fadd <2 x double> %248, %255
  %exitcond2108.not.1 = icmp eq i64 %.11459.1, %.1610
  br i1 %exitcond2108.not.1, label %._crit_edge1755, label %.lr.ph1754.new, !llvm.loop !15

._crit_edge1755:                                  ; preds = %.lr.ph1754.new, %.prol.loopexit
  %.lcssa2665 = phi double [ %.lcssa2665.unr, %.prol.loopexit ], [ %250, %.lr.ph1754.new ]
  %.lcssa2664 = phi <2 x double> [ %.lcssa2664.unr, %.prol.loopexit ], [ %256, %.lr.ph1754.new ]
  store double %.lcssa2665, ptr %22, align 8, !tbaa !9
  br label %257

257:                                              ; preds = %._crit_edge1755, %._crit_edge1741
  %258 = phi <2 x double> [ %.lcssa2664, %._crit_edge1755 ], [ %222, %._crit_edge1741 ]
  %259 = fcmp oge <2 x double> %183, %258
  %260 = select <2 x i1> %259, <2 x double> %183, <2 x double> %258
  %exitcond2109.not = icmp eq i64 %.214511769, %154
  br i1 %exitcond2109.not, label %._crit_edge1774, label %182, !llvm.loop !16

._crit_edge1774:                                  ; preds = %257
  %261 = extractelement <2 x double> %258, i64 0
  store double %261, ptr %28, align 8, !tbaa !9
  %262 = extractelement <2 x double> %258, i64 1
  store double %262, ptr %31, align 8, !tbaa !9
  store i64 %181, ptr %21, align 8, !tbaa !5
  br label %263

263:                                              ; preds = %._crit_edge1774, %172
  %264 = phi <2 x double> [ %260, %._crit_edge1774 ], [ %179, %172 ]
  %265 = insertelement <2 x double> poison, double %153, i64 0
  %266 = shufflevector <2 x double> %265, <2 x double> poison, <2 x i32> zeroinitializer
  %267 = fcmp oge <2 x double> %264, %266
  %268 = select <2 x i1> %267, <2 x double> %264, <2 x double> %266
  %269 = fdiv <2 x double> <double 1.000000e+00, double 1.000000e+00>, %268
  br i1 %.not1488.not2270, label %270, label %.loopexit1719

270:                                              ; preds = %263
  store i64 %154, ptr %20, align 8, !tbaa !5
  %invariant.gep1876 = getelementptr i8, ptr %42, i64 8
  %invariant.gep1878 = getelementptr i8, ptr %48, i64 8
  %.not15071882 = icmp slt i64 %154, 1
  br i1 %.not15071882, label %.loopexit1719, label %.lr.ph1894

.lr.ph1894:                                       ; preds = %270
  %271 = add i64 %40, 1
  %272 = add i64 %43, 1
  %273 = add i64 %46, 1
  %274 = getelementptr inbounds i8, ptr %32, i64 8
  %275 = shl i64 %46, 3
  %276 = extractelement <2 x double> %269, i64 0
  %277 = extractelement <2 x double> %269, i64 1
  %278 = extractelement <2 x double> %264, i64 0
  %279 = extractelement <2 x double> %264, i64 1
  %280 = insertelement <2 x double> poison, double %152, i64 0
  %281 = shufflevector <2 x double> %280, <2 x double> poison, <2 x i32> zeroinitializer
  %282 = shufflevector <2 x double> %269, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %283 = getelementptr inbounds i8, ptr %29, i64 16
  %284 = getelementptr inbounds i8, ptr %30, i64 16
  %285 = getelementptr inbounds i8, ptr %26, i64 16
  %286 = getelementptr inbounds i8, ptr %30, i64 8
  %287 = getelementptr inbounds i8, ptr %29, i64 8
  %288 = getelementptr inbounds i8, ptr %29, i64 24
  %289 = getelementptr inbounds i8, ptr %26, i64 8
  %290 = getelementptr inbounds i8, ptr %30, i64 24
  %291 = getelementptr inbounds i8, ptr %26, i64 24
  %292 = getelementptr inbounds i8, ptr %30, i64 8
  %293 = getelementptr inbounds i8, ptr %29, i64 8
  %294 = getelementptr inbounds i8, ptr %26, i64 8
  br label %295

295:                                              ; preds = %.lr.ph1894, %934
  %296 = phi i64 [ %154, %.lr.ph1894 ], [ %935, %934 ]
  %297 = phi double [ %153, %.lr.ph1894 ], [ %936, %934 ]
  %298 = phi i64 [ %154, %.lr.ph1894 ], [ %937, %934 ]
  %.31892 = phi i64 [ 0, %.lr.ph1894 ], [ %.5, %934 ]
  %.014051889 = phi i64 [ 0, %.lr.ph1894 ], [ %.11406, %934 ]
  %.014421883 = phi i64 [ 1, %.lr.ph1894 ], [ %938, %934 ]
  %.not1562 = icmp eq i64 %.31892, 0
  br i1 %.not1562, label %299, label %934

299:                                              ; preds = %295
  store i64 1, ptr %24, align 8, !tbaa !5
  %300 = icmp slt i64 %.014421883, %298
  br i1 %300, label %301, label %306

301:                                              ; preds = %299
  %302 = mul nsw i64 %.014421883, %40
  %gep1877 = getelementptr double, ptr %invariant.gep1876, i64 %.014421883
  %303 = getelementptr double, ptr %gep1877, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !9
  %305 = fcmp une double %304, 0.000000e+00
  br i1 %305, label %.thread1638, label %306

306:                                              ; preds = %301, %299
  br i1 %.not1492, label %310, label %.thread1651.thread

.thread1638:                                      ; preds = %301
  store i64 2, ptr %24, align 8, !tbaa !5
  br i1 %.not1492, label %307, label %.thread1651

307:                                              ; preds = %.thread1638
  %308 = getelementptr inbounds i64, ptr %39, i64 %.014421883
  %309 = load i64, ptr %308, align 8, !tbaa !5
  %.not1564 = icmp eq i64 %309, 0
  br i1 %.not1564, label %.thread2193, label %.thread1651

310:                                              ; preds = %306
  %311 = getelementptr inbounds i64, ptr %39, i64 %.014421883
  %312 = load i64, ptr %311, align 8, !tbaa !5
  %.not1565 = icmp eq i64 %312, 0
  br i1 %.not1565, label %934, label %.thread1651.thread

.thread2193:                                      ; preds = %307
  %313 = getelementptr i64, ptr %2, i64 %.014421883
  %314 = load i64, ptr %313, align 8, !tbaa !5
  %.not2271 = icmp eq i64 %314, 0
  br i1 %.not2271, label %934, label %.thread1651

.thread1651.thread:                               ; preds = %310, %306
  %315 = mul i64 %.014421883, %271
  %316 = getelementptr inbounds double, ptr %42, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !9
  %318 = fcmp oge double %317, 0.000000e+00
  %319 = fneg double %317
  %320 = select i1 %318, double %317, double %319
  %321 = fcmp ugt double %320, %297
  br i1 %321, label %.thread1651, label %322

322:                                              ; preds = %.thread1651.thread
  %323 = mul i64 %.014421883, %272
  %324 = getelementptr inbounds double, ptr %45, i64 %323
  %325 = load double, ptr %324, align 8, !tbaa !9
  %326 = fcmp oge double %325, 0.000000e+00
  %327 = fneg double %325
  %328 = select i1 %326, double %325, double %327
  %329 = fcmp ugt double %328, %297
  br i1 %329, label %.thread1651, label %330

330:                                              ; preds = %322
  %331 = add nsw i64 %.014051889, 1
  %.not15671778 = icmp slt i64 %298, 1
  br i1 %.not15671778, label %._crit_edge1782, label %.lr.ph1781

.lr.ph1781:                                       ; preds = %330
  %332 = mul i64 %275, %.014051889
  %scevgep = getelementptr i8, ptr %8, i64 %332
  %333 = shl nuw i64 %298, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep, i8 0, i64 %333, i1 false), !tbaa !9
  br label %._crit_edge1782

._crit_edge1782:                                  ; preds = %.lr.ph1781, %330
  %334 = mul i64 %331, %273
  %335 = getelementptr inbounds double, ptr %48, i64 %334
  store double 1.000000e+00, ptr %335, align 8, !tbaa !9
  br label %934

.thread1651:                                      ; preds = %307, %.thread2193, %.thread1638, %.thread1651.thread, %322
  %336 = phi i64 [ 1, %.thread1651.thread ], [ 1, %322 ], [ 2, %.thread1638 ], [ 2, %.thread2193 ], [ 2, %307 ]
  %.4164316561660 = phi i64 [ 0, %.thread1651.thread ], [ 0, %322 ], [ 1, %.thread1638 ], [ 1, %.thread2193 ], [ 1, %307 ]
  %.not1563164216571658 = phi i1 [ true, %.thread1651.thread ], [ true, %322 ], [ false, %.thread1638 ], [ false, %.thread2193 ], [ false, %307 ]
  %337 = mul nsw i64 %336, %298
  %.not15681785 = icmp slt i64 %337, 1
  br i1 %.not15681785, label %._crit_edge1788, label %.lr.ph1787

.lr.ph1787:                                       ; preds = %.thread1651
  %.idx1601 = shl i64 %298, 4
  %scevgep2110 = getelementptr i8, ptr %14, i64 %.idx1601
  %338 = shl nuw nsw i64 %336, 3
  %339 = mul i64 %338, %298
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2110, i8 0, i64 %339, i1 false), !tbaa !9
  br label %._crit_edge1788

._crit_edge1788:                                  ; preds = %.lr.ph1787, %.thread1651
  br i1 %.not1563164216571658, label %340, label %456

340:                                              ; preds = %._crit_edge1788
  %341 = mul i64 %.014421883, %271
  %342 = getelementptr inbounds double, ptr %42, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !9
  %344 = mul i64 %.014421883, %272
  %345 = getelementptr inbounds double, ptr %45, i64 %344
  %346 = load double, ptr %345, align 8, !tbaa !9
  %347 = insertelement <2 x double> poison, double %343, i64 0
  %348 = insertelement <2 x double> %347, double %346, i64 1
  %349 = fcmp oge <2 x double> %348, zeroinitializer
  %350 = fneg <2 x double> %348
  %351 = select <2 x i1> %349, <2 x double> %348, <2 x double> %350
  %352 = fmul <2 x double> %269, %351
  %353 = extractelement <2 x double> %352, i64 0
  %354 = extractelement <2 x double> %352, i64 1
  %355 = fcmp oge double %353, %354
  %356 = select i1 %355, double %353, double %354
  %357 = fcmp oge double %356, %297
  %358 = select i1 %357, double %356, double %297
  %359 = fdiv double 1.000000e+00, %358
  store double %359, ptr %28, align 8, !tbaa !9
  %360 = insertelement <2 x double> poison, double %346, i64 0
  %361 = insertelement <2 x double> %360, double %343, i64 1
  %362 = insertelement <2 x double> poison, double %359, i64 0
  %363 = shufflevector <2 x double> %362, <2 x double> poison, <2 x i32> zeroinitializer
  %364 = fmul <2 x double> %361, %363
  %365 = fmul <2 x double> %282, %364
  %366 = fmul <2 x double> %269, %365
  %367 = extractelement <2 x double> %366, i64 0
  store double %367, ptr %33, align 8, !tbaa !9
  %368 = extractelement <2 x double> %366, i64 1
  store double %368, ptr %37, align 8, !tbaa !9
  store double 0.000000e+00, ptr %36, align 8, !tbaa !9
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %369 = extractelement <2 x double> %365, i64 0
  %370 = fcmp oge double %369, 0.000000e+00
  %371 = fneg double %369
  %372 = select i1 %370, double %369, double %371
  %373 = fcmp ult double %372, %297
  br i1 %373, label %.thread2227, label %374

374:                                              ; preds = %340
  %375 = fcmp oge double %367, 0.000000e+00
  %376 = fneg double %367
  %377 = select i1 %375, double %367, double %376
  %378 = fcmp olt double %377, %157
  %379 = extractelement <2 x double> %365, i64 1
  %380 = fcmp oge double %379, 0.000000e+00
  %381 = fneg double %379
  %382 = select i1 %380, double %379, double %381
  %383 = fcmp ult double %382, %297
  br i1 %383, label %.thread2222, label %393

.thread2227:                                      ; preds = %340
  %384 = extractelement <2 x double> %365, i64 1
  %385 = fcmp oge double %384, 0.000000e+00
  %386 = fneg double %384
  %387 = select i1 %385, double %384, double %386
  %388 = fcmp ult double %387, %297
  br i1 %388, label %.thread2204, label %.thread2229

.thread2229:                                      ; preds = %.thread2227
  %389 = fcmp oge double %368, 0.000000e+00
  %390 = fneg double %368
  %391 = select i1 %389, double %368, double %390
  %392 = fcmp olt double %391, %157
  br i1 %392, label %.thread1662, label %.thread2204

393:                                              ; preds = %374
  %394 = fcmp oge double %368, 0.000000e+00
  %395 = fneg double %368
  %396 = select i1 %394, double %368, double %395
  %397 = fcmp olt double %396, %157
  br i1 %378, label %403, label %.thread2203

.thread2222:                                      ; preds = %374
  br i1 %378, label %.thread2223, label %.thread2204

.thread2223:                                      ; preds = %.thread2222
  %398 = fdiv double %157, %372
  %399 = load double, ptr %25, align 8
  %400 = fcmp ole double %278, %399
  %401 = select i1 %400, double %278, double %399
  %402 = fmul double %398, %401
  br label %419

403:                                              ; preds = %393
  %404 = fdiv double %157, %372
  %405 = load double, ptr %25, align 8
  %406 = fcmp ole double %278, %405
  %407 = select i1 %406, double %278, double %405
  %408 = fmul double %404, %407
  br i1 %397, label %.thread1662, label %419

.thread2203:                                      ; preds = %393
  br i1 %397, label %.thread1662, label %.thread2204

.thread1662:                                      ; preds = %.thread2229, %.thread2203, %403
  %409 = phi i1 [ false, %.thread2203 ], [ true, %403 ], [ false, %.thread2229 ]
  %410 = phi double [ %382, %.thread2203 ], [ %382, %403 ], [ %387, %.thread2229 ]
  %411 = phi double [ 1.000000e+00, %.thread2203 ], [ %408, %403 ], [ 1.000000e+00, %.thread2229 ]
  store double %411, ptr %22, align 8, !tbaa !9
  %412 = fdiv double %157, %410
  %413 = load double, ptr %25, align 8
  %414 = fcmp ole double %279, %413
  %415 = select i1 %414, double %279, double %413
  %416 = fmul double %412, %415
  %417 = fcmp oge double %411, %416
  %418 = select i1 %417, double %411, double %416
  br label %419

419:                                              ; preds = %403, %.thread2223, %.thread1662
  %420 = phi i1 [ %409, %.thread1662 ], [ true, %403 ], [ true, %.thread2223 ]
  %421 = phi i1 [ true, %.thread1662 ], [ false, %403 ], [ false, %.thread2223 ]
  %422 = phi double [ %418, %.thread1662 ], [ %408, %403 ], [ %402, %.thread2223 ]
  %423 = fcmp oge double %367, 0.000000e+00
  %424 = fneg double %367
  %425 = select i1 %423, double %367, double %424
  %426 = fcmp ole double %425, 1.000000e+00
  %427 = select i1 %426, double 1.000000e+00, double %425
  %428 = fcmp oge double %368, 0.000000e+00
  %429 = fneg double %368
  %430 = select i1 %428, double %368, double %429
  %431 = fcmp oge double %427, %430
  %432 = select i1 %431, double %427, double %430
  %433 = fmul double %297, %432
  %434 = fdiv double 1.000000e+00, %433
  %435 = fcmp ole double %422, %434
  %436 = select i1 %435, double %422, double %434
  store double %436, ptr %34, align 8, !tbaa !9
  %437 = fmul double %367, %436
  %438 = fmul double %369, %436
  %439 = fmul double %276, %438
  %storemerge1569 = select i1 %420, double %439, double %437
  store double %storemerge1569, ptr %33, align 8, !tbaa !9
  br i1 %421, label %440, label %446

440:                                              ; preds = %419
  %441 = extractelement <2 x double> %365, i64 1
  %442 = fmul double %441, %436
  %443 = fmul double %277, %442
  store double %443, ptr %37, align 8, !tbaa !9
  %444 = insertelement <2 x double> poison, double %storemerge1569, i64 0
  %445 = insertelement <2 x double> %444, double %443, i64 1
  br label %.thread2204

446:                                              ; preds = %419
  %447 = fmul double %368, %436
  store double %447, ptr %37, align 8, !tbaa !9
  %448 = insertelement <2 x double> poison, double %storemerge1569, i64 0
  %449 = insertelement <2 x double> %448, double %447, i64 1
  br label %.thread2204

.thread2204:                                      ; preds = %.thread2229, %.thread2227, %.thread2222, %.thread2203, %440, %446
  %450 = phi <2 x double> [ %445, %440 ], [ %449, %446 ], [ %366, %.thread2203 ], [ %366, %.thread2222 ], [ %366, %.thread2227 ], [ %366, %.thread2229 ]
  %451 = fcmp oge <2 x double> %450, zeroinitializer
  %452 = fneg <2 x double> %450
  %453 = select <2 x i1> %451, <2 x double> %450, <2 x double> %452
  %.idx1570 = shl i64 %298, 4
  %454 = getelementptr i8, ptr %52, i64 %.idx1570
  %455 = getelementptr double, ptr %454, i64 %.014421883
  store double 1.000000e+00, ptr %455, align 8, !tbaa !9
  br label %608

456:                                              ; preds = %._crit_edge1788
  %457 = fmul double %297, 1.000000e+02
  store double %457, ptr %22, align 8, !tbaa !9
  %458 = mul nsw i64 %.014421883, %40
  %459 = getelementptr double, ptr %42, i64 %.014421883
  %460 = getelementptr double, ptr %459, i64 %458
  %461 = mul i64 %.014421883, %272
  %462 = getelementptr inbounds double, ptr %45, i64 %461
  %463 = call i32 @dlag2_(ptr noundef %460, ptr noundef nonnull %5, ptr noundef nonnull %462, ptr noundef nonnull %7, ptr noundef nonnull %22, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull %37, ptr noundef nonnull %31, ptr noundef nonnull %36) #7
  %464 = load double, ptr %36, align 8, !tbaa !9
  %465 = fneg double %464
  store double %465, ptr %36, align 8, !tbaa !9
  %466 = fcmp oeq double %464, 0.000000e+00
  br i1 %466, label %467, label %468

467:                                              ; preds = %456
  store i64 %.014421883, ptr %15, align 8, !tbaa !5
  br label %.loopexit1713

468:                                              ; preds = %456
  %469 = load double, ptr %33, align 8
  %470 = fcmp oge double %469, 0.000000e+00
  %471 = fneg double %469
  %472 = select i1 %470, double %469, double %471
  %473 = load double, ptr %37, align 8
  %474 = fcmp oge double %473, 0.000000e+00
  %475 = fneg double %473
  %476 = select i1 %474, double %473, double %475
  %477 = fcmp ole double %464, 0.000000e+00
  %478 = select i1 %477, double %465, double %464
  %479 = fadd double %478, %476
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %480 = fmul double %152, %472
  %481 = load double, ptr %38, align 8
  %482 = fcmp uge double %480, %481
  %483 = fcmp ult double %472, %481
  %or.cond1611 = or i1 %482, %483
  br i1 %or.cond1611, label %487, label %484

484:                                              ; preds = %468
  %485 = fdiv double %481, %152
  %486 = fdiv double %485, %472
  store double %486, ptr %34, align 8, !tbaa !9
  br label %487

487:                                              ; preds = %484, %468
  %488 = phi double [ %486, %484 ], [ 1.000000e+00, %468 ]
  %489 = fmul double %152, %479
  %490 = fcmp uge double %489, %481
  %491 = fcmp ult double %479, %481
  %or.cond1612 = or i1 %491, %490
  br i1 %or.cond1612, label %497, label %492

492:                                              ; preds = %487
  %493 = fdiv double %481, %152
  %494 = fdiv double %493, %479
  %495 = fcmp oge double %488, %494
  %496 = select i1 %495, double %488, double %494
  store double %496, ptr %34, align 8, !tbaa !9
  br label %497

497:                                              ; preds = %492, %487
  %.pr16652162 = phi double [ %496, %492 ], [ %488, %487 ]
  %498 = fmul double %472, %481
  %499 = fcmp ogt double %498, %276
  br i1 %499, label %500, label %502

500:                                              ; preds = %497
  %501 = fdiv double %276, %498
  store double %501, ptr %34, align 8, !tbaa !9
  br label %502

502:                                              ; preds = %500, %497
  %503 = phi double [ %501, %500 ], [ %.pr16652162, %497 ]
  %504 = fmul double %481, %479
  %505 = fcmp ogt double %504, %277
  br i1 %505, label %506, label %thread-pre-split1664

506:                                              ; preds = %502
  store double %503, ptr %22, align 8, !tbaa !9
  %507 = fdiv double %277, %504
  %508 = fcmp ole double %503, %507
  %509 = select i1 %508, double %503, double %507
  store double %509, ptr %34, align 8, !tbaa !9
  br label %thread-pre-split1664

thread-pre-split1664:                             ; preds = %502, %506
  %510 = phi double [ %509, %506 ], [ %503, %502 ]
  %511 = fcmp une double %510, 1.000000e+00
  %512 = insertelement <2 x double> poison, double %472, i64 0
  %513 = insertelement <2 x double> %512, double %479, i64 1
  br i1 %511, label %514, label %._crit_edge2172

514:                                              ; preds = %thread-pre-split1664
  %515 = fmul double %469, %510
  store double %515, ptr %33, align 8, !tbaa !9
  %516 = fcmp oge double %515, 0.000000e+00
  %517 = fneg double %515
  %518 = select i1 %516, double %515, double %517
  %519 = fmul double %473, %510
  store double %519, ptr %37, align 8, !tbaa !9
  %520 = fmul double %510, %465
  store double %520, ptr %36, align 8, !tbaa !9
  %521 = fcmp oge double %519, 0.000000e+00
  %522 = fneg double %519
  %523 = select i1 %521, double %519, double %522
  %524 = fcmp oge double %520, 0.000000e+00
  %525 = fneg double %520
  %526 = select i1 %524, double %520, double %525
  %527 = fadd double %523, %526
  %528 = insertelement <2 x double> poison, double %518, i64 0
  %529 = insertelement <2 x double> %528, double %527, i64 1
  br label %._crit_edge2172

._crit_edge2172:                                  ; preds = %thread-pre-split1664, %514
  %.pre-phi2176 = phi double [ %525, %514 ], [ %464, %thread-pre-split1664 ]
  %.pre-phi2171 = phi double [ %522, %514 ], [ %475, %thread-pre-split1664 ]
  %530 = phi double [ %520, %514 ], [ %465, %thread-pre-split1664 ]
  %531 = phi double [ %519, %514 ], [ %473, %thread-pre-split1664 ]
  %532 = phi double [ %515, %514 ], [ %469, %thread-pre-split1664 ]
  %533 = phi <2 x double> [ %529, %514 ], [ %513, %thread-pre-split1664 ]
  %534 = add nuw nsw i64 %.014421883, 1
  %535 = getelementptr double, ptr %42, i64 %534
  %536 = getelementptr double, ptr %535, i64 %458
  %537 = load double, ptr %536, align 8, !tbaa !9
  %538 = fmul double %532, %537
  store double %538, ptr %28, align 8, !tbaa !9
  %539 = load double, ptr %460, align 8, !tbaa !9
  %540 = load double, ptr %462, align 8, !tbaa !9
  %541 = fmul double %540, %.pre-phi2171
  %542 = call double @llvm.fmuladd.f64(double %532, double %539, double %541)
  %543 = fmul double %540, %.pre-phi2176
  %544 = fcmp oge double %538, 0.000000e+00
  %545 = fneg double %538
  %546 = select i1 %544, double %538, double %545
  %547 = fcmp oge double %542, 0.000000e+00
  %548 = fneg double %542
  %549 = select i1 %547, double %542, double %548
  %550 = fcmp oge double %543, 0.000000e+00
  %551 = fneg double %543
  %552 = select i1 %550, double %543, double %551
  %553 = fadd double %549, %552
  %554 = fcmp ogt double %546, %553
  %555 = load i64, ptr %3, align 8, !tbaa !5
  %.idx1575 = shl i64 %555, 4
  %.idx1576 = mul i64 %555, 24
  br i1 %554, label %556, label %565

556:                                              ; preds = %._crit_edge2172
  %557 = getelementptr i8, ptr %52, i64 %.idx1575
  %558 = getelementptr double, ptr %557, i64 %.014421883
  store double 1.000000e+00, ptr %558, align 8, !tbaa !9
  %559 = getelementptr i8, ptr %52, i64 %.idx1576
  %560 = getelementptr double, ptr %559, i64 %.014421883
  store double 0.000000e+00, ptr %560, align 8, !tbaa !9
  %561 = fdiv double %548, %538
  %562 = getelementptr i8, ptr %14, i64 %.idx1575
  %563 = getelementptr double, ptr %562, i64 %.014421883
  store double %561, ptr %563, align 8, !tbaa !9
  %564 = fdiv double %551, %538
  br label %588

565:                                              ; preds = %._crit_edge2172
  %566 = getelementptr i8, ptr %14, i64 %.idx1575
  %567 = getelementptr double, ptr %566, i64 %.014421883
  store double 1.000000e+00, ptr %567, align 8, !tbaa !9
  %568 = getelementptr i8, ptr %14, i64 %.idx1576
  %569 = getelementptr double, ptr %568, i64 %.014421883
  store double 0.000000e+00, ptr %569, align 8, !tbaa !9
  %570 = mul nsw i64 %534, %40
  %571 = getelementptr double, ptr %459, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !9
  %573 = fmul double %532, %572
  store double %573, ptr %28, align 8, !tbaa !9
  %574 = mul i64 %534, %272
  %575 = getelementptr inbounds double, ptr %45, i64 %574
  %576 = load double, ptr %575, align 8, !tbaa !9
  %577 = getelementptr double, ptr %535, i64 %570
  %578 = load double, ptr %577, align 8, !tbaa !9
  %579 = fneg double %532
  %580 = fmul double %578, %579
  %581 = call double @llvm.fmuladd.f64(double %531, double %576, double %580)
  %582 = fdiv double %581, %573
  %583 = getelementptr i8, ptr %52, i64 %.idx1575
  %584 = getelementptr double, ptr %583, i64 %.014421883
  store double %582, ptr %584, align 8, !tbaa !9
  %585 = load double, ptr %575, align 8, !tbaa !9
  %586 = fmul double %530, %585
  %587 = fdiv double %586, %573
  br label %588

588:                                              ; preds = %565, %556
  %.sink2259 = phi ptr [ %52, %565 ], [ %14, %556 ]
  %.sink2256 = phi double [ %587, %565 ], [ %564, %556 ]
  %589 = getelementptr i8, ptr %.sink2259, i64 %.idx1576
  %590 = getelementptr double, ptr %589, i64 %.014421883
  store double %.sink2256, ptr %590, align 8, !tbaa !9
  %591 = getelementptr i8, ptr %52, i64 %.idx1575
  %592 = getelementptr double, ptr %591, i64 %.014421883
  %.idx2645 = mul i64 %555, 24
  %593 = getelementptr i8, ptr %52, i64 %.idx2645
  %594 = getelementptr double, ptr %593, i64 %.014421883
  %595 = load <2 x double>, ptr %592, align 8, !tbaa !9
  %596 = fcmp oge <2 x double> %595, zeroinitializer
  %597 = fneg <2 x double> %595
  %598 = select <2 x i1> %596, <2 x double> %595, <2 x double> %597
  %599 = load <2 x double>, ptr %594, align 8, !tbaa !9
  %600 = fcmp oge <2 x double> %599, zeroinitializer
  %601 = fneg <2 x double> %599
  %602 = select <2 x i1> %600, <2 x double> %599, <2 x double> %601
  %603 = fadd <2 x double> %598, %602
  %604 = extractelement <2 x double> %603, i64 0
  %605 = extractelement <2 x double> %603, i64 1
  %606 = fcmp oge double %604, %605
  %607 = select i1 %606, double %604, double %605
  %.pre = load i64, ptr %24, align 8, !tbaa !5
  br label %608

608:                                              ; preds = %588, %.thread2204
  %609 = phi i64 [ %.pre, %588 ], [ %336, %.thread2204 ]
  %610 = phi i64 [ %555, %588 ], [ %298, %.thread2204 ]
  %611 = phi double [ %481, %588 ], [ %297, %.thread2204 ]
  %.01394 = phi double [ %607, %588 ], [ 1.000000e+00, %.thread2204 ]
  %612 = phi <2 x double> [ %533, %588 ], [ %453, %.thread2204 ]
  %613 = fmul <2 x double> %281, %612
  %614 = fmul <2 x double> %264, %613
  %615 = extractelement <2 x double> %614, i64 0
  %616 = extractelement <2 x double> %614, i64 1
  %617 = fcmp oge double %615, %616
  %618 = select i1 %617, double %615, double %616
  store double %618, ptr %22, align 8, !tbaa !9
  %619 = fcmp oge double %618, %611
  %620 = select i1 %619, double %618, double %611
  store double %620, ptr %27, align 8, !tbaa !9
  %621 = add nsw i64 %609, %.014421883
  %.not15811830 = icmp sgt i64 %621, %610
  br i1 %.not15811830, label %._crit_edge1839, label %.lr.ph1838.preheader

.lr.ph1838.preheader:                             ; preds = %608
  %622 = add i64 %609, -1
  %623 = extractelement <2 x double> %612, i64 1
  %624 = extractelement <2 x double> %612, i64 0
  %625 = add nuw nsw i64 %.014421883, 1
  %626 = add nuw nsw i64 %.014421883, 1
  br label %.lr.ph1838

.lr.ph1838:                                       ; preds = %.lr.ph1838.preheader, %846
  %indvar2299 = phi i64 [ %indvar.next2300, %846 ], [ 0, %.lr.ph1838.preheader ]
  %.013871836 = phi i64 [ %.21389, %846 ], [ 0, %.lr.ph1838.preheader ]
  %.113951835 = phi double [ %.41398, %846 ], [ %.01394, %.lr.ph1838.preheader ]
  %.314521831 = phi i64 [ %847, %846 ], [ %621, %.lr.ph1838.preheader ]
  %627 = add i64 %609, %indvar2299
  %628 = add i64 %622, %indvar2299
  %629 = add i64 %609, %indvar2299
  %630 = add i64 %609, %indvar2299
  %.not1590 = icmp eq i64 %.013871836, 0
  br i1 %.not1590, label %631, label %846

631:                                              ; preds = %.lr.ph1838
  store i64 1, ptr %23, align 8, !tbaa !5
  %632 = mul i64 %.314521831, %272
  %633 = getelementptr inbounds double, ptr %45, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !9
  store double %634, ptr %32, align 16, !tbaa !9
  %635 = load i64, ptr %3, align 8, !tbaa !5
  %636 = icmp slt i64 %.314521831, %635
  br i1 %636, label %637, label %648

637:                                              ; preds = %631
  %638 = add nsw i64 %.314521831, 1
  %639 = mul nsw i64 %.314521831, %40
  %640 = getelementptr double, ptr %42, i64 %638
  %641 = getelementptr double, ptr %640, i64 %639
  %642 = load double, ptr %641, align 8, !tbaa !9
  %643 = fcmp une double %642, 0.000000e+00
  br i1 %643, label %644, label %648

644:                                              ; preds = %637
  %645 = mul i64 %638, %272
  %646 = getelementptr inbounds double, ptr %45, i64 %645
  %647 = load double, ptr %646, align 8, !tbaa !9
  store double %647, ptr %274, align 8, !tbaa !9
  store i64 2, ptr %23, align 8, !tbaa !5
  br label %648

648:                                              ; preds = %637, %644, %631
  %649 = phi i64 [ 2, %644 ], [ 1, %637 ], [ 1, %631 ]
  %.not1591 = phi i1 [ false, %644 ], [ true, %637 ], [ true, %631 ]
  %.11388 = phi i64 [ 1, %644 ], [ 0, %637 ], [ 0, %631 ]
  %650 = fcmp ole double %.113951835, 1.000000e+00
  %651 = select i1 %650, double 1.000000e+00, double %.113951835
  %652 = fdiv double 1.000000e+00, %651
  %653 = getelementptr inbounds double, ptr %52, i64 %.314521831
  %654 = load double, ptr %653, align 8, !tbaa !9
  %655 = getelementptr double, ptr %52, i64 %635
  %656 = getelementptr double, ptr %655, i64 %.314521831
  %657 = load double, ptr %656, align 8, !tbaa !9
  %658 = fcmp oge double %654, %657
  %659 = select i1 %658, double %654, double %657
  store double %659, ptr %22, align 8, !tbaa !9
  %660 = fmul double %623, %657
  %661 = call double @llvm.fmuladd.f64(double %624, double %654, double %660)
  %662 = fcmp oge double %659, %661
  %663 = select i1 %662, double %659, double %661
  store double %663, ptr %28, align 8, !tbaa !9
  br i1 %.not1591, label %678, label %664

664:                                              ; preds = %648
  %665 = getelementptr double, ptr %14, i64 %.314521831
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = fcmp oge double %663, %666
  %668 = select i1 %667, double %663, double %666
  %669 = getelementptr double, ptr %14, i64 %635
  %670 = getelementptr double, ptr %669, i64 %.314521831
  %671 = load double, ptr %670, align 8, !tbaa !9
  %672 = fcmp oge double %668, %671
  %673 = select i1 %672, double %668, double %671
  store double %673, ptr %22, align 8, !tbaa !9
  %674 = fmul double %623, %671
  %675 = call double @llvm.fmuladd.f64(double %624, double %666, double %674)
  %676 = fcmp oge double %673, %675
  %677 = select i1 %676, double %673, double %675
  store double %677, ptr %28, align 8, !tbaa !9
  br label %678

678:                                              ; preds = %664, %648
  %679 = phi double [ %677, %664 ], [ %663, %648 ]
  %680 = fmul double %159, %652
  %681 = fcmp ogt double %679, %680
  %.pre2163 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %681, label %682, label %699

682:                                              ; preds = %678
  %683 = add nsw i64 %.pre2163, -1
  store i64 %683, ptr %21, align 8, !tbaa !5
  %.not1592.not1793 = icmp sgt i64 %.pre2163, 0
  %.not1600.not1789 = icmp slt i64 %.014421883, %.314521831
  %or.cond = select i1 %.not1592.not1793, i1 %.not1600.not1789, i1 false
  br i1 %or.cond, label %.preheader1715.us.preheader, label %._crit_edge1795

.preheader1715.us.preheader:                      ; preds = %682
  %min.iters.check2320 = icmp ult i64 %629, 4
  %n.vec2323 = and i64 %629, -4
  %ind.end2324 = add i64 %.014421883, %n.vec2323
  %broadcast.splatinsert2331 = insertelement <2 x double> poison, double %652, i64 0
  %broadcast.splat2332 = shufflevector <2 x double> %broadcast.splatinsert2331, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n2334 = icmp eq i64 %629, %n.vec2323
  br label %.preheader1715.us

.preheader1715.us:                                ; preds = %.preheader1715.us.preheader, %._crit_edge1792.us
  %.014101794.us = phi i64 [ %697, %._crit_edge1792.us ], [ 0, %.preheader1715.us.preheader ]
  %684 = add nuw nsw i64 %.014101794.us, 2
  %685 = mul nsw i64 %684, %635
  %686 = getelementptr double, ptr %52, i64 %685
  br i1 %min.iters.check2320, label %scalar.ph2319.preheader, label %vector.ph2321

vector.ph2321:                                    ; preds = %.preheader1715.us
  %687 = getelementptr double, ptr %686, i64 %.014421883
  br label %vector.body2326

vector.body2326:                                  ; preds = %vector.body2326, %vector.ph2321
  %index2327 = phi i64 [ 0, %vector.ph2321 ], [ %index.next2333, %vector.body2326 ]
  %688 = getelementptr double, ptr %687, i64 %index2327
  %689 = getelementptr i8, ptr %688, i64 16
  %wide.load2329 = load <2 x double>, ptr %688, align 8, !tbaa !9
  %wide.load2330 = load <2 x double>, ptr %689, align 8, !tbaa !9
  %690 = fmul <2 x double> %broadcast.splat2332, %wide.load2329
  %691 = fmul <2 x double> %broadcast.splat2332, %wide.load2330
  store <2 x double> %690, ptr %688, align 8, !tbaa !9
  store <2 x double> %691, ptr %689, align 8, !tbaa !9
  %index.next2333 = add nuw i64 %index2327, 4
  %692 = icmp eq i64 %index.next2333, %n.vec2323
  br i1 %692, label %middle.block2318, label %vector.body2326, !llvm.loop !17

middle.block2318:                                 ; preds = %vector.body2326
  br i1 %cmp.n2334, label %._crit_edge1792.us, label %scalar.ph2319.preheader

scalar.ph2319.preheader:                          ; preds = %middle.block2318, %.preheader1715.us
  %.214251790.us.ph = phi i64 [ %.014421883, %.preheader1715.us ], [ %ind.end2324, %middle.block2318 ]
  br label %scalar.ph2319

scalar.ph2319:                                    ; preds = %scalar.ph2319.preheader, %scalar.ph2319
  %.214251790.us = phi i64 [ %696, %scalar.ph2319 ], [ %.214251790.us.ph, %scalar.ph2319.preheader ]
  %693 = getelementptr double, ptr %686, i64 %.214251790.us
  %694 = load double, ptr %693, align 8, !tbaa !9
  %695 = fmul double %652, %694
  store double %695, ptr %693, align 8, !tbaa !9
  %696 = add nuw nsw i64 %.214251790.us, 1
  %exitcond2111.not = icmp eq i64 %696, %.314521831
  br i1 %exitcond2111.not, label %._crit_edge1792.us, label %scalar.ph2319, !llvm.loop !20

._crit_edge1792.us:                               ; preds = %scalar.ph2319, %middle.block2318
  %697 = add nuw nsw i64 %.014101794.us, 1
  %exitcond2112.not = icmp eq i64 %697, %.pre2163
  br i1 %exitcond2112.not, label %._crit_edge1795, label %.preheader1715.us, !llvm.loop !21

._crit_edge1795:                                  ; preds = %._crit_edge1792.us, %682
  %698 = fmul double %.113951835, %652
  br label %699

699:                                              ; preds = %._crit_edge1795, %678
  %.21396 = phi double [ %698, %._crit_edge1795 ], [ %.113951835, %678 ]
  %.not15931813 = icmp slt i64 %.pre2163, 1
  br i1 %.not15931813, label %.lr.ph1821, label %.lr.ph1811.preheader

.lr.ph1811.preheader:                             ; preds = %699
  %.not1599.not1796 = icmp slt i64 %.014421883, %.314521831
  %700 = shl nuw nsw i64 %649, 3
  %701 = mul nsw i64 %.314521831, %40
  %invariant.gep1801.us = getelementptr double, ptr %42, i64 %701
  %702 = mul nsw i64 %.314521831, %43
  %invariant.gep1803.us = getelementptr double, ptr %45, i64 %702
  %xtraiter2674 = and i64 %627, 1
  %lcmp.mod2675.not = icmp eq i64 %xtraiter2674, 0
  %gep1802.us.prol = getelementptr double, ptr %invariant.gep1801.us, i64 %.014421883
  %gep1804.us.prol = getelementptr double, ptr %invariant.gep1803.us, i64 %.014421883
  %703 = icmp eq i64 %628, 0
  %704 = add i64 %.314521831, 1
  %705 = mul nsw i64 %704, %40
  %invariant.gep1801.us.1 = getelementptr double, ptr %42, i64 %705
  %706 = mul nsw i64 %704, %43
  %invariant.gep1803.us.1 = getelementptr double, ptr %45, i64 %706
  %xtraiter2674.1 = and i64 %627, 1
  %lcmp.mod2675.1.not = icmp eq i64 %xtraiter2674.1, 0
  %gep1802.us.prol.1 = getelementptr double, ptr %invariant.gep1801.us.1, i64 %.014421883
  %gep1804.us.prol.1 = getelementptr double, ptr %invariant.gep1803.us.1, i64 %.014421883
  %707 = icmp eq i64 %628, 0
  br label %.lr.ph1811

.lr.ph1811:                                       ; preds = %.lr.ph1811.preheader, %._crit_edge1812
  %indvar = phi i64 [ 0, %.lr.ph1811.preheader ], [ %indvar.next, %._crit_edge1812 ]
  %.114111814 = phi i64 [ 1, %.lr.ph1811.preheader ], [ %709, %._crit_edge1812 ]
  %708 = shl nuw i64 %.114111814, 1
  %709 = add nuw nsw i64 %.114111814, 1
  %710 = mul nsw i64 %709, %635
  %711 = getelementptr double, ptr %52, i64 %710
  br i1 %.not1599.not1796, label %.lr.ph1799.us, label %.lr.ph1811.split.preheader

.lr.ph1811.split.preheader:                       ; preds = %.lr.ph1811
  %712 = shl i64 %indvar, 4
  %scevgep2113 = getelementptr i8, ptr %30, i64 %712
  %scevgep2114 = getelementptr i8, ptr %29, i64 %712
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %scevgep2113, i8 0, i64 %700, i1 false), !tbaa !9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(1) %scevgep2114, i8 0, i64 %700, i1 false), !tbaa !9
  br label %._crit_edge1812

.lr.ph1799.us:                                    ; preds = %.lr.ph1811
  %713 = add i64 %708, -2
  %714 = getelementptr inbounds [4 x double], ptr %30, i64 0, i64 %713
  %715 = getelementptr inbounds [4 x double], ptr %29, i64 0, i64 %713
  br i1 %lcmp.mod2675.not, label %.prol.loopexit2673, label %.prol.loopexit2673.unr-lcssa

.prol.loopexit2673.unr-lcssa:                     ; preds = %.lr.ph1799.us
  %716 = load double, ptr %gep1802.us.prol, align 8, !tbaa !9
  %717 = getelementptr double, ptr %711, i64 %.014421883
  %718 = load double, ptr %717, align 8, !tbaa !9
  %719 = load double, ptr %gep1804.us.prol, align 8, !tbaa !9
  %720 = insertelement <2 x double> poison, double %719, i64 0
  %721 = insertelement <2 x double> %720, double %716, i64 1
  %722 = insertelement <2 x double> poison, double %718, i64 0
  %723 = shufflevector <2 x double> %722, <2 x double> poison, <2 x i32> zeroinitializer
  %724 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %721, <2 x double> %723, <2 x double> zeroinitializer)
  br label %.prol.loopexit2673

.prol.loopexit2673:                               ; preds = %.prol.loopexit2673.unr-lcssa, %.lr.ph1799.us
  %.lcssa2655.unr = phi <2 x double> [ poison, %.lr.ph1799.us ], [ %724, %.prol.loopexit2673.unr-lcssa ]
  %.314261797.us.unr = phi i64 [ %.014421883, %.lr.ph1799.us ], [ %625, %.prol.loopexit2673.unr-lcssa ]
  %.unr2676 = phi <2 x double> [ zeroinitializer, %.lr.ph1799.us ], [ %724, %.prol.loopexit2673.unr-lcssa ]
  br i1 %703, label %._crit_edge1800.us, label %.lr.ph1799.us.new

.lr.ph1799.us.new:                                ; preds = %.prol.loopexit2673, %.lr.ph1799.us.new
  %.314261797.us = phi i64 [ %745, %.lr.ph1799.us.new ], [ %.314261797.us.unr, %.prol.loopexit2673 ]
  %725 = phi <2 x double> [ %744, %.lr.ph1799.us.new ], [ %.unr2676, %.prol.loopexit2673 ]
  %gep1802.us = getelementptr double, ptr %invariant.gep1801.us, i64 %.314261797.us
  %726 = load double, ptr %gep1802.us, align 8, !tbaa !9
  %727 = getelementptr double, ptr %711, i64 %.314261797.us
  %728 = load double, ptr %727, align 8, !tbaa !9
  %gep1804.us = getelementptr double, ptr %invariant.gep1803.us, i64 %.314261797.us
  %729 = load double, ptr %gep1804.us, align 8, !tbaa !9
  %730 = insertelement <2 x double> poison, double %729, i64 0
  %731 = insertelement <2 x double> %730, double %726, i64 1
  %732 = insertelement <2 x double> poison, double %728, i64 0
  %733 = shufflevector <2 x double> %732, <2 x double> poison, <2 x i32> zeroinitializer
  %734 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %731, <2 x double> %733, <2 x double> %725)
  %735 = add nuw nsw i64 %.314261797.us, 1
  %gep1802.us.1 = getelementptr double, ptr %invariant.gep1801.us, i64 %735
  %736 = load double, ptr %gep1802.us.1, align 8, !tbaa !9
  %737 = getelementptr double, ptr %711, i64 %735
  %738 = load double, ptr %737, align 8, !tbaa !9
  %gep1804.us.1 = getelementptr double, ptr %invariant.gep1803.us, i64 %735
  %739 = load double, ptr %gep1804.us.1, align 8, !tbaa !9
  %740 = insertelement <2 x double> poison, double %739, i64 0
  %741 = insertelement <2 x double> %740, double %736, i64 1
  %742 = insertelement <2 x double> poison, double %738, i64 0
  %743 = shufflevector <2 x double> %742, <2 x double> poison, <2 x i32> zeroinitializer
  %744 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %741, <2 x double> %743, <2 x double> %734)
  %745 = add nuw nsw i64 %.314261797.us, 2
  %exitcond2115.not.1 = icmp eq i64 %745, %.314521831
  br i1 %exitcond2115.not.1, label %._crit_edge1800.us, label %.lr.ph1799.us.new, !llvm.loop !22

._crit_edge1800.us:                               ; preds = %.lr.ph1799.us.new, %.prol.loopexit2673
  %.lcssa2655 = phi <2 x double> [ %.lcssa2655.unr, %.prol.loopexit2673 ], [ %744, %.lr.ph1799.us.new ]
  %746 = extractelement <2 x double> %.lcssa2655, i64 1
  store double %746, ptr %714, align 16, !tbaa !9
  %747 = extractelement <2 x double> %.lcssa2655, i64 0
  store double %747, ptr %715, align 16, !tbaa !9
  br i1 %.not1591, label %._crit_edge1812, label %.lr.ph1799.us.1, !llvm.loop !23

.lr.ph1799.us.1:                                  ; preds = %._crit_edge1800.us
  %748 = add i64 %708, -1
  %749 = getelementptr inbounds [4 x double], ptr %30, i64 0, i64 %748
  %750 = getelementptr inbounds [4 x double], ptr %29, i64 0, i64 %748
  br i1 %lcmp.mod2675.1.not, label %.prol.loopexit2673.1, label %.prol.loopexit2673.unr-lcssa.1

.prol.loopexit2673.unr-lcssa.1:                   ; preds = %.lr.ph1799.us.1
  %751 = load double, ptr %gep1802.us.prol.1, align 8, !tbaa !9
  %752 = getelementptr double, ptr %711, i64 %.014421883
  %753 = load double, ptr %752, align 8, !tbaa !9
  %754 = load double, ptr %gep1804.us.prol.1, align 8, !tbaa !9
  %755 = insertelement <2 x double> poison, double %754, i64 0
  %756 = insertelement <2 x double> %755, double %751, i64 1
  %757 = insertelement <2 x double> poison, double %753, i64 0
  %758 = shufflevector <2 x double> %757, <2 x double> poison, <2 x i32> zeroinitializer
  %759 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %756, <2 x double> %758, <2 x double> zeroinitializer)
  br label %.prol.loopexit2673.1

.prol.loopexit2673.1:                             ; preds = %.prol.loopexit2673.unr-lcssa.1, %.lr.ph1799.us.1
  %.lcssa2655.unr.1 = phi <2 x double> [ poison, %.lr.ph1799.us.1 ], [ %759, %.prol.loopexit2673.unr-lcssa.1 ]
  %.314261797.us.unr.1 = phi i64 [ %.014421883, %.lr.ph1799.us.1 ], [ %626, %.prol.loopexit2673.unr-lcssa.1 ]
  %.unr2676.1 = phi <2 x double> [ zeroinitializer, %.lr.ph1799.us.1 ], [ %759, %.prol.loopexit2673.unr-lcssa.1 ]
  br i1 %707, label %._crit_edge1800.us.1, label %.lr.ph1799.us.new.1

.lr.ph1799.us.new.1:                              ; preds = %.prol.loopexit2673.1, %.lr.ph1799.us.new.1
  %.314261797.us.1 = phi i64 [ %780, %.lr.ph1799.us.new.1 ], [ %.314261797.us.unr.1, %.prol.loopexit2673.1 ]
  %760 = phi <2 x double> [ %779, %.lr.ph1799.us.new.1 ], [ %.unr2676.1, %.prol.loopexit2673.1 ]
  %gep1802.us.12677 = getelementptr double, ptr %invariant.gep1801.us.1, i64 %.314261797.us.1
  %761 = load double, ptr %gep1802.us.12677, align 8, !tbaa !9
  %762 = getelementptr double, ptr %711, i64 %.314261797.us.1
  %763 = load double, ptr %762, align 8, !tbaa !9
  %gep1804.us.12678 = getelementptr double, ptr %invariant.gep1803.us.1, i64 %.314261797.us.1
  %764 = load double, ptr %gep1804.us.12678, align 8, !tbaa !9
  %765 = insertelement <2 x double> poison, double %764, i64 0
  %766 = insertelement <2 x double> %765, double %761, i64 1
  %767 = insertelement <2 x double> poison, double %763, i64 0
  %768 = shufflevector <2 x double> %767, <2 x double> poison, <2 x i32> zeroinitializer
  %769 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %766, <2 x double> %768, <2 x double> %760)
  %770 = add nuw nsw i64 %.314261797.us.1, 1
  %gep1802.us.1.1 = getelementptr double, ptr %invariant.gep1801.us.1, i64 %770
  %771 = load double, ptr %gep1802.us.1.1, align 8, !tbaa !9
  %772 = getelementptr double, ptr %711, i64 %770
  %773 = load double, ptr %772, align 8, !tbaa !9
  %gep1804.us.1.1 = getelementptr double, ptr %invariant.gep1803.us.1, i64 %770
  %774 = load double, ptr %gep1804.us.1.1, align 8, !tbaa !9
  %775 = insertelement <2 x double> poison, double %774, i64 0
  %776 = insertelement <2 x double> %775, double %771, i64 1
  %777 = insertelement <2 x double> poison, double %773, i64 0
  %778 = shufflevector <2 x double> %777, <2 x double> poison, <2 x i32> zeroinitializer
  %779 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %776, <2 x double> %778, <2 x double> %769)
  %780 = add nuw nsw i64 %.314261797.us.1, 2
  %exitcond2115.not.1.1 = icmp eq i64 %780, %.314521831
  br i1 %exitcond2115.not.1.1, label %._crit_edge1800.us.1, label %.lr.ph1799.us.new.1, !llvm.loop !22

._crit_edge1800.us.1:                             ; preds = %.lr.ph1799.us.new.1, %.prol.loopexit2673.1
  %.lcssa2655.1 = phi <2 x double> [ %.lcssa2655.unr.1, %.prol.loopexit2673.1 ], [ %779, %.lr.ph1799.us.new.1 ]
  %781 = extractelement <2 x double> %.lcssa2655.1, i64 1
  store double %781, ptr %749, align 8, !tbaa !9
  %782 = extractelement <2 x double> %.lcssa2655.1, i64 0
  store double %782, ptr %750, align 8, !tbaa !9
  br label %._crit_edge1812

._crit_edge1812:                                  ; preds = %._crit_edge1800.us, %._crit_edge1800.us.1, %.lr.ph1811.split.preheader
  %indvar.next = add nuw nsw i64 %indvar, 1
  %exitcond2119.not = icmp eq i64 %indvar.next, %.pre2163
  br i1 %exitcond2119.not, label %.lr.ph1821, label %.lr.ph1811, !llvm.loop !24

.lr.ph1821:                                       ; preds = %._crit_edge1812, %699
  store i64 %649, ptr %21, align 8, !tbaa !5
  %783 = load double, ptr %33, align 8
  %784 = fneg double %783
  %785 = load double, ptr %37, align 8
  %786 = load double, ptr %36, align 8
  %787 = fneg double %786
  br i1 %.not1563164216571658, label %.lr.ph1821.split.us, label %.lr.ph1821.split

.lr.ph1821.split.us:                              ; preds = %.lr.ph1821
  %788 = load double, ptr %30, align 16, !tbaa !9
  %789 = load double, ptr %29, align 16, !tbaa !9
  %790 = fmul double %785, %789
  %791 = call double @llvm.fmuladd.f64(double %784, double %788, double %790)
  store double %791, ptr %26, align 16, !tbaa !9
  br i1 %.not1591, label %._crit_edge1822, label %.lr.ph1821.split.us.1, !llvm.loop !25

.lr.ph1821.split.us.1:                            ; preds = %.lr.ph1821.split.us
  %792 = load double, ptr %292, align 8, !tbaa !9
  %793 = load double, ptr %293, align 8, !tbaa !9
  %794 = fmul double %785, %793
  %795 = call double @llvm.fmuladd.f64(double %784, double %792, double %794)
  store double %795, ptr %294, align 8, !tbaa !9
  br label %._crit_edge1822

.lr.ph1821.split:                                 ; preds = %.lr.ph1821
  %796 = load double, ptr %30, align 16, !tbaa !9
  %797 = load double, ptr %29, align 16, !tbaa !9
  %798 = fmul double %785, %797
  %799 = call double @llvm.fmuladd.f64(double %784, double %796, double %798)
  %800 = load double, ptr %283, align 16, !tbaa !9
  %801 = call double @llvm.fmuladd.f64(double %787, double %800, double %799)
  store double %801, ptr %26, align 16, !tbaa !9
  %802 = load double, ptr %284, align 16, !tbaa !9
  %803 = fmul double %785, %800
  %804 = call double @llvm.fmuladd.f64(double %784, double %802, double %803)
  %805 = call double @llvm.fmuladd.f64(double %786, double %797, double %804)
  store double %805, ptr %285, align 16, !tbaa !9
  br i1 %.not1591, label %._crit_edge1822, label %.lr.ph1821.split.1, !llvm.loop !25

.lr.ph1821.split.1:                               ; preds = %.lr.ph1821.split
  %806 = load double, ptr %286, align 8, !tbaa !9
  %807 = load double, ptr %287, align 8, !tbaa !9
  %808 = fmul double %785, %807
  %809 = call double @llvm.fmuladd.f64(double %784, double %806, double %808)
  %810 = load double, ptr %288, align 8, !tbaa !9
  %811 = call double @llvm.fmuladd.f64(double %787, double %810, double %809)
  store double %811, ptr %289, align 8, !tbaa !9
  %812 = load double, ptr %290, align 8, !tbaa !9
  %813 = fmul double %785, %810
  %814 = call double @llvm.fmuladd.f64(double %784, double %812, double %813)
  %815 = call double @llvm.fmuladd.f64(double %786, double %807, double %814)
  store double %815, ptr %291, align 8, !tbaa !9
  br label %._crit_edge1822

._crit_edge1822:                                  ; preds = %.lr.ph1821.split, %.lr.ph1821.split.1, %.lr.ph1821.split.us, %.lr.ph1821.split.us.1
  %816 = mul i64 %.314521831, %271
  %817 = getelementptr inbounds double, ptr %42, i64 %816
  %.idx1595 = shl i64 %635, 4
  %818 = getelementptr i8, ptr %52, i64 %.idx1595
  %819 = getelementptr double, ptr %818, i64 %.314521831
  %820 = call i32 @dlaln2_(ptr noundef nonnull @c_true, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull %33, ptr noundef nonnull %817, ptr noundef nonnull %5, ptr noundef nonnull %32, ptr noundef nonnull %274, ptr noundef nonnull %26, ptr noundef nonnull @c__2, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef %819, ptr noundef nonnull %3, ptr noundef nonnull %34, ptr noundef nonnull %28, ptr noundef nonnull %35) #7
  %821 = load double, ptr %34, align 8, !tbaa !9
  %822 = fcmp olt double %821, 1.000000e+00
  br i1 %822, label %823, label %842

823:                                              ; preds = %._crit_edge1822
  %824 = load i64, ptr %24, align 8, !tbaa !5
  %825 = add nsw i64 %824, -1
  store i64 %825, ptr %21, align 8, !tbaa !5
  %.not1596.not1827 = icmp sgt i64 %824, 0
  %.not1597.not1823 = icmp slt i64 %.014421883, %.314521831
  %or.cond2260 = select i1 %.not1596.not1827, i1 %.not1597.not1823, i1 false
  br i1 %or.cond2260, label %.preheader1714.lr.ph.split.us, label %._crit_edge1829

.preheader1714.lr.ph.split.us:                    ; preds = %823
  %826 = load i64, ptr %3, align 8, !tbaa !5
  %min.iters.check2303 = icmp ult i64 %630, 4
  %n.vec2306 = and i64 %630, -4
  %ind.end2307 = add i64 %.014421883, %n.vec2306
  %broadcast.splatinsert2314 = insertelement <2 x double> poison, double %821, i64 0
  %broadcast.splat2315 = shufflevector <2 x double> %broadcast.splatinsert2314, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n2317 = icmp eq i64 %630, %n.vec2306
  br label %.preheader1714.us

.preheader1714.us:                                ; preds = %._crit_edge1826.us, %.preheader1714.lr.ph.split.us
  %.214121828.us = phi i64 [ 0, %.preheader1714.lr.ph.split.us ], [ %840, %._crit_edge1826.us ]
  %827 = add nuw nsw i64 %.214121828.us, 2
  %828 = mul nsw i64 %826, %827
  %829 = getelementptr double, ptr %52, i64 %828
  br i1 %min.iters.check2303, label %scalar.ph2302.preheader, label %vector.ph2304

vector.ph2304:                                    ; preds = %.preheader1714.us
  %830 = getelementptr double, ptr %829, i64 %.014421883
  br label %vector.body2309

vector.body2309:                                  ; preds = %vector.body2309, %vector.ph2304
  %index2310 = phi i64 [ 0, %vector.ph2304 ], [ %index.next2316, %vector.body2309 ]
  %831 = getelementptr double, ptr %830, i64 %index2310
  %832 = getelementptr i8, ptr %831, i64 16
  %wide.load2312 = load <2 x double>, ptr %831, align 8, !tbaa !9
  %wide.load2313 = load <2 x double>, ptr %832, align 8, !tbaa !9
  %833 = fmul <2 x double> %broadcast.splat2315, %wide.load2312
  %834 = fmul <2 x double> %broadcast.splat2315, %wide.load2313
  store <2 x double> %833, ptr %831, align 8, !tbaa !9
  store <2 x double> %834, ptr %832, align 8, !tbaa !9
  %index.next2316 = add nuw i64 %index2310, 4
  %835 = icmp eq i64 %index.next2316, %n.vec2306
  br i1 %835, label %middle.block2301, label %vector.body2309, !llvm.loop !26

middle.block2301:                                 ; preds = %vector.body2309
  br i1 %cmp.n2317, label %._crit_edge1826.us, label %scalar.ph2302.preheader

scalar.ph2302.preheader:                          ; preds = %middle.block2301, %.preheader1714.us
  %.414271824.us.ph = phi i64 [ %.014421883, %.preheader1714.us ], [ %ind.end2307, %middle.block2301 ]
  br label %scalar.ph2302

scalar.ph2302:                                    ; preds = %scalar.ph2302.preheader, %scalar.ph2302
  %.414271824.us = phi i64 [ %839, %scalar.ph2302 ], [ %.414271824.us.ph, %scalar.ph2302.preheader ]
  %836 = getelementptr double, ptr %829, i64 %.414271824.us
  %837 = load double, ptr %836, align 8, !tbaa !9
  %838 = fmul double %821, %837
  store double %838, ptr %836, align 8, !tbaa !9
  %839 = add nuw nsw i64 %.414271824.us, 1
  %exitcond2122.not = icmp eq i64 %839, %.314521831
  br i1 %exitcond2122.not, label %._crit_edge1826.us, label %scalar.ph2302, !llvm.loop !27

._crit_edge1826.us:                               ; preds = %scalar.ph2302, %middle.block2301
  %840 = add nuw nsw i64 %.214121828.us, 1
  %exitcond2123.not = icmp eq i64 %840, %824
  br i1 %exitcond2123.not, label %._crit_edge1829, label %.preheader1714.us, !llvm.loop !28

._crit_edge1829:                                  ; preds = %._crit_edge1826.us, %823
  %841 = fmul double %.21396, %821
  br label %842

842:                                              ; preds = %._crit_edge1829, %._crit_edge1822
  %.31397 = phi double [ %841, %._crit_edge1829 ], [ %.21396, %._crit_edge1822 ]
  %843 = load double, ptr %28, align 8
  %844 = fcmp oge double %.31397, %843
  %845 = select i1 %844, double %.31397, double %843
  br label %846

846:                                              ; preds = %.lr.ph1838, %842
  %.41398 = phi double [ %845, %842 ], [ %.113951835, %.lr.ph1838 ]
  %.21389 = phi i64 [ %.11388, %842 ], [ 0, %.lr.ph1838 ]
  %847 = add nsw i64 %.314521831, 1
  %.not1581.not = icmp slt i64 %.314521831, %610
  %indvar.next2300 = add i64 %indvar2299, 1
  br i1 %.not1581.not, label %.lr.ph1838, label %._crit_edge1839, !llvm.loop !29

._crit_edge1839:                                  ; preds = %846, %608
  %848 = add nsw i64 %.014051889, 1
  br i1 %.not1529, label %863, label %849

849:                                              ; preds = %._crit_edge1839
  %850 = load i64, ptr %24, align 8, !tbaa !5
  %invariant.gep1842 = getelementptr double, ptr %52, i64 %.014421883
  %.not1584.not1844 = icmp sgt i64 %850, 0
  %851 = mul nsw i64 %.014421883, %46
  br i1 %.not1584.not1844, label %.lr.ph1847, label %._crit_edge1848

.lr.ph1847:                                       ; preds = %849
  %gep1841 = getelementptr double, ptr %invariant.gep1878, i64 %851
  br label %852

852:                                              ; preds = %.lr.ph1847, %852
  %.314131845 = phi i64 [ 0, %.lr.ph1847 ], [ %861, %852 ]
  %853 = load i64, ptr %3, align 8, !tbaa !5
  %reass.sub = sub i64 %853, %.014421883
  %854 = add i64 %reass.sub, 1
  store i64 %854, ptr %21, align 8, !tbaa !5
  %855 = add nuw nsw i64 %.314131845, 2
  %856 = mul nsw i64 %853, %855
  %gep1843 = getelementptr double, ptr %invariant.gep1842, i64 %856
  %857 = add nuw nsw i64 %.314131845, 4
  %858 = mul nsw i64 %853, %857
  %859 = getelementptr double, ptr %14, i64 %858
  %860 = call i32 @f2c_dgemv(ptr noundef nonnull @.str.9, ptr noundef nonnull %3, ptr noundef nonnull %21, ptr noundef nonnull @c_b34, ptr noundef %gep1841, ptr noundef nonnull %9, ptr noundef %gep1843, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b36, ptr noundef %859, ptr noundef nonnull @c__1) #7
  %861 = add nuw nsw i64 %.314131845, 1
  %exitcond2124.not = icmp eq i64 %861, %850
  br i1 %exitcond2124.not, label %._crit_edge1848, label %852, !llvm.loop !30

._crit_edge1848:                                  ; preds = %852, %849
  %862 = load i64, ptr %3, align 8, !tbaa !5
  %.idx1585 = shl i64 %862, 5
  br label %866

863:                                              ; preds = %._crit_edge1839
  %864 = load i64, ptr %3, align 8, !tbaa !5
  %.idx1583 = shl i64 %864, 4
  %865 = mul nsw i64 %848, %46
  br label %866

866:                                              ; preds = %863, %._crit_edge1848
  %.sink2262 = phi i64 [ %865, %863 ], [ %851, %._crit_edge1848 ]
  %.idx1583.pn = phi i64 [ %.idx1583, %863 ], [ %.idx1585, %._crit_edge1848 ]
  %.01409 = phi i64 [ %.014421883, %863 ], [ 1, %._crit_edge1848 ]
  %.sink2261 = getelementptr i8, ptr %14, i64 %.idx1583.pn
  %gep1881 = getelementptr double, ptr %invariant.gep1878, i64 %.sink2262
  %867 = call i32 @dlacpy_(ptr noundef nonnull @.str.10, ptr noundef nonnull %3, ptr noundef nonnull %24, ptr noundef %.sink2261, ptr noundef nonnull %3, ptr noundef %gep1881, ptr noundef nonnull %9) #7
  %868 = load i64, ptr %3, align 8, !tbaa !5
  %.not15861856 = icmp sgt i64 %.01409, %868
  br i1 %.not1563164216571658, label %889, label %869

869:                                              ; preds = %866
  br i1 %.not15861856, label %.loopexit1717, label %.lr.ph1853

.lr.ph1853:                                       ; preds = %869
  %870 = mul nsw i64 %848, %46
  %871 = add nsw i64 %.014051889, 2
  %872 = mul nsw i64 %871, %46
  br label %873

873:                                              ; preds = %.lr.ph1853, %873
  %.513991851 = phi double [ 0.000000e+00, %.lr.ph1853 ], [ %887, %873 ]
  %.414531850 = phi i64 [ %.01409, %.lr.ph1853 ], [ %888, %873 ]
  %874 = getelementptr double, ptr %48, i64 %.414531850
  %875 = getelementptr double, ptr %874, i64 %870
  %876 = load double, ptr %875, align 8, !tbaa !9
  %877 = fcmp oge double %876, 0.000000e+00
  %878 = fneg double %876
  %879 = select i1 %877, double %876, double %878
  %880 = getelementptr double, ptr %874, i64 %872
  %881 = load double, ptr %880, align 8, !tbaa !9
  %882 = fcmp oge double %881, 0.000000e+00
  %883 = fneg double %881
  %884 = select i1 %882, double %881, double %883
  %885 = fadd double %879, %884
  %886 = fcmp oge double %.513991851, %885
  %887 = select i1 %886, double %.513991851, double %885
  %888 = add nuw i64 %.414531850, 1
  %exitcond2125.not = icmp eq i64 %.414531850, %868
  br i1 %exitcond2125.not, label %..loopexit1718_crit_edge, label %873, !llvm.loop !31

889:                                              ; preds = %866
  br i1 %.not15861856, label %.loopexit1717, label %.lr.ph1860

.lr.ph1860:                                       ; preds = %889
  %890 = mul nsw i64 %848, %46
  %invariant.gep1862 = getelementptr double, ptr %48, i64 %890
  %891 = add i64 %868, %.01409
  %892 = and i64 %891, 1
  %lcmp.mod2682.not.not = icmp eq i64 %892, 0
  br i1 %lcmp.mod2682.not.not, label %.prol.loopexit2680.unr-lcssa, label %.prol.loopexit2680

.prol.loopexit2680.unr-lcssa:                     ; preds = %.lr.ph1860
  %gep1863.prol = getelementptr double, ptr %invariant.gep1862, i64 %.01409
  %893 = load double, ptr %gep1863.prol, align 8, !tbaa !9
  %894 = fcmp oge double %893, 0.000000e+00
  %895 = fneg double %893
  %896 = select i1 %894, double %893, double %895
  %897 = fcmp ole double %896, 0.000000e+00
  %898 = select i1 %897, double 0.000000e+00, double %896
  %899 = add nuw i64 %.01409, 1
  br label %.prol.loopexit2680

.prol.loopexit2680:                               ; preds = %.prol.loopexit2680.unr-lcssa, %.lr.ph1860
  %.lcssa2659.unr = phi double [ poison, %.lr.ph1860 ], [ %893, %.prol.loopexit2680.unr-lcssa ]
  %.lcssa2658.unr = phi double [ poison, %.lr.ph1860 ], [ %898, %.prol.loopexit2680.unr-lcssa ]
  %.614001858.unr = phi double [ 0.000000e+00, %.lr.ph1860 ], [ %898, %.prol.loopexit2680.unr-lcssa ]
  %.514541857.unr = phi i64 [ %.01409, %.lr.ph1860 ], [ %899, %.prol.loopexit2680.unr-lcssa ]
  %900 = icmp eq i64 %868, %.01409
  br i1 %900, label %..loopexit1717_crit_edge, label %.lr.ph1860.new

.lr.ph1860.new:                                   ; preds = %.prol.loopexit2680, %.lr.ph1860.new
  %.614001858 = phi double [ %913, %.lr.ph1860.new ], [ %.614001858.unr, %.prol.loopexit2680 ]
  %.514541857 = phi i64 [ %914, %.lr.ph1860.new ], [ %.514541857.unr, %.prol.loopexit2680 ]
  %gep1863 = getelementptr double, ptr %invariant.gep1862, i64 %.514541857
  %901 = load double, ptr %gep1863, align 8, !tbaa !9
  %902 = fcmp oge double %901, 0.000000e+00
  %903 = fneg double %901
  %904 = select i1 %902, double %901, double %903
  %905 = fcmp oge double %.614001858, %904
  %906 = select i1 %905, double %.614001858, double %904
  %907 = add nuw i64 %.514541857, 1
  %gep1863.1 = getelementptr double, ptr %invariant.gep1862, i64 %907
  %908 = load double, ptr %gep1863.1, align 8, !tbaa !9
  %909 = fcmp oge double %908, 0.000000e+00
  %910 = fneg double %908
  %911 = select i1 %909, double %908, double %910
  %912 = fcmp oge double %906, %911
  %913 = select i1 %912, double %906, double %911
  %914 = add nuw i64 %.514541857, 2
  %exitcond2126.not.1 = icmp eq i64 %907, %868
  br i1 %exitcond2126.not.1, label %..loopexit1717_crit_edge, label %.lr.ph1860.new, !llvm.loop !32

..loopexit1717_crit_edge:                         ; preds = %.lr.ph1860.new, %.prol.loopexit2680
  %.lcssa2659 = phi double [ %.lcssa2659.unr, %.prol.loopexit2680 ], [ %908, %.lr.ph1860.new ]
  %.lcssa2658 = phi double [ %.lcssa2658.unr, %.prol.loopexit2680 ], [ %913, %.lr.ph1860.new ]
  store double %.lcssa2659, ptr %22, align 8, !tbaa !9
  br label %.loopexit1717

..loopexit1718_crit_edge:                         ; preds = %873
  store double %876, ptr %22, align 8, !tbaa !9
  br label %.loopexit1717

.loopexit1717:                                    ; preds = %869, %..loopexit1718_crit_edge, %889, %..loopexit1717_crit_edge
  %.71401 = phi double [ %.lcssa2658, %..loopexit1717_crit_edge ], [ 0.000000e+00, %889 ], [ %887, %..loopexit1718_crit_edge ], [ 0.000000e+00, %869 ]
  %915 = load double, ptr %38, align 8
  %916 = fcmp ogt double %.71401, %915
  %.pre2164 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %916, label %917, label %.loopexit1716

917:                                              ; preds = %.loopexit1717
  %918 = fdiv double 1.000000e+00, %.71401
  %.not1588.not1872 = icmp sgt i64 %.pre2164, 0
  br i1 %.not1588.not1872, label %.lr.ph1875, label %.loopexit1716

.lr.ph1875:                                       ; preds = %917
  %.not15891865 = icmp sgt i64 %.01409, %868
  br i1 %.not15891865, label %..loopexit1716_crit_edge, label %.lr.ph1868.preheader

.lr.ph1868.preheader:                             ; preds = %.lr.ph1875
  %919 = add i64 %868, 1
  %920 = sub i64 %919, %.01409
  %min.iters.check = icmp ult i64 %920, 4
  %n.vec = and i64 %920, -4
  %ind.end = add i64 %.01409, %n.vec
  %broadcast.splatinsert = insertelement <2 x double> poison, double %918, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n = icmp eq i64 %920, %n.vec
  br label %.lr.ph1868

.lr.ph1868:                                       ; preds = %.lr.ph1868.preheader, %._crit_edge1869
  %.414141873 = phi i64 [ %932, %._crit_edge1869 ], [ 0, %.lr.ph1868.preheader ]
  %921 = add nsw i64 %.414141873, %848
  %922 = mul nsw i64 %921, %46
  %invariant.gep1870 = getelementptr double, ptr %48, i64 %922
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph1868
  %923 = getelementptr double, ptr %invariant.gep1870, i64 %.01409
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %924 = getelementptr double, ptr %923, i64 %index
  %925 = getelementptr i8, ptr %924, i64 16
  %wide.load = load <2 x double>, ptr %924, align 8, !tbaa !9
  %wide.load2298 = load <2 x double>, ptr %925, align 8, !tbaa !9
  %926 = fmul <2 x double> %broadcast.splat, %wide.load
  %927 = fmul <2 x double> %broadcast.splat, %wide.load2298
  store <2 x double> %926, ptr %924, align 8, !tbaa !9
  store <2 x double> %927, ptr %925, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %928 = icmp eq i64 %index.next, %n.vec
  br i1 %928, label %middle.block, label %vector.body, !llvm.loop !33

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge1869, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph1868
  %.514281866.ph = phi i64 [ %.01409, %.lr.ph1868 ], [ %ind.end, %middle.block ]
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %.514281866 = phi i64 [ %931, %scalar.ph ], [ %.514281866.ph, %scalar.ph.preheader ]
  %gep1871 = getelementptr double, ptr %invariant.gep1870, i64 %.514281866
  %929 = load double, ptr %gep1871, align 8, !tbaa !9
  %930 = fmul double %918, %929
  store double %930, ptr %gep1871, align 8, !tbaa !9
  %931 = add nuw i64 %.514281866, 1
  %exitcond2127.not = icmp eq i64 %.514281866, %868
  br i1 %exitcond2127.not, label %._crit_edge1869, label %scalar.ph, !llvm.loop !34

._crit_edge1869:                                  ; preds = %scalar.ph, %middle.block
  %932 = add nuw nsw i64 %.414141873, 1
  %exitcond2128.not = icmp eq i64 %932, %.pre2164
  br i1 %exitcond2128.not, label %..loopexit1716_crit_edge, label %.lr.ph1868, !llvm.loop !35

..loopexit1716_crit_edge:                         ; preds = %._crit_edge1869, %.lr.ph1875
  store i64 %868, ptr %21, align 8, !tbaa !5
  br label %.loopexit1716

.loopexit1716:                                    ; preds = %917, %..loopexit1716_crit_edge, %.loopexit1717
  %933 = add i64 %.pre2164, %.014051889
  %.pre2165 = load i64, ptr %20, align 8, !tbaa !5
  br label %934

934:                                              ; preds = %.thread2193, %295, %._crit_edge1782, %.loopexit1716, %310
  %935 = phi i64 [ %.pre2165, %.loopexit1716 ], [ %296, %._crit_edge1782 ], [ %296, %310 ], [ %296, %295 ], [ %296, %.thread2193 ]
  %936 = phi double [ %915, %.loopexit1716 ], [ %297, %._crit_edge1782 ], [ %297, %310 ], [ %297, %295 ], [ %297, %.thread2193 ]
  %937 = phi i64 [ %868, %.loopexit1716 ], [ %298, %._crit_edge1782 ], [ %298, %310 ], [ %298, %295 ], [ %298, %.thread2193 ]
  %.11406 = phi i64 [ %933, %.loopexit1716 ], [ %331, %._crit_edge1782 ], [ %.014051889, %310 ], [ %.014051889, %295 ], [ %.014051889, %.thread2193 ]
  %.5 = phi i64 [ %.4164316561660, %.loopexit1716 ], [ 0, %._crit_edge1782 ], [ 0, %310 ], [ 0, %295 ], [ 1, %.thread2193 ]
  %938 = add nuw nsw i64 %.014421883, 1
  %.not1507.not = icmp slt i64 %.014421883, %935
  br i1 %.not1507.not, label %295, label %.loopexit1719, !llvm.loop !36

.loopexit1719:                                    ; preds = %934, %270, %263
  %939 = phi double [ %153, %270 ], [ %153, %263 ], [ %936, %934 ]
  %940 = phi i64 [ %154, %270 ], [ %154, %263 ], [ %937, %934 ]
  %941 = icmp slt i64 %940, 1
  %or.cond2263.not = select i1 %.not15031620, i1 true, i1 %941
  br i1 %or.cond2263.not, label %.loopexit1713, label %.lr.ph2070

.lr.ph2070:                                       ; preds = %.loopexit1719
  %942 = add nsw i64 %.21441218121862192, 1
  %943 = add i64 %40, 1
  %944 = add i64 %43, 1
  %945 = add i64 %49, 1
  %946 = getelementptr inbounds i8, ptr %32, i64 8
  %invariant.gep1991 = getelementptr i8, ptr %10, i64 -8
  %947 = shl i64 %940, 3
  %948 = add i64 %947, -8
  %949 = shl i64 %49, 3
  %950 = mul i64 %40, -8
  %951 = shl i64 %40, 3
  %952 = sub nuw nsw i64 -8, %951
  %953 = shl i64 %40, 3
  %954 = mul i64 %43, -8
  %955 = shl i64 %43, 3
  %956 = sub nuw nsw i64 -8, %955
  %957 = shl i64 %43, 3
  %958 = shl i64 %940, 3
  %959 = add i64 %958, -8
  %960 = mul i64 %40, -8
  %961 = shl i64 %40, 3
  %962 = sub nuw nsw i64 -8, %961
  %963 = shl i64 %40, 3
  %964 = mul i64 %43, -8
  %965 = shl i64 %43, 3
  %966 = sub nuw nsw i64 -8, %965
  %967 = shl i64 %43, 3
  %968 = shl i64 %940, 3
  %969 = add i64 %968, -8
  %970 = mul i64 %43, %969
  %971 = add i64 %970, %18
  %972 = sub i64 %19, %971
  %973 = shl i64 %43, 3
  %974 = mul i64 %40, %969
  %975 = add i64 %974, %17
  %976 = sub i64 %19, %975
  %977 = shl i64 %40, 3
  %978 = shl i64 %940, 3
  %979 = add i64 %978, -16
  %980 = mul i64 %40, %979
  %981 = mul i64 %40, -8
  %982 = shl i64 %40, 3
  %983 = sub nuw nsw i64 -8, %982
  %984 = mul i64 %43, %979
  %985 = mul i64 %43, -8
  %986 = shl i64 %43, 3
  %987 = sub nuw nsw i64 -8, %986
  %988 = add i64 %978, -8
  %989 = mul i64 %40, %988
  %990 = mul i64 %43, %988
  %991 = add nsw i64 %940, -2
  %992 = shufflevector <2 x double> %269, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %993 = extractelement <2 x double> %269, i64 0
  %994 = extractelement <2 x double> %269, i64 1
  %995 = extractelement <2 x double> %264, i64 0
  %996 = extractelement <2 x double> %264, i64 1
  %997 = insertelement <2 x double> poison, double %152, i64 0
  %998 = shufflevector <2 x double> %997, <2 x double> poison, <2 x i32> zeroinitializer
  %999 = getelementptr i8, ptr %4, i64 %980
  %1000 = getelementptr i8, ptr %4, i64 %980
  %1001 = getelementptr i8, ptr %1000, i64 %978
  %1002 = getelementptr i8, ptr %1001, i64 -16
  %1003 = getelementptr i8, ptr %6, i64 %984
  %1004 = getelementptr i8, ptr %6, i64 %984
  %1005 = getelementptr i8, ptr %1004, i64 %978
  %1006 = getelementptr i8, ptr %1005, i64 -16
  %1007 = getelementptr i8, ptr %4, i64 %989
  %1008 = getelementptr i8, ptr %4, i64 %989
  %1009 = getelementptr i8, ptr %1008, i64 %978
  %1010 = getelementptr i8, ptr %1009, i64 -16
  %1011 = getelementptr i8, ptr %6, i64 %990
  %1012 = getelementptr i8, ptr %6, i64 %990
  %1013 = getelementptr i8, ptr %1012, i64 %978
  %1014 = getelementptr i8, ptr %1013, i64 -16
  %stride.check2456 = icmp slt i64 %961, 0
  %stride.check2461 = icmp slt i64 %965, 0
  %stride.check2410 = icmp slt i64 %951, 0
  %stride.check2414 = icmp slt i64 %955, 0
  br label %1015

1015:                                             ; preds = %.lr.ph2070, %.loopexit1707
  %1016 = phi double [ %939, %.lr.ph2070 ], [ %1909, %.loopexit1707 ]
  %indvar2133 = phi i64 [ 0, %.lr.ph2070 ], [ %indvar.next2134, %.loopexit1707 ]
  %.62068 = phi i64 [ 0, %.lr.ph2070 ], [ %.8, %.loopexit1707 ]
  %.214072067 = phi i64 [ %942, %.lr.ph2070 ], [ %.31408, %.loopexit1707 ]
  %.114432064 = phi i64 [ %940, %.lr.ph2070 ], [ %1910, %.loopexit1707 ]
  %1017 = sub i64 %991, %indvar2133
  %1018 = shl i64 %indvar2133, 3
  %1019 = sub i64 %979, %1018
  %scevgep2561 = getelementptr i8, ptr %14, i64 %1019
  %1020 = mul i64 %981, %indvar2133
  %scevgep2565 = getelementptr i8, ptr %999, i64 %1020
  %1021 = mul i64 %983, %indvar2133
  %scevgep2566 = getelementptr i8, ptr %1002, i64 %1021
  %1022 = mul i64 %985, %indvar2133
  %scevgep2567 = getelementptr i8, ptr %1003, i64 %1022
  %1023 = mul i64 %987, %indvar2133
  %scevgep2568 = getelementptr i8, ptr %1006, i64 %1023
  %scevgep2569 = getelementptr i8, ptr %1007, i64 %1020
  %scevgep2570 = getelementptr i8, ptr %1010, i64 %1021
  %scevgep2571 = getelementptr i8, ptr %1011, i64 %1022
  %scevgep2572 = getelementptr i8, ptr %1014, i64 %1023
  %1024 = xor i64 %indvar2133, -1
  %1025 = add nsw i64 %940, %1024
  %1026 = mul i64 %973, %indvar2133
  %1027 = add i64 %972, %1026
  %1028 = mul i64 %977, %indvar2133
  %1029 = add i64 %976, %1028
  %smax2517 = call i64 @llvm.smax.i64(i64 %.114432064, i64 1)
  %smax = call i64 @llvm.smax.i64(i64 %.114432064, i64 1)
  %1030 = xor i64 %indvar2133, -1
  %1031 = add nsw i64 %940, %1030
  %1032 = shl i64 %indvar2133, 3
  %1033 = sub i64 %959, %1032
  %1034 = xor i64 %indvar2133, -1
  %1035 = add nsw i64 %940, %1034
  %1036 = shl i64 %indvar2133, 3
  %1037 = sub i64 %948, %1036
  %.not1509 = icmp eq i64 %.62068, 0
  br i1 %.not1509, label %1038, label %.loopexit1707

1038:                                             ; preds = %1015
  store i64 1, ptr %24, align 8, !tbaa !5
  %.not1510 = icmp eq i64 %.114432064, 1
  br i1 %.not1510, label %1046, label %1039

1039:                                             ; preds = %1038
  %1040 = add nsw i64 %.114432064, -1
  %1041 = mul nsw i64 %1040, %40
  %1042 = getelementptr double, ptr %42, i64 %.114432064
  %1043 = getelementptr double, ptr %1042, i64 %1041
  %1044 = load double, ptr %1043, align 8, !tbaa !9
  %1045 = fcmp une double %1044, 0.000000e+00
  br i1 %1045, label %.thread1666, label %1046

1046:                                             ; preds = %1039, %1038
  br i1 %.not1492, label %1050, label %.thread1679.thread

.thread1666:                                      ; preds = %1039
  store i64 2, ptr %24, align 8, !tbaa !5
  br i1 %.not1492, label %1047, label %.lr.ph1909

1047:                                             ; preds = %.thread1666
  %1048 = getelementptr inbounds i64, ptr %39, i64 %.114432064
  %1049 = load i64, ptr %1048, align 8, !tbaa !5
  %.not1512 = icmp eq i64 %1049, 0
  br i1 %.not1512, label %.thread2205, label %.lr.ph1909

1050:                                             ; preds = %1046
  %1051 = getelementptr inbounds i64, ptr %39, i64 %.114432064
  %1052 = load i64, ptr %1051, align 8, !tbaa !5
  %.not1513 = icmp eq i64 %1052, 0
  br i1 %.not1513, label %.loopexit1707, label %.thread1679.thread

.thread2205:                                      ; preds = %1047
  %1053 = getelementptr i8, ptr %1048, i64 -8
  %1054 = load i64, ptr %1053, align 8, !tbaa !5
  %.not2273 = icmp eq i64 %1054, 0
  br i1 %.not2273, label %.loopexit1707, label %.lr.ph1909

.thread1679.thread:                               ; preds = %1050, %1046
  %1055 = mul i64 %.114432064, %943
  %1056 = getelementptr inbounds double, ptr %42, i64 %1055
  %1057 = load double, ptr %1056, align 8, !tbaa !9
  %1058 = fcmp oge double %1057, 0.000000e+00
  %1059 = fneg double %1057
  %1060 = select i1 %1058, double %1057, double %1059
  %1061 = fcmp ugt double %1060, %1016
  br i1 %1061, label %.lr.ph1909, label %1062

1062:                                             ; preds = %.thread1679.thread
  %1063 = mul i64 %.114432064, %944
  %1064 = getelementptr inbounds double, ptr %45, i64 %1063
  %1065 = load double, ptr %1064, align 8, !tbaa !9
  %1066 = fcmp oge double %1065, 0.000000e+00
  %1067 = fneg double %1065
  %1068 = select i1 %1066, double %1065, double %1067
  %1069 = fcmp ugt double %1068, %1016
  br i1 %1069, label %.lr.ph1909, label %1070

1070:                                             ; preds = %1062
  %1071 = add nsw i64 %.214072067, -1
  %1072 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %1072, ptr %20, align 8, !tbaa !5
  %.not15151895 = icmp slt i64 %1072, 1
  br i1 %.not15151895, label %._crit_edge1899, label %.lr.ph1898

.lr.ph1898:                                       ; preds = %1070
  %1073 = shl i64 %.214072067, 3
  %1074 = add i64 %1073, -16
  %1075 = mul i64 %49, %1074
  %scevgep2129 = getelementptr i8, ptr %10, i64 %1075
  %1076 = shl nuw i64 %1072, 3
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2129, i8 0, i64 %1076, i1 false), !tbaa !9
  br label %._crit_edge1899

._crit_edge1899:                                  ; preds = %.lr.ph1898, %1070
  %1077 = mul i64 %1071, %945
  %1078 = getelementptr inbounds double, ptr %51, i64 %1077
  store double 1.000000e+00, ptr %1078, align 8, !tbaa !9
  br label %.loopexit1707

.lr.ph1909:                                       ; preds = %1047, %.thread2205, %1062, %.thread1679.thread, %.thread1666
  %1079 = phi i64 [ 1, %.thread1679.thread ], [ 1, %1062 ], [ 2, %.thread1666 ], [ 2, %.thread2205 ], [ 2, %1047 ]
  %.7167116841688 = phi i64 [ 0, %.thread1679.thread ], [ 0, %1062 ], [ 1, %.thread1666 ], [ 1, %.thread2205 ], [ 1, %1047 ]
  %.not1511167016851686 = phi i1 [ true, %.thread1679.thread ], [ true, %1062 ], [ false, %.thread1666 ], [ false, %.thread2205 ], [ false, %1047 ]
  %1080 = add nsw i64 %1079, -1
  store i64 %1080, ptr %20, align 8, !tbaa !5
  %1081 = load i64, ptr %3, align 8, !tbaa !5
  %.not15611902 = icmp slt i64 %1081, 1
  br i1 %.not15611902, label %._crit_edge1910, label %.lr.ph1905.preheader

.lr.ph1905.preheader:                             ; preds = %.lr.ph1909
  %1082 = shl i64 %1081, 4
  %scevgep2131 = getelementptr i8, ptr %14, i64 %1082
  %1083 = shl nuw nsw i64 %1079, 3
  %1084 = mul i64 %1083, %1081
  call void @llvm.memset.p0.i64(ptr align 8 %scevgep2131, i8 0, i64 %1084, i1 false), !tbaa !9
  br label %._crit_edge1910

._crit_edge1910:                                  ; preds = %.lr.ph1909, %.lr.ph1905.preheader
  br i1 %.not1511167016851686, label %1085, label %1226

1085:                                             ; preds = %._crit_edge1910
  %1086 = mul nsw i64 %.114432064, %40
  %1087 = getelementptr double, ptr %42, i64 %.114432064
  %1088 = getelementptr double, ptr %1087, i64 %1086
  %1089 = load double, ptr %1088, align 8, !tbaa !9
  %1090 = mul nsw i64 %.114432064, %43
  %1091 = getelementptr double, ptr %45, i64 %.114432064
  %1092 = getelementptr double, ptr %1091, i64 %1090
  %1093 = load double, ptr %1092, align 8, !tbaa !9
  %1094 = insertelement <2 x double> poison, double %1089, i64 0
  %1095 = insertelement <2 x double> %1094, double %1093, i64 1
  %1096 = fcmp oge <2 x double> %1095, zeroinitializer
  %1097 = fneg <2 x double> %1095
  %1098 = select <2 x i1> %1096, <2 x double> %1095, <2 x double> %1097
  %1099 = fmul <2 x double> %269, %1098
  %1100 = extractelement <2 x double> %1099, i64 0
  %1101 = extractelement <2 x double> %1099, i64 1
  %1102 = fcmp oge double %1100, %1101
  %1103 = select i1 %1102, double %1100, double %1101
  %1104 = fcmp oge double %1103, %1016
  %1105 = select i1 %1104, double %1103, double %1016
  %1106 = fdiv double 1.000000e+00, %1105
  store double %1106, ptr %28, align 8, !tbaa !9
  %1107 = insertelement <2 x double> poison, double %1093, i64 0
  %1108 = insertelement <2 x double> %1107, double %1089, i64 1
  %1109 = insertelement <2 x double> poison, double %1106, i64 0
  %1110 = shufflevector <2 x double> %1109, <2 x double> poison, <2 x i32> zeroinitializer
  %1111 = fmul <2 x double> %1108, %1110
  %1112 = fmul <2 x double> %992, %1111
  %1113 = fmul <2 x double> %269, %1112
  %1114 = extractelement <2 x double> %1113, i64 0
  store double %1114, ptr %33, align 8, !tbaa !9
  %1115 = extractelement <2 x double> %1113, i64 1
  store double %1115, ptr %37, align 8, !tbaa !9
  store double 0.000000e+00, ptr %36, align 8, !tbaa !9
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %1116 = extractelement <2 x double> %1112, i64 0
  %1117 = fcmp oge double %1116, 0.000000e+00
  %1118 = fneg double %1116
  %1119 = select i1 %1117, double %1116, double %1118
  %1120 = fcmp ult double %1119, %1016
  br i1 %1120, label %.thread2228, label %1121

1121:                                             ; preds = %1085
  %1122 = fcmp oge double %1114, 0.000000e+00
  %1123 = fneg double %1114
  %1124 = select i1 %1122, double %1114, double %1123
  %1125 = fcmp olt double %1124, %157
  %1126 = extractelement <2 x double> %1112, i64 1
  %1127 = fcmp oge double %1126, 0.000000e+00
  %1128 = fneg double %1126
  %1129 = select i1 %1127, double %1126, double %1128
  %1130 = fcmp ult double %1129, %1016
  br i1 %1130, label %.thread2225, label %1140

.thread2228:                                      ; preds = %1085
  %1131 = extractelement <2 x double> %1112, i64 1
  %1132 = fcmp oge double %1131, 0.000000e+00
  %1133 = fneg double %1131
  %1134 = select i1 %1132, double %1131, double %1133
  %1135 = fcmp ult double %1134, %1016
  br i1 %1135, label %.thread2216, label %.thread2230

.thread2230:                                      ; preds = %.thread2228
  %1136 = fcmp oge double %1115, 0.000000e+00
  %1137 = fneg double %1115
  %1138 = select i1 %1136, double %1115, double %1137
  %1139 = fcmp olt double %1138, %157
  br i1 %1139, label %.thread1690, label %.thread2216

1140:                                             ; preds = %1121
  %1141 = fcmp oge double %1115, 0.000000e+00
  %1142 = fneg double %1115
  %1143 = select i1 %1141, double %1115, double %1142
  %1144 = fcmp olt double %1143, %157
  br i1 %1125, label %1150, label %.thread2215

.thread2225:                                      ; preds = %1121
  br i1 %1125, label %.thread2226, label %.thread2216

.thread2226:                                      ; preds = %.thread2225
  %1145 = fdiv double %157, %1119
  %1146 = load double, ptr %25, align 8
  %1147 = fcmp ole double %995, %1146
  %1148 = select i1 %1147, double %995, double %1146
  %1149 = fmul double %1145, %1148
  br label %1166

1150:                                             ; preds = %1140
  %1151 = fdiv double %157, %1119
  %1152 = load double, ptr %25, align 8
  %1153 = fcmp ole double %995, %1152
  %1154 = select i1 %1153, double %995, double %1152
  %1155 = fmul double %1151, %1154
  br i1 %1144, label %.thread1690, label %1166

.thread2215:                                      ; preds = %1140
  br i1 %1144, label %.thread1690, label %.thread2216

.thread1690:                                      ; preds = %.thread2230, %.thread2215, %1150
  %1156 = phi i1 [ false, %.thread2215 ], [ true, %1150 ], [ false, %.thread2230 ]
  %1157 = phi double [ %1129, %.thread2215 ], [ %1129, %1150 ], [ %1134, %.thread2230 ]
  %1158 = phi double [ 1.000000e+00, %.thread2215 ], [ %1155, %1150 ], [ 1.000000e+00, %.thread2230 ]
  %1159 = fdiv double %157, %1157
  %1160 = load double, ptr %25, align 8
  %1161 = fcmp ole double %996, %1160
  %1162 = select i1 %1161, double %996, double %1160
  %1163 = fmul double %1159, %1162
  %1164 = fcmp oge double %1158, %1163
  %1165 = select i1 %1164, double %1158, double %1163
  br label %1166

1166:                                             ; preds = %1150, %.thread2226, %.thread1690
  %1167 = phi i1 [ %1156, %.thread1690 ], [ true, %1150 ], [ true, %.thread2226 ]
  %1168 = phi i1 [ true, %.thread1690 ], [ false, %1150 ], [ false, %.thread2226 ]
  %1169 = phi double [ %1165, %.thread1690 ], [ %1155, %1150 ], [ %1149, %.thread2226 ]
  %1170 = fcmp oge double %1114, 0.000000e+00
  %1171 = fneg double %1114
  %1172 = select i1 %1170, double %1114, double %1171
  %1173 = fcmp ole double %1172, 1.000000e+00
  %1174 = select i1 %1173, double 1.000000e+00, double %1172
  %1175 = fcmp oge double %1115, 0.000000e+00
  %1176 = fneg double %1115
  %1177 = select i1 %1175, double %1115, double %1176
  store double %1169, ptr %22, align 8, !tbaa !9
  %1178 = fcmp oge double %1174, %1177
  %1179 = select i1 %1178, double %1174, double %1177
  %1180 = fmul double %1016, %1179
  %1181 = fdiv double 1.000000e+00, %1180
  %1182 = fcmp ole double %1169, %1181
  %1183 = select i1 %1182, double %1169, double %1181
  store double %1183, ptr %34, align 8, !tbaa !9
  %1184 = fmul double %1114, %1183
  %1185 = fmul double %1116, %1183
  %1186 = fmul double %993, %1185
  %storemerge = select i1 %1167, double %1186, double %1184
  store double %storemerge, ptr %33, align 8, !tbaa !9
  br i1 %1168, label %1187, label %1193

1187:                                             ; preds = %1166
  %1188 = extractelement <2 x double> %1112, i64 1
  %1189 = fmul double %1188, %1183
  %1190 = fmul double %994, %1189
  store double %1190, ptr %37, align 8, !tbaa !9
  %1191 = insertelement <2 x double> poison, double %storemerge, i64 0
  %1192 = insertelement <2 x double> %1191, double %1190, i64 1
  br label %.thread2216

1193:                                             ; preds = %1166
  %1194 = fmul double %1115, %1183
  store double %1194, ptr %37, align 8, !tbaa !9
  %1195 = insertelement <2 x double> poison, double %storemerge, i64 0
  %1196 = insertelement <2 x double> %1195, double %1194, i64 1
  br label %.thread2216

.thread2216:                                      ; preds = %.thread2230, %.thread2228, %.thread2225, %.thread2215, %1187, %1193
  %1197 = phi <2 x double> [ %1192, %1187 ], [ %1196, %1193 ], [ %1113, %.thread2215 ], [ %1113, %.thread2225 ], [ %1113, %.thread2228 ], [ %1113, %.thread2230 ]
  %1198 = fcmp oge <2 x double> %1197, zeroinitializer
  %1199 = fneg <2 x double> %1197
  %1200 = select <2 x i1> %1198, <2 x double> %1197, <2 x double> %1199
  %1201 = load i64, ptr %3, align 8, !tbaa !5
  %.idx = shl i64 %1201, 4
  %1202 = getelementptr i8, ptr %52, i64 %.idx
  %1203 = getelementptr double, ptr %1202, i64 %.114432064
  store double 1.000000e+00, ptr %1203, align 8, !tbaa !9
  %1204 = add nsw i64 %.114432064, -1
  store i64 %1204, ptr %20, align 8, !tbaa !5
  %invariant.gep1915 = getelementptr double, ptr %45, i64 %1090
  %invariant.gep1917 = getelementptr double, ptr %42, i64 %1086
  %.not1517.not1919 = icmp sgt i64 %.114432064, 1
  br i1 %.not1517.not1919, label %.lr.ph1922.preheader, label %.loopexit1711

.lr.ph1922.preheader:                             ; preds = %.thread2216
  %min.iters.check2540 = icmp ult i64 %1025, 4
  br i1 %min.iters.check2540, label %.lr.ph1922.preheader2648, label %vector.memcheck2535

vector.memcheck2535:                              ; preds = %.lr.ph1922.preheader
  %1205 = add i64 %1027, %.idx
  %diff.check = icmp ult i64 %1205, 32
  %1206 = add i64 %1029, %.idx
  %diff.check2536 = icmp ult i64 %1206, 32
  %conflict.rdx2537 = or i1 %diff.check, %diff.check2536
  br i1 %conflict.rdx2537, label %.lr.ph1922.preheader2648, label %vector.ph2541

vector.ph2541:                                    ; preds = %vector.memcheck2535
  %n.vec2543 = and i64 %1025, -4
  %ind.end2544 = or disjoint i64 %n.vec2543, 1
  %broadcast.splat2554 = shufflevector <2 x double> %1199, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splat2556 = shufflevector <2 x double> %1197, <2 x double> poison, <2 x i32> <i32 1, i32 1>
  br label %vector.body2546

vector.body2546:                                  ; preds = %vector.body2546, %vector.ph2541
  %index2547 = phi i64 [ 0, %vector.ph2541 ], [ %index.next2557, %vector.body2546 ]
  %offset.idx2548 = or disjoint i64 %index2547, 1
  %1207 = getelementptr double, ptr %invariant.gep1915, i64 %offset.idx2548
  %1208 = getelementptr i8, ptr %1207, i64 16
  %wide.load2549 = load <2 x double>, ptr %1207, align 8, !tbaa !9
  %wide.load2550 = load <2 x double>, ptr %1208, align 8, !tbaa !9
  %1209 = getelementptr double, ptr %invariant.gep1917, i64 %offset.idx2548
  %1210 = getelementptr i8, ptr %1209, i64 16
  %wide.load2551 = load <2 x double>, ptr %1209, align 8, !tbaa !9
  %wide.load2552 = load <2 x double>, ptr %1210, align 8, !tbaa !9
  %1211 = fmul <2 x double> %wide.load2551, %broadcast.splat2554
  %1212 = fmul <2 x double> %wide.load2552, %broadcast.splat2554
  %1213 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2556, <2 x double> %wide.load2549, <2 x double> %1211)
  %1214 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2556, <2 x double> %wide.load2550, <2 x double> %1212)
  %1215 = getelementptr double, ptr %1202, i64 %offset.idx2548
  %1216 = getelementptr i8, ptr %1215, i64 16
  store <2 x double> %1213, ptr %1215, align 8, !tbaa !9
  store <2 x double> %1214, ptr %1216, align 8, !tbaa !9
  %index.next2557 = add nuw i64 %index2547, 4
  %1217 = icmp eq i64 %index.next2557, %n.vec2543
  br i1 %1217, label %middle.block2538, label %vector.body2546, !llvm.loop !37

middle.block2538:                                 ; preds = %vector.body2546
  %cmp.n2558 = icmp eq i64 %1025, %n.vec2543
  br i1 %cmp.n2558, label %.loopexit1711, label %.lr.ph1922.preheader2648

.lr.ph1922.preheader2648:                         ; preds = %middle.block2538, %vector.memcheck2535, %.lr.ph1922.preheader
  %.814311920.ph = phi i64 [ 1, %vector.memcheck2535 ], [ 1, %.lr.ph1922.preheader ], [ %ind.end2544, %middle.block2538 ]
  %1218 = extractelement <2 x double> %1199, i64 0
  %1219 = extractelement <2 x double> %1197, i64 1
  br label %.lr.ph1922

.lr.ph1922:                                       ; preds = %.lr.ph1922.preheader2648, %.lr.ph1922
  %.814311920 = phi i64 [ %1225, %.lr.ph1922 ], [ %.814311920.ph, %.lr.ph1922.preheader2648 ]
  %gep1916 = getelementptr double, ptr %invariant.gep1915, i64 %.814311920
  %1220 = load double, ptr %gep1916, align 8, !tbaa !9
  %gep1918 = getelementptr double, ptr %invariant.gep1917, i64 %.814311920
  %1221 = load double, ptr %gep1918, align 8, !tbaa !9
  %1222 = fmul double %1221, %1218
  %1223 = call double @llvm.fmuladd.f64(double %1219, double %1220, double %1222)
  %1224 = getelementptr double, ptr %1202, i64 %.814311920
  store double %1223, ptr %1224, align 8, !tbaa !9
  %1225 = add nuw nsw i64 %.814311920, 1
  %.not1517.not = icmp slt i64 %1225, %.114432064
  br i1 %.not1517.not, label %.lr.ph1922, label %.loopexit1711, !llvm.loop !38

1226:                                             ; preds = %._crit_edge1910
  %1227 = fmul double %1016, 1.000000e+02
  store double %1227, ptr %22, align 8, !tbaa !9
  %1228 = add nsw i64 %.114432064, -1
  %1229 = mul nsw i64 %1228, %40
  %1230 = getelementptr double, ptr %42, i64 %1228
  %1231 = getelementptr double, ptr %1230, i64 %1229
  %1232 = mul nsw i64 %1228, %43
  %1233 = getelementptr double, ptr %45, i64 %1228
  %1234 = getelementptr double, ptr %1233, i64 %1232
  %1235 = call i32 @dlag2_(ptr noundef %1231, ptr noundef nonnull %5, ptr noundef %1234, ptr noundef nonnull %7, ptr noundef nonnull %22, ptr noundef nonnull %33, ptr noundef nonnull %28, ptr noundef nonnull %37, ptr noundef nonnull %31, ptr noundef nonnull %36) #7
  %1236 = load double, ptr %36, align 8
  %1237 = fcmp oeq double %1236, 0.000000e+00
  br i1 %1237, label %1238, label %1239

1238:                                             ; preds = %1226
  store i64 %1228, ptr %15, align 8, !tbaa !5
  br label %.loopexit1713

1239:                                             ; preds = %1226
  %1240 = load double, ptr %33, align 8
  %1241 = fcmp oge double %1240, 0.000000e+00
  %1242 = fneg double %1240
  %1243 = select i1 %1241, double %1240, double %1242
  %1244 = load double, ptr %37, align 8
  %1245 = fcmp oge double %1244, 0.000000e+00
  %1246 = fneg double %1244
  %1247 = select i1 %1245, double %1244, double %1246
  %1248 = fcmp oge double %1236, 0.000000e+00
  %1249 = fneg double %1236
  %1250 = select i1 %1248, double %1236, double %1249
  %1251 = fadd double %1250, %1247
  store double 1.000000e+00, ptr %34, align 8, !tbaa !9
  %1252 = fmul double %152, %1243
  %1253 = load double, ptr %38, align 8
  %1254 = fcmp uge double %1252, %1253
  %1255 = fcmp ult double %1243, %1253
  %or.cond1613 = or i1 %1254, %1255
  br i1 %or.cond1613, label %1259, label %1256

1256:                                             ; preds = %1239
  %1257 = fdiv double %1253, %152
  %1258 = fdiv double %1257, %1243
  store double %1258, ptr %34, align 8, !tbaa !9
  br label %1259

1259:                                             ; preds = %1256, %1239
  %1260 = phi double [ %1258, %1256 ], [ 1.000000e+00, %1239 ]
  %1261 = fmul double %152, %1251
  %1262 = fcmp uge double %1261, %1253
  %1263 = fcmp ult double %1251, %1253
  %or.cond1614 = or i1 %1263, %1262
  br i1 %or.cond1614, label %1269, label %1264

1264:                                             ; preds = %1259
  %1265 = fdiv double %1253, %152
  %1266 = fdiv double %1265, %1251
  %1267 = fcmp oge double %1260, %1266
  %1268 = select i1 %1267, double %1260, double %1266
  store double %1268, ptr %34, align 8, !tbaa !9
  br label %1269

1269:                                             ; preds = %1264, %1259
  %.pr16932167 = phi double [ %1268, %1264 ], [ %1260, %1259 ]
  %1270 = fmul double %1243, %1253
  %1271 = fcmp ogt double %1270, %993
  br i1 %1271, label %1272, label %1274

1272:                                             ; preds = %1269
  %1273 = fdiv double %993, %1270
  store double %1273, ptr %34, align 8, !tbaa !9
  br label %1274

1274:                                             ; preds = %1272, %1269
  %1275 = phi double [ %1273, %1272 ], [ %.pr16932167, %1269 ]
  %1276 = fmul double %1253, %1251
  %1277 = fcmp ogt double %1276, %994
  br i1 %1277, label %1278, label %thread-pre-split1692

1278:                                             ; preds = %1274
  store double %1275, ptr %22, align 8, !tbaa !9
  %1279 = fdiv double %994, %1276
  %1280 = fcmp ole double %1275, %1279
  %1281 = select i1 %1280, double %1275, double %1279
  store double %1281, ptr %34, align 8, !tbaa !9
  br label %thread-pre-split1692

thread-pre-split1692:                             ; preds = %1274, %1278
  %1282 = phi double [ %1281, %1278 ], [ %1275, %1274 ]
  %1283 = fcmp une double %1282, 1.000000e+00
  %1284 = insertelement <2 x double> poison, double %1243, i64 0
  %1285 = insertelement <2 x double> %1284, double %1251, i64 1
  br i1 %1283, label %1286, label %1302

1286:                                             ; preds = %thread-pre-split1692
  %1287 = fmul double %1240, %1282
  store double %1287, ptr %33, align 8, !tbaa !9
  %1288 = fcmp oge double %1287, 0.000000e+00
  %1289 = fneg double %1287
  %1290 = select i1 %1288, double %1287, double %1289
  %1291 = fmul double %1244, %1282
  store double %1291, ptr %37, align 8, !tbaa !9
  %1292 = fmul double %1236, %1282
  store double %1292, ptr %36, align 8, !tbaa !9
  %1293 = fcmp oge double %1291, 0.000000e+00
  %1294 = fneg double %1291
  %1295 = select i1 %1293, double %1291, double %1294
  %1296 = fcmp oge double %1292, 0.000000e+00
  %1297 = fneg double %1292
  %1298 = select i1 %1296, double %1292, double %1297
  %1299 = fadd double %1295, %1298
  %1300 = insertelement <2 x double> poison, double %1290, i64 0
  %1301 = insertelement <2 x double> %1300, double %1299, i64 1
  br label %1302

1302:                                             ; preds = %1286, %thread-pre-split1692
  %.pre-phi2170 = phi double [ %1297, %1286 ], [ %1249, %thread-pre-split1692 ]
  %.pre-phi = phi double [ %1294, %1286 ], [ %1246, %thread-pre-split1692 ]
  %1303 = phi double [ %1292, %1286 ], [ %1236, %thread-pre-split1692 ]
  %1304 = phi double [ %1291, %1286 ], [ %1244, %thread-pre-split1692 ]
  %1305 = phi double [ %1287, %1286 ], [ %1240, %thread-pre-split1692 ]
  %1306 = phi <2 x double> [ %1301, %1286 ], [ %1285, %thread-pre-split1692 ]
  %1307 = getelementptr double, ptr %42, i64 %.114432064
  %1308 = getelementptr double, ptr %1307, i64 %1229
  %1309 = load double, ptr %1308, align 8, !tbaa !9
  %1310 = fmul double %1305, %1309
  store double %1310, ptr %28, align 8, !tbaa !9
  %1311 = mul nsw i64 %.114432064, %40
  %1312 = getelementptr double, ptr %1307, i64 %1311
  %1313 = load double, ptr %1312, align 8, !tbaa !9
  %1314 = mul nsw i64 %.114432064, %43
  %1315 = getelementptr double, ptr %45, i64 %.114432064
  %1316 = getelementptr double, ptr %1315, i64 %1314
  %1317 = load double, ptr %1316, align 8, !tbaa !9
  %1318 = fmul double %1317, %.pre-phi
  %1319 = call double @llvm.fmuladd.f64(double %1305, double %1313, double %1318)
  %1320 = fmul double %1317, %.pre-phi2170
  %1321 = fcmp oge double %1310, 0.000000e+00
  %1322 = fneg double %1310
  %1323 = select i1 %1321, double %1310, double %1322
  %1324 = fcmp oge double %1319, 0.000000e+00
  %1325 = fneg double %1319
  %1326 = select i1 %1324, double %1319, double %1325
  %1327 = fcmp oge double %1320, 0.000000e+00
  %1328 = fneg double %1320
  %1329 = select i1 %1327, double %1320, double %1328
  %1330 = fadd double %1326, %1329
  %1331 = fcmp ult double %1323, %1330
  %1332 = load i64, ptr %3, align 8, !tbaa !5
  %.idx1519 = shl i64 %1332, 4
  %1333 = getelementptr i8, ptr %52, i64 %.idx1519
  %1334 = getelementptr double, ptr %1333, i64 %.114432064
  br i1 %1331, label %1342, label %1335

1335:                                             ; preds = %1302
  store double 1.000000e+00, ptr %1334, align 8, !tbaa !9
  %.idx1524 = mul i64 %1332, 24
  %1336 = getelementptr i8, ptr %52, i64 %.idx1524
  %1337 = getelementptr double, ptr %1336, i64 %.114432064
  store double 0.000000e+00, ptr %1337, align 8, !tbaa !9
  %1338 = fdiv double %1325, %1310
  %1339 = getelementptr i8, ptr %1334, i64 -8
  store double %1338, ptr %1339, align 8, !tbaa !9
  %1340 = fdiv double %1328, %1310
  %1341 = getelementptr i8, ptr %1337, i64 -8
  store double %1340, ptr %1341, align 8, !tbaa !9
  br label %1359

1342:                                             ; preds = %1302
  %1343 = getelementptr i8, ptr %1334, i64 -8
  store double 1.000000e+00, ptr %1343, align 8, !tbaa !9
  %.idx1520 = mul i64 %1332, 24
  %1344 = getelementptr i8, ptr %52, i64 %.idx1520
  %1345 = getelementptr double, ptr %1344, i64 %.114432064
  %1346 = getelementptr i8, ptr %1345, i64 -8
  store double 0.000000e+00, ptr %1346, align 8, !tbaa !9
  %1347 = getelementptr double, ptr %1230, i64 %1311
  %1348 = load double, ptr %1347, align 8, !tbaa !9
  %1349 = fmul double %1305, %1348
  store double %1349, ptr %28, align 8, !tbaa !9
  %1350 = load double, ptr %1234, align 8, !tbaa !9
  %1351 = load double, ptr %1231, align 8, !tbaa !9
  %1352 = fneg double %1305
  %1353 = fmul double %1351, %1352
  %1354 = call double @llvm.fmuladd.f64(double %1304, double %1350, double %1353)
  %1355 = fdiv double %1354, %1349
  store double %1355, ptr %1334, align 8, !tbaa !9
  %1356 = load double, ptr %1234, align 8, !tbaa !9
  %1357 = fmul double %1303, %1356
  %1358 = fdiv double %1357, %1349
  store double %1358, ptr %1345, align 8, !tbaa !9
  br label %1359

1359:                                             ; preds = %1342, %1335
  %.idx1699.pre-phi = phi i64 [ %.idx1520, %1342 ], [ %.idx1524, %1335 ]
  %1360 = getelementptr i8, ptr %52, i64 %.idx1519
  %1361 = getelementptr double, ptr %1360, i64 %.114432064
  %1362 = getelementptr i8, ptr %52, i64 %.idx1699.pre-phi
  %1363 = getelementptr double, ptr %1362, i64 %.114432064
  %1364 = getelementptr i8, ptr %1361, i64 -8
  %1365 = getelementptr i8, ptr %1363, i64 -8
  %1366 = load <2 x double>, ptr %1364, align 8, !tbaa !9
  %1367 = fcmp oge <2 x double> %1366, zeroinitializer
  %1368 = fneg <2 x double> %1366
  %1369 = select <2 x i1> %1367, <2 x double> %1366, <2 x double> %1368
  %1370 = load <2 x double>, ptr %1365, align 8, !tbaa !9
  %1371 = fcmp oge <2 x double> %1370, zeroinitializer
  %1372 = fneg <2 x double> %1370
  %1373 = select <2 x i1> %1371, <2 x double> %1370, <2 x double> %1372
  %1374 = fadd <2 x double> %1369, %1373
  %1375 = extractelement <2 x double> %1374, i64 0
  %1376 = extractelement <2 x double> %1374, i64 1
  %1377 = fcmp oge double %1376, %1375
  %1378 = select i1 %1377, double %1376, double %1375
  %1379 = extractelement <2 x double> %1370, i64 0
  %1380 = fmul double %1379, %.pre-phi2170
  %1381 = extractelement <2 x double> %1366, i64 0
  %1382 = call double @llvm.fmuladd.f64(double %1304, double %1381, double %1380)
  %1383 = fmul double %1304, %1379
  %1384 = call double @llvm.fmuladd.f64(double %1303, double %1381, double %1383)
  %1385 = extractelement <2 x double> %1370, i64 1
  %1386 = fmul double %1385, %.pre-phi2170
  %1387 = extractelement <2 x double> %1366, i64 1
  %1388 = call double @llvm.fmuladd.f64(double %1304, double %1387, double %1386)
  %1389 = fmul double %1304, %1385
  %1390 = call double @llvm.fmuladd.f64(double %1303, double %1387, double %1389)
  %1391 = add nsw i64 %.114432064, -2
  store i64 %1391, ptr %20, align 8, !tbaa !5
  %.not15281911 = icmp slt i64 %.114432064, 3
  br i1 %.not15281911, label %.loopexit1711, label %.lr.ph1914

.lr.ph1914:                                       ; preds = %1359
  %1392 = fneg double %1305
  %1393 = fmul double %1381, %1392
  %1394 = fmul double %1387, %1392
  %1395 = fmul double %1379, %1392
  %1396 = fmul double %1385, %1392
  %min.iters.check2610 = icmp ult i64 %1017, 6
  br i1 %min.iters.check2610, label %scalar.ph2609.preheader, label %vector.memcheck2559

vector.memcheck2559:                              ; preds = %.lr.ph1914
  %scevgep2560 = getelementptr i8, ptr %14, i64 %.idx1519
  %scevgep2562 = getelementptr i8, ptr %scevgep2561, i64 %.idx1519
  %scevgep2563 = getelementptr i8, ptr %14, i64 %.idx1699.pre-phi
  %scevgep2564 = getelementptr i8, ptr %scevgep2561, i64 %.idx1699.pre-phi
  %bound02573 = icmp ult ptr %scevgep2560, %scevgep2564
  %bound12574 = icmp ult ptr %scevgep2563, %scevgep2562
  %found.conflict2575 = and i1 %bound02573, %bound12574
  %bound02576 = icmp ult ptr %scevgep2560, %scevgep2566
  %bound12577 = icmp ult ptr %scevgep2565, %scevgep2562
  %found.conflict2578 = and i1 %bound02576, %bound12577
  %conflict.rdx2579 = or i1 %found.conflict2575, %found.conflict2578
  %bound02580 = icmp ult ptr %scevgep2560, %scevgep2568
  %bound12581 = icmp ult ptr %scevgep2567, %scevgep2562
  %found.conflict2582 = and i1 %bound02580, %bound12581
  %conflict.rdx2583 = or i1 %conflict.rdx2579, %found.conflict2582
  %bound02584 = icmp ult ptr %scevgep2560, %scevgep2570
  %bound12585 = icmp ult ptr %scevgep2569, %scevgep2562
  %found.conflict2586 = and i1 %bound02584, %bound12585
  %conflict.rdx2587 = or i1 %conflict.rdx2583, %found.conflict2586
  %bound02588 = icmp ult ptr %scevgep2560, %scevgep2572
  %bound12589 = icmp ult ptr %scevgep2571, %scevgep2562
  %found.conflict2590 = and i1 %bound02588, %bound12589
  %conflict.rdx2591 = or i1 %conflict.rdx2587, %found.conflict2590
  %bound02592 = icmp ult ptr %scevgep2563, %scevgep2566
  %bound12593 = icmp ult ptr %scevgep2565, %scevgep2564
  %found.conflict2594 = and i1 %bound02592, %bound12593
  %conflict.rdx2595 = or i1 %conflict.rdx2591, %found.conflict2594
  %bound02596 = icmp ult ptr %scevgep2563, %scevgep2568
  %bound12597 = icmp ult ptr %scevgep2567, %scevgep2564
  %found.conflict2598 = and i1 %bound02596, %bound12597
  %conflict.rdx2599 = or i1 %conflict.rdx2595, %found.conflict2598
  %bound02600 = icmp ult ptr %scevgep2563, %scevgep2570
  %bound12601 = icmp ult ptr %scevgep2569, %scevgep2564
  %found.conflict2602 = and i1 %bound02600, %bound12601
  %conflict.rdx2603 = or i1 %conflict.rdx2599, %found.conflict2602
  %bound02604 = icmp ult ptr %scevgep2563, %scevgep2572
  %bound12605 = icmp ult ptr %scevgep2571, %scevgep2564
  %found.conflict2606 = and i1 %bound02604, %bound12605
  %conflict.rdx2607 = or i1 %conflict.rdx2603, %found.conflict2606
  br i1 %conflict.rdx2607, label %scalar.ph2609.preheader, label %vector.ph2611

vector.ph2611:                                    ; preds = %vector.memcheck2559
  %n.vec2613 = and i64 %1017, -2
  %ind.end2614 = or i64 %1017, 1
  %broadcast.splatinsert2621 = insertelement <2 x double> poison, double %1382, i64 0
  %broadcast.splat2622 = shufflevector <2 x double> %broadcast.splatinsert2621, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2623 = insertelement <2 x double> poison, double %1393, i64 0
  %broadcast.splat2624 = shufflevector <2 x double> %broadcast.splatinsert2623, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2626 = insertelement <2 x double> poison, double %1394, i64 0
  %broadcast.splat2627 = shufflevector <2 x double> %broadcast.splatinsert2626, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2629 = insertelement <2 x double> poison, double %1388, i64 0
  %broadcast.splat2630 = shufflevector <2 x double> %broadcast.splatinsert2629, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2633 = insertelement <2 x double> poison, double %1384, i64 0
  %broadcast.splat2634 = shufflevector <2 x double> %broadcast.splatinsert2633, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2635 = insertelement <2 x double> poison, double %1395, i64 0
  %broadcast.splat2636 = shufflevector <2 x double> %broadcast.splatinsert2635, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2638 = insertelement <2 x double> poison, double %1396, i64 0
  %broadcast.splat2639 = shufflevector <2 x double> %broadcast.splatinsert2638, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2641 = insertelement <2 x double> poison, double %1390, i64 0
  %broadcast.splat2642 = shufflevector <2 x double> %broadcast.splatinsert2641, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2616

vector.body2616:                                  ; preds = %vector.body2616, %vector.ph2611
  %index2617 = phi i64 [ 0, %vector.ph2611 ], [ %index.next2643, %vector.body2616 ]
  %offset.idx2618 = or disjoint i64 %index2617, 1
  %1397 = getelementptr double, ptr %42, i64 %offset.idx2618
  %1398 = getelementptr double, ptr %1397, i64 %1229
  %wide.load2619 = load <2 x double>, ptr %1398, align 8, !tbaa !9, !alias.scope !39
  %1399 = getelementptr double, ptr %45, i64 %offset.idx2618
  %1400 = getelementptr double, ptr %1399, i64 %1232
  %wide.load2620 = load <2 x double>, ptr %1400, align 8, !tbaa !9, !alias.scope !42
  %1401 = fmul <2 x double> %broadcast.splat2622, %wide.load2620
  %1402 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2624, <2 x double> %wide.load2619, <2 x double> %1401)
  %1403 = getelementptr double, ptr %1397, i64 %1311
  %wide.load2625 = load <2 x double>, ptr %1403, align 8, !tbaa !9, !alias.scope !44
  %1404 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2627, <2 x double> %wide.load2625, <2 x double> %1402)
  %1405 = getelementptr double, ptr %1399, i64 %1314
  %wide.load2628 = load <2 x double>, ptr %1405, align 8, !tbaa !9, !alias.scope !46
  %1406 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2630, <2 x double> %wide.load2628, <2 x double> %1404)
  %1407 = getelementptr double, ptr %1360, i64 %offset.idx2618
  store <2 x double> %1406, ptr %1407, align 8, !tbaa !9, !alias.scope !48, !noalias !50
  %wide.load2631 = load <2 x double>, ptr %1398, align 8, !tbaa !9, !alias.scope !39
  %wide.load2632 = load <2 x double>, ptr %1400, align 8, !tbaa !9, !alias.scope !42
  %1408 = fmul <2 x double> %broadcast.splat2634, %wide.load2632
  %1409 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2636, <2 x double> %wide.load2631, <2 x double> %1408)
  %wide.load2637 = load <2 x double>, ptr %1403, align 8, !tbaa !9, !alias.scope !44
  %1410 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2639, <2 x double> %wide.load2637, <2 x double> %1409)
  %wide.load2640 = load <2 x double>, ptr %1405, align 8, !tbaa !9, !alias.scope !46
  %1411 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2642, <2 x double> %wide.load2640, <2 x double> %1410)
  %1412 = getelementptr double, ptr %1362, i64 %offset.idx2618
  store <2 x double> %1411, ptr %1412, align 8, !tbaa !9, !alias.scope !52, !noalias !53
  %index.next2643 = add nuw i64 %index2617, 2
  %1413 = icmp eq i64 %index.next2643, %n.vec2613
  br i1 %1413, label %middle.block2608, label %vector.body2616, !llvm.loop !54

middle.block2608:                                 ; preds = %vector.body2616
  %cmp.n2644 = icmp eq i64 %1017, %n.vec2613
  br i1 %cmp.n2644, label %.loopexit1711, label %scalar.ph2609.preheader

scalar.ph2609.preheader:                          ; preds = %middle.block2608, %vector.memcheck2559, %.lr.ph1914
  %.914321912.ph = phi i64 [ 1, %vector.memcheck2559 ], [ 1, %.lr.ph1914 ], [ %ind.end2614, %middle.block2608 ]
  br label %scalar.ph2609

scalar.ph2609:                                    ; preds = %scalar.ph2609.preheader, %scalar.ph2609
  %.914321912 = phi i64 [ %1438, %scalar.ph2609 ], [ %.914321912.ph, %scalar.ph2609.preheader ]
  %1414 = getelementptr double, ptr %42, i64 %.914321912
  %1415 = getelementptr double, ptr %1414, i64 %1229
  %1416 = load double, ptr %1415, align 8, !tbaa !9
  %1417 = getelementptr double, ptr %45, i64 %.914321912
  %1418 = getelementptr double, ptr %1417, i64 %1232
  %1419 = load double, ptr %1418, align 8, !tbaa !9
  %1420 = fmul double %1382, %1419
  %1421 = call double @llvm.fmuladd.f64(double %1393, double %1416, double %1420)
  %1422 = getelementptr double, ptr %1414, i64 %1311
  %1423 = load double, ptr %1422, align 8, !tbaa !9
  %1424 = call double @llvm.fmuladd.f64(double %1394, double %1423, double %1421)
  %1425 = getelementptr double, ptr %1417, i64 %1314
  %1426 = load double, ptr %1425, align 8, !tbaa !9
  %1427 = call double @llvm.fmuladd.f64(double %1388, double %1426, double %1424)
  %1428 = getelementptr double, ptr %1360, i64 %.914321912
  store double %1427, ptr %1428, align 8, !tbaa !9
  %1429 = load double, ptr %1415, align 8, !tbaa !9
  %1430 = load double, ptr %1418, align 8, !tbaa !9
  %1431 = fmul double %1384, %1430
  %1432 = call double @llvm.fmuladd.f64(double %1395, double %1429, double %1431)
  %1433 = load double, ptr %1422, align 8, !tbaa !9
  %1434 = call double @llvm.fmuladd.f64(double %1396, double %1433, double %1432)
  %1435 = load double, ptr %1425, align 8, !tbaa !9
  %1436 = call double @llvm.fmuladd.f64(double %1390, double %1435, double %1434)
  %1437 = getelementptr double, ptr %1362, i64 %.914321912
  store double %1436, ptr %1437, align 8, !tbaa !9
  %1438 = add nuw nsw i64 %.914321912, 1
  %.not1528.not = icmp slt i64 %.914321912, %1391
  br i1 %.not1528.not, label %scalar.ph2609, label %.loopexit1711, !llvm.loop !55

.loopexit1711:                                    ; preds = %scalar.ph2609, %.lr.ph1922, %middle.block2608, %middle.block2538, %1359, %.thread2216
  %1439 = phi double [ %1016, %.thread2216 ], [ %1253, %1359 ], [ %1016, %middle.block2538 ], [ %1253, %middle.block2608 ], [ %1016, %.lr.ph1922 ], [ %1253, %scalar.ph2609 ]
  %.81402 = phi double [ 1.000000e+00, %.thread2216 ], [ %1378, %1359 ], [ 1.000000e+00, %middle.block2538 ], [ %1378, %middle.block2608 ], [ 1.000000e+00, %.lr.ph1922 ], [ %1378, %scalar.ph2609 ]
  %1440 = phi <2 x double> [ %1200, %.thread2216 ], [ %1306, %1359 ], [ %1200, %middle.block2538 ], [ %1306, %middle.block2608 ], [ %1200, %.lr.ph1922 ], [ %1306, %scalar.ph2609 ]
  %1441 = fmul <2 x double> %998, %1440
  %1442 = fmul <2 x double> %264, %1441
  %1443 = extractelement <2 x double> %1442, i64 0
  %1444 = extractelement <2 x double> %1442, i64 1
  %1445 = fcmp oge double %1443, %1444
  %1446 = select i1 %1445, double %1443, double %1444
  store double %1446, ptr %22, align 8, !tbaa !9
  %1447 = fcmp oge double %1446, %1439
  %1448 = select i1 %1447, double %1446, double %1439
  store double %1448, ptr %27, align 8, !tbaa !9
  %1449 = load i64, ptr %24, align 8, !tbaa !5
  %1450 = sub nsw i64 %.114432064, %1449
  %1451 = icmp sgt i64 %1450, 0
  br i1 %1451, label %.lr.ph1989, label %._crit_edge1990

.lr.ph1989:                                       ; preds = %.loopexit1711
  %1452 = add i64 %indvar2133, %1449
  %1453 = shl i64 %1449, 3
  %1454 = sub i64 %1037, %1453
  %1455 = mul i64 %40, %1454
  %1456 = add i64 %1037, %1455
  %1457 = sub i64 %1456, %1453
  %1458 = mul i64 %43, %1454
  %1459 = add i64 %1037, %1458
  %1460 = sub i64 %1459, %1453
  %1461 = shl i64 %1449, 3
  %1462 = sub i64 %1033, %1461
  %1463 = mul i64 %40, %1462
  %1464 = add i64 %1033, %1463
  %1465 = sub i64 %1464, %1461
  %1466 = mul i64 %43, %1462
  %1467 = add i64 %1033, %1466
  %1468 = sub i64 %1467, %1461
  %1469 = extractelement <2 x double> %1440, i64 0
  %1470 = extractelement <2 x double> %1440, i64 1
  %1471 = getelementptr i8, ptr %4, i64 %1463
  %1472 = getelementptr i8, ptr %4, i64 %1465
  %1473 = getelementptr i8, ptr %6, i64 %1466
  %1474 = getelementptr i8, ptr %6, i64 %1468
  %1475 = getelementptr i8, ptr %4, i64 %1455
  %1476 = getelementptr i8, ptr %4, i64 %1457
  %1477 = getelementptr i8, ptr %6, i64 %1458
  %1478 = getelementptr i8, ptr %6, i64 %1460
  %min.iters.check2520 = icmp slt i64 %.114432064, 4
  %n.vec2523 = and i64 %smax2517, 9223372036854775804
  %ind.end2524 = or disjoint i64 %n.vec2523, 1
  %cmp.n2534 = icmp eq i64 %smax2517, %n.vec2523
  %min.iters.check2502 = icmp slt i64 %.114432064, 4
  %n.vec2505 = and i64 %smax, 9223372036854775804
  %ind.end2506 = or disjoint i64 %n.vec2505, 1
  %cmp.n2516 = icmp eq i64 %smax, %n.vec2505
  br label %1479

1479:                                             ; preds = %.lr.ph1989, %.loopexit1705
  %1480 = phi i64 [ %1449, %.lr.ph1989 ], [ %1691, %.loopexit1705 ]
  %indvar2135 = phi i64 [ 0, %.lr.ph1989 ], [ %indvar.next2136, %.loopexit1705 ]
  %.313901987 = phi i64 [ 0, %.lr.ph1989 ], [ %.41391, %.loopexit1705 ]
  %.91985 = phi double [ %.81402, %.lr.ph1989 ], [ %.12, %.loopexit1705 ]
  %.614551981 = phi i64 [ %1450, %.lr.ph1989 ], [ %1692, %.loopexit1705 ]
  %1481 = add i64 %1449, %indvar2135
  %1482 = sub i64 %1031, %1481
  %1483 = shl i64 %indvar2135, 3
  %1484 = sub i64 %1462, %1483
  %scevgep2440 = getelementptr i8, ptr %14, i64 %1484
  %1485 = mul i64 %960, %indvar2135
  %scevgep2444 = getelementptr i8, ptr %1471, i64 %1485
  %1486 = mul i64 %962, %indvar2135
  %scevgep2445 = getelementptr i8, ptr %1472, i64 %1486
  %1487 = mul i64 %964, %indvar2135
  %scevgep2447 = getelementptr i8, ptr %1473, i64 %1487
  %1488 = mul i64 %966, %indvar2135
  %scevgep2448 = getelementptr i8, ptr %1474, i64 %1488
  %1489 = add i64 %1449, %indvar2135
  %1490 = sub i64 %1035, %1489
  %1491 = shl i64 %indvar2135, 3
  %1492 = sub i64 %1454, %1491
  %scevgep2399 = getelementptr i8, ptr %14, i64 %1492
  %1493 = mul i64 %950, %indvar2135
  %scevgep2401 = getelementptr i8, ptr %1475, i64 %1493
  %1494 = mul i64 %952, %indvar2135
  %scevgep2402 = getelementptr i8, ptr %1476, i64 %1494
  %1495 = mul i64 %954, %indvar2135
  %scevgep2404 = getelementptr i8, ptr %1477, i64 %1495
  %1496 = mul i64 %956, %indvar2135
  %scevgep2405 = getelementptr i8, ptr %1478, i64 %1496
  %1497 = add i64 %1452, %indvar2135
  %1498 = shl i64 %1497, 3
  %1499 = sub i64 %948, %1498
  %1500 = icmp eq i64 %.313901987, 0
  %1501 = icmp ne i64 %.614551981, 1
  %or.cond5 = and i1 %1501, %1500
  br i1 %or.cond5, label %1502, label %1512

1502:                                             ; preds = %1479
  %1503 = add nsw i64 %.614551981, -1
  %1504 = mul nsw i64 %1503, %40
  %1505 = getelementptr double, ptr %42, i64 %.614551981
  %1506 = getelementptr double, ptr %1505, i64 %1504
  %1507 = load double, ptr %1506, align 8, !tbaa !9
  %1508 = fcmp une double %1507, 0.000000e+00
  br i1 %1508, label %.loopexit1705, label %.thread1694

.thread1694:                                      ; preds = %1502
  %1509 = mul i64 %.614551981, %944
  %1510 = getelementptr inbounds double, ptr %45, i64 %1509
  %1511 = load double, ptr %1510, align 8, !tbaa !9
  store double %1511, ptr %32, align 16, !tbaa !9
  br label %1521

1512:                                             ; preds = %1479
  %1513 = mul i64 %.614551981, %944
  %1514 = getelementptr inbounds double, ptr %45, i64 %1513
  %1515 = load double, ptr %1514, align 8, !tbaa !9
  store double %1515, ptr %32, align 16, !tbaa !9
  br i1 %1500, label %1521, label %1516

1516:                                             ; preds = %1512
  store i64 2, ptr %23, align 8, !tbaa !5
  %1517 = add nuw nsw i64 %.614551981, 1
  %1518 = mul i64 %1517, %944
  %1519 = getelementptr inbounds double, ptr %45, i64 %1518
  %1520 = load double, ptr %1519, align 8, !tbaa !9
  store double %1520, ptr %946, align 8, !tbaa !9
  br label %1522

1521:                                             ; preds = %.thread1694, %1512
  store i64 1, ptr %23, align 8, !tbaa !5
  br label %1522

1522:                                             ; preds = %1521, %1516
  %1523 = mul i64 %.614551981, %943
  %1524 = getelementptr inbounds double, ptr %42, i64 %1523
  %1525 = load i64, ptr %3, align 8, !tbaa !5
  %.idx1543 = shl i64 %1525, 4
  %1526 = getelementptr i8, ptr %52, i64 %.idx1543
  %1527 = getelementptr double, ptr %1526, i64 %.614551981
  %1528 = call i32 @dlaln2_(ptr noundef nonnull @c_false, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef nonnull %27, ptr noundef nonnull %33, ptr noundef nonnull %1524, ptr noundef nonnull %5, ptr noundef nonnull %32, ptr noundef nonnull %946, ptr noundef %1527, ptr noundef nonnull %3, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef nonnull %26, ptr noundef nonnull @c__2, ptr noundef nonnull %34, ptr noundef nonnull %28, ptr noundef nonnull %35) #7
  %1529 = load double, ptr %34, align 8, !tbaa !9
  %1530 = fcmp olt double %1529, 1.000000e+00
  %.pre2168 = load i64, ptr %24, align 8, !tbaa !5
  br i1 %1530, label %1531, label %.loopexit1706

1531:                                             ; preds = %1522
  %1532 = add nsw i64 %.pre2168, -1
  store i64 %1532, ptr %20, align 8, !tbaa !5
  %.not1544.not1927 = icmp sgt i64 %.pre2168, 0
  br i1 %.not1544.not1927, label %.preheader1702.lr.ph.split, label %.loopexit1706

.preheader1702.lr.ph.split:                       ; preds = %1531
  %1533 = load i64, ptr %3, align 8, !tbaa !5
  %broadcast.splatinsert2531 = insertelement <2 x double> poison, double %1529, i64 0
  %broadcast.splat2532 = shufflevector <2 x double> %broadcast.splatinsert2531, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.preheader1702

.preheader1702:                                   ; preds = %.preheader1702.lr.ph.split, %._crit_edge1926
  %.614161928 = phi i64 [ 0, %.preheader1702.lr.ph.split ], [ %1546, %._crit_edge1926 ]
  %1534 = add nuw nsw i64 %.614161928, 2
  %1535 = mul nsw i64 %1533, %1534
  %1536 = getelementptr double, ptr %52, i64 %1535
  br i1 %min.iters.check2520, label %scalar.ph2519.preheader, label %vector.body2526

vector.body2526:                                  ; preds = %.preheader1702, %vector.body2526
  %index2527 = phi i64 [ %index.next2533, %vector.body2526 ], [ 0, %.preheader1702 ]
  %offset.idx2528 = or disjoint i64 %index2527, 1
  %1537 = getelementptr double, ptr %1536, i64 %offset.idx2528
  %1538 = getelementptr i8, ptr %1537, i64 16
  %wide.load2529 = load <2 x double>, ptr %1537, align 8, !tbaa !9
  %wide.load2530 = load <2 x double>, ptr %1538, align 8, !tbaa !9
  %1539 = fmul <2 x double> %broadcast.splat2532, %wide.load2529
  %1540 = fmul <2 x double> %broadcast.splat2532, %wide.load2530
  store <2 x double> %1539, ptr %1537, align 8, !tbaa !9
  store <2 x double> %1540, ptr %1538, align 8, !tbaa !9
  %index.next2533 = add nuw i64 %index2527, 4
  %1541 = icmp eq i64 %index.next2533, %n.vec2523
  br i1 %1541, label %middle.block2518, label %vector.body2526, !llvm.loop !56

middle.block2518:                                 ; preds = %vector.body2526
  br i1 %cmp.n2534, label %._crit_edge1926, label %scalar.ph2519.preheader

scalar.ph2519.preheader:                          ; preds = %middle.block2518, %.preheader1702
  %.1014331924.ph = phi i64 [ 1, %.preheader1702 ], [ %ind.end2524, %middle.block2518 ]
  br label %scalar.ph2519

scalar.ph2519:                                    ; preds = %scalar.ph2519.preheader, %scalar.ph2519
  %.1014331924 = phi i64 [ %1545, %scalar.ph2519 ], [ %.1014331924.ph, %scalar.ph2519.preheader ]
  %1542 = getelementptr double, ptr %1536, i64 %.1014331924
  %1543 = load double, ptr %1542, align 8, !tbaa !9
  %1544 = fmul double %1529, %1543
  store double %1544, ptr %1542, align 8, !tbaa !9
  %1545 = add nuw nsw i64 %.1014331924, 1
  %.not1558.not = icmp slt i64 %.1014331924, %.114432064
  br i1 %.not1558.not, label %scalar.ph2519, label %._crit_edge1926, !llvm.loop !57

._crit_edge1926:                                  ; preds = %scalar.ph2519, %middle.block2518
  %1546 = add nuw nsw i64 %.614161928, 1
  %exitcond2132.not = icmp eq i64 %1546, %.pre2168
  br i1 %exitcond2132.not, label %.loopexit1706, label %.preheader1702, !llvm.loop !58

.loopexit1706:                                    ; preds = %._crit_edge1926, %1531, %1522
  %1547 = fmul double %.91985, %1529
  store double %1547, ptr %22, align 8, !tbaa !9
  %1548 = load double, ptr %28, align 8
  %1549 = fcmp oge double %1547, %1548
  %1550 = select i1 %1549, double %1547, double %1548
  %.not15451938 = icmp slt i64 %.pre2168, 1
  br i1 %.not15451938, label %._crit_edge1942, label %.lr.ph1941

.lr.ph1941:                                       ; preds = %.loopexit1706
  %1551 = load i64, ptr %23, align 8, !tbaa !5
  %.not15571931 = icmp slt i64 %1551, 1
  br i1 %.not15571931, label %._crit_edge1942, label %.lr.ph1941.split

.lr.ph1941.split:                                 ; preds = %.lr.ph1941
  %1552 = load i64, ptr %3, align 8, !tbaa !5
  %1553 = shl i64 %1552, 4
  %1554 = shl i64 %1552, 3
  %1555 = shl nuw i64 %1551, 3
  %1556 = getelementptr i8, ptr %14, i64 %1499
  %1557 = getelementptr i8, ptr %1556, i64 %1553
  %xtraiter2683 = and i64 %.pre2168, 1
  %1558 = icmp eq i64 %.pre2168, 1
  br i1 %1558, label %._crit_edge1942.loopexit.unr-lcssa, label %.lr.ph1941.split.new

.lr.ph1941.split.new:                             ; preds = %.lr.ph1941.split
  %unroll_iter2685 = and i64 %.pre2168, 9223372036854775806
  br label %.lr.ph1934

.lr.ph1934:                                       ; preds = %.lr.ph1934, %.lr.ph1941.split.new
  %indvar2137 = phi i64 [ 0, %.lr.ph1941.split.new ], [ %indvar.next2138.1, %.lr.ph1934 ]
  %niter2686 = phi i64 [ 0, %.lr.ph1941.split.new ], [ %niter2686.next.1, %.lr.ph1934 ]
  %1559 = mul i64 %1554, %indvar2137
  %scevgep2139 = getelementptr i8, ptr %1557, i64 %1559
  %1560 = shl i64 %indvar2137, 4
  %scevgep2140 = getelementptr i8, ptr %26, i64 %1560
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep2139, ptr align 16 %scevgep2140, i64 %1555, i1 false), !tbaa !9
  %indvar.next2138 = or disjoint i64 %indvar2137, 1
  %1561 = mul i64 %1554, %indvar.next2138
  %scevgep2139.1 = getelementptr i8, ptr %1557, i64 %1561
  %1562 = shl i64 %indvar.next2138, 4
  %scevgep2140.1 = getelementptr i8, ptr %26, i64 %1562
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep2139.1, ptr align 16 %scevgep2140.1, i64 %1555, i1 false), !tbaa !9
  %indvar.next2138.1 = add nuw nsw i64 %indvar2137, 2
  %niter2686.next.1 = add i64 %niter2686, 2
  %niter2686.ncmp.1 = icmp eq i64 %niter2686.next.1, %unroll_iter2685
  br i1 %niter2686.ncmp.1, label %._crit_edge1942.loopexit.unr-lcssa, label %.lr.ph1934, !llvm.loop !59

._crit_edge1942.loopexit.unr-lcssa:               ; preds = %.lr.ph1934, %.lr.ph1941.split
  %indvar2137.unr = phi i64 [ 0, %.lr.ph1941.split ], [ %indvar.next2138.1, %.lr.ph1934 ]
  %lcmp.mod2684.not = icmp eq i64 %xtraiter2683, 0
  br i1 %lcmp.mod2684.not, label %._crit_edge1942, label %.lr.ph1934.epil

.lr.ph1934.epil:                                  ; preds = %._crit_edge1942.loopexit.unr-lcssa
  %1563 = mul i64 %1554, %indvar2137.unr
  %scevgep2139.epil = getelementptr i8, ptr %1557, i64 %1563
  %1564 = shl i64 %indvar2137.unr, 4
  %scevgep2140.epil = getelementptr i8, ptr %26, i64 %1564
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %scevgep2139.epil, ptr align 16 %scevgep2140.epil, i64 %1555, i1 false), !tbaa !9
  br label %._crit_edge1942

._crit_edge1942:                                  ; preds = %.lr.ph1934.epil, %._crit_edge1942.loopexit.unr-lcssa, %.lr.ph1941, %.loopexit1706
  br i1 %1501, label %1565, label %._crit_edge1990

1565:                                             ; preds = %._crit_edge1942
  %1566 = fcmp ole double %1550, 1.000000e+00
  %1567 = select i1 %1566, double 1.000000e+00, double %1550
  %1568 = fdiv double 1.000000e+00, %1567
  %1569 = getelementptr inbounds double, ptr %52, i64 %.614551981
  %1570 = load double, ptr %1569, align 8, !tbaa !9
  %1571 = load i64, ptr %3, align 8, !tbaa !5
  %1572 = getelementptr double, ptr %52, i64 %1571
  %1573 = getelementptr double, ptr %1572, i64 %.614551981
  %1574 = load double, ptr %1573, align 8, !tbaa !9
  %1575 = fmul double %1470, %1574
  %1576 = call double @llvm.fmuladd.f64(double %1469, double %1570, double %1575)
  br i1 %1500, label %1587, label %1577

1577:                                             ; preds = %1565
  %1578 = getelementptr double, ptr %14, i64 %.614551981
  %1579 = load double, ptr %1578, align 8, !tbaa !9
  %1580 = getelementptr double, ptr %14, i64 %1571
  %1581 = getelementptr double, ptr %1580, i64 %.614551981
  %1582 = load double, ptr %1581, align 8, !tbaa !9
  %1583 = fmul double %1470, %1582
  %1584 = call double @llvm.fmuladd.f64(double %1469, double %1579, double %1583)
  %1585 = fcmp oge double %1576, %1584
  %1586 = select i1 %1585, double %1576, double %1584
  br label %1587

1587:                                             ; preds = %1577, %1565
  %1588 = phi double [ %1586, %1577 ], [ %1576, %1565 ]
  %1589 = fcmp oge double %1588, %1469
  %1590 = select i1 %1589, double %1588, double %1469
  store double %1590, ptr %22, align 8, !tbaa !9
  %1591 = fcmp oge double %1590, %1470
  %1592 = select i1 %1591, double %1590, double %1470
  store double %1592, ptr %28, align 8, !tbaa !9
  %1593 = fmul double %159, %1568
  %1594 = fcmp ogt double %1592, %1593
  br i1 %1594, label %1595, label %1610

1595:                                             ; preds = %1587
  %.not1546.not1949 = icmp sgt i64 %.pre2168, 0
  br i1 %.not1546.not1949, label %.preheader.preheader, label %._crit_edge1951

.preheader.preheader:                             ; preds = %1595
  %broadcast.splatinsert2513 = insertelement <2 x double> poison, double %1568, i64 0
  %broadcast.splat2514 = shufflevector <2 x double> %broadcast.splatinsert2513, <2 x double> poison, <2 x i32> zeroinitializer
  br label %.preheader

.preheader:                                       ; preds = %.preheader.preheader, %._crit_edge1948
  %.814181950 = phi i64 [ %1608, %._crit_edge1948 ], [ 0, %.preheader.preheader ]
  %1596 = add nuw nsw i64 %.814181950, 2
  %1597 = mul nsw i64 %1596, %1571
  %1598 = getelementptr double, ptr %52, i64 %1597
  br i1 %min.iters.check2502, label %scalar.ph2501.preheader, label %vector.body2508

vector.body2508:                                  ; preds = %.preheader, %vector.body2508
  %index2509 = phi i64 [ %index.next2515, %vector.body2508 ], [ 0, %.preheader ]
  %offset.idx2510 = or disjoint i64 %index2509, 1
  %1599 = getelementptr double, ptr %1598, i64 %offset.idx2510
  %1600 = getelementptr i8, ptr %1599, i64 16
  %wide.load2511 = load <2 x double>, ptr %1599, align 8, !tbaa !9
  %wide.load2512 = load <2 x double>, ptr %1600, align 8, !tbaa !9
  %1601 = fmul <2 x double> %broadcast.splat2514, %wide.load2511
  %1602 = fmul <2 x double> %broadcast.splat2514, %wide.load2512
  store <2 x double> %1601, ptr %1599, align 8, !tbaa !9
  store <2 x double> %1602, ptr %1600, align 8, !tbaa !9
  %index.next2515 = add nuw i64 %index2509, 4
  %1603 = icmp eq i64 %index.next2515, %n.vec2505
  br i1 %1603, label %middle.block2500, label %vector.body2508, !llvm.loop !60

middle.block2500:                                 ; preds = %vector.body2508
  br i1 %cmp.n2516, label %._crit_edge1948, label %scalar.ph2501.preheader

scalar.ph2501.preheader:                          ; preds = %middle.block2500, %.preheader
  %.1114341946.ph = phi i64 [ 1, %.preheader ], [ %ind.end2506, %middle.block2500 ]
  br label %scalar.ph2501

scalar.ph2501:                                    ; preds = %scalar.ph2501.preheader, %scalar.ph2501
  %.1114341946 = phi i64 [ %1607, %scalar.ph2501 ], [ %.1114341946.ph, %scalar.ph2501.preheader ]
  %1604 = getelementptr double, ptr %1598, i64 %.1114341946
  %1605 = load double, ptr %1604, align 8, !tbaa !9
  %1606 = fmul double %1568, %1605
  store double %1606, ptr %1604, align 8, !tbaa !9
  %1607 = add nuw nsw i64 %.1114341946, 1
  %.not1556.not = icmp slt i64 %.1114341946, %.114432064
  br i1 %.not1556.not, label %scalar.ph2501, label %._crit_edge1948, !llvm.loop !61

._crit_edge1948:                                  ; preds = %scalar.ph2501, %middle.block2500
  %1608 = add nuw nsw i64 %.814181950, 1
  %exitcond2142.not = icmp eq i64 %1608, %.pre2168
  br i1 %exitcond2142.not, label %._crit_edge1951, label %.preheader, !llvm.loop !62

._crit_edge1951:                                  ; preds = %._crit_edge1948, %1595
  %1609 = fmul double %1550, %1568
  br label %1610

1610:                                             ; preds = %._crit_edge1951, %1587
  %.10 = phi double [ %1609, %._crit_edge1951 ], [ %1550, %1587 ]
  %1611 = load i64, ptr %23, align 8, !tbaa !5
  store i64 %1611, ptr %20, align 8, !tbaa !5
  %.not15471968 = icmp slt i64 %1611, 1
  br i1 %.not15471968, label %.loopexit1705, label %.lr.ph1972

.lr.ph1972:                                       ; preds = %1610
  %1612 = load double, ptr %33, align 8
  %.idx1551 = shl i64 %1571, 4
  %1613 = getelementptr i8, ptr %52, i64 %.idx1551
  %1614 = getelementptr double, ptr %1613, i64 %.614551981
  %invariant.gep1973 = getelementptr i8, ptr %1614, i64 -8
  %.idx1552 = mul i64 %1571, 24
  %1615 = getelementptr i8, ptr %52, i64 %.idx1552
  %1616 = getelementptr double, ptr %1615, i64 %.614551981
  %invariant.gep1975 = getelementptr i8, ptr %1616, i64 -8
  %1617 = load double, ptr %37, align 8
  %1618 = load double, ptr %36, align 8
  %1619 = fneg double %1618
  %.not1553.not1952 = icmp sgt i64 %.614551981, 1
  %1620 = add i64 %.614551981, -1
  %1621 = fneg double %1612
  br i1 %.not1511167016851686, label %.lr.ph1972.split.us, label %.lr.ph1972.split.preheader

.lr.ph1972.split.preheader:                       ; preds = %.lr.ph1972
  %scevgep2439 = getelementptr i8, ptr %14, i64 %.idx1551
  %scevgep2441 = getelementptr i8, ptr %scevgep2440, i64 %.idx1551
  %scevgep2442 = getelementptr i8, ptr %14, i64 %.idx1552
  %scevgep2443 = getelementptr i8, ptr %scevgep2440, i64 %.idx1552
  %1622 = add nsw i64 %1611, -1
  %1623 = mul i64 %963, %1622
  %scevgep2446 = getelementptr i8, ptr %scevgep2445, i64 %1623
  %1624 = mul i64 %967, %1622
  %scevgep2449 = getelementptr i8, ptr %scevgep2448, i64 %1624
  %min.iters.check2475 = icmp ult i64 %1482, 6
  %bound02450 = icmp ult ptr %scevgep2439, %scevgep2443
  %bound12451 = icmp ult ptr %scevgep2442, %scevgep2441
  %found.conflict2452 = and i1 %bound02450, %bound12451
  %bound02453 = icmp ult ptr %scevgep2439, %scevgep2446
  %bound12454 = icmp ult ptr %scevgep2444, %scevgep2441
  %found.conflict2455 = and i1 %bound02453, %bound12454
  %1625 = or i1 %found.conflict2455, %stride.check2456
  %conflict.rdx2457 = or i1 %found.conflict2452, %1625
  %bound02458 = icmp ult ptr %scevgep2439, %scevgep2449
  %bound12459 = icmp ult ptr %scevgep2447, %scevgep2441
  %found.conflict2460 = and i1 %bound02458, %bound12459
  %1626 = or i1 %found.conflict2460, %stride.check2461
  %conflict.rdx2462 = or i1 %conflict.rdx2457, %1626
  %bound02463 = icmp ult ptr %scevgep2442, %scevgep2446
  %bound12464 = icmp ult ptr %scevgep2444, %scevgep2443
  %found.conflict2465 = and i1 %bound02463, %bound12464
  %conflict.rdx2467 = or i1 %found.conflict2465, %conflict.rdx2462
  %bound02468 = icmp ult ptr %scevgep2442, %scevgep2449
  %bound12469 = icmp ult ptr %scevgep2447, %scevgep2443
  %found.conflict2470 = and i1 %bound02468, %bound12469
  %conflict.rdx2472 = or i1 %found.conflict2470, %conflict.rdx2467
  %n.vec2478 = and i64 %1482, -2
  %ind.end2479 = or i64 %1482, 1
  %cmp.n2499 = icmp eq i64 %1482, %n.vec2478
  br label %.lr.ph1972.split

.lr.ph1972.split.us:                              ; preds = %.lr.ph1972
  br i1 %.not1553.not1952, label %.lr.ph1963.us.us.preheader, label %._crit_edge1990

.lr.ph1963.us.us.preheader:                       ; preds = %.lr.ph1972.split.us
  %scevgep2398 = getelementptr i8, ptr %14, i64 %.idx1551
  %scevgep2400 = getelementptr i8, ptr %scevgep2399, i64 %.idx1551
  %1627 = add nsw i64 %1611, -1
  %1628 = mul i64 %953, %1627
  %scevgep2403 = getelementptr i8, ptr %scevgep2402, i64 %1628
  %1629 = mul i64 %957, %1627
  %scevgep2406 = getelementptr i8, ptr %scevgep2405, i64 %1629
  %min.iters.check2417 = icmp ult i64 %1490, 4
  %bound02407 = icmp ult ptr %scevgep2398, %scevgep2403
  %bound12408 = icmp ult ptr %scevgep2401, %scevgep2400
  %found.conflict2409 = and i1 %bound02407, %bound12408
  %1630 = or i1 %found.conflict2409, %stride.check2410
  %bound02411 = icmp ult ptr %scevgep2398, %scevgep2406
  %bound12412 = icmp ult ptr %scevgep2404, %scevgep2400
  %found.conflict2413 = and i1 %bound02411, %bound12412
  %1631 = or i1 %found.conflict2413, %stride.check2414
  %conflict.rdx = or i1 %1630, %1631
  %n.vec2420 = and i64 %1490, -4
  %ind.end2421 = or disjoint i64 %n.vec2420, 1
  %cmp.n2437 = icmp eq i64 %1490, %n.vec2420
  br label %.lr.ph1963.us.us

.lr.ph1963.us.us:                                 ; preds = %.lr.ph1963.us.us.preheader, %..loopexit_crit_edge.us.us
  %.314481969.us.us = phi i64 [ %1656, %..loopexit_crit_edge.us.us ], [ 1, %.lr.ph1963.us.us.preheader ]
  %gep1978.us.us = getelementptr double, ptr %invariant.gep1973, i64 %.314481969.us.us
  %1632 = load double, ptr %gep1978.us.us, align 8, !tbaa !9
  %1633 = fmul double %1632, %1617
  %1634 = add i64 %1620, %.314481969.us.us
  %1635 = mul nsw i64 %1634, %40
  %invariant.gep1964.us.us = getelementptr double, ptr %42, i64 %1635
  %1636 = fmul double %1632, %1621
  %1637 = mul nsw i64 %1634, %43
  %invariant.gep1966.us.us = getelementptr double, ptr %45, i64 %1637
  %brmerge = select i1 %min.iters.check2417, i1 true, i1 %conflict.rdx
  br i1 %brmerge, label %scalar.ph2416.preheader, label %vector.ph2418

vector.ph2418:                                    ; preds = %.lr.ph1963.us.us
  %broadcast.splatinsert2430 = insertelement <2 x double> poison, double %1636, i64 0
  %broadcast.splat2431 = shufflevector <2 x double> %broadcast.splatinsert2430, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2434 = insertelement <2 x double> poison, double %1633, i64 0
  %broadcast.splat2435 = shufflevector <2 x double> %broadcast.splatinsert2434, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2423

vector.body2423:                                  ; preds = %vector.body2423, %vector.ph2418
  %index2424 = phi i64 [ 0, %vector.ph2418 ], [ %index.next2436, %vector.body2423 ]
  %offset.idx2425 = or disjoint i64 %index2424, 1
  %1638 = getelementptr double, ptr %1613, i64 %offset.idx2425
  %1639 = getelementptr i8, ptr %1638, i64 16
  %wide.load2426 = load <2 x double>, ptr %1638, align 8, !tbaa !9, !alias.scope !63, !noalias !66
  %wide.load2427 = load <2 x double>, ptr %1639, align 8, !tbaa !9, !alias.scope !63, !noalias !66
  %1640 = getelementptr double, ptr %invariant.gep1964.us.us, i64 %offset.idx2425
  %1641 = getelementptr i8, ptr %1640, i64 16
  %wide.load2428 = load <2 x double>, ptr %1640, align 8, !tbaa !9, !alias.scope !69
  %wide.load2429 = load <2 x double>, ptr %1641, align 8, !tbaa !9, !alias.scope !69
  %1642 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2431, <2 x double> %wide.load2428, <2 x double> %wide.load2426)
  %1643 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2431, <2 x double> %wide.load2429, <2 x double> %wide.load2427)
  %1644 = getelementptr double, ptr %invariant.gep1966.us.us, i64 %offset.idx2425
  %1645 = getelementptr i8, ptr %1644, i64 16
  %wide.load2432 = load <2 x double>, ptr %1644, align 8, !tbaa !9, !alias.scope !70
  %wide.load2433 = load <2 x double>, ptr %1645, align 8, !tbaa !9, !alias.scope !70
  %1646 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2435, <2 x double> %wide.load2432, <2 x double> %1642)
  %1647 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2435, <2 x double> %wide.load2433, <2 x double> %1643)
  store <2 x double> %1646, ptr %1638, align 8, !tbaa !9, !alias.scope !63, !noalias !66
  store <2 x double> %1647, ptr %1639, align 8, !tbaa !9, !alias.scope !63, !noalias !66
  %index.next2436 = add nuw i64 %index2424, 4
  %1648 = icmp eq i64 %index.next2436, %n.vec2420
  br i1 %1648, label %middle.block2415, label %vector.body2423, !llvm.loop !71

middle.block2415:                                 ; preds = %vector.body2423
  br i1 %cmp.n2437, label %..loopexit_crit_edge.us.us, label %scalar.ph2416.preheader

scalar.ph2416.preheader:                          ; preds = %.lr.ph1963.us.us, %middle.block2415
  %.1314361961.us.us.ph = phi i64 [ 1, %.lr.ph1963.us.us ], [ %ind.end2421, %middle.block2415 ]
  br label %scalar.ph2416

scalar.ph2416:                                    ; preds = %scalar.ph2416.preheader, %scalar.ph2416
  %.1314361961.us.us = phi i64 [ %1655, %scalar.ph2416 ], [ %.1314361961.us.us.ph, %scalar.ph2416.preheader ]
  %1649 = getelementptr double, ptr %1613, i64 %.1314361961.us.us
  %1650 = load double, ptr %1649, align 8, !tbaa !9
  %gep1965.us.us = getelementptr double, ptr %invariant.gep1964.us.us, i64 %.1314361961.us.us
  %1651 = load double, ptr %gep1965.us.us, align 8, !tbaa !9
  %1652 = call double @llvm.fmuladd.f64(double %1636, double %1651, double %1650)
  %gep1967.us.us = getelementptr double, ptr %invariant.gep1966.us.us, i64 %.1314361961.us.us
  %1653 = load double, ptr %gep1967.us.us, align 8, !tbaa !9
  %1654 = call double @llvm.fmuladd.f64(double %1633, double %1653, double %1652)
  store double %1654, ptr %1649, align 8, !tbaa !9
  %1655 = add nuw nsw i64 %.1314361961.us.us, 1
  %.not1549.not.us.us = icmp slt i64 %1655, %.614551981
  br i1 %.not1549.not.us.us, label %scalar.ph2416, label %..loopexit_crit_edge.us.us, !llvm.loop !72

..loopexit_crit_edge.us.us:                       ; preds = %scalar.ph2416, %middle.block2415
  %1656 = add nuw i64 %.314481969.us.us, 1
  %exitcond2144.not = icmp eq i64 %.314481969.us.us, %1611
  br i1 %exitcond2144.not, label %.loopexit1705, label %.lr.ph1963.us.us, !llvm.loop !73

.lr.ph1972.split:                                 ; preds = %.lr.ph1972.split.preheader, %.loopexit1701
  %.314481969 = phi i64 [ %1690, %.loopexit1701 ], [ 1, %.lr.ph1972.split.preheader ]
  %gep1974 = getelementptr double, ptr %invariant.gep1973, i64 %.314481969
  %1657 = load double, ptr %gep1974, align 8, !tbaa !9
  %gep1976 = getelementptr double, ptr %invariant.gep1975, i64 %.314481969
  %1658 = load double, ptr %gep1976, align 8, !tbaa !9
  %1659 = fmul double %1658, %1619
  %1660 = call double @llvm.fmuladd.f64(double %1617, double %1657, double %1659)
  %1661 = fmul double %1658, %1617
  %1662 = call double @llvm.fmuladd.f64(double %1618, double %1657, double %1661)
  br i1 %.not1553.not1952, label %.lr.ph1955, label %.loopexit1701

.lr.ph1955:                                       ; preds = %.lr.ph1972.split
  %1663 = add i64 %1620, %.314481969
  %1664 = mul nsw i64 %1663, %40
  %invariant.gep1956 = getelementptr double, ptr %42, i64 %1664
  %1665 = fmul double %1657, %1621
  %1666 = mul nsw i64 %1663, %43
  %invariant.gep1958 = getelementptr double, ptr %45, i64 %1666
  %1667 = fmul double %1658, %1621
  %brmerge2740 = select i1 %min.iters.check2475, i1 true, i1 %conflict.rdx2472
  br i1 %brmerge2740, label %scalar.ph2474.preheader, label %vector.ph2476

vector.ph2476:                                    ; preds = %.lr.ph1955
  %broadcast.splatinsert2486 = insertelement <2 x double> poison, double %1665, i64 0
  %broadcast.splat2487 = shufflevector <2 x double> %broadcast.splatinsert2486, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2489 = insertelement <2 x double> poison, double %1660, i64 0
  %broadcast.splat2490 = shufflevector <2 x double> %broadcast.splatinsert2489, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2493 = insertelement <2 x double> poison, double %1667, i64 0
  %broadcast.splat2494 = shufflevector <2 x double> %broadcast.splatinsert2493, <2 x double> poison, <2 x i32> zeroinitializer
  %broadcast.splatinsert2496 = insertelement <2 x double> poison, double %1662, i64 0
  %broadcast.splat2497 = shufflevector <2 x double> %broadcast.splatinsert2496, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body2481

vector.body2481:                                  ; preds = %vector.body2481, %vector.ph2476
  %index2482 = phi i64 [ 0, %vector.ph2476 ], [ %index.next2498, %vector.body2481 ]
  %offset.idx2483 = or disjoint i64 %index2482, 1
  %1668 = getelementptr double, ptr %1613, i64 %offset.idx2483
  %wide.load2484 = load <2 x double>, ptr %1668, align 8, !tbaa !9, !alias.scope !74, !noalias !77
  %1669 = getelementptr double, ptr %invariant.gep1956, i64 %offset.idx2483
  %wide.load2485 = load <2 x double>, ptr %1669, align 8, !tbaa !9, !alias.scope !81
  %1670 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2487, <2 x double> %wide.load2485, <2 x double> %wide.load2484)
  %1671 = getelementptr double, ptr %invariant.gep1958, i64 %offset.idx2483
  %wide.load2488 = load <2 x double>, ptr %1671, align 8, !tbaa !9, !alias.scope !82
  %1672 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2490, <2 x double> %wide.load2488, <2 x double> %1670)
  store <2 x double> %1672, ptr %1668, align 8, !tbaa !9, !alias.scope !74, !noalias !77
  %1673 = getelementptr double, ptr %1615, i64 %offset.idx2483
  %wide.load2491 = load <2 x double>, ptr %1673, align 8, !tbaa !9, !alias.scope !83, !noalias !84
  %wide.load2492 = load <2 x double>, ptr %1669, align 8, !tbaa !9, !alias.scope !81
  %1674 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2494, <2 x double> %wide.load2492, <2 x double> %wide.load2491)
  %wide.load2495 = load <2 x double>, ptr %1671, align 8, !tbaa !9, !alias.scope !82
  %1675 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %broadcast.splat2497, <2 x double> %wide.load2495, <2 x double> %1674)
  store <2 x double> %1675, ptr %1673, align 8, !tbaa !9, !alias.scope !83, !noalias !84
  %index.next2498 = add nuw i64 %index2482, 2
  %1676 = icmp eq i64 %index.next2498, %n.vec2478
  br i1 %1676, label %middle.block2473, label %vector.body2481, !llvm.loop !85

middle.block2473:                                 ; preds = %vector.body2481
  br i1 %cmp.n2499, label %.loopexit1701, label %scalar.ph2474.preheader

scalar.ph2474.preheader:                          ; preds = %.lr.ph1955, %middle.block2473
  %.1214351953.ph = phi i64 [ 1, %.lr.ph1955 ], [ %ind.end2479, %middle.block2473 ]
  br label %scalar.ph2474

scalar.ph2474:                                    ; preds = %scalar.ph2474.preheader, %scalar.ph2474
  %.1214351953 = phi i64 [ %1689, %scalar.ph2474 ], [ %.1214351953.ph, %scalar.ph2474.preheader ]
  %1677 = getelementptr double, ptr %1613, i64 %.1214351953
  %1678 = load double, ptr %1677, align 8, !tbaa !9
  %gep1957 = getelementptr double, ptr %invariant.gep1956, i64 %.1214351953
  %1679 = load double, ptr %gep1957, align 8, !tbaa !9
  %1680 = call double @llvm.fmuladd.f64(double %1665, double %1679, double %1678)
  %gep1959 = getelementptr double, ptr %invariant.gep1958, i64 %.1214351953
  %1681 = load double, ptr %gep1959, align 8, !tbaa !9
  %1682 = call double @llvm.fmuladd.f64(double %1660, double %1681, double %1680)
  store double %1682, ptr %1677, align 8, !tbaa !9
  %1683 = getelementptr double, ptr %1615, i64 %.1214351953
  %1684 = load double, ptr %1683, align 8, !tbaa !9
  %1685 = load double, ptr %gep1957, align 8, !tbaa !9
  %1686 = call double @llvm.fmuladd.f64(double %1667, double %1685, double %1684)
  %1687 = load double, ptr %gep1959, align 8, !tbaa !9
  %1688 = call double @llvm.fmuladd.f64(double %1662, double %1687, double %1686)
  store double %1688, ptr %1683, align 8, !tbaa !9
  %1689 = add nuw nsw i64 %.1214351953, 1
  %.not1553.not = icmp slt i64 %1689, %.614551981
  br i1 %.not1553.not, label %scalar.ph2474, label %.loopexit1701, !llvm.loop !86

.loopexit1701:                                    ; preds = %scalar.ph2474, %middle.block2473, %.lr.ph1972.split
  %1690 = add nuw i64 %.314481969, 1
  %exitcond2143.not = icmp eq i64 %.314481969, %1611
  br i1 %exitcond2143.not, label %.loopexit1705, label %.lr.ph1972.split, !llvm.loop !73

.loopexit1705:                                    ; preds = %.loopexit1701, %..loopexit_crit_edge.us.us, %1610, %1502
  %1691 = phi i64 [ %1480, %1502 ], [ %.pre2168, %1610 ], [ %.pre2168, %..loopexit_crit_edge.us.us ], [ %.pre2168, %.loopexit1701 ]
  %.12 = phi double [ %.91985, %1502 ], [ %.10, %1610 ], [ %.10, %..loopexit_crit_edge.us.us ], [ %.10, %.loopexit1701 ]
  %.41391 = phi i64 [ 1, %1502 ], [ 0, %1610 ], [ 0, %..loopexit_crit_edge.us.us ], [ 0, %.loopexit1701 ]
  %1692 = add nsw i64 %.614551981, -1
  %1693 = icmp sgt i64 %.614551981, 1
  %indvar.next2136 = add nuw nsw i64 %indvar2135, 1
  br i1 %1693, label %1479, label %._crit_edge1990, !llvm.loop !87

._crit_edge1990:                                  ; preds = %._crit_edge1942, %.lr.ph1972.split.us, %.loopexit1705, %.loopexit1711
  %1694 = phi i64 [ %1449, %.loopexit1711 ], [ %.pre2168, %._crit_edge1942 ], [ %.pre2168, %.lr.ph1972.split.us ], [ %1691, %.loopexit1705 ]
  %1695 = sub nsw i64 %.214072067, %1694
  %.not1530.not2036 = icmp slt i64 %1694, 1
  br i1 %.not1529, label %1802, label %1696

1696:                                             ; preds = %._crit_edge1990
  %.pre2169.pre = load i64, ptr %3, align 8, !tbaa !5
  br i1 %.not1530.not2036, label %.loopexit1710, label %.lr.ph2015

.lr.ph2015:                                       ; preds = %1696
  %.not15391993 = icmp slt i64 %.pre2169.pre, 1
  %.not15402006 = icmp slt i64 %.114432064, 2
  %1697 = add i64 %.pre2169.pre, -1
  %xtraiter2688 = and i64 %.pre2169.pre, 3
  %1698 = icmp ult i64 %1697, 3
  %unroll_iter2690 = and i64 %.pre2169.pre, 9223372036854775804
  %lcmp.mod2689.not = icmp eq i64 %xtraiter2688, 0
  %xtraiter2693 = and i64 %.pre2169.pre, 1
  %1699 = icmp eq i64 %1697, 0
  %unroll_iter2696 = and i64 %.pre2169.pre, 9223372036854775806
  %lcmp.mod2695.not = icmp eq i64 %xtraiter2693, 0
  br label %1700

1700:                                             ; preds = %.lr.ph2015, %1755
  %.914192013 = phi i64 [ 0, %.lr.ph2015 ], [ %1756, %1755 ]
  br i1 %.not15391993, label %.preheader1704.thread, label %.lr.ph1996

.lr.ph1996:                                       ; preds = %1700
  %1701 = add nuw nsw i64 %.914192013, 2
  %1702 = mul nuw nsw i64 %.pre2169.pre, %1701
  %1703 = getelementptr double, ptr %14, i64 %1702
  %1704 = add nuw nsw i64 %.914192013, 4
  %1705 = mul nuw nsw i64 %.pre2169.pre, %1704
  %1706 = getelementptr double, ptr %52, i64 %1705
  br i1 %1698, label %.preheader1704.unr-lcssa, label %.lr.ph1996.new

.lr.ph1996.new:                                   ; preds = %.lr.ph1996
  %invariant.gep2736 = getelementptr i8, ptr %1706, i64 8
  br label %1717

.preheader1704.unr-lcssa:                         ; preds = %1717, %.lr.ph1996
  %.1414371994.unr = phi i64 [ 1, %.lr.ph1996 ], [ %1735, %1717 ]
  br i1 %lcmp.mod2689.not, label %.preheader1704, label %.epil.preheader2687

.epil.preheader2687:                              ; preds = %.preheader1704.unr-lcssa, %.epil.preheader2687
  %.1414371994.epil = phi i64 [ %1711, %.epil.preheader2687 ], [ %.1414371994.unr, %.preheader1704.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader2687 ], [ 0, %.preheader1704.unr-lcssa ]
  %1707 = load double, ptr %1703, align 8, !tbaa !9
  %gep1992.epil = getelementptr double, ptr %invariant.gep1991, i64 %.1414371994.epil
  %1708 = load double, ptr %gep1992.epil, align 8, !tbaa !9
  %1709 = fmul double %1707, %1708
  %1710 = getelementptr double, ptr %1706, i64 %.1414371994.epil
  store double %1709, ptr %1710, align 8, !tbaa !9
  %1711 = add nuw i64 %.1414371994.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter2688
  br i1 %epil.iter.cmp.not, label %.preheader1704, label %.epil.preheader2687, !llvm.loop !88

.preheader1704:                                   ; preds = %.epil.preheader2687, %.preheader1704.unr-lcssa
  br i1 %.not15402006, label %1755, label %.lr.ph2008

.preheader1704.thread:                            ; preds = %1700
  br i1 %.not15402006, label %1755, label %._crit_edge2009

.lr.ph2008:                                       ; preds = %.preheader1704
  %1712 = add nuw nsw i64 %.914192013, 2
  %1713 = mul nuw nsw i64 %.pre2169.pre, %1712
  %invariant.gep2010 = getelementptr double, ptr %52, i64 %1713
  %1714 = add nuw nsw i64 %.914192013, 4
  %1715 = mul nuw nsw i64 %.pre2169.pre, %1714
  %1716 = getelementptr double, ptr %52, i64 %1715
  br i1 %.not15391993, label %._crit_edge2009, label %.lr.ph2002

1717:                                             ; preds = %1717, %.lr.ph1996.new
  %.1414371994 = phi i64 [ 1, %.lr.ph1996.new ], [ %1735, %1717 ]
  %niter2691 = phi i64 [ 0, %.lr.ph1996.new ], [ %niter2691.next.3, %1717 ]
  %1718 = load double, ptr %1703, align 8, !tbaa !9
  %gep1992 = getelementptr double, ptr %invariant.gep1991, i64 %.1414371994
  %1719 = load double, ptr %gep1992, align 8, !tbaa !9
  %1720 = fmul double %1718, %1719
  %1721 = getelementptr double, ptr %1706, i64 %.1414371994
  store double %1720, ptr %1721, align 8, !tbaa !9
  %1722 = load double, ptr %1703, align 8, !tbaa !9
  %gep1992.1 = getelementptr double, ptr %10, i64 %.1414371994
  %1723 = load double, ptr %gep1992.1, align 8, !tbaa !9
  %1724 = fmul double %1722, %1723
  %gep2737 = getelementptr double, ptr %invariant.gep2736, i64 %.1414371994
  store double %1724, ptr %gep2737, align 8, !tbaa !9
  %1725 = add nuw nsw i64 %.1414371994, 2
  %1726 = load double, ptr %1703, align 8, !tbaa !9
  %gep1992.2 = getelementptr double, ptr %invariant.gep1991, i64 %1725
  %1727 = load double, ptr %gep1992.2, align 8, !tbaa !9
  %1728 = fmul double %1726, %1727
  %1729 = getelementptr double, ptr %1706, i64 %1725
  store double %1728, ptr %1729, align 8, !tbaa !9
  %1730 = add nuw i64 %.1414371994, 3
  %1731 = load double, ptr %1703, align 8, !tbaa !9
  %gep1992.3 = getelementptr double, ptr %invariant.gep1991, i64 %1730
  %1732 = load double, ptr %gep1992.3, align 8, !tbaa !9
  %1733 = fmul double %1731, %1732
  %1734 = getelementptr double, ptr %1706, i64 %1730
  store double %1733, ptr %1734, align 8, !tbaa !9
  %1735 = add nuw i64 %.1414371994, 4
  %niter2691.next.3 = add i64 %niter2691, 4
  %niter2691.ncmp.3 = icmp eq i64 %niter2691.next.3, %unroll_iter2690
  br i1 %niter2691.ncmp.3, label %.preheader1704.unr-lcssa, label %1717, !llvm.loop !90

.lr.ph2002:                                       ; preds = %.lr.ph2008, %._crit_edge2003
  %.014442007 = phi i64 [ %1754, %._crit_edge2003 ], [ 2, %.lr.ph2008 ]
  %gep2011 = getelementptr double, ptr %invariant.gep2010, i64 %.014442007
  %1736 = mul nsw i64 %.014442007, %49
  %invariant.gep2004 = getelementptr double, ptr %51, i64 %1736
  br i1 %1699, label %._crit_edge2003.unr-lcssa, label %.lr.ph2002.new

.lr.ph2002.new:                                   ; preds = %.lr.ph2002, %.lr.ph2002.new
  %.1514382000 = phi i64 [ %1748, %.lr.ph2002.new ], [ 1, %.lr.ph2002 ]
  %niter2697 = phi i64 [ %niter2697.next.1, %.lr.ph2002.new ], [ 0, %.lr.ph2002 ]
  %1737 = load double, ptr %gep2011, align 8, !tbaa !9
  %gep2005 = getelementptr double, ptr %invariant.gep2004, i64 %.1514382000
  %1738 = load double, ptr %gep2005, align 8, !tbaa !9
  %1739 = getelementptr double, ptr %1716, i64 %.1514382000
  %1740 = load double, ptr %1739, align 8, !tbaa !9
  %1741 = call double @llvm.fmuladd.f64(double %1737, double %1738, double %1740)
  store double %1741, ptr %1739, align 8, !tbaa !9
  %1742 = add nuw i64 %.1514382000, 1
  %1743 = load double, ptr %gep2011, align 8, !tbaa !9
  %gep2005.1 = getelementptr double, ptr %invariant.gep2004, i64 %1742
  %1744 = load double, ptr %gep2005.1, align 8, !tbaa !9
  %1745 = getelementptr double, ptr %1716, i64 %1742
  %1746 = load double, ptr %1745, align 8, !tbaa !9
  %1747 = call double @llvm.fmuladd.f64(double %1743, double %1744, double %1746)
  store double %1747, ptr %1745, align 8, !tbaa !9
  %1748 = add nuw i64 %.1514382000, 2
  %niter2697.next.1 = add i64 %niter2697, 2
  %niter2697.ncmp.1 = icmp eq i64 %niter2697.next.1, %unroll_iter2696
  br i1 %niter2697.ncmp.1, label %._crit_edge2003.unr-lcssa, label %.lr.ph2002.new, !llvm.loop !91

._crit_edge2003.unr-lcssa:                        ; preds = %.lr.ph2002.new, %.lr.ph2002
  %.1514382000.unr = phi i64 [ 1, %.lr.ph2002 ], [ %1748, %.lr.ph2002.new ]
  br i1 %lcmp.mod2695.not, label %._crit_edge2003, label %._crit_edge2003.epilog-lcssa

._crit_edge2003.epilog-lcssa:                     ; preds = %._crit_edge2003.unr-lcssa
  %1749 = load double, ptr %gep2011, align 8, !tbaa !9
  %gep2005.epil = getelementptr double, ptr %invariant.gep2004, i64 %.1514382000.unr
  %1750 = load double, ptr %gep2005.epil, align 8, !tbaa !9
  %1751 = getelementptr double, ptr %1716, i64 %.1514382000.unr
  %1752 = load double, ptr %1751, align 8, !tbaa !9
  %1753 = call double @llvm.fmuladd.f64(double %1749, double %1750, double %1752)
  store double %1753, ptr %1751, align 8, !tbaa !9
  br label %._crit_edge2003

._crit_edge2003:                                  ; preds = %._crit_edge2003.unr-lcssa, %._crit_edge2003.epilog-lcssa
  %1754 = add nuw nsw i64 %.014442007, 1
  %.not1540.not = icmp slt i64 %.014442007, %.114432064
  br i1 %.not1540.not, label %.lr.ph2002, label %._crit_edge2009, !llvm.loop !92

._crit_edge2009:                                  ; preds = %._crit_edge2003, %.preheader1704.thread, %.lr.ph2008
  store i64 %.pre2169.pre, ptr %21, align 8, !tbaa !5
  br label %1755

1755:                                             ; preds = %.preheader1704.thread, %._crit_edge2009, %.preheader1704
  %1756 = add nuw nsw i64 %.914192013, 1
  %exitcond2147.not = icmp eq i64 %1756, %1694
  br i1 %exitcond2147.not, label %._crit_edge2016, label %1700, !llvm.loop !93

._crit_edge2016:                                  ; preds = %1755
  %.not15382017 = icmp slt i64 %.pre2169.pre, 1
  %or.cond2264 = select i1 %.not1530.not2036, i1 true, i1 %.not15382017
  br i1 %or.cond2264, label %.loopexit1710, label %.lr.ph2020.preheader

.lr.ph2020.preheader:                             ; preds = %._crit_edge2016
  %1757 = shl i64 %.214072067, 3
  %1758 = add i64 %1757, -8
  %1759 = shl i64 %1694, 3
  %1760 = sub i64 %1758, %1759
  %1761 = mul i64 %49, %1760
  %scevgep2373 = getelementptr i8, ptr %10, i64 %1761
  %1762 = add i64 %1757, -16
  %1763 = mul i64 %49, %1762
  %1764 = shl i64 %.pre2169.pre, 3
  %1765 = getelementptr i8, ptr %10, i64 %1763
  %scevgep2374 = getelementptr i8, ptr %1765, i64 %1764
  %1766 = shl i64 %.pre2169.pre, 5
  %scevgep2375 = getelementptr i8, ptr %14, i64 %1766
  %1767 = add i64 %1759, 32
  %1768 = mul i64 %.pre2169.pre, %1767
  %scevgep2376 = getelementptr i8, ptr %14, i64 %1768
  %1769 = add nuw i64 %.pre2169.pre, 1
  %min.iters.check2384 = icmp ult i64 %.pre2169.pre, 8
  %bound02377 = icmp ult ptr %scevgep2373, %scevgep2376
  %bound12378 = icmp ult ptr %scevgep2375, %scevgep2374
  %found.conflict2379 = and i1 %bound02377, %bound12378
  %1770 = or i64 %949, %1764
  %1771 = icmp slt i64 %1770, 0
  %1772 = or i1 %found.conflict2379, %1771
  %n.vec2387 = and i64 %.pre2169.pre, 9223372036854775804
  %ind.end2388 = or disjoint i64 %n.vec2387, 1
  %cmp.n2396 = icmp eq i64 %.pre2169.pre, %n.vec2387
  br label %.lr.ph2020

.lr.ph2020:                                       ; preds = %.lr.ph2020.preheader, %._crit_edge2021
  %.1014202025 = phi i64 [ %1801, %._crit_edge2021 ], [ 0, %.lr.ph2020.preheader ]
  %1773 = add nuw nsw i64 %.1014202025, 4
  %1774 = mul nuw nsw i64 %.pre2169.pre, %1773
  %1775 = getelementptr double, ptr %52, i64 %1774
  %1776 = add nsw i64 %.1014202025, %1695
  %1777 = mul nsw i64 %1776, %49
  %invariant.gep2022 = getelementptr double, ptr %51, i64 %1777
  %brmerge2741 = select i1 %min.iters.check2384, i1 true, i1 %1772
  br i1 %brmerge2741, label %scalar.ph2383.preheader, label %vector.body2390

vector.body2390:                                  ; preds = %.lr.ph2020, %vector.body2390
  %index2391 = phi i64 [ %index.next2395, %vector.body2390 ], [ 0, %.lr.ph2020 ]
  %offset.idx2392 = or disjoint i64 %index2391, 1
  %1778 = getelementptr double, ptr %1775, i64 %offset.idx2392
  %1779 = getelementptr i8, ptr %1778, i64 16
  %wide.load2393 = load <2 x double>, ptr %1778, align 8, !tbaa !9, !alias.scope !94
  %wide.load2394 = load <2 x double>, ptr %1779, align 8, !tbaa !9, !alias.scope !94
  %1780 = getelementptr double, ptr %invariant.gep2022, i64 %offset.idx2392
  %1781 = getelementptr i8, ptr %1780, i64 16
  store <2 x double> %wide.load2393, ptr %1780, align 8, !tbaa !9, !alias.scope !97, !noalias !94
  store <2 x double> %wide.load2394, ptr %1781, align 8, !tbaa !9, !alias.scope !97, !noalias !94
  %index.next2395 = add nuw i64 %index2391, 4
  %1782 = icmp eq i64 %index.next2395, %n.vec2387
  br i1 %1782, label %middle.block2382, label %vector.body2390, !llvm.loop !99

middle.block2382:                                 ; preds = %vector.body2390
  br i1 %cmp.n2396, label %._crit_edge2021, label %scalar.ph2383.preheader

scalar.ph2383.preheader:                          ; preds = %.lr.ph2020, %middle.block2382
  %.162018.ph = phi i64 [ 1, %.lr.ph2020 ], [ %ind.end2388, %middle.block2382 ]
  %1783 = sub i64 %1769, %.162018.ph
  %1784 = sub i64 %.pre2169.pre, %.162018.ph
  %xtraiter2698 = and i64 %1783, 3
  %lcmp.mod2699.not = icmp eq i64 %xtraiter2698, 0
  br i1 %lcmp.mod2699.not, label %scalar.ph2383.prol.loopexit, label %scalar.ph2383.prol

scalar.ph2383.prol:                               ; preds = %scalar.ph2383.preheader, %scalar.ph2383.prol
  %.162018.prol = phi i64 [ %1787, %scalar.ph2383.prol ], [ %.162018.ph, %scalar.ph2383.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph2383.prol ], [ 0, %scalar.ph2383.preheader ]
  %1785 = getelementptr double, ptr %1775, i64 %.162018.prol
  %1786 = load double, ptr %1785, align 8, !tbaa !9
  %gep2023.prol = getelementptr double, ptr %invariant.gep2022, i64 %.162018.prol
  store double %1786, ptr %gep2023.prol, align 8, !tbaa !9
  %1787 = add nuw i64 %.162018.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter2698
  br i1 %prol.iter.cmp.not, label %scalar.ph2383.prol.loopexit, label %scalar.ph2383.prol, !llvm.loop !100

scalar.ph2383.prol.loopexit:                      ; preds = %scalar.ph2383.prol, %scalar.ph2383.preheader
  %.162018.unr = phi i64 [ %.162018.ph, %scalar.ph2383.preheader ], [ %1787, %scalar.ph2383.prol ]
  %1788 = icmp ult i64 %1784, 3
  br i1 %1788, label %._crit_edge2021, label %scalar.ph2383

scalar.ph2383:                                    ; preds = %scalar.ph2383.prol.loopexit, %scalar.ph2383
  %.162018 = phi i64 [ %1800, %scalar.ph2383 ], [ %.162018.unr, %scalar.ph2383.prol.loopexit ]
  %1789 = getelementptr double, ptr %1775, i64 %.162018
  %1790 = load double, ptr %1789, align 8, !tbaa !9
  %gep2023 = getelementptr double, ptr %invariant.gep2022, i64 %.162018
  store double %1790, ptr %gep2023, align 8, !tbaa !9
  %1791 = add nuw i64 %.162018, 1
  %1792 = getelementptr double, ptr %1775, i64 %1791
  %1793 = load double, ptr %1792, align 8, !tbaa !9
  %gep2023.1 = getelementptr double, ptr %invariant.gep2022, i64 %1791
  store double %1793, ptr %gep2023.1, align 8, !tbaa !9
  %1794 = add nuw i64 %.162018, 2
  %1795 = getelementptr double, ptr %1775, i64 %1794
  %1796 = load double, ptr %1795, align 8, !tbaa !9
  %gep2023.2 = getelementptr double, ptr %invariant.gep2022, i64 %1794
  store double %1796, ptr %gep2023.2, align 8, !tbaa !9
  %1797 = add nuw i64 %.162018, 3
  %1798 = getelementptr double, ptr %1775, i64 %1797
  %1799 = load double, ptr %1798, align 8, !tbaa !9
  %gep2023.3 = getelementptr double, ptr %invariant.gep2022, i64 %1797
  store double %1799, ptr %gep2023.3, align 8, !tbaa !9
  %1800 = add nuw i64 %.162018, 4
  %exitcond2150.not.3 = icmp eq i64 %1797, %.pre2169.pre
  br i1 %exitcond2150.not.3, label %._crit_edge2021, label %scalar.ph2383, !llvm.loop !101

._crit_edge2021:                                  ; preds = %scalar.ph2383.prol.loopexit, %scalar.ph2383, %middle.block2382
  %1801 = add nuw nsw i64 %.1014202025, 1
  %exitcond2151.not = icmp eq i64 %1801, %1694
  br i1 %exitcond2151.not, label %.loopexit1710, label %.lr.ph2020, !llvm.loop !102

1802:                                             ; preds = %._crit_edge1990
  br i1 %.not1530.not2036, label %.loopexit1710, label %.lr.ph2039

.lr.ph2039:                                       ; preds = %1802
  %1803 = load i64, ptr %3, align 8, !tbaa !5
  %.not15312029 = icmp slt i64 %1803, 1
  %1804 = shl i64 %.214072067, 3
  %1805 = add i64 %1804, -8
  %1806 = shl i64 %1694, 3
  %1807 = sub i64 %1805, %1806
  %1808 = mul i64 %49, %1807
  %scevgep2352 = getelementptr i8, ptr %10, i64 %1808
  %1809 = add i64 %1804, -16
  %1810 = mul i64 %49, %1809
  %1811 = shl i64 %1803, 3
  %1812 = getelementptr i8, ptr %10, i64 %1810
  %scevgep2353 = getelementptr i8, ptr %1812, i64 %1811
  %1813 = shl i64 %1803, 4
  %scevgep2354 = getelementptr i8, ptr %14, i64 %1813
  %1814 = add i64 %1806, 16
  %1815 = mul i64 %1803, %1814
  %scevgep2355 = getelementptr i8, ptr %14, i64 %1815
  %1816 = add i64 %1803, 1
  %min.iters.check2359 = icmp ult i64 %1803, 8
  %bound0 = icmp ult ptr %scevgep2352, %scevgep2355
  %bound1 = icmp ult ptr %scevgep2354, %scevgep2353
  %found.conflict = and i1 %bound0, %bound1
  %1817 = or i64 %949, %1811
  %1818 = icmp slt i64 %1817, 0
  %1819 = or i1 %found.conflict, %1818
  %n.vec2362 = and i64 %1803, 9223372036854775804
  %ind.end2363 = or disjoint i64 %n.vec2362, 1
  %cmp.n2371 = icmp eq i64 %1803, %n.vec2362
  br label %1820

1820:                                             ; preds = %.lr.ph2039, %._crit_edge2033
  %.1114212037 = phi i64 [ 0, %.lr.ph2039 ], [ %1849, %._crit_edge2033 ]
  br i1 %.not15312029, label %._crit_edge2033, label %.lr.ph2032

.lr.ph2032:                                       ; preds = %1820
  %1821 = add nuw nsw i64 %.1114212037, 2
  %1822 = mul nuw nsw i64 %1803, %1821
  %1823 = getelementptr double, ptr %52, i64 %1822
  %1824 = add nsw i64 %.1114212037, %1695
  %1825 = mul nsw i64 %1824, %49
  %invariant.gep2034 = getelementptr double, ptr %51, i64 %1825
  %brmerge2742 = select i1 %min.iters.check2359, i1 true, i1 %1819
  br i1 %brmerge2742, label %scalar.ph2358.preheader, label %vector.body2365

vector.body2365:                                  ; preds = %.lr.ph2032, %vector.body2365
  %index2366 = phi i64 [ %index.next2370, %vector.body2365 ], [ 0, %.lr.ph2032 ]
  %offset.idx2367 = or disjoint i64 %index2366, 1
  %1826 = getelementptr double, ptr %1823, i64 %offset.idx2367
  %1827 = getelementptr i8, ptr %1826, i64 16
  %wide.load2368 = load <2 x double>, ptr %1826, align 8, !tbaa !9, !alias.scope !103
  %wide.load2369 = load <2 x double>, ptr %1827, align 8, !tbaa !9, !alias.scope !103
  %1828 = getelementptr double, ptr %invariant.gep2034, i64 %offset.idx2367
  %1829 = getelementptr i8, ptr %1828, i64 16
  store <2 x double> %wide.load2368, ptr %1828, align 8, !tbaa !9, !alias.scope !106, !noalias !103
  store <2 x double> %wide.load2369, ptr %1829, align 8, !tbaa !9, !alias.scope !106, !noalias !103
  %index.next2370 = add nuw i64 %index2366, 4
  %1830 = icmp eq i64 %index.next2370, %n.vec2362
  br i1 %1830, label %middle.block2357, label %vector.body2365, !llvm.loop !108

middle.block2357:                                 ; preds = %vector.body2365
  br i1 %cmp.n2371, label %._crit_edge2033, label %scalar.ph2358.preheader

scalar.ph2358.preheader:                          ; preds = %.lr.ph2032, %middle.block2357
  %.172030.ph = phi i64 [ 1, %.lr.ph2032 ], [ %ind.end2363, %middle.block2357 ]
  %1831 = sub i64 %1816, %.172030.ph
  %1832 = sub i64 %1803, %.172030.ph
  %xtraiter2700 = and i64 %1831, 3
  %lcmp.mod2701.not = icmp eq i64 %xtraiter2700, 0
  br i1 %lcmp.mod2701.not, label %scalar.ph2358.prol.loopexit, label %scalar.ph2358.prol

scalar.ph2358.prol:                               ; preds = %scalar.ph2358.preheader, %scalar.ph2358.prol
  %.172030.prol = phi i64 [ %1835, %scalar.ph2358.prol ], [ %.172030.ph, %scalar.ph2358.preheader ]
  %prol.iter2702 = phi i64 [ %prol.iter2702.next, %scalar.ph2358.prol ], [ 0, %scalar.ph2358.preheader ]
  %1833 = getelementptr double, ptr %1823, i64 %.172030.prol
  %1834 = load double, ptr %1833, align 8, !tbaa !9
  %gep2035.prol = getelementptr double, ptr %invariant.gep2034, i64 %.172030.prol
  store double %1834, ptr %gep2035.prol, align 8, !tbaa !9
  %1835 = add nuw i64 %.172030.prol, 1
  %prol.iter2702.next = add i64 %prol.iter2702, 1
  %prol.iter2702.cmp.not = icmp eq i64 %prol.iter2702.next, %xtraiter2700
  br i1 %prol.iter2702.cmp.not, label %scalar.ph2358.prol.loopexit, label %scalar.ph2358.prol, !llvm.loop !109

scalar.ph2358.prol.loopexit:                      ; preds = %scalar.ph2358.prol, %scalar.ph2358.preheader
  %.172030.unr = phi i64 [ %.172030.ph, %scalar.ph2358.preheader ], [ %1835, %scalar.ph2358.prol ]
  %1836 = icmp ult i64 %1832, 3
  br i1 %1836, label %._crit_edge2033, label %scalar.ph2358

scalar.ph2358:                                    ; preds = %scalar.ph2358.prol.loopexit, %scalar.ph2358
  %.172030 = phi i64 [ %1848, %scalar.ph2358 ], [ %.172030.unr, %scalar.ph2358.prol.loopexit ]
  %1837 = getelementptr double, ptr %1823, i64 %.172030
  %1838 = load double, ptr %1837, align 8, !tbaa !9
  %gep2035 = getelementptr double, ptr %invariant.gep2034, i64 %.172030
  store double %1838, ptr %gep2035, align 8, !tbaa !9
  %1839 = add nuw i64 %.172030, 1
  %1840 = getelementptr double, ptr %1823, i64 %1839
  %1841 = load double, ptr %1840, align 8, !tbaa !9
  %gep2035.1 = getelementptr double, ptr %invariant.gep2034, i64 %1839
  store double %1841, ptr %gep2035.1, align 8, !tbaa !9
  %1842 = add nuw i64 %.172030, 2
  %1843 = getelementptr double, ptr %1823, i64 %1842
  %1844 = load double, ptr %1843, align 8, !tbaa !9
  %gep2035.2 = getelementptr double, ptr %invariant.gep2034, i64 %1842
  store double %1844, ptr %gep2035.2, align 8, !tbaa !9
  %1845 = add nuw i64 %.172030, 3
  %1846 = getelementptr double, ptr %1823, i64 %1845
  %1847 = load double, ptr %1846, align 8, !tbaa !9
  %gep2035.3 = getelementptr double, ptr %invariant.gep2034, i64 %1845
  store double %1847, ptr %gep2035.3, align 8, !tbaa !9
  %1848 = add nuw i64 %.172030, 4
  %exitcond2154.not.3 = icmp eq i64 %1845, %1803
  br i1 %exitcond2154.not.3, label %._crit_edge2033, label %scalar.ph2358, !llvm.loop !110

._crit_edge2033:                                  ; preds = %scalar.ph2358.prol.loopexit, %scalar.ph2358, %middle.block2357, %1820
  %1849 = add nuw nsw i64 %.1114212037, 1
  %exitcond2155.not = icmp eq i64 %1849, %1694
  br i1 %exitcond2155.not, label %.loopexit1710, label %1820, !llvm.loop !111

.loopexit1710:                                    ; preds = %._crit_edge2021, %._crit_edge2033, %1696, %._crit_edge2016, %1802
  %.11404 = phi i64 [ %.114432064, %1802 ], [ %.pre2169.pre, %._crit_edge2016 ], [ %.pre2169.pre, %1696 ], [ %.114432064, %._crit_edge2033 ], [ %.pre2169.pre, %._crit_edge2021 ]
  store i64 %.11404, ptr %20, align 8, !tbaa !5
  %.not15342047 = icmp slt i64 %.11404, 1
  br i1 %.not1511167016851686, label %1870, label %1850

1850:                                             ; preds = %.loopexit1710
  br i1 %.not15342047, label %.loopexit1708, label %.lr.ph2044

.lr.ph2044:                                       ; preds = %1850
  %1851 = mul nsw i64 %1695, %49
  %1852 = add nsw i64 %1695, 1
  %1853 = mul nsw i64 %1852, %49
  br label %1854

1854:                                             ; preds = %.lr.ph2044, %1854
  %.132042 = phi double [ 0.000000e+00, %.lr.ph2044 ], [ %1868, %1854 ]
  %.714562041 = phi i64 [ 1, %.lr.ph2044 ], [ %1869, %1854 ]
  %1855 = getelementptr double, ptr %51, i64 %.714562041
  %1856 = getelementptr double, ptr %1855, i64 %1851
  %1857 = load double, ptr %1856, align 8, !tbaa !9
  %1858 = fcmp oge double %1857, 0.000000e+00
  %1859 = fneg double %1857
  %1860 = select i1 %1858, double %1857, double %1859
  %1861 = getelementptr double, ptr %1855, i64 %1853
  %1862 = load double, ptr %1861, align 8, !tbaa !9
  %1863 = fcmp oge double %1862, 0.000000e+00
  %1864 = fneg double %1862
  %1865 = select i1 %1863, double %1862, double %1864
  %1866 = fadd double %1860, %1865
  %1867 = fcmp oge double %.132042, %1866
  %1868 = select i1 %1867, double %.132042, double %1866
  %1869 = add nuw i64 %.714562041, 1
  %exitcond2156.not = icmp eq i64 %.714562041, %.11404
  br i1 %exitcond2156.not, label %..loopexit1709_crit_edge, label %1854, !llvm.loop !112

1870:                                             ; preds = %.loopexit1710
  br i1 %.not15342047, label %.loopexit1708, label %.lr.ph2051

.lr.ph2051:                                       ; preds = %1870
  %1871 = mul nsw i64 %1695, %49
  %invariant.gep2053 = getelementptr double, ptr %51, i64 %1871
  %xtraiter2704 = and i64 %.11404, 1
  %1872 = icmp eq i64 %.11404, 1
  br i1 %1872, label %..loopexit1708_crit_edge.unr-lcssa, label %.lr.ph2051.new

.lr.ph2051.new:                                   ; preds = %.lr.ph2051
  %unroll_iter2709 = and i64 %.11404, 9223372036854775806
  %invariant.gep2738 = getelementptr i8, ptr %invariant.gep2053, i64 8
  br label %1873

1873:                                             ; preds = %1873, %.lr.ph2051.new
  %.142049 = phi double [ 0.000000e+00, %.lr.ph2051.new ], [ %1885, %1873 ]
  %.814572048 = phi i64 [ 1, %.lr.ph2051.new ], [ %1886, %1873 ]
  %niter2710 = phi i64 [ 0, %.lr.ph2051.new ], [ %niter2710.next.1, %1873 ]
  %gep2054 = getelementptr double, ptr %invariant.gep2053, i64 %.814572048
  %1874 = load double, ptr %gep2054, align 8, !tbaa !9
  %1875 = fcmp oge double %1874, 0.000000e+00
  %1876 = fneg double %1874
  %1877 = select i1 %1875, double %1874, double %1876
  %1878 = fcmp oge double %.142049, %1877
  %1879 = select i1 %1878, double %.142049, double %1877
  %gep2739 = getelementptr double, ptr %invariant.gep2738, i64 %.814572048
  %1880 = load double, ptr %gep2739, align 8, !tbaa !9
  %1881 = fcmp oge double %1880, 0.000000e+00
  %1882 = fneg double %1880
  %1883 = select i1 %1881, double %1880, double %1882
  %1884 = fcmp oge double %1879, %1883
  %1885 = select i1 %1884, double %1879, double %1883
  %1886 = add nuw i64 %.814572048, 2
  %niter2710.next.1 = add i64 %niter2710, 2
  %niter2710.ncmp.1 = icmp eq i64 %niter2710.next.1, %unroll_iter2709
  br i1 %niter2710.ncmp.1, label %..loopexit1708_crit_edge.unr-lcssa, label %1873, !llvm.loop !113

..loopexit1708_crit_edge.unr-lcssa:               ; preds = %1873, %.lr.ph2051
  %.lcssa2652.ph = phi double [ poison, %.lr.ph2051 ], [ %1880, %1873 ]
  %.lcssa2651.ph = phi double [ poison, %.lr.ph2051 ], [ %1885, %1873 ]
  %.142049.unr = phi double [ 0.000000e+00, %.lr.ph2051 ], [ %1885, %1873 ]
  %.814572048.unr = phi i64 [ 1, %.lr.ph2051 ], [ %1886, %1873 ]
  %lcmp.mod2706.not = icmp eq i64 %xtraiter2704, 0
  br i1 %lcmp.mod2706.not, label %..loopexit1708_crit_edge, label %..loopexit1708_crit_edge.epilog-lcssa

..loopexit1708_crit_edge.epilog-lcssa:            ; preds = %..loopexit1708_crit_edge.unr-lcssa
  %gep2054.epil = getelementptr double, ptr %invariant.gep2053, i64 %.814572048.unr
  %1887 = load double, ptr %gep2054.epil, align 8, !tbaa !9
  %1888 = fcmp oge double %1887, 0.000000e+00
  %1889 = fneg double %1887
  %1890 = select i1 %1888, double %1887, double %1889
  %1891 = fcmp oge double %.142049.unr, %1890
  %1892 = select i1 %1891, double %.142049.unr, double %1890
  br label %..loopexit1708_crit_edge

..loopexit1708_crit_edge:                         ; preds = %..loopexit1708_crit_edge.unr-lcssa, %..loopexit1708_crit_edge.epilog-lcssa
  %.lcssa2652 = phi double [ %.lcssa2652.ph, %..loopexit1708_crit_edge.unr-lcssa ], [ %1887, %..loopexit1708_crit_edge.epilog-lcssa ]
  %.lcssa2651 = phi double [ %.lcssa2651.ph, %..loopexit1708_crit_edge.unr-lcssa ], [ %1892, %..loopexit1708_crit_edge.epilog-lcssa ]
  store double %.lcssa2652, ptr %22, align 8, !tbaa !9
  br label %.loopexit1708

..loopexit1709_crit_edge:                         ; preds = %1854
  store double %1857, ptr %22, align 8, !tbaa !9
  br label %.loopexit1708

.loopexit1708:                                    ; preds = %1850, %..loopexit1709_crit_edge, %1870, %..loopexit1708_crit_edge
  %.15 = phi double [ %.lcssa2651, %..loopexit1708_crit_edge ], [ 0.000000e+00, %1870 ], [ %1868, %..loopexit1709_crit_edge ], [ 0.000000e+00, %1850 ]
  %1893 = load double, ptr %38, align 8
  %1894 = fcmp ogt double %.15, %1893
  br i1 %1894, label %1895, label %.loopexit1707

1895:                                             ; preds = %.loopexit1708
  %1896 = fdiv double 1.000000e+00, %.15
  %1897 = add nsw i64 %1694, -1
  store i64 %1897, ptr %20, align 8, !tbaa !5
  %.not1536.not2062 = icmp sgt i64 %1694, 0
  br i1 %.not1536.not2062, label %.preheader1703.lr.ph, label %.loopexit1707

.preheader1703.lr.ph:                             ; preds = %1895
  %.not15372056 = icmp slt i64 %.11404, 1
  %min.iters.check2337 = icmp ult i64 %.11404, 4
  %n.vec2340 = and i64 %.11404, 9223372036854775804
  %ind.end2341 = or disjoint i64 %n.vec2340, 1
  %broadcast.splatinsert2348 = insertelement <2 x double> poison, double %1896, i64 0
  %broadcast.splat2349 = shufflevector <2 x double> %broadcast.splatinsert2348, <2 x double> poison, <2 x i32> zeroinitializer
  %cmp.n2351 = icmp eq i64 %.11404, %n.vec2340
  br label %.preheader1703

.preheader1703:                                   ; preds = %.preheader1703.lr.ph, %._crit_edge2059
  %.1214222063 = phi i64 [ 0, %.preheader1703.lr.ph ], [ %1908, %._crit_edge2059 ]
  br i1 %.not15372056, label %._crit_edge2059, label %.lr.ph2058

.lr.ph2058:                                       ; preds = %.preheader1703
  %1898 = add nsw i64 %.1214222063, %1695
  %1899 = mul nsw i64 %1898, %49
  %invariant.gep2060 = getelementptr double, ptr %51, i64 %1899
  br i1 %min.iters.check2337, label %scalar.ph2336.preheader, label %vector.body2343

vector.body2343:                                  ; preds = %.lr.ph2058, %vector.body2343
  %index2344 = phi i64 [ %index.next2350, %vector.body2343 ], [ 0, %.lr.ph2058 ]
  %offset.idx2345 = or disjoint i64 %index2344, 1
  %1900 = getelementptr double, ptr %invariant.gep2060, i64 %offset.idx2345
  %1901 = getelementptr i8, ptr %1900, i64 16
  %wide.load2346 = load <2 x double>, ptr %1900, align 8, !tbaa !9
  %wide.load2347 = load <2 x double>, ptr %1901, align 8, !tbaa !9
  %1902 = fmul <2 x double> %broadcast.splat2349, %wide.load2346
  %1903 = fmul <2 x double> %broadcast.splat2349, %wide.load2347
  store <2 x double> %1902, ptr %1900, align 8, !tbaa !9
  store <2 x double> %1903, ptr %1901, align 8, !tbaa !9
  %index.next2350 = add nuw i64 %index2344, 4
  %1904 = icmp eq i64 %index.next2350, %n.vec2340
  br i1 %1904, label %middle.block2335, label %vector.body2343, !llvm.loop !114

middle.block2335:                                 ; preds = %vector.body2343
  br i1 %cmp.n2351, label %._crit_edge2059, label %scalar.ph2336.preheader

scalar.ph2336.preheader:                          ; preds = %middle.block2335, %.lr.ph2058
  %.182057.ph = phi i64 [ 1, %.lr.ph2058 ], [ %ind.end2341, %middle.block2335 ]
  br label %scalar.ph2336

scalar.ph2336:                                    ; preds = %scalar.ph2336.preheader, %scalar.ph2336
  %.182057 = phi i64 [ %1907, %scalar.ph2336 ], [ %.182057.ph, %scalar.ph2336.preheader ]
  %gep2061 = getelementptr double, ptr %invariant.gep2060, i64 %.182057
  %1905 = load double, ptr %gep2061, align 8, !tbaa !9
  %1906 = fmul double %1896, %1905
  store double %1906, ptr %gep2061, align 8, !tbaa !9
  %1907 = add nuw i64 %.182057, 1
  %exitcond2158.not = icmp eq i64 %.182057, %.11404
  br i1 %exitcond2158.not, label %._crit_edge2059, label %scalar.ph2336, !llvm.loop !115

._crit_edge2059:                                  ; preds = %scalar.ph2336, %middle.block2335, %.preheader1703
  %1908 = add nuw nsw i64 %.1214222063, 1
  %exitcond2159.not = icmp eq i64 %1908, %1694
  br i1 %exitcond2159.not, label %.loopexit1707, label %.preheader1703, !llvm.loop !116

.loopexit1707:                                    ; preds = %._crit_edge2059, %.thread2205, %1895, %1015, %._crit_edge1899, %1050, %.loopexit1708
  %1909 = phi double [ %1893, %.loopexit1708 ], [ %1016, %._crit_edge1899 ], [ %1016, %1050 ], [ %1016, %1015 ], [ %1893, %1895 ], [ %1016, %.thread2205 ], [ %1893, %._crit_edge2059 ]
  %.31408 = phi i64 [ %1695, %.loopexit1708 ], [ %1071, %._crit_edge1899 ], [ %.214072067, %1050 ], [ %.214072067, %1015 ], [ %1695, %1895 ], [ %.214072067, %.thread2205 ], [ %1695, %._crit_edge2059 ]
  %.8 = phi i64 [ %.7167116841688, %.loopexit1708 ], [ 0, %._crit_edge1899 ], [ 0, %1050 ], [ 0, %1015 ], [ %.7167116841688, %1895 ], [ 1, %.thread2205 ], [ %.7167116841688, %._crit_edge2059 ]
  %1910 = add i64 %.114432064, -1
  %indvar.next2134 = add nuw nsw i64 %indvar2133, 1
  %exitcond2160.not = icmp eq i64 %indvar.next2134, %940
  br i1 %exitcond2160.not, label %.loopexit1713, label %1015, !llvm.loop !117

.loopexit1713:                                    ; preds = %.loopexit1707, %.loopexit1719, %143, %1238, %467, %.thread1635, %.thread1623
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  ret i32 0
}

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

declare i64 @lsame_(ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

declare i32 @dlabad_(ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @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 i32 @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 i32 @f2c_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 i32 @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 i64 @llvm.umax.i64(i64, i64) #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 nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

; 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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { 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 = !{!"long", !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}
!60 = distinct !{!60, !12, !18, !19}
!61 = distinct !{!61, !12, !19, !18}
!62 = distinct !{!62, !12}
!63 = !{!64}
!64 = distinct !{!64, !65}
!65 = distinct !{!65, !"LVerDomain"}
!66 = !{!67, !68}
!67 = distinct !{!67, !65}
!68 = distinct !{!68, !65}
!69 = !{!67}
!70 = !{!68}
!71 = distinct !{!71, !12, !18, !19}
!72 = distinct !{!72, !12, !18}
!73 = distinct !{!73, !12}
!74 = !{!75}
!75 = distinct !{!75, !76}
!76 = distinct !{!76, !"LVerDomain"}
!77 = !{!78, !79, !80}
!78 = distinct !{!78, !76}
!79 = distinct !{!79, !76}
!80 = distinct !{!80, !76}
!81 = !{!79}
!82 = !{!80}
!83 = !{!78}
!84 = !{!79, !80}
!85 = distinct !{!85, !12, !18, !19}
!86 = distinct !{!86, !12, !18}
!87 = distinct !{!87, !12}
!88 = distinct !{!88, !89}
!89 = !{!"llvm.loop.unroll.disable"}
!90 = distinct !{!90, !12}
!91 = distinct !{!91, !12}
!92 = distinct !{!92, !12}
!93 = distinct !{!93, !12}
!94 = !{!95}
!95 = distinct !{!95, !96}
!96 = distinct !{!96, !"LVerDomain"}
!97 = !{!98}
!98 = distinct !{!98, !96}
!99 = distinct !{!99, !12, !18, !19}
!100 = distinct !{!100, !89}
!101 = distinct !{!101, !12, !18}
!102 = distinct !{!102, !12}
!103 = !{!104}
!104 = distinct !{!104, !105}
!105 = distinct !{!105, !"LVerDomain"}
!106 = !{!107}
!107 = distinct !{!107, !105}
!108 = distinct !{!108, !12, !18, !19}
!109 = distinct !{!109, !89}
!110 = distinct !{!110, !12, !18}
!111 = distinct !{!111, !12}
!112 = distinct !{!112, !12}
!113 = distinct !{!113, !12}
!114 = distinct !{!114, !12, !18, !19}
!115 = distinct !{!115, !12, !19, !18}
!116 = distinct !{!116, !12}
!117 = distinct !{!117, !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