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

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

@dlasy2_.locu12 = external hidden global [4 x i32], align 16
@dlasy2_.locl21 = external hidden global [4 x i32], align 16
@dlasy2_.locu22 = external hidden global [4 x i32], align 16
@dlasy2_.xswpiv = external hidden global [4 x i32], align 16
@dlasy2_.bswpiv = external hidden global [4 x i32], align 16
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__4 = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@c__16 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dlasy2_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15) #0 {
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca ptr, align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca double, align 8
  %48 = alloca double, align 8
  %49 = alloca [4 x double], align 16
  %50 = alloca double, align 8
  %51 = alloca i32, align 4
  %52 = alloca double, align 8
  %53 = alloca [4 x i32], align 16
  %54 = alloca double, align 8
  %55 = alloca i32, align 4
  %56 = alloca i32, align 4
  %57 = alloca i32, align 4
  %58 = alloca i32, align 4
  %59 = alloca i32, align 4
  %60 = alloca i32, align 4
  %61 = alloca i32, align 4
  %62 = alloca [2 x double], align 16
  %63 = alloca double, align 8
  %64 = alloca double, align 8
  %65 = alloca double, align 8
  %66 = alloca i32, align 4
  %67 = alloca i32, align 4
  %68 = alloca double, align 8
  %69 = alloca [16 x double], align 16
  %70 = alloca double, align 8
  %71 = alloca double, align 8
  %72 = alloca double, align 8
  %73 = alloca double, align 8
  %74 = alloca double, align 8
  %75 = alloca [4 x double], align 16
  %76 = alloca double, align 8
  %77 = alloca i32, align 4
  store ptr %0, ptr %17, align 8, !tbaa !5
  store ptr %1, ptr %18, align 8, !tbaa !5
  store ptr %2, ptr %19, align 8, !tbaa !5
  store ptr %3, ptr %20, align 8, !tbaa !5
  store ptr %4, ptr %21, align 8, !tbaa !5
  store ptr %5, ptr %22, align 8, !tbaa !5
  store ptr %6, ptr %23, align 8, !tbaa !5
  store ptr %7, ptr %24, align 8, !tbaa !5
  store ptr %8, ptr %25, align 8, !tbaa !5
  store ptr %9, ptr %26, align 8, !tbaa !5
  store ptr %10, ptr %27, align 8, !tbaa !5
  store ptr %11, ptr %28, align 8, !tbaa !5
  store ptr %12, ptr %29, align 8, !tbaa !5
  store ptr %13, ptr %30, align 8, !tbaa !5
  store ptr %14, ptr %31, align 8, !tbaa !5
  store ptr %15, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.start.p0(i64 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 32, ptr %49) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr %53) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.start.p0(i64 16, 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 4, ptr %66) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.start.p0(i64 128, 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 8, 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
  %78 = load ptr, ptr %23, align 8, !tbaa !5
  %79 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %79, ptr %35, align 4, !tbaa !9
  %80 = load i32, ptr %35, align 4, !tbaa !9
  %81 = mul nsw i32 %80, 1
  %82 = add nsw i32 1, %81
  store i32 %82, ptr %36, align 4, !tbaa !9
  %83 = load i32, ptr %36, align 4, !tbaa !9
  %84 = load ptr, ptr %22, align 8, !tbaa !5
  %85 = sext i32 %83 to i64
  %86 = sub i64 0, %85
  %87 = getelementptr inbounds double, ptr %84, i64 %86
  store ptr %87, ptr %22, align 8, !tbaa !5
  %88 = load ptr, ptr %25, align 8, !tbaa !5
  %89 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %89, ptr %37, align 4, !tbaa !9
  %90 = load i32, ptr %37, align 4, !tbaa !9
  %91 = mul nsw i32 %90, 1
  %92 = add nsw i32 1, %91
  store i32 %92, ptr %38, align 4, !tbaa !9
  %93 = load i32, ptr %38, align 4, !tbaa !9
  %94 = load ptr, ptr %24, align 8, !tbaa !5
  %95 = sext i32 %93 to i64
  %96 = sub i64 0, %95
  %97 = getelementptr inbounds double, ptr %94, i64 %96
  store ptr %97, ptr %24, align 8, !tbaa !5
  %98 = load ptr, ptr %27, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  store i32 %99, ptr %33, align 4, !tbaa !9
  %100 = load i32, ptr %33, align 4, !tbaa !9
  %101 = mul nsw i32 %100, 1
  %102 = add nsw i32 1, %101
  store i32 %102, ptr %34, align 4, !tbaa !9
  %103 = load i32, ptr %34, align 4, !tbaa !9
  %104 = load ptr, ptr %26, align 8, !tbaa !5
  %105 = sext i32 %103 to i64
  %106 = sub i64 0, %105
  %107 = getelementptr inbounds double, ptr %104, i64 %106
  store ptr %107, ptr %26, align 8, !tbaa !5
  %108 = load ptr, ptr %30, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  store i32 %109, ptr %39, align 4, !tbaa !9
  %110 = load i32, ptr %39, align 4, !tbaa !9
  %111 = mul nsw i32 %110, 1
  %112 = add nsw i32 1, %111
  store i32 %112, ptr %40, align 4, !tbaa !9
  %113 = load i32, ptr %40, align 4, !tbaa !9
  %114 = load ptr, ptr %29, align 8, !tbaa !5
  %115 = sext i32 %113 to i64
  %116 = sub i64 0, %115
  %117 = getelementptr inbounds double, ptr %114, i64 %116
  store ptr %117, ptr %29, align 8, !tbaa !5
  %118 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 0, ptr %118, align 4, !tbaa !9
  %119 = load ptr, ptr %20, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = icmp eq i32 %120, 0
  br i1 %121, label %126, label %122

122:                                              ; preds = %16
  %123 = load ptr, ptr %21, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = icmp eq i32 %124, 0
  br i1 %125, label %126, label %127

126:                                              ; preds = %122, %16
  store i32 1, ptr %77, align 4
  br label %2106

127:                                              ; preds = %122
  %128 = call double @dlamch_(ptr noundef @.str)
  store double %128, ptr %73, align 8, !tbaa !11
  %129 = call double @dlamch_(ptr noundef @.str.1)
  %130 = load double, ptr %73, align 8, !tbaa !11
  %131 = fdiv double %129, %130
  store double %131, ptr %70, align 8, !tbaa !11
  %132 = load ptr, ptr %19, align 8, !tbaa !5
  %133 = load i32, ptr %132, align 4, !tbaa !9
  %134 = sitofp i32 %133 to double
  store double %134, ptr %74, align 8, !tbaa !11
  %135 = load ptr, ptr %20, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = add nsw i32 %136, %138
  %140 = load ptr, ptr %21, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  %142 = add nsw i32 %139, %141
  %143 = sub nsw i32 %142, 2
  store i32 %143, ptr %59, align 4, !tbaa !9
  %144 = load i32, ptr %59, align 4, !tbaa !9
  switch i32 %144, label %149 [
    i32 1, label %145
    i32 2, label %146
    i32 3, label %147
    i32 4, label %148
  ]

145:                                              ; preds = %127
  br label %150

146:                                              ; preds = %127
  br label %240

147:                                              ; preds = %127
  br label %455

148:                                              ; preds = %127
  br label %993

149:                                              ; preds = %127
  br label %150

150:                                              ; preds = %149, %145
  %151 = load ptr, ptr %22, align 8, !tbaa !5
  %152 = load i32, ptr %35, align 4, !tbaa !9
  %153 = add nsw i32 %152, 1
  %154 = sext i32 %153 to i64
  %155 = getelementptr inbounds double, ptr %151, i64 %154
  %156 = load double, ptr %155, align 8, !tbaa !11
  %157 = load double, ptr %74, align 8, !tbaa !11
  %158 = load ptr, ptr %24, align 8, !tbaa !5
  %159 = load i32, ptr %37, align 4, !tbaa !9
  %160 = add nsw i32 %159, 1
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds double, ptr %158, i64 %161
  %163 = load double, ptr %162, align 8, !tbaa !11
  %164 = call double @llvm.fmuladd.f64(double %157, double %163, double %156)
  store double %164, ptr %76, align 8, !tbaa !11
  %165 = load double, ptr %76, align 8, !tbaa !11
  %166 = fcmp oge double %165, 0.000000e+00
  br i1 %166, label %167, label %169

167:                                              ; preds = %150
  %168 = load double, ptr %76, align 8, !tbaa !11
  br label %172

169:                                              ; preds = %150
  %170 = load double, ptr %76, align 8, !tbaa !11
  %171 = fneg double %170
  br label %172

172:                                              ; preds = %169, %167
  %173 = phi double [ %168, %167 ], [ %171, %169 ]
  store double %173, ptr %72, align 8, !tbaa !11
  %174 = load double, ptr %72, align 8, !tbaa !11
  %175 = load double, ptr %70, align 8, !tbaa !11
  %176 = fcmp ole double %174, %175
  br i1 %176, label %177, label %181

177:                                              ; preds = %172
  %178 = load double, ptr %70, align 8, !tbaa !11
  store double %178, ptr %76, align 8, !tbaa !11
  %179 = load double, ptr %70, align 8, !tbaa !11
  store double %179, ptr %72, align 8, !tbaa !11
  %180 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %180, align 4, !tbaa !9
  br label %181

181:                                              ; preds = %177, %172
  %182 = load ptr, ptr %28, align 8, !tbaa !5
  store double 1.000000e+00, ptr %182, align 8, !tbaa !11
  %183 = load ptr, ptr %26, align 8, !tbaa !5
  %184 = load i32, ptr %33, align 4, !tbaa !9
  %185 = add nsw i32 %184, 1
  %186 = sext i32 %185 to i64
  %187 = getelementptr inbounds double, ptr %183, i64 %186
  %188 = load double, ptr %187, align 8, !tbaa !11
  store double %188, ptr %41, align 8, !tbaa !11
  %189 = load double, ptr %41, align 8, !tbaa !11
  %190 = fcmp oge double %189, 0.000000e+00
  br i1 %190, label %191, label %193

191:                                              ; preds = %181
  %192 = load double, ptr %41, align 8, !tbaa !11
  br label %196

193:                                              ; preds = %181
  %194 = load double, ptr %41, align 8, !tbaa !11
  %195 = fneg double %194
  br label %196

196:                                              ; preds = %193, %191
  %197 = phi double [ %192, %191 ], [ %195, %193 ]
  store double %197, ptr %71, align 8, !tbaa !11
  %198 = load double, ptr %70, align 8, !tbaa !11
  %199 = load double, ptr %71, align 8, !tbaa !11
  %200 = fmul double %198, %199
  %201 = load double, ptr %72, align 8, !tbaa !11
  %202 = fcmp ogt double %200, %201
  br i1 %202, label %203, label %207

203:                                              ; preds = %196
  %204 = load double, ptr %71, align 8, !tbaa !11
  %205 = fdiv double 1.000000e+00, %204
  %206 = load ptr, ptr %28, align 8, !tbaa !5
  store double %205, ptr %206, align 8, !tbaa !11
  br label %207

207:                                              ; preds = %203, %196
  %208 = load ptr, ptr %26, align 8, !tbaa !5
  %209 = load i32, ptr %33, align 4, !tbaa !9
  %210 = add nsw i32 %209, 1
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds double, ptr %208, i64 %211
  %213 = load double, ptr %212, align 8, !tbaa !11
  %214 = load ptr, ptr %28, align 8, !tbaa !5
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = fmul double %213, %215
  %217 = load double, ptr %76, align 8, !tbaa !11
  %218 = fdiv double %216, %217
  %219 = load ptr, ptr %29, align 8, !tbaa !5
  %220 = load i32, ptr %39, align 4, !tbaa !9
  %221 = add nsw i32 %220, 1
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds double, ptr %219, i64 %222
  store double %218, ptr %223, align 8, !tbaa !11
  %224 = load ptr, ptr %29, align 8, !tbaa !5
  %225 = load i32, ptr %39, align 4, !tbaa !9
  %226 = add nsw i32 %225, 1
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds double, ptr %224, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !11
  store double %229, ptr %41, align 8, !tbaa !11
  %230 = load double, ptr %41, align 8, !tbaa !11
  %231 = fcmp oge double %230, 0.000000e+00
  br i1 %231, label %232, label %234

232:                                              ; preds = %207
  %233 = load double, ptr %41, align 8, !tbaa !11
  br label %237

234:                                              ; preds = %207
  %235 = load double, ptr %41, align 8, !tbaa !11
  %236 = fneg double %235
  br label %237

237:                                              ; preds = %234, %232
  %238 = phi double [ %233, %232 ], [ %236, %234 ]
  %239 = load ptr, ptr %31, align 8, !tbaa !5
  store double %238, ptr %239, align 8, !tbaa !11
  store i32 1, ptr %77, align 4
  br label %2106

240:                                              ; preds = %146
  %241 = load ptr, ptr %22, align 8, !tbaa !5
  %242 = load i32, ptr %35, align 4, !tbaa !9
  %243 = add nsw i32 %242, 1
  %244 = sext i32 %243 to i64
  %245 = getelementptr inbounds double, ptr %241, i64 %244
  %246 = load double, ptr %245, align 8, !tbaa !11
  store double %246, ptr %41, align 8, !tbaa !11
  %247 = load double, ptr %41, align 8, !tbaa !11
  %248 = fcmp oge double %247, 0.000000e+00
  br i1 %248, label %249, label %251

249:                                              ; preds = %240
  %250 = load double, ptr %41, align 8, !tbaa !11
  br label %254

251:                                              ; preds = %240
  %252 = load double, ptr %41, align 8, !tbaa !11
  %253 = fneg double %252
  br label %254

254:                                              ; preds = %251, %249
  %255 = phi double [ %250, %249 ], [ %253, %251 ]
  store double %255, ptr %47, align 8, !tbaa !11
  %256 = load ptr, ptr %24, align 8, !tbaa !5
  %257 = load i32, ptr %37, align 4, !tbaa !9
  %258 = add nsw i32 %257, 1
  %259 = sext i32 %258 to i64
  %260 = getelementptr inbounds double, ptr %256, i64 %259
  %261 = load double, ptr %260, align 8, !tbaa !11
  store double %261, ptr %42, align 8, !tbaa !11
  %262 = load double, ptr %42, align 8, !tbaa !11
  %263 = fcmp oge double %262, 0.000000e+00
  br i1 %263, label %264, label %266

264:                                              ; preds = %254
  %265 = load double, ptr %42, align 8, !tbaa !11
  br label %269

266:                                              ; preds = %254
  %267 = load double, ptr %42, align 8, !tbaa !11
  %268 = fneg double %267
  br label %269

269:                                              ; preds = %266, %264
  %270 = phi double [ %265, %264 ], [ %268, %266 ]
  store double %270, ptr %48, align 8, !tbaa !11
  %271 = load double, ptr %47, align 8, !tbaa !11
  %272 = load double, ptr %48, align 8, !tbaa !11
  %273 = fcmp oge double %271, %272
  br i1 %273, label %274, label %276

274:                                              ; preds = %269
  %275 = load double, ptr %47, align 8, !tbaa !11
  br label %278

276:                                              ; preds = %269
  %277 = load double, ptr %48, align 8, !tbaa !11
  br label %278

278:                                              ; preds = %276, %274
  %279 = phi double [ %275, %274 ], [ %277, %276 ]
  store double %279, ptr %47, align 8, !tbaa !11
  %280 = load ptr, ptr %24, align 8, !tbaa !5
  %281 = load i32, ptr %37, align 4, !tbaa !9
  %282 = shl i32 %281, 1
  %283 = add nsw i32 %282, 1
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %280, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !11
  store double %286, ptr %43, align 8, !tbaa !11
  %287 = load double, ptr %43, align 8, !tbaa !11
  %288 = fcmp oge double %287, 0.000000e+00
  br i1 %288, label %289, label %291

289:                                              ; preds = %278
  %290 = load double, ptr %43, align 8, !tbaa !11
  br label %294

291:                                              ; preds = %278
  %292 = load double, ptr %43, align 8, !tbaa !11
  %293 = fneg double %292
  br label %294

294:                                              ; preds = %291, %289
  %295 = phi double [ %290, %289 ], [ %293, %291 ]
  store double %295, ptr %48, align 8, !tbaa !11
  %296 = load double, ptr %47, align 8, !tbaa !11
  %297 = load double, ptr %48, align 8, !tbaa !11
  %298 = fcmp oge double %296, %297
  br i1 %298, label %299, label %301

299:                                              ; preds = %294
  %300 = load double, ptr %47, align 8, !tbaa !11
  br label %303

301:                                              ; preds = %294
  %302 = load double, ptr %48, align 8, !tbaa !11
  br label %303

303:                                              ; preds = %301, %299
  %304 = phi double [ %300, %299 ], [ %302, %301 ]
  store double %304, ptr %47, align 8, !tbaa !11
  %305 = load ptr, ptr %24, align 8, !tbaa !5
  %306 = load i32, ptr %37, align 4, !tbaa !9
  %307 = add nsw i32 %306, 2
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds double, ptr %305, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !11
  store double %310, ptr %44, align 8, !tbaa !11
  %311 = load double, ptr %44, align 8, !tbaa !11
  %312 = fcmp oge double %311, 0.000000e+00
  br i1 %312, label %313, label %315

313:                                              ; preds = %303
  %314 = load double, ptr %44, align 8, !tbaa !11
  br label %318

315:                                              ; preds = %303
  %316 = load double, ptr %44, align 8, !tbaa !11
  %317 = fneg double %316
  br label %318

318:                                              ; preds = %315, %313
  %319 = phi double [ %314, %313 ], [ %317, %315 ]
  store double %319, ptr %48, align 8, !tbaa !11
  %320 = load double, ptr %47, align 8, !tbaa !11
  %321 = load double, ptr %48, align 8, !tbaa !11
  %322 = fcmp oge double %320, %321
  br i1 %322, label %323, label %325

323:                                              ; preds = %318
  %324 = load double, ptr %47, align 8, !tbaa !11
  br label %327

325:                                              ; preds = %318
  %326 = load double, ptr %48, align 8, !tbaa !11
  br label %327

327:                                              ; preds = %325, %323
  %328 = phi double [ %324, %323 ], [ %326, %325 ]
  store double %328, ptr %47, align 8, !tbaa !11
  %329 = load ptr, ptr %24, align 8, !tbaa !5
  %330 = load i32, ptr %37, align 4, !tbaa !9
  %331 = shl i32 %330, 1
  %332 = add nsw i32 %331, 2
  %333 = sext i32 %332 to i64
  %334 = getelementptr inbounds double, ptr %329, i64 %333
  %335 = load double, ptr %334, align 8, !tbaa !11
  store double %335, ptr %45, align 8, !tbaa !11
  %336 = load double, ptr %45, align 8, !tbaa !11
  %337 = fcmp oge double %336, 0.000000e+00
  br i1 %337, label %338, label %340

338:                                              ; preds = %327
  %339 = load double, ptr %45, align 8, !tbaa !11
  br label %343

340:                                              ; preds = %327
  %341 = load double, ptr %45, align 8, !tbaa !11
  %342 = fneg double %341
  br label %343

343:                                              ; preds = %340, %338
  %344 = phi double [ %339, %338 ], [ %342, %340 ]
  store double %344, ptr %48, align 8, !tbaa !11
  %345 = load double, ptr %73, align 8, !tbaa !11
  %346 = load double, ptr %47, align 8, !tbaa !11
  %347 = load double, ptr %48, align 8, !tbaa !11
  %348 = fcmp oge double %346, %347
  br i1 %348, label %349, label %351

349:                                              ; preds = %343
  %350 = load double, ptr %47, align 8, !tbaa !11
  br label %353

351:                                              ; preds = %343
  %352 = load double, ptr %48, align 8, !tbaa !11
  br label %353

353:                                              ; preds = %351, %349
  %354 = phi double [ %350, %349 ], [ %352, %351 ]
  %355 = fmul double %345, %354
  store double %355, ptr %46, align 8, !tbaa !11
  %356 = load double, ptr %46, align 8, !tbaa !11
  %357 = load double, ptr %70, align 8, !tbaa !11
  %358 = fcmp oge double %356, %357
  br i1 %358, label %359, label %361

359:                                              ; preds = %353
  %360 = load double, ptr %46, align 8, !tbaa !11
  br label %363

361:                                              ; preds = %353
  %362 = load double, ptr %70, align 8, !tbaa !11
  br label %363

363:                                              ; preds = %361, %359
  %364 = phi double [ %360, %359 ], [ %362, %361 ]
  store double %364, ptr %50, align 8, !tbaa !11
  %365 = load ptr, ptr %22, align 8, !tbaa !5
  %366 = load i32, ptr %35, align 4, !tbaa !9
  %367 = add nsw i32 %366, 1
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds double, ptr %365, i64 %368
  %370 = load double, ptr %369, align 8, !tbaa !11
  %371 = load double, ptr %74, align 8, !tbaa !11
  %372 = load ptr, ptr %24, align 8, !tbaa !5
  %373 = load i32, ptr %37, align 4, !tbaa !9
  %374 = add nsw i32 %373, 1
  %375 = sext i32 %374 to i64
  %376 = getelementptr inbounds double, ptr %372, i64 %375
  %377 = load double, ptr %376, align 8, !tbaa !11
  %378 = call double @llvm.fmuladd.f64(double %371, double %377, double %370)
  %379 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  store double %378, ptr %379, align 16, !tbaa !11
  %380 = load ptr, ptr %22, align 8, !tbaa !5
  %381 = load i32, ptr %35, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds double, ptr %380, i64 %383
  %385 = load double, ptr %384, align 8, !tbaa !11
  %386 = load double, ptr %74, align 8, !tbaa !11
  %387 = load ptr, ptr %24, align 8, !tbaa !5
  %388 = load i32, ptr %37, align 4, !tbaa !9
  %389 = shl i32 %388, 1
  %390 = add nsw i32 %389, 2
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds double, ptr %387, i64 %391
  %393 = load double, ptr %392, align 8, !tbaa !11
  %394 = call double @llvm.fmuladd.f64(double %386, double %393, double %385)
  %395 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 3
  store double %394, ptr %395, align 8, !tbaa !11
  %396 = load ptr, ptr %18, align 8, !tbaa !5
  %397 = load i32, ptr %396, align 4, !tbaa !9
  %398 = icmp ne i32 %397, 0
  br i1 %398, label %399, label %419

399:                                              ; preds = %363
  %400 = load double, ptr %74, align 8, !tbaa !11
  %401 = load ptr, ptr %24, align 8, !tbaa !5
  %402 = load i32, ptr %37, align 4, !tbaa !9
  %403 = add nsw i32 %402, 2
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds double, ptr %401, i64 %404
  %406 = load double, ptr %405, align 8, !tbaa !11
  %407 = fmul double %400, %406
  %408 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  store double %407, ptr %408, align 8, !tbaa !11
  %409 = load double, ptr %74, align 8, !tbaa !11
  %410 = load ptr, ptr %24, align 8, !tbaa !5
  %411 = load i32, ptr %37, align 4, !tbaa !9
  %412 = shl i32 %411, 1
  %413 = add nsw i32 %412, 1
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds double, ptr %410, i64 %414
  %416 = load double, ptr %415, align 8, !tbaa !11
  %417 = fmul double %409, %416
  %418 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  store double %417, ptr %418, align 16, !tbaa !11
  br label %439

419:                                              ; preds = %363
  %420 = load double, ptr %74, align 8, !tbaa !11
  %421 = load ptr, ptr %24, align 8, !tbaa !5
  %422 = load i32, ptr %37, align 4, !tbaa !9
  %423 = shl i32 %422, 1
  %424 = add nsw i32 %423, 1
  %425 = sext i32 %424 to i64
  %426 = getelementptr inbounds double, ptr %421, i64 %425
  %427 = load double, ptr %426, align 8, !tbaa !11
  %428 = fmul double %420, %427
  %429 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  store double %428, ptr %429, align 8, !tbaa !11
  %430 = load double, ptr %74, align 8, !tbaa !11
  %431 = load ptr, ptr %24, align 8, !tbaa !5
  %432 = load i32, ptr %37, align 4, !tbaa !9
  %433 = add nsw i32 %432, 2
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds double, ptr %431, i64 %434
  %436 = load double, ptr %435, align 8, !tbaa !11
  %437 = fmul double %430, %436
  %438 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  store double %437, ptr %438, align 16, !tbaa !11
  br label %439

439:                                              ; preds = %419, %399
  %440 = load ptr, ptr %26, align 8, !tbaa !5
  %441 = load i32, ptr %33, align 4, !tbaa !9
  %442 = add nsw i32 %441, 1
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %440, i64 %443
  %445 = load double, ptr %444, align 8, !tbaa !11
  %446 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  store double %445, ptr %446, align 16, !tbaa !11
  %447 = load ptr, ptr %26, align 8, !tbaa !5
  %448 = load i32, ptr %33, align 4, !tbaa !9
  %449 = shl i32 %448, 1
  %450 = add nsw i32 %449, 1
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds double, ptr %447, i64 %451
  %453 = load double, ptr %452, align 8, !tbaa !11
  %454 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  store double %453, ptr %454, align 8, !tbaa !11
  br label %661

455:                                              ; preds = %147
  %456 = load ptr, ptr %24, align 8, !tbaa !5
  %457 = load i32, ptr %37, align 4, !tbaa !9
  %458 = add nsw i32 %457, 1
  %459 = sext i32 %458 to i64
  %460 = getelementptr inbounds double, ptr %456, i64 %459
  %461 = load double, ptr %460, align 8, !tbaa !11
  store double %461, ptr %41, align 8, !tbaa !11
  %462 = load double, ptr %41, align 8, !tbaa !11
  %463 = fcmp oge double %462, 0.000000e+00
  br i1 %463, label %464, label %466

464:                                              ; preds = %455
  %465 = load double, ptr %41, align 8, !tbaa !11
  br label %469

466:                                              ; preds = %455
  %467 = load double, ptr %41, align 8, !tbaa !11
  %468 = fneg double %467
  br label %469

469:                                              ; preds = %466, %464
  %470 = phi double [ %465, %464 ], [ %468, %466 ]
  store double %470, ptr %47, align 8, !tbaa !11
  %471 = load ptr, ptr %22, align 8, !tbaa !5
  %472 = load i32, ptr %35, align 4, !tbaa !9
  %473 = add nsw i32 %472, 1
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds double, ptr %471, i64 %474
  %476 = load double, ptr %475, align 8, !tbaa !11
  store double %476, ptr %42, align 8, !tbaa !11
  %477 = load double, ptr %42, align 8, !tbaa !11
  %478 = fcmp oge double %477, 0.000000e+00
  br i1 %478, label %479, label %481

479:                                              ; preds = %469
  %480 = load double, ptr %42, align 8, !tbaa !11
  br label %484

481:                                              ; preds = %469
  %482 = load double, ptr %42, align 8, !tbaa !11
  %483 = fneg double %482
  br label %484

484:                                              ; preds = %481, %479
  %485 = phi double [ %480, %479 ], [ %483, %481 ]
  store double %485, ptr %48, align 8, !tbaa !11
  %486 = load double, ptr %47, align 8, !tbaa !11
  %487 = load double, ptr %48, align 8, !tbaa !11
  %488 = fcmp oge double %486, %487
  br i1 %488, label %489, label %491

489:                                              ; preds = %484
  %490 = load double, ptr %47, align 8, !tbaa !11
  br label %493

491:                                              ; preds = %484
  %492 = load double, ptr %48, align 8, !tbaa !11
  br label %493

493:                                              ; preds = %491, %489
  %494 = phi double [ %490, %489 ], [ %492, %491 ]
  store double %494, ptr %47, align 8, !tbaa !11
  %495 = load ptr, ptr %22, align 8, !tbaa !5
  %496 = load i32, ptr %35, align 4, !tbaa !9
  %497 = shl i32 %496, 1
  %498 = add nsw i32 %497, 1
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds double, ptr %495, i64 %499
  %501 = load double, ptr %500, align 8, !tbaa !11
  store double %501, ptr %43, align 8, !tbaa !11
  %502 = load double, ptr %43, align 8, !tbaa !11
  %503 = fcmp oge double %502, 0.000000e+00
  br i1 %503, label %504, label %506

504:                                              ; preds = %493
  %505 = load double, ptr %43, align 8, !tbaa !11
  br label %509

506:                                              ; preds = %493
  %507 = load double, ptr %43, align 8, !tbaa !11
  %508 = fneg double %507
  br label %509

509:                                              ; preds = %506, %504
  %510 = phi double [ %505, %504 ], [ %508, %506 ]
  store double %510, ptr %48, align 8, !tbaa !11
  %511 = load double, ptr %47, align 8, !tbaa !11
  %512 = load double, ptr %48, align 8, !tbaa !11
  %513 = fcmp oge double %511, %512
  br i1 %513, label %514, label %516

514:                                              ; preds = %509
  %515 = load double, ptr %47, align 8, !tbaa !11
  br label %518

516:                                              ; preds = %509
  %517 = load double, ptr %48, align 8, !tbaa !11
  br label %518

518:                                              ; preds = %516, %514
  %519 = phi double [ %515, %514 ], [ %517, %516 ]
  store double %519, ptr %47, align 8, !tbaa !11
  %520 = load ptr, ptr %22, align 8, !tbaa !5
  %521 = load i32, ptr %35, align 4, !tbaa !9
  %522 = add nsw i32 %521, 2
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %520, i64 %523
  %525 = load double, ptr %524, align 8, !tbaa !11
  store double %525, ptr %44, align 8, !tbaa !11
  %526 = load double, ptr %44, align 8, !tbaa !11
  %527 = fcmp oge double %526, 0.000000e+00
  br i1 %527, label %528, label %530

528:                                              ; preds = %518
  %529 = load double, ptr %44, align 8, !tbaa !11
  br label %533

530:                                              ; preds = %518
  %531 = load double, ptr %44, align 8, !tbaa !11
  %532 = fneg double %531
  br label %533

533:                                              ; preds = %530, %528
  %534 = phi double [ %529, %528 ], [ %532, %530 ]
  store double %534, ptr %48, align 8, !tbaa !11
  %535 = load double, ptr %47, align 8, !tbaa !11
  %536 = load double, ptr %48, align 8, !tbaa !11
  %537 = fcmp oge double %535, %536
  br i1 %537, label %538, label %540

538:                                              ; preds = %533
  %539 = load double, ptr %47, align 8, !tbaa !11
  br label %542

540:                                              ; preds = %533
  %541 = load double, ptr %48, align 8, !tbaa !11
  br label %542

542:                                              ; preds = %540, %538
  %543 = phi double [ %539, %538 ], [ %541, %540 ]
  store double %543, ptr %47, align 8, !tbaa !11
  %544 = load ptr, ptr %22, align 8, !tbaa !5
  %545 = load i32, ptr %35, align 4, !tbaa !9
  %546 = shl i32 %545, 1
  %547 = add nsw i32 %546, 2
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %544, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !11
  store double %550, ptr %45, align 8, !tbaa !11
  %551 = load double, ptr %45, align 8, !tbaa !11
  %552 = fcmp oge double %551, 0.000000e+00
  br i1 %552, label %553, label %555

553:                                              ; preds = %542
  %554 = load double, ptr %45, align 8, !tbaa !11
  br label %558

555:                                              ; preds = %542
  %556 = load double, ptr %45, align 8, !tbaa !11
  %557 = fneg double %556
  br label %558

558:                                              ; preds = %555, %553
  %559 = phi double [ %554, %553 ], [ %557, %555 ]
  store double %559, ptr %48, align 8, !tbaa !11
  %560 = load double, ptr %73, align 8, !tbaa !11
  %561 = load double, ptr %47, align 8, !tbaa !11
  %562 = load double, ptr %48, align 8, !tbaa !11
  %563 = fcmp oge double %561, %562
  br i1 %563, label %564, label %566

564:                                              ; preds = %558
  %565 = load double, ptr %47, align 8, !tbaa !11
  br label %568

566:                                              ; preds = %558
  %567 = load double, ptr %48, align 8, !tbaa !11
  br label %568

568:                                              ; preds = %566, %564
  %569 = phi double [ %565, %564 ], [ %567, %566 ]
  %570 = fmul double %560, %569
  store double %570, ptr %46, align 8, !tbaa !11
  %571 = load double, ptr %46, align 8, !tbaa !11
  %572 = load double, ptr %70, align 8, !tbaa !11
  %573 = fcmp oge double %571, %572
  br i1 %573, label %574, label %576

574:                                              ; preds = %568
  %575 = load double, ptr %46, align 8, !tbaa !11
  br label %578

576:                                              ; preds = %568
  %577 = load double, ptr %70, align 8, !tbaa !11
  br label %578

578:                                              ; preds = %576, %574
  %579 = phi double [ %575, %574 ], [ %577, %576 ]
  store double %579, ptr %50, align 8, !tbaa !11
  %580 = load ptr, ptr %22, align 8, !tbaa !5
  %581 = load i32, ptr %35, align 4, !tbaa !9
  %582 = add nsw i32 %581, 1
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %580, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !11
  %586 = load double, ptr %74, align 8, !tbaa !11
  %587 = load ptr, ptr %24, align 8, !tbaa !5
  %588 = load i32, ptr %37, align 4, !tbaa !9
  %589 = add nsw i32 %588, 1
  %590 = sext i32 %589 to i64
  %591 = getelementptr inbounds double, ptr %587, i64 %590
  %592 = load double, ptr %591, align 8, !tbaa !11
  %593 = call double @llvm.fmuladd.f64(double %586, double %592, double %585)
  %594 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  store double %593, ptr %594, align 16, !tbaa !11
  %595 = load ptr, ptr %22, align 8, !tbaa !5
  %596 = load i32, ptr %35, align 4, !tbaa !9
  %597 = shl i32 %596, 1
  %598 = add nsw i32 %597, 2
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds double, ptr %595, i64 %599
  %601 = load double, ptr %600, align 8, !tbaa !11
  %602 = load double, ptr %74, align 8, !tbaa !11
  %603 = load ptr, ptr %24, align 8, !tbaa !5
  %604 = load i32, ptr %37, align 4, !tbaa !9
  %605 = add nsw i32 %604, 1
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds double, ptr %603, i64 %606
  %608 = load double, ptr %607, align 8, !tbaa !11
  %609 = call double @llvm.fmuladd.f64(double %602, double %608, double %601)
  %610 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 3
  store double %609, ptr %610, align 8, !tbaa !11
  %611 = load ptr, ptr %17, align 8, !tbaa !5
  %612 = load i32, ptr %611, align 4, !tbaa !9
  %613 = icmp ne i32 %612, 0
  br i1 %613, label %614, label %630

614:                                              ; preds = %578
  %615 = load ptr, ptr %22, align 8, !tbaa !5
  %616 = load i32, ptr %35, align 4, !tbaa !9
  %617 = shl i32 %616, 1
  %618 = add nsw i32 %617, 1
  %619 = sext i32 %618 to i64
  %620 = getelementptr inbounds double, ptr %615, i64 %619
  %621 = load double, ptr %620, align 8, !tbaa !11
  %622 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  store double %621, ptr %622, align 8, !tbaa !11
  %623 = load ptr, ptr %22, align 8, !tbaa !5
  %624 = load i32, ptr %35, align 4, !tbaa !9
  %625 = add nsw i32 %624, 2
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %623, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  store double %628, ptr %629, align 16, !tbaa !11
  br label %646

630:                                              ; preds = %578
  %631 = load ptr, ptr %22, align 8, !tbaa !5
  %632 = load i32, ptr %35, align 4, !tbaa !9
  %633 = add nsw i32 %632, 2
  %634 = sext i32 %633 to i64
  %635 = getelementptr inbounds double, ptr %631, i64 %634
  %636 = load double, ptr %635, align 8, !tbaa !11
  %637 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  store double %636, ptr %637, align 8, !tbaa !11
  %638 = load ptr, ptr %22, align 8, !tbaa !5
  %639 = load i32, ptr %35, align 4, !tbaa !9
  %640 = shl i32 %639, 1
  %641 = add nsw i32 %640, 1
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds double, ptr %638, i64 %642
  %644 = load double, ptr %643, align 8, !tbaa !11
  %645 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  store double %644, ptr %645, align 16, !tbaa !11
  br label %646

646:                                              ; preds = %630, %614
  %647 = load ptr, ptr %26, align 8, !tbaa !5
  %648 = load i32, ptr %33, align 4, !tbaa !9
  %649 = add nsw i32 %648, 1
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds double, ptr %647, i64 %650
  %652 = load double, ptr %651, align 8, !tbaa !11
  %653 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  store double %652, ptr %653, align 16, !tbaa !11
  %654 = load ptr, ptr %26, align 8, !tbaa !5
  %655 = load i32, ptr %33, align 4, !tbaa !9
  %656 = add nsw i32 %655, 2
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds double, ptr %654, i64 %657
  %659 = load double, ptr %658, align 8, !tbaa !11
  %660 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  store double %659, ptr %660, align 8, !tbaa !11
  br label %661

661:                                              ; preds = %646, %439
  %662 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  %663 = call i32 @idamax_(ptr noundef @c__4, ptr noundef %662, ptr noundef @c__1)
  store i32 %663, ptr %51, align 4, !tbaa !9
  %664 = load i32, ptr %51, align 4, !tbaa !9
  %665 = sub nsw i32 %664, 1
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %666
  %668 = load double, ptr %667, align 8, !tbaa !11
  store double %668, ptr %64, align 8, !tbaa !11
  %669 = load double, ptr %64, align 8, !tbaa !11
  %670 = fcmp oge double %669, 0.000000e+00
  br i1 %670, label %671, label %673

671:                                              ; preds = %661
  %672 = load double, ptr %64, align 8, !tbaa !11
  br label %676

673:                                              ; preds = %661
  %674 = load double, ptr %64, align 8, !tbaa !11
  %675 = fneg double %674
  br label %676

676:                                              ; preds = %673, %671
  %677 = phi double [ %672, %671 ], [ %675, %673 ]
  %678 = load double, ptr %50, align 8, !tbaa !11
  %679 = fcmp ole double %677, %678
  br i1 %679, label %680, label %683

680:                                              ; preds = %676
  %681 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %681, align 4, !tbaa !9
  %682 = load double, ptr %50, align 8, !tbaa !11
  store double %682, ptr %64, align 8, !tbaa !11
  br label %683

683:                                              ; preds = %680, %676
  %684 = load i32, ptr %51, align 4, !tbaa !9
  %685 = sub nsw i32 %684, 1
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds [4 x i32], ptr @dlasy2_.locu12, i64 0, i64 %686
  %688 = load i32, ptr %687, align 4, !tbaa !9
  %689 = sub nsw i32 %688, 1
  %690 = sext i32 %689 to i64
  %691 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %690
  %692 = load double, ptr %691, align 8, !tbaa !11
  store double %692, ptr %65, align 8, !tbaa !11
  %693 = load i32, ptr %51, align 4, !tbaa !9
  %694 = sub nsw i32 %693, 1
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds [4 x i32], ptr @dlasy2_.locl21, i64 0, i64 %695
  %697 = load i32, ptr %696, align 4, !tbaa !9
  %698 = sub nsw i32 %697, 1
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !11
  %702 = load double, ptr %64, align 8, !tbaa !11
  %703 = fdiv double %701, %702
  store double %703, ptr %63, align 8, !tbaa !11
  %704 = load i32, ptr %51, align 4, !tbaa !9
  %705 = sub nsw i32 %704, 1
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds [4 x i32], ptr @dlasy2_.locu22, i64 0, i64 %706
  %708 = load i32, ptr %707, align 4, !tbaa !9
  %709 = sub nsw i32 %708, 1
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %710
  %712 = load double, ptr %711, align 8, !tbaa !11
  %713 = load double, ptr %65, align 8, !tbaa !11
  %714 = load double, ptr %63, align 8, !tbaa !11
  %715 = fneg double %713
  %716 = call double @llvm.fmuladd.f64(double %715, double %714, double %712)
  store double %716, ptr %68, align 8, !tbaa !11
  %717 = load i32, ptr %51, align 4, !tbaa !9
  %718 = sub nsw i32 %717, 1
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds [4 x i32], ptr @dlasy2_.xswpiv, i64 0, i64 %719
  %721 = load i32, ptr %720, align 4, !tbaa !9
  store i32 %721, ptr %61, align 4, !tbaa !9
  %722 = load i32, ptr %51, align 4, !tbaa !9
  %723 = sub nsw i32 %722, 1
  %724 = sext i32 %723 to i64
  %725 = getelementptr inbounds [4 x i32], ptr @dlasy2_.bswpiv, i64 0, i64 %724
  %726 = load i32, ptr %725, align 4, !tbaa !9
  store i32 %726, ptr %60, align 4, !tbaa !9
  %727 = load double, ptr %68, align 8, !tbaa !11
  %728 = fcmp oge double %727, 0.000000e+00
  br i1 %728, label %729, label %731

729:                                              ; preds = %683
  %730 = load double, ptr %68, align 8, !tbaa !11
  br label %734

731:                                              ; preds = %683
  %732 = load double, ptr %68, align 8, !tbaa !11
  %733 = fneg double %732
  br label %734

734:                                              ; preds = %731, %729
  %735 = phi double [ %730, %729 ], [ %733, %731 ]
  %736 = load double, ptr %50, align 8, !tbaa !11
  %737 = fcmp ole double %735, %736
  br i1 %737, label %738, label %741

738:                                              ; preds = %734
  %739 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %739, align 4, !tbaa !9
  %740 = load double, ptr %50, align 8, !tbaa !11
  store double %740, ptr %68, align 8, !tbaa !11
  br label %741

741:                                              ; preds = %738, %734
  %742 = load i32, ptr %60, align 4, !tbaa !9
  %743 = icmp ne i32 %742, 0
  br i1 %743, label %744, label %756

744:                                              ; preds = %741
  %745 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %746 = load double, ptr %745, align 8, !tbaa !11
  store double %746, ptr %52, align 8, !tbaa !11
  %747 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %748 = load double, ptr %747, align 16, !tbaa !11
  %749 = load double, ptr %63, align 8, !tbaa !11
  %750 = load double, ptr %52, align 8, !tbaa !11
  %751 = fneg double %749
  %752 = call double @llvm.fmuladd.f64(double %751, double %750, double %748)
  %753 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  store double %752, ptr %753, align 8, !tbaa !11
  %754 = load double, ptr %52, align 8, !tbaa !11
  %755 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  store double %754, ptr %755, align 16, !tbaa !11
  br label %764

756:                                              ; preds = %741
  %757 = load double, ptr %63, align 8, !tbaa !11
  %758 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %759 = load double, ptr %758, align 16, !tbaa !11
  %760 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %761 = load double, ptr %760, align 8, !tbaa !11
  %762 = fneg double %757
  %763 = call double @llvm.fmuladd.f64(double %762, double %759, double %761)
  store double %763, ptr %760, align 8, !tbaa !11
  br label %764

764:                                              ; preds = %756, %744
  %765 = load ptr, ptr %28, align 8, !tbaa !5
  store double 1.000000e+00, ptr %765, align 8, !tbaa !11
  %766 = load double, ptr %70, align 8, !tbaa !11
  %767 = fmul double %766, 2.000000e+00
  %768 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %769 = load double, ptr %768, align 8, !tbaa !11
  %770 = fcmp oge double %769, 0.000000e+00
  br i1 %770, label %771, label %774

771:                                              ; preds = %764
  %772 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %773 = load double, ptr %772, align 8, !tbaa !11
  br label %778

774:                                              ; preds = %764
  %775 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %776 = load double, ptr %775, align 8, !tbaa !11
  %777 = fneg double %776
  br label %778

778:                                              ; preds = %774, %771
  %779 = phi double [ %773, %771 ], [ %777, %774 ]
  %780 = fmul double %767, %779
  %781 = load double, ptr %68, align 8, !tbaa !11
  %782 = fcmp oge double %781, 0.000000e+00
  br i1 %782, label %783, label %785

783:                                              ; preds = %778
  %784 = load double, ptr %68, align 8, !tbaa !11
  br label %788

785:                                              ; preds = %778
  %786 = load double, ptr %68, align 8, !tbaa !11
  %787 = fneg double %786
  br label %788

788:                                              ; preds = %785, %783
  %789 = phi double [ %784, %783 ], [ %787, %785 ]
  %790 = fcmp ogt double %780, %789
  br i1 %790, label %817, label %791

791:                                              ; preds = %788
  %792 = load double, ptr %70, align 8, !tbaa !11
  %793 = fmul double %792, 2.000000e+00
  %794 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %795 = load double, ptr %794, align 16, !tbaa !11
  %796 = fcmp oge double %795, 0.000000e+00
  br i1 %796, label %797, label %800

797:                                              ; preds = %791
  %798 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %799 = load double, ptr %798, align 16, !tbaa !11
  br label %804

800:                                              ; preds = %791
  %801 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %802 = load double, ptr %801, align 16, !tbaa !11
  %803 = fneg double %802
  br label %804

804:                                              ; preds = %800, %797
  %805 = phi double [ %799, %797 ], [ %803, %800 ]
  %806 = fmul double %793, %805
  %807 = load double, ptr %64, align 8, !tbaa !11
  %808 = fcmp oge double %807, 0.000000e+00
  br i1 %808, label %809, label %811

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

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

814:                                              ; preds = %811, %809
  %815 = phi double [ %810, %809 ], [ %813, %811 ]
  %816 = fcmp ogt double %806, %815
  br i1 %816, label %817, label %863

817:                                              ; preds = %814, %788
  %818 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %819 = load double, ptr %818, align 16, !tbaa !11
  %820 = fcmp oge double %819, 0.000000e+00
  br i1 %820, label %821, label %824

821:                                              ; preds = %817
  %822 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %823 = load double, ptr %822, align 16, !tbaa !11
  br label %828

824:                                              ; preds = %817
  %825 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %826 = load double, ptr %825, align 16, !tbaa !11
  %827 = fneg double %826
  br label %828

828:                                              ; preds = %824, %821
  %829 = phi double [ %823, %821 ], [ %827, %824 ]
  store double %829, ptr %41, align 8, !tbaa !11
  %830 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %831 = load double, ptr %830, align 8, !tbaa !11
  %832 = fcmp oge double %831, 0.000000e+00
  br i1 %832, label %833, label %836

833:                                              ; preds = %828
  %834 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %835 = load double, ptr %834, align 8, !tbaa !11
  br label %840

836:                                              ; preds = %828
  %837 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %838 = load double, ptr %837, align 8, !tbaa !11
  %839 = fneg double %838
  br label %840

840:                                              ; preds = %836, %833
  %841 = phi double [ %835, %833 ], [ %839, %836 ]
  store double %841, ptr %42, align 8, !tbaa !11
  %842 = load double, ptr %41, align 8, !tbaa !11
  %843 = load double, ptr %42, align 8, !tbaa !11
  %844 = fcmp oge double %842, %843
  br i1 %844, label %845, label %847

845:                                              ; preds = %840
  %846 = load double, ptr %41, align 8, !tbaa !11
  br label %849

847:                                              ; preds = %840
  %848 = load double, ptr %42, align 8, !tbaa !11
  br label %849

849:                                              ; preds = %847, %845
  %850 = phi double [ %846, %845 ], [ %848, %847 ]
  %851 = fdiv double 5.000000e-01, %850
  %852 = load ptr, ptr %28, align 8, !tbaa !5
  store double %851, ptr %852, align 8, !tbaa !11
  %853 = load ptr, ptr %28, align 8, !tbaa !5
  %854 = load double, ptr %853, align 8, !tbaa !11
  %855 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %856 = load double, ptr %855, align 16, !tbaa !11
  %857 = fmul double %856, %854
  store double %857, ptr %855, align 16, !tbaa !11
  %858 = load ptr, ptr %28, align 8, !tbaa !5
  %859 = load double, ptr %858, align 8, !tbaa !11
  %860 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %861 = load double, ptr %860, align 8, !tbaa !11
  %862 = fmul double %861, %859
  store double %862, ptr %860, align 8, !tbaa !11
  br label %863

863:                                              ; preds = %849, %814
  %864 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %865 = load double, ptr %864, align 8, !tbaa !11
  %866 = load double, ptr %68, align 8, !tbaa !11
  %867 = fdiv double %865, %866
  %868 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 1
  store double %867, ptr %868, align 8, !tbaa !11
  %869 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %870 = load double, ptr %869, align 16, !tbaa !11
  %871 = load double, ptr %64, align 8, !tbaa !11
  %872 = fdiv double %870, %871
  %873 = load double, ptr %65, align 8, !tbaa !11
  %874 = load double, ptr %64, align 8, !tbaa !11
  %875 = fdiv double %873, %874
  %876 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 1
  %877 = load double, ptr %876, align 8, !tbaa !11
  %878 = fneg double %875
  %879 = call double @llvm.fmuladd.f64(double %878, double %877, double %872)
  %880 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 0
  store double %879, ptr %880, align 16, !tbaa !11
  %881 = load i32, ptr %61, align 4, !tbaa !9
  %882 = icmp ne i32 %881, 0
  br i1 %882, label %883, label %891

883:                                              ; preds = %863
  %884 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 1
  %885 = load double, ptr %884, align 8, !tbaa !11
  store double %885, ptr %52, align 8, !tbaa !11
  %886 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 0
  %887 = load double, ptr %886, align 16, !tbaa !11
  %888 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 1
  store double %887, ptr %888, align 8, !tbaa !11
  %889 = load double, ptr %52, align 8, !tbaa !11
  %890 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 0
  store double %889, ptr %890, align 16, !tbaa !11
  br label %891

891:                                              ; preds = %883, %863
  %892 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 0
  %893 = load double, ptr %892, align 16, !tbaa !11
  %894 = load ptr, ptr %29, align 8, !tbaa !5
  %895 = load i32, ptr %39, align 4, !tbaa !9
  %896 = add nsw i32 %895, 1
  %897 = sext i32 %896 to i64
  %898 = getelementptr inbounds double, ptr %894, i64 %897
  store double %893, ptr %898, align 8, !tbaa !11
  %899 = load ptr, ptr %20, align 8, !tbaa !5
  %900 = load i32, ptr %899, align 4, !tbaa !9
  %901 = icmp eq i32 %900, 1
  br i1 %901, label %902, label %944

902:                                              ; preds = %891
  %903 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 1
  %904 = load double, ptr %903, align 8, !tbaa !11
  %905 = load ptr, ptr %29, align 8, !tbaa !5
  %906 = load i32, ptr %39, align 4, !tbaa !9
  %907 = shl i32 %906, 1
  %908 = add nsw i32 %907, 1
  %909 = sext i32 %908 to i64
  %910 = getelementptr inbounds double, ptr %905, i64 %909
  store double %904, ptr %910, align 8, !tbaa !11
  %911 = load ptr, ptr %29, align 8, !tbaa !5
  %912 = load i32, ptr %39, align 4, !tbaa !9
  %913 = add nsw i32 %912, 1
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds double, ptr %911, i64 %914
  %916 = load double, ptr %915, align 8, !tbaa !11
  store double %916, ptr %41, align 8, !tbaa !11
  %917 = load double, ptr %41, align 8, !tbaa !11
  %918 = fcmp oge double %917, 0.000000e+00
  br i1 %918, label %919, label %921

919:                                              ; preds = %902
  %920 = load double, ptr %41, align 8, !tbaa !11
  br label %924

921:                                              ; preds = %902
  %922 = load double, ptr %41, align 8, !tbaa !11
  %923 = fneg double %922
  br label %924

924:                                              ; preds = %921, %919
  %925 = phi double [ %920, %919 ], [ %923, %921 ]
  %926 = load ptr, ptr %29, align 8, !tbaa !5
  %927 = load i32, ptr %39, align 4, !tbaa !9
  %928 = shl i32 %927, 1
  %929 = add nsw i32 %928, 1
  %930 = sext i32 %929 to i64
  %931 = getelementptr inbounds double, ptr %926, i64 %930
  %932 = load double, ptr %931, align 8, !tbaa !11
  store double %932, ptr %42, align 8, !tbaa !11
  %933 = load double, ptr %42, align 8, !tbaa !11
  %934 = fcmp oge double %933, 0.000000e+00
  br i1 %934, label %935, label %937

935:                                              ; preds = %924
  %936 = load double, ptr %42, align 8, !tbaa !11
  br label %940

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

940:                                              ; preds = %937, %935
  %941 = phi double [ %936, %935 ], [ %939, %937 ]
  %942 = fadd double %925, %941
  %943 = load ptr, ptr %31, align 8, !tbaa !5
  store double %942, ptr %943, align 8, !tbaa !11
  br label %992

944:                                              ; preds = %891
  %945 = getelementptr inbounds [2 x double], ptr %62, i64 0, i64 1
  %946 = load double, ptr %945, align 8, !tbaa !11
  %947 = load ptr, ptr %29, align 8, !tbaa !5
  %948 = load i32, ptr %39, align 4, !tbaa !9
  %949 = add nsw i32 %948, 2
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds double, ptr %947, i64 %950
  store double %946, ptr %951, align 8, !tbaa !11
  %952 = load ptr, ptr %29, align 8, !tbaa !5
  %953 = load i32, ptr %39, align 4, !tbaa !9
  %954 = add nsw i32 %953, 1
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds double, ptr %952, i64 %955
  %957 = load double, ptr %956, align 8, !tbaa !11
  store double %957, ptr %41, align 8, !tbaa !11
  %958 = load double, ptr %41, align 8, !tbaa !11
  %959 = fcmp oge double %958, 0.000000e+00
  br i1 %959, label %960, label %962

960:                                              ; preds = %944
  %961 = load double, ptr %41, align 8, !tbaa !11
  br label %965

962:                                              ; preds = %944
  %963 = load double, ptr %41, align 8, !tbaa !11
  %964 = fneg double %963
  br label %965

965:                                              ; preds = %962, %960
  %966 = phi double [ %961, %960 ], [ %964, %962 ]
  store double %966, ptr %43, align 8, !tbaa !11
  %967 = load ptr, ptr %29, align 8, !tbaa !5
  %968 = load i32, ptr %39, align 4, !tbaa !9
  %969 = add nsw i32 %968, 2
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds double, ptr %967, i64 %970
  %972 = load double, ptr %971, align 8, !tbaa !11
  store double %972, ptr %42, align 8, !tbaa !11
  %973 = load double, ptr %42, align 8, !tbaa !11
  %974 = fcmp oge double %973, 0.000000e+00
  br i1 %974, label %975, label %977

975:                                              ; preds = %965
  %976 = load double, ptr %42, align 8, !tbaa !11
  br label %980

977:                                              ; preds = %965
  %978 = load double, ptr %42, align 8, !tbaa !11
  %979 = fneg double %978
  br label %980

980:                                              ; preds = %977, %975
  %981 = phi double [ %976, %975 ], [ %979, %977 ]
  store double %981, ptr %44, align 8, !tbaa !11
  %982 = load double, ptr %43, align 8, !tbaa !11
  %983 = load double, ptr %44, align 8, !tbaa !11
  %984 = fcmp oge double %982, %983
  br i1 %984, label %985, label %987

985:                                              ; preds = %980
  %986 = load double, ptr %43, align 8, !tbaa !11
  br label %989

987:                                              ; preds = %980
  %988 = load double, ptr %44, align 8, !tbaa !11
  br label %989

989:                                              ; preds = %987, %985
  %990 = phi double [ %986, %985 ], [ %988, %987 ]
  %991 = load ptr, ptr %31, align 8, !tbaa !5
  store double %990, ptr %991, align 8, !tbaa !11
  br label %992

992:                                              ; preds = %989, %940
  store i32 1, ptr %77, align 4
  br label %2106

993:                                              ; preds = %148
  %994 = load ptr, ptr %24, align 8, !tbaa !5
  %995 = load i32, ptr %37, align 4, !tbaa !9
  %996 = add nsw i32 %995, 1
  %997 = sext i32 %996 to i64
  %998 = getelementptr inbounds double, ptr %994, i64 %997
  %999 = load double, ptr %998, align 8, !tbaa !11
  store double %999, ptr %41, align 8, !tbaa !11
  %1000 = load double, ptr %41, align 8, !tbaa !11
  %1001 = fcmp oge double %1000, 0.000000e+00
  br i1 %1001, label %1002, label %1004

1002:                                             ; preds = %993
  %1003 = load double, ptr %41, align 8, !tbaa !11
  br label %1007

1004:                                             ; preds = %993
  %1005 = load double, ptr %41, align 8, !tbaa !11
  %1006 = fneg double %1005
  br label %1007

1007:                                             ; preds = %1004, %1002
  %1008 = phi double [ %1003, %1002 ], [ %1006, %1004 ]
  store double %1008, ptr %45, align 8, !tbaa !11
  %1009 = load ptr, ptr %24, align 8, !tbaa !5
  %1010 = load i32, ptr %37, align 4, !tbaa !9
  %1011 = shl i32 %1010, 1
  %1012 = add nsw i32 %1011, 1
  %1013 = sext i32 %1012 to i64
  %1014 = getelementptr inbounds double, ptr %1009, i64 %1013
  %1015 = load double, ptr %1014, align 8, !tbaa !11
  store double %1015, ptr %42, align 8, !tbaa !11
  %1016 = load double, ptr %42, align 8, !tbaa !11
  %1017 = fcmp oge double %1016, 0.000000e+00
  br i1 %1017, label %1018, label %1020

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

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

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

1028:                                             ; preds = %1023
  %1029 = load double, ptr %45, align 8, !tbaa !11
  br label %1032

1030:                                             ; preds = %1023
  %1031 = load double, ptr %46, align 8, !tbaa !11
  br label %1032

1032:                                             ; preds = %1030, %1028
  %1033 = phi double [ %1029, %1028 ], [ %1031, %1030 ]
  store double %1033, ptr %45, align 8, !tbaa !11
  %1034 = load ptr, ptr %24, align 8, !tbaa !5
  %1035 = load i32, ptr %37, align 4, !tbaa !9
  %1036 = add nsw i32 %1035, 2
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds double, ptr %1034, i64 %1037
  %1039 = load double, ptr %1038, align 8, !tbaa !11
  store double %1039, ptr %43, align 8, !tbaa !11
  %1040 = load double, ptr %43, align 8, !tbaa !11
  %1041 = fcmp oge double %1040, 0.000000e+00
  br i1 %1041, label %1042, label %1044

1042:                                             ; preds = %1032
  %1043 = load double, ptr %43, align 8, !tbaa !11
  br label %1047

1044:                                             ; preds = %1032
  %1045 = load double, ptr %43, align 8, !tbaa !11
  %1046 = fneg double %1045
  br label %1047

1047:                                             ; preds = %1044, %1042
  %1048 = phi double [ %1043, %1042 ], [ %1046, %1044 ]
  store double %1048, ptr %46, align 8, !tbaa !11
  %1049 = load double, ptr %45, align 8, !tbaa !11
  %1050 = load double, ptr %46, align 8, !tbaa !11
  %1051 = fcmp oge double %1049, %1050
  br i1 %1051, label %1052, label %1054

1052:                                             ; preds = %1047
  %1053 = load double, ptr %45, align 8, !tbaa !11
  br label %1056

1054:                                             ; preds = %1047
  %1055 = load double, ptr %46, align 8, !tbaa !11
  br label %1056

1056:                                             ; preds = %1054, %1052
  %1057 = phi double [ %1053, %1052 ], [ %1055, %1054 ]
  store double %1057, ptr %45, align 8, !tbaa !11
  %1058 = load ptr, ptr %24, align 8, !tbaa !5
  %1059 = load i32, ptr %37, align 4, !tbaa !9
  %1060 = shl i32 %1059, 1
  %1061 = add nsw i32 %1060, 2
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds double, ptr %1058, i64 %1062
  %1064 = load double, ptr %1063, align 8, !tbaa !11
  store double %1064, ptr %44, align 8, !tbaa !11
  %1065 = load double, ptr %44, align 8, !tbaa !11
  %1066 = fcmp oge double %1065, 0.000000e+00
  br i1 %1066, label %1067, label %1069

1067:                                             ; preds = %1056
  %1068 = load double, ptr %44, align 8, !tbaa !11
  br label %1072

1069:                                             ; preds = %1056
  %1070 = load double, ptr %44, align 8, !tbaa !11
  %1071 = fneg double %1070
  br label %1072

1072:                                             ; preds = %1069, %1067
  %1073 = phi double [ %1068, %1067 ], [ %1071, %1069 ]
  store double %1073, ptr %46, align 8, !tbaa !11
  %1074 = load double, ptr %45, align 8, !tbaa !11
  %1075 = load double, ptr %46, align 8, !tbaa !11
  %1076 = fcmp oge double %1074, %1075
  br i1 %1076, label %1077, label %1079

1077:                                             ; preds = %1072
  %1078 = load double, ptr %45, align 8, !tbaa !11
  br label %1081

1079:                                             ; preds = %1072
  %1080 = load double, ptr %46, align 8, !tbaa !11
  br label %1081

1081:                                             ; preds = %1079, %1077
  %1082 = phi double [ %1078, %1077 ], [ %1080, %1079 ]
  store double %1082, ptr %50, align 8, !tbaa !11
  %1083 = load double, ptr %50, align 8, !tbaa !11
  store double %1083, ptr %45, align 8, !tbaa !11
  %1084 = load ptr, ptr %22, align 8, !tbaa !5
  %1085 = load i32, ptr %35, align 4, !tbaa !9
  %1086 = add nsw i32 %1085, 1
  %1087 = sext i32 %1086 to i64
  %1088 = getelementptr inbounds double, ptr %1084, i64 %1087
  %1089 = load double, ptr %1088, align 8, !tbaa !11
  store double %1089, ptr %41, align 8, !tbaa !11
  %1090 = load double, ptr %41, align 8, !tbaa !11
  %1091 = fcmp oge double %1090, 0.000000e+00
  br i1 %1091, label %1092, label %1094

1092:                                             ; preds = %1081
  %1093 = load double, ptr %41, align 8, !tbaa !11
  br label %1097

1094:                                             ; preds = %1081
  %1095 = load double, ptr %41, align 8, !tbaa !11
  %1096 = fneg double %1095
  br label %1097

1097:                                             ; preds = %1094, %1092
  %1098 = phi double [ %1093, %1092 ], [ %1096, %1094 ]
  store double %1098, ptr %46, align 8, !tbaa !11
  %1099 = load double, ptr %45, align 8, !tbaa !11
  %1100 = load double, ptr %46, align 8, !tbaa !11
  %1101 = fcmp oge double %1099, %1100
  br i1 %1101, label %1102, label %1104

1102:                                             ; preds = %1097
  %1103 = load double, ptr %45, align 8, !tbaa !11
  br label %1106

1104:                                             ; preds = %1097
  %1105 = load double, ptr %46, align 8, !tbaa !11
  br label %1106

1106:                                             ; preds = %1104, %1102
  %1107 = phi double [ %1103, %1102 ], [ %1105, %1104 ]
  store double %1107, ptr %45, align 8, !tbaa !11
  %1108 = load ptr, ptr %22, align 8, !tbaa !5
  %1109 = load i32, ptr %35, align 4, !tbaa !9
  %1110 = shl i32 %1109, 1
  %1111 = add nsw i32 %1110, 1
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1108, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !11
  store double %1114, ptr %42, align 8, !tbaa !11
  %1115 = load double, ptr %42, align 8, !tbaa !11
  %1116 = fcmp oge double %1115, 0.000000e+00
  br i1 %1116, label %1117, label %1119

1117:                                             ; preds = %1106
  %1118 = load double, ptr %42, align 8, !tbaa !11
  br label %1122

1119:                                             ; preds = %1106
  %1120 = load double, ptr %42, align 8, !tbaa !11
  %1121 = fneg double %1120
  br label %1122

1122:                                             ; preds = %1119, %1117
  %1123 = phi double [ %1118, %1117 ], [ %1121, %1119 ]
  store double %1123, ptr %46, align 8, !tbaa !11
  %1124 = load double, ptr %45, align 8, !tbaa !11
  %1125 = load double, ptr %46, align 8, !tbaa !11
  %1126 = fcmp oge double %1124, %1125
  br i1 %1126, label %1127, label %1129

1127:                                             ; preds = %1122
  %1128 = load double, ptr %45, align 8, !tbaa !11
  br label %1131

1129:                                             ; preds = %1122
  %1130 = load double, ptr %46, align 8, !tbaa !11
  br label %1131

1131:                                             ; preds = %1129, %1127
  %1132 = phi double [ %1128, %1127 ], [ %1130, %1129 ]
  store double %1132, ptr %45, align 8, !tbaa !11
  %1133 = load ptr, ptr %22, align 8, !tbaa !5
  %1134 = load i32, ptr %35, align 4, !tbaa !9
  %1135 = add nsw i32 %1134, 2
  %1136 = sext i32 %1135 to i64
  %1137 = getelementptr inbounds double, ptr %1133, i64 %1136
  %1138 = load double, ptr %1137, align 8, !tbaa !11
  store double %1138, ptr %43, align 8, !tbaa !11
  %1139 = load double, ptr %43, align 8, !tbaa !11
  %1140 = fcmp oge double %1139, 0.000000e+00
  br i1 %1140, label %1141, label %1143

1141:                                             ; preds = %1131
  %1142 = load double, ptr %43, align 8, !tbaa !11
  br label %1146

1143:                                             ; preds = %1131
  %1144 = load double, ptr %43, align 8, !tbaa !11
  %1145 = fneg double %1144
  br label %1146

1146:                                             ; preds = %1143, %1141
  %1147 = phi double [ %1142, %1141 ], [ %1145, %1143 ]
  store double %1147, ptr %46, align 8, !tbaa !11
  %1148 = load double, ptr %45, align 8, !tbaa !11
  %1149 = load double, ptr %46, align 8, !tbaa !11
  %1150 = fcmp oge double %1148, %1149
  br i1 %1150, label %1151, label %1153

1151:                                             ; preds = %1146
  %1152 = load double, ptr %45, align 8, !tbaa !11
  br label %1155

1153:                                             ; preds = %1146
  %1154 = load double, ptr %46, align 8, !tbaa !11
  br label %1155

1155:                                             ; preds = %1153, %1151
  %1156 = phi double [ %1152, %1151 ], [ %1154, %1153 ]
  store double %1156, ptr %45, align 8, !tbaa !11
  %1157 = load ptr, ptr %22, align 8, !tbaa !5
  %1158 = load i32, ptr %35, align 4, !tbaa !9
  %1159 = shl i32 %1158, 1
  %1160 = add nsw i32 %1159, 2
  %1161 = sext i32 %1160 to i64
  %1162 = getelementptr inbounds double, ptr %1157, i64 %1161
  %1163 = load double, ptr %1162, align 8, !tbaa !11
  store double %1163, ptr %44, align 8, !tbaa !11
  %1164 = load double, ptr %44, align 8, !tbaa !11
  %1165 = fcmp oge double %1164, 0.000000e+00
  br i1 %1165, label %1166, label %1168

1166:                                             ; preds = %1155
  %1167 = load double, ptr %44, align 8, !tbaa !11
  br label %1171

1168:                                             ; preds = %1155
  %1169 = load double, ptr %44, align 8, !tbaa !11
  %1170 = fneg double %1169
  br label %1171

1171:                                             ; preds = %1168, %1166
  %1172 = phi double [ %1167, %1166 ], [ %1170, %1168 ]
  store double %1172, ptr %46, align 8, !tbaa !11
  %1173 = load double, ptr %45, align 8, !tbaa !11
  %1174 = load double, ptr %46, align 8, !tbaa !11
  %1175 = fcmp oge double %1173, %1174
  br i1 %1175, label %1176, label %1178

1176:                                             ; preds = %1171
  %1177 = load double, ptr %45, align 8, !tbaa !11
  br label %1180

1178:                                             ; preds = %1171
  %1179 = load double, ptr %46, align 8, !tbaa !11
  br label %1180

1180:                                             ; preds = %1178, %1176
  %1181 = phi double [ %1177, %1176 ], [ %1179, %1178 ]
  store double %1181, ptr %50, align 8, !tbaa !11
  %1182 = load double, ptr %73, align 8, !tbaa !11
  %1183 = load double, ptr %50, align 8, !tbaa !11
  %1184 = fmul double %1182, %1183
  store double %1184, ptr %41, align 8, !tbaa !11
  %1185 = load double, ptr %41, align 8, !tbaa !11
  %1186 = load double, ptr %70, align 8, !tbaa !11
  %1187 = fcmp oge double %1185, %1186
  br i1 %1187, label %1188, label %1190

1188:                                             ; preds = %1180
  %1189 = load double, ptr %41, align 8, !tbaa !11
  br label %1192

1190:                                             ; preds = %1180
  %1191 = load double, ptr %70, align 8, !tbaa !11
  br label %1192

1192:                                             ; preds = %1190, %1188
  %1193 = phi double [ %1189, %1188 ], [ %1191, %1190 ]
  store double %1193, ptr %50, align 8, !tbaa !11
  %1194 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  store double 0.000000e+00, ptr %1194, align 16, !tbaa !11
  %1195 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1196 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 0
  call void @dcopy_(ptr noundef @c__16, ptr noundef %1195, ptr noundef @c__0, ptr noundef %1196, ptr noundef @c__1)
  %1197 = load ptr, ptr %22, align 8, !tbaa !5
  %1198 = load i32, ptr %35, align 4, !tbaa !9
  %1199 = add nsw i32 %1198, 1
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds double, ptr %1197, i64 %1200
  %1202 = load double, ptr %1201, align 8, !tbaa !11
  %1203 = load double, ptr %74, align 8, !tbaa !11
  %1204 = load ptr, ptr %24, align 8, !tbaa !5
  %1205 = load i32, ptr %37, align 4, !tbaa !9
  %1206 = add nsw i32 %1205, 1
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds double, ptr %1204, i64 %1207
  %1209 = load double, ptr %1208, align 8, !tbaa !11
  %1210 = call double @llvm.fmuladd.f64(double %1203, double %1209, double %1202)
  %1211 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 0
  store double %1210, ptr %1211, align 16, !tbaa !11
  %1212 = load ptr, ptr %22, align 8, !tbaa !5
  %1213 = load i32, ptr %35, align 4, !tbaa !9
  %1214 = shl i32 %1213, 1
  %1215 = add nsw i32 %1214, 2
  %1216 = sext i32 %1215 to i64
  %1217 = getelementptr inbounds double, ptr %1212, i64 %1216
  %1218 = load double, ptr %1217, align 8, !tbaa !11
  %1219 = load double, ptr %74, align 8, !tbaa !11
  %1220 = load ptr, ptr %24, align 8, !tbaa !5
  %1221 = load i32, ptr %37, align 4, !tbaa !9
  %1222 = add nsw i32 %1221, 1
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds double, ptr %1220, i64 %1223
  %1225 = load double, ptr %1224, align 8, !tbaa !11
  %1226 = call double @llvm.fmuladd.f64(double %1219, double %1225, double %1218)
  %1227 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 5
  store double %1226, ptr %1227, align 8, !tbaa !11
  %1228 = load ptr, ptr %22, align 8, !tbaa !5
  %1229 = load i32, ptr %35, align 4, !tbaa !9
  %1230 = add nsw i32 %1229, 1
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds double, ptr %1228, i64 %1231
  %1233 = load double, ptr %1232, align 8, !tbaa !11
  %1234 = load double, ptr %74, align 8, !tbaa !11
  %1235 = load ptr, ptr %24, align 8, !tbaa !5
  %1236 = load i32, ptr %37, align 4, !tbaa !9
  %1237 = shl i32 %1236, 1
  %1238 = add nsw i32 %1237, 2
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds double, ptr %1235, i64 %1239
  %1241 = load double, ptr %1240, align 8, !tbaa !11
  %1242 = call double @llvm.fmuladd.f64(double %1234, double %1241, double %1233)
  %1243 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 10
  store double %1242, ptr %1243, align 16, !tbaa !11
  %1244 = load ptr, ptr %22, align 8, !tbaa !5
  %1245 = load i32, ptr %35, align 4, !tbaa !9
  %1246 = shl i32 %1245, 1
  %1247 = add nsw i32 %1246, 2
  %1248 = sext i32 %1247 to i64
  %1249 = getelementptr inbounds double, ptr %1244, i64 %1248
  %1250 = load double, ptr %1249, align 8, !tbaa !11
  %1251 = load double, ptr %74, align 8, !tbaa !11
  %1252 = load ptr, ptr %24, align 8, !tbaa !5
  %1253 = load i32, ptr %37, align 4, !tbaa !9
  %1254 = shl i32 %1253, 1
  %1255 = add nsw i32 %1254, 2
  %1256 = sext i32 %1255 to i64
  %1257 = getelementptr inbounds double, ptr %1252, i64 %1256
  %1258 = load double, ptr %1257, align 8, !tbaa !11
  %1259 = call double @llvm.fmuladd.f64(double %1251, double %1258, double %1250)
  %1260 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 15
  store double %1259, ptr %1260, align 8, !tbaa !11
  %1261 = load ptr, ptr %17, align 8, !tbaa !5
  %1262 = load i32, ptr %1261, align 4, !tbaa !9
  %1263 = icmp ne i32 %1262, 0
  br i1 %1263, label %1264, label %1295

1264:                                             ; preds = %1192
  %1265 = load ptr, ptr %22, align 8, !tbaa !5
  %1266 = load i32, ptr %35, align 4, !tbaa !9
  %1267 = add nsw i32 %1266, 2
  %1268 = sext i32 %1267 to i64
  %1269 = getelementptr inbounds double, ptr %1265, i64 %1268
  %1270 = load double, ptr %1269, align 8, !tbaa !11
  %1271 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 4
  store double %1270, ptr %1271, align 16, !tbaa !11
  %1272 = load ptr, ptr %22, align 8, !tbaa !5
  %1273 = load i32, ptr %35, align 4, !tbaa !9
  %1274 = shl i32 %1273, 1
  %1275 = add nsw i32 %1274, 1
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds double, ptr %1272, i64 %1276
  %1278 = load double, ptr %1277, align 8, !tbaa !11
  %1279 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 1
  store double %1278, ptr %1279, align 8, !tbaa !11
  %1280 = load ptr, ptr %22, align 8, !tbaa !5
  %1281 = load i32, ptr %35, align 4, !tbaa !9
  %1282 = add nsw i32 %1281, 2
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds double, ptr %1280, i64 %1283
  %1285 = load double, ptr %1284, align 8, !tbaa !11
  %1286 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 14
  store double %1285, ptr %1286, align 16, !tbaa !11
  %1287 = load ptr, ptr %22, align 8, !tbaa !5
  %1288 = load i32, ptr %35, align 4, !tbaa !9
  %1289 = shl i32 %1288, 1
  %1290 = add nsw i32 %1289, 1
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds double, ptr %1287, i64 %1291
  %1293 = load double, ptr %1292, align 8, !tbaa !11
  %1294 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 11
  store double %1293, ptr %1294, align 8, !tbaa !11
  br label %1326

1295:                                             ; preds = %1192
  %1296 = load ptr, ptr %22, align 8, !tbaa !5
  %1297 = load i32, ptr %35, align 4, !tbaa !9
  %1298 = shl i32 %1297, 1
  %1299 = add nsw i32 %1298, 1
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds double, ptr %1296, i64 %1300
  %1302 = load double, ptr %1301, align 8, !tbaa !11
  %1303 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 4
  store double %1302, ptr %1303, align 16, !tbaa !11
  %1304 = load ptr, ptr %22, align 8, !tbaa !5
  %1305 = load i32, ptr %35, align 4, !tbaa !9
  %1306 = add nsw i32 %1305, 2
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds double, ptr %1304, i64 %1307
  %1309 = load double, ptr %1308, align 8, !tbaa !11
  %1310 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 1
  store double %1309, ptr %1310, align 8, !tbaa !11
  %1311 = load ptr, ptr %22, align 8, !tbaa !5
  %1312 = load i32, ptr %35, align 4, !tbaa !9
  %1313 = shl i32 %1312, 1
  %1314 = add nsw i32 %1313, 1
  %1315 = sext i32 %1314 to i64
  %1316 = getelementptr inbounds double, ptr %1311, i64 %1315
  %1317 = load double, ptr %1316, align 8, !tbaa !11
  %1318 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 14
  store double %1317, ptr %1318, align 16, !tbaa !11
  %1319 = load ptr, ptr %22, align 8, !tbaa !5
  %1320 = load i32, ptr %35, align 4, !tbaa !9
  %1321 = add nsw i32 %1320, 2
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds double, ptr %1319, i64 %1322
  %1324 = load double, ptr %1323, align 8, !tbaa !11
  %1325 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 11
  store double %1324, ptr %1325, align 8, !tbaa !11
  br label %1326

1326:                                             ; preds = %1295, %1264
  %1327 = load ptr, ptr %18, align 8, !tbaa !5
  %1328 = load i32, ptr %1327, align 4, !tbaa !9
  %1329 = icmp ne i32 %1328, 0
  br i1 %1329, label %1330, label %1369

1330:                                             ; preds = %1326
  %1331 = load double, ptr %74, align 8, !tbaa !11
  %1332 = load ptr, ptr %24, align 8, !tbaa !5
  %1333 = load i32, ptr %37, align 4, !tbaa !9
  %1334 = shl i32 %1333, 1
  %1335 = add nsw i32 %1334, 1
  %1336 = sext i32 %1335 to i64
  %1337 = getelementptr inbounds double, ptr %1332, i64 %1336
  %1338 = load double, ptr %1337, align 8, !tbaa !11
  %1339 = fmul double %1331, %1338
  %1340 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 8
  store double %1339, ptr %1340, align 16, !tbaa !11
  %1341 = load double, ptr %74, align 8, !tbaa !11
  %1342 = load ptr, ptr %24, align 8, !tbaa !5
  %1343 = load i32, ptr %37, align 4, !tbaa !9
  %1344 = shl i32 %1343, 1
  %1345 = add nsw i32 %1344, 1
  %1346 = sext i32 %1345 to i64
  %1347 = getelementptr inbounds double, ptr %1342, i64 %1346
  %1348 = load double, ptr %1347, align 8, !tbaa !11
  %1349 = fmul double %1341, %1348
  %1350 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 13
  store double %1349, ptr %1350, align 8, !tbaa !11
  %1351 = load double, ptr %74, align 8, !tbaa !11
  %1352 = load ptr, ptr %24, align 8, !tbaa !5
  %1353 = load i32, ptr %37, align 4, !tbaa !9
  %1354 = add nsw i32 %1353, 2
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds double, ptr %1352, i64 %1355
  %1357 = load double, ptr %1356, align 8, !tbaa !11
  %1358 = fmul double %1351, %1357
  %1359 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 2
  store double %1358, ptr %1359, align 16, !tbaa !11
  %1360 = load double, ptr %74, align 8, !tbaa !11
  %1361 = load ptr, ptr %24, align 8, !tbaa !5
  %1362 = load i32, ptr %37, align 4, !tbaa !9
  %1363 = add nsw i32 %1362, 2
  %1364 = sext i32 %1363 to i64
  %1365 = getelementptr inbounds double, ptr %1361, i64 %1364
  %1366 = load double, ptr %1365, align 8, !tbaa !11
  %1367 = fmul double %1360, %1366
  %1368 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 7
  store double %1367, ptr %1368, align 8, !tbaa !11
  br label %1408

1369:                                             ; preds = %1326
  %1370 = load double, ptr %74, align 8, !tbaa !11
  %1371 = load ptr, ptr %24, align 8, !tbaa !5
  %1372 = load i32, ptr %37, align 4, !tbaa !9
  %1373 = add nsw i32 %1372, 2
  %1374 = sext i32 %1373 to i64
  %1375 = getelementptr inbounds double, ptr %1371, i64 %1374
  %1376 = load double, ptr %1375, align 8, !tbaa !11
  %1377 = fmul double %1370, %1376
  %1378 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 8
  store double %1377, ptr %1378, align 16, !tbaa !11
  %1379 = load double, ptr %74, align 8, !tbaa !11
  %1380 = load ptr, ptr %24, align 8, !tbaa !5
  %1381 = load i32, ptr %37, align 4, !tbaa !9
  %1382 = add nsw i32 %1381, 2
  %1383 = sext i32 %1382 to i64
  %1384 = getelementptr inbounds double, ptr %1380, i64 %1383
  %1385 = load double, ptr %1384, align 8, !tbaa !11
  %1386 = fmul double %1379, %1385
  %1387 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 13
  store double %1386, ptr %1387, align 8, !tbaa !11
  %1388 = load double, ptr %74, align 8, !tbaa !11
  %1389 = load ptr, ptr %24, align 8, !tbaa !5
  %1390 = load i32, ptr %37, align 4, !tbaa !9
  %1391 = shl i32 %1390, 1
  %1392 = add nsw i32 %1391, 1
  %1393 = sext i32 %1392 to i64
  %1394 = getelementptr inbounds double, ptr %1389, i64 %1393
  %1395 = load double, ptr %1394, align 8, !tbaa !11
  %1396 = fmul double %1388, %1395
  %1397 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 2
  store double %1396, ptr %1397, align 16, !tbaa !11
  %1398 = load double, ptr %74, align 8, !tbaa !11
  %1399 = load ptr, ptr %24, align 8, !tbaa !5
  %1400 = load i32, ptr %37, align 4, !tbaa !9
  %1401 = shl i32 %1400, 1
  %1402 = add nsw i32 %1401, 1
  %1403 = sext i32 %1402 to i64
  %1404 = getelementptr inbounds double, ptr %1399, i64 %1403
  %1405 = load double, ptr %1404, align 8, !tbaa !11
  %1406 = fmul double %1398, %1405
  %1407 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 7
  store double %1406, ptr %1407, align 8, !tbaa !11
  br label %1408

1408:                                             ; preds = %1369, %1330
  %1409 = load ptr, ptr %26, align 8, !tbaa !5
  %1410 = load i32, ptr %33, align 4, !tbaa !9
  %1411 = add nsw i32 %1410, 1
  %1412 = sext i32 %1411 to i64
  %1413 = getelementptr inbounds double, ptr %1409, i64 %1412
  %1414 = load double, ptr %1413, align 8, !tbaa !11
  %1415 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  store double %1414, ptr %1415, align 16, !tbaa !11
  %1416 = load ptr, ptr %26, align 8, !tbaa !5
  %1417 = load i32, ptr %33, align 4, !tbaa !9
  %1418 = add nsw i32 %1417, 2
  %1419 = sext i32 %1418 to i64
  %1420 = getelementptr inbounds double, ptr %1416, i64 %1419
  %1421 = load double, ptr %1420, align 8, !tbaa !11
  %1422 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  store double %1421, ptr %1422, align 8, !tbaa !11
  %1423 = load ptr, ptr %26, align 8, !tbaa !5
  %1424 = load i32, ptr %33, align 4, !tbaa !9
  %1425 = shl i32 %1424, 1
  %1426 = add nsw i32 %1425, 1
  %1427 = sext i32 %1426 to i64
  %1428 = getelementptr inbounds double, ptr %1423, i64 %1427
  %1429 = load double, ptr %1428, align 8, !tbaa !11
  %1430 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 2
  store double %1429, ptr %1430, align 16, !tbaa !11
  %1431 = load ptr, ptr %26, align 8, !tbaa !5
  %1432 = load i32, ptr %33, align 4, !tbaa !9
  %1433 = shl i32 %1432, 1
  %1434 = add nsw i32 %1433, 2
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds double, ptr %1431, i64 %1435
  %1437 = load double, ptr %1436, align 8, !tbaa !11
  %1438 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 3
  store double %1437, ptr %1438, align 8, !tbaa !11
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %1439

1439:                                             ; preds = %1666, %1408
  %1440 = load i32, ptr %57, align 4, !tbaa !9
  %1441 = icmp sle i32 %1440, 3
  br i1 %1441, label %1442, label %1669

1442:                                             ; preds = %1439
  store double 0.000000e+00, ptr %54, align 8, !tbaa !11
  %1443 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1443, ptr %66, align 4, !tbaa !9
  br label %1444

1444:                                             ; preds = %1497, %1442
  %1445 = load i32, ptr %66, align 4, !tbaa !9
  %1446 = icmp sle i32 %1445, 4
  br i1 %1446, label %1447, label %1500

1447:                                             ; preds = %1444
  %1448 = load i32, ptr %57, align 4, !tbaa !9
  store i32 %1448, ptr %67, align 4, !tbaa !9
  br label %1449

1449:                                             ; preds = %1493, %1447
  %1450 = load i32, ptr %67, align 4, !tbaa !9
  %1451 = icmp sle i32 %1450, 4
  br i1 %1451, label %1452, label %1496

1452:                                             ; preds = %1449
  %1453 = load i32, ptr %66, align 4, !tbaa !9
  %1454 = load i32, ptr %67, align 4, !tbaa !9
  %1455 = shl i32 %1454, 2
  %1456 = add nsw i32 %1453, %1455
  %1457 = sub nsw i32 %1456, 5
  %1458 = sext i32 %1457 to i64
  %1459 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1458
  %1460 = load double, ptr %1459, align 8, !tbaa !11
  store double %1460, ptr %41, align 8, !tbaa !11
  %1461 = load double, ptr %41, align 8, !tbaa !11
  %1462 = fcmp oge double %1461, 0.000000e+00
  br i1 %1462, label %1463, label %1465

1463:                                             ; preds = %1452
  %1464 = load double, ptr %41, align 8, !tbaa !11
  br label %1468

1465:                                             ; preds = %1452
  %1466 = load double, ptr %41, align 8, !tbaa !11
  %1467 = fneg double %1466
  br label %1468

1468:                                             ; preds = %1465, %1463
  %1469 = phi double [ %1464, %1463 ], [ %1467, %1465 ]
  %1470 = load double, ptr %54, align 8, !tbaa !11
  %1471 = fcmp oge double %1469, %1470
  br i1 %1471, label %1472, label %1492

1472:                                             ; preds = %1468
  %1473 = load i32, ptr %66, align 4, !tbaa !9
  %1474 = load i32, ptr %67, align 4, !tbaa !9
  %1475 = shl i32 %1474, 2
  %1476 = add nsw i32 %1473, %1475
  %1477 = sub nsw i32 %1476, 5
  %1478 = sext i32 %1477 to i64
  %1479 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1478
  %1480 = load double, ptr %1479, align 8, !tbaa !11
  store double %1480, ptr %41, align 8, !tbaa !11
  %1481 = load double, ptr %41, align 8, !tbaa !11
  %1482 = fcmp oge double %1481, 0.000000e+00
  br i1 %1482, label %1483, label %1485

1483:                                             ; preds = %1472
  %1484 = load double, ptr %41, align 8, !tbaa !11
  br label %1488

1485:                                             ; preds = %1472
  %1486 = load double, ptr %41, align 8, !tbaa !11
  %1487 = fneg double %1486
  br label %1488

1488:                                             ; preds = %1485, %1483
  %1489 = phi double [ %1484, %1483 ], [ %1487, %1485 ]
  store double %1489, ptr %54, align 8, !tbaa !11
  %1490 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %1490, ptr %55, align 4, !tbaa !9
  %1491 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %1491, ptr %56, align 4, !tbaa !9
  br label %1492

1492:                                             ; preds = %1488, %1468
  br label %1493

1493:                                             ; preds = %1492
  %1494 = load i32, ptr %67, align 4, !tbaa !9
  %1495 = add nsw i32 %1494, 1
  store i32 %1495, ptr %67, align 4, !tbaa !9
  br label %1449, !llvm.loop !13

1496:                                             ; preds = %1449
  br label %1497

1497:                                             ; preds = %1496
  %1498 = load i32, ptr %66, align 4, !tbaa !9
  %1499 = add nsw i32 %1498, 1
  store i32 %1499, ptr %66, align 4, !tbaa !9
  br label %1444, !llvm.loop !15

1500:                                             ; preds = %1444
  %1501 = load i32, ptr %55, align 4, !tbaa !9
  %1502 = load i32, ptr %57, align 4, !tbaa !9
  %1503 = icmp ne i32 %1501, %1502
  br i1 %1503, label %1504, label %1532

1504:                                             ; preds = %1500
  %1505 = load i32, ptr %55, align 4, !tbaa !9
  %1506 = sub nsw i32 %1505, 1
  %1507 = sext i32 %1506 to i64
  %1508 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1507
  %1509 = load i32, ptr %57, align 4, !tbaa !9
  %1510 = sub nsw i32 %1509, 1
  %1511 = sext i32 %1510 to i64
  %1512 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1511
  call void @dswap_(ptr noundef @c__4, ptr noundef %1508, ptr noundef @c__4, ptr noundef %1512, ptr noundef @c__4)
  %1513 = load i32, ptr %57, align 4, !tbaa !9
  %1514 = sub nsw i32 %1513, 1
  %1515 = sext i32 %1514 to i64
  %1516 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 %1515
  %1517 = load double, ptr %1516, align 8, !tbaa !11
  store double %1517, ptr %52, align 8, !tbaa !11
  %1518 = load i32, ptr %55, align 4, !tbaa !9
  %1519 = sub nsw i32 %1518, 1
  %1520 = sext i32 %1519 to i64
  %1521 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 %1520
  %1522 = load double, ptr %1521, align 8, !tbaa !11
  %1523 = load i32, ptr %57, align 4, !tbaa !9
  %1524 = sub nsw i32 %1523, 1
  %1525 = sext i32 %1524 to i64
  %1526 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 %1525
  store double %1522, ptr %1526, align 8, !tbaa !11
  %1527 = load double, ptr %52, align 8, !tbaa !11
  %1528 = load i32, ptr %55, align 4, !tbaa !9
  %1529 = sub nsw i32 %1528, 1
  %1530 = sext i32 %1529 to i64
  %1531 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 %1530
  store double %1527, ptr %1531, align 8, !tbaa !11
  br label %1532

1532:                                             ; preds = %1504, %1500
  %1533 = load i32, ptr %56, align 4, !tbaa !9
  %1534 = load i32, ptr %57, align 4, !tbaa !9
  %1535 = icmp ne i32 %1533, %1534
  br i1 %1535, label %1536, label %1547

1536:                                             ; preds = %1532
  %1537 = load i32, ptr %56, align 4, !tbaa !9
  %1538 = shl i32 %1537, 2
  %1539 = sub nsw i32 %1538, 4
  %1540 = sext i32 %1539 to i64
  %1541 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1540
  %1542 = load i32, ptr %57, align 4, !tbaa !9
  %1543 = shl i32 %1542, 2
  %1544 = sub nsw i32 %1543, 4
  %1545 = sext i32 %1544 to i64
  %1546 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1545
  call void @dswap_(ptr noundef @c__4, ptr noundef %1541, ptr noundef @c__1, ptr noundef %1546, ptr noundef @c__1)
  br label %1547

1547:                                             ; preds = %1536, %1532
  %1548 = load i32, ptr %56, align 4, !tbaa !9
  %1549 = load i32, ptr %57, align 4, !tbaa !9
  %1550 = sub nsw i32 %1549, 1
  %1551 = sext i32 %1550 to i64
  %1552 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 %1551
  store i32 %1548, ptr %1552, align 4, !tbaa !9
  %1553 = load i32, ptr %57, align 4, !tbaa !9
  %1554 = load i32, ptr %57, align 4, !tbaa !9
  %1555 = shl i32 %1554, 2
  %1556 = add nsw i32 %1553, %1555
  %1557 = sub nsw i32 %1556, 5
  %1558 = sext i32 %1557 to i64
  %1559 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1558
  %1560 = load double, ptr %1559, align 8, !tbaa !11
  store double %1560, ptr %41, align 8, !tbaa !11
  %1561 = load double, ptr %41, align 8, !tbaa !11
  %1562 = fcmp oge double %1561, 0.000000e+00
  br i1 %1562, label %1563, label %1565

1563:                                             ; preds = %1547
  %1564 = load double, ptr %41, align 8, !tbaa !11
  br label %1568

1565:                                             ; preds = %1547
  %1566 = load double, ptr %41, align 8, !tbaa !11
  %1567 = fneg double %1566
  br label %1568

1568:                                             ; preds = %1565, %1563
  %1569 = phi double [ %1564, %1563 ], [ %1567, %1565 ]
  %1570 = load double, ptr %50, align 8, !tbaa !11
  %1571 = fcmp olt double %1569, %1570
  br i1 %1571, label %1572, label %1582

1572:                                             ; preds = %1568
  %1573 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %1573, align 4, !tbaa !9
  %1574 = load double, ptr %50, align 8, !tbaa !11
  %1575 = load i32, ptr %57, align 4, !tbaa !9
  %1576 = load i32, ptr %57, align 4, !tbaa !9
  %1577 = shl i32 %1576, 2
  %1578 = add nsw i32 %1575, %1577
  %1579 = sub nsw i32 %1578, 5
  %1580 = sext i32 %1579 to i64
  %1581 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1580
  store double %1574, ptr %1581, align 8, !tbaa !11
  br label %1582

1582:                                             ; preds = %1572, %1568
  %1583 = load i32, ptr %57, align 4, !tbaa !9
  %1584 = add nsw i32 %1583, 1
  store i32 %1584, ptr %58, align 4, !tbaa !9
  br label %1585

1585:                                             ; preds = %1662, %1582
  %1586 = load i32, ptr %58, align 4, !tbaa !9
  %1587 = icmp sle i32 %1586, 4
  br i1 %1587, label %1588, label %1665

1588:                                             ; preds = %1585
  %1589 = load i32, ptr %57, align 4, !tbaa !9
  %1590 = load i32, ptr %57, align 4, !tbaa !9
  %1591 = shl i32 %1590, 2
  %1592 = add nsw i32 %1589, %1591
  %1593 = sub nsw i32 %1592, 5
  %1594 = sext i32 %1593 to i64
  %1595 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1594
  %1596 = load double, ptr %1595, align 8, !tbaa !11
  %1597 = load i32, ptr %58, align 4, !tbaa !9
  %1598 = load i32, ptr %57, align 4, !tbaa !9
  %1599 = shl i32 %1598, 2
  %1600 = add nsw i32 %1597, %1599
  %1601 = sub nsw i32 %1600, 5
  %1602 = sext i32 %1601 to i64
  %1603 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1602
  %1604 = load double, ptr %1603, align 8, !tbaa !11
  %1605 = fdiv double %1604, %1596
  store double %1605, ptr %1603, align 8, !tbaa !11
  %1606 = load i32, ptr %58, align 4, !tbaa !9
  %1607 = load i32, ptr %57, align 4, !tbaa !9
  %1608 = shl i32 %1607, 2
  %1609 = add nsw i32 %1606, %1608
  %1610 = sub nsw i32 %1609, 5
  %1611 = sext i32 %1610 to i64
  %1612 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1611
  %1613 = load double, ptr %1612, align 8, !tbaa !11
  %1614 = load i32, ptr %57, align 4, !tbaa !9
  %1615 = sub nsw i32 %1614, 1
  %1616 = sext i32 %1615 to i64
  %1617 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 %1616
  %1618 = load double, ptr %1617, align 8, !tbaa !11
  %1619 = load i32, ptr %58, align 4, !tbaa !9
  %1620 = sub nsw i32 %1619, 1
  %1621 = sext i32 %1620 to i64
  %1622 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 %1621
  %1623 = load double, ptr %1622, align 8, !tbaa !11
  %1624 = fneg double %1613
  %1625 = call double @llvm.fmuladd.f64(double %1624, double %1618, double %1623)
  store double %1625, ptr %1622, align 8, !tbaa !11
  %1626 = load i32, ptr %57, align 4, !tbaa !9
  %1627 = add nsw i32 %1626, 1
  store i32 %1627, ptr %59, align 4, !tbaa !9
  br label %1628

1628:                                             ; preds = %1658, %1588
  %1629 = load i32, ptr %59, align 4, !tbaa !9
  %1630 = icmp sle i32 %1629, 4
  br i1 %1630, label %1631, label %1661

1631:                                             ; preds = %1628
  %1632 = load i32, ptr %58, align 4, !tbaa !9
  %1633 = load i32, ptr %57, align 4, !tbaa !9
  %1634 = shl i32 %1633, 2
  %1635 = add nsw i32 %1632, %1634
  %1636 = sub nsw i32 %1635, 5
  %1637 = sext i32 %1636 to i64
  %1638 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1637
  %1639 = load double, ptr %1638, align 8, !tbaa !11
  %1640 = load i32, ptr %57, align 4, !tbaa !9
  %1641 = load i32, ptr %59, align 4, !tbaa !9
  %1642 = shl i32 %1641, 2
  %1643 = add nsw i32 %1640, %1642
  %1644 = sub nsw i32 %1643, 5
  %1645 = sext i32 %1644 to i64
  %1646 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1645
  %1647 = load double, ptr %1646, align 8, !tbaa !11
  %1648 = load i32, ptr %58, align 4, !tbaa !9
  %1649 = load i32, ptr %59, align 4, !tbaa !9
  %1650 = shl i32 %1649, 2
  %1651 = add nsw i32 %1648, %1650
  %1652 = sub nsw i32 %1651, 5
  %1653 = sext i32 %1652 to i64
  %1654 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1653
  %1655 = load double, ptr %1654, align 8, !tbaa !11
  %1656 = fneg double %1639
  %1657 = call double @llvm.fmuladd.f64(double %1656, double %1647, double %1655)
  store double %1657, ptr %1654, align 8, !tbaa !11
  br label %1658

1658:                                             ; preds = %1631
  %1659 = load i32, ptr %59, align 4, !tbaa !9
  %1660 = add nsw i32 %1659, 1
  store i32 %1660, ptr %59, align 4, !tbaa !9
  br label %1628, !llvm.loop !16

1661:                                             ; preds = %1628
  br label %1662

1662:                                             ; preds = %1661
  %1663 = load i32, ptr %58, align 4, !tbaa !9
  %1664 = add nsw i32 %1663, 1
  store i32 %1664, ptr %58, align 4, !tbaa !9
  br label %1585, !llvm.loop !17

1665:                                             ; preds = %1585
  br label %1666

1666:                                             ; preds = %1665
  %1667 = load i32, ptr %57, align 4, !tbaa !9
  %1668 = add nsw i32 %1667, 1
  store i32 %1668, ptr %57, align 4, !tbaa !9
  br label %1439, !llvm.loop !18

1669:                                             ; preds = %1439
  %1670 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 15
  %1671 = load double, ptr %1670, align 8, !tbaa !11
  %1672 = fcmp oge double %1671, 0.000000e+00
  br i1 %1672, label %1673, label %1676

1673:                                             ; preds = %1669
  %1674 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 15
  %1675 = load double, ptr %1674, align 8, !tbaa !11
  br label %1680

1676:                                             ; preds = %1669
  %1677 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 15
  %1678 = load double, ptr %1677, align 8, !tbaa !11
  %1679 = fneg double %1678
  br label %1680

1680:                                             ; preds = %1676, %1673
  %1681 = phi double [ %1675, %1673 ], [ %1679, %1676 ]
  %1682 = load double, ptr %50, align 8, !tbaa !11
  %1683 = fcmp olt double %1681, %1682
  br i1 %1683, label %1684, label %1688

1684:                                             ; preds = %1680
  %1685 = load ptr, ptr %32, align 8, !tbaa !5
  store i32 1, ptr %1685, align 4, !tbaa !9
  %1686 = load double, ptr %50, align 8, !tbaa !11
  %1687 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 15
  store double %1686, ptr %1687, align 8, !tbaa !11
  br label %1688

1688:                                             ; preds = %1684, %1680
  %1689 = load ptr, ptr %28, align 8, !tbaa !5
  store double 1.000000e+00, ptr %1689, align 8, !tbaa !11
  %1690 = load double, ptr %70, align 8, !tbaa !11
  %1691 = fmul double %1690, 8.000000e+00
  %1692 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1693 = load double, ptr %1692, align 16, !tbaa !11
  %1694 = fcmp oge double %1693, 0.000000e+00
  br i1 %1694, label %1695, label %1698

1695:                                             ; preds = %1688
  %1696 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1697 = load double, ptr %1696, align 16, !tbaa !11
  br label %1702

1698:                                             ; preds = %1688
  %1699 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1700 = load double, ptr %1699, align 16, !tbaa !11
  %1701 = fneg double %1700
  br label %1702

1702:                                             ; preds = %1698, %1695
  %1703 = phi double [ %1697, %1695 ], [ %1701, %1698 ]
  %1704 = fmul double %1691, %1703
  %1705 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 0
  %1706 = load double, ptr %1705, align 16, !tbaa !11
  %1707 = fcmp oge double %1706, 0.000000e+00
  br i1 %1707, label %1708, label %1711

1708:                                             ; preds = %1702
  %1709 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 0
  %1710 = load double, ptr %1709, align 16, !tbaa !11
  br label %1715

1711:                                             ; preds = %1702
  %1712 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 0
  %1713 = load double, ptr %1712, align 16, !tbaa !11
  %1714 = fneg double %1713
  br label %1715

1715:                                             ; preds = %1711, %1708
  %1716 = phi double [ %1710, %1708 ], [ %1714, %1711 ]
  %1717 = fcmp ogt double %1704, %1716
  br i1 %1717, label %1805, label %1718

1718:                                             ; preds = %1715
  %1719 = load double, ptr %70, align 8, !tbaa !11
  %1720 = fmul double %1719, 8.000000e+00
  %1721 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %1722 = load double, ptr %1721, align 8, !tbaa !11
  %1723 = fcmp oge double %1722, 0.000000e+00
  br i1 %1723, label %1724, label %1727

1724:                                             ; preds = %1718
  %1725 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %1726 = load double, ptr %1725, align 8, !tbaa !11
  br label %1731

1727:                                             ; preds = %1718
  %1728 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %1729 = load double, ptr %1728, align 8, !tbaa !11
  %1730 = fneg double %1729
  br label %1731

1731:                                             ; preds = %1727, %1724
  %1732 = phi double [ %1726, %1724 ], [ %1730, %1727 ]
  %1733 = fmul double %1720, %1732
  %1734 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 5
  %1735 = load double, ptr %1734, align 8, !tbaa !11
  %1736 = fcmp oge double %1735, 0.000000e+00
  br i1 %1736, label %1737, label %1740

1737:                                             ; preds = %1731
  %1738 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 5
  %1739 = load double, ptr %1738, align 8, !tbaa !11
  br label %1744

1740:                                             ; preds = %1731
  %1741 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 5
  %1742 = load double, ptr %1741, align 8, !tbaa !11
  %1743 = fneg double %1742
  br label %1744

1744:                                             ; preds = %1740, %1737
  %1745 = phi double [ %1739, %1737 ], [ %1743, %1740 ]
  %1746 = fcmp ogt double %1733, %1745
  br i1 %1746, label %1805, label %1747

1747:                                             ; preds = %1744
  %1748 = load double, ptr %70, align 8, !tbaa !11
  %1749 = fmul double %1748, 8.000000e+00
  %1750 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 2
  %1751 = load double, ptr %1750, align 16, !tbaa !11
  %1752 = fcmp oge double %1751, 0.000000e+00
  br i1 %1752, label %1753, label %1756

1753:                                             ; preds = %1747
  %1754 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 2
  %1755 = load double, ptr %1754, align 16, !tbaa !11
  br label %1760

1756:                                             ; preds = %1747
  %1757 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 2
  %1758 = load double, ptr %1757, align 16, !tbaa !11
  %1759 = fneg double %1758
  br label %1760

1760:                                             ; preds = %1756, %1753
  %1761 = phi double [ %1755, %1753 ], [ %1759, %1756 ]
  %1762 = fmul double %1749, %1761
  %1763 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 10
  %1764 = load double, ptr %1763, align 16, !tbaa !11
  %1765 = fcmp oge double %1764, 0.000000e+00
  br i1 %1765, label %1766, label %1769

1766:                                             ; preds = %1760
  %1767 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 10
  %1768 = load double, ptr %1767, align 16, !tbaa !11
  br label %1773

1769:                                             ; preds = %1760
  %1770 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 10
  %1771 = load double, ptr %1770, align 16, !tbaa !11
  %1772 = fneg double %1771
  br label %1773

1773:                                             ; preds = %1769, %1766
  %1774 = phi double [ %1768, %1766 ], [ %1772, %1769 ]
  %1775 = fcmp ogt double %1762, %1774
  br i1 %1775, label %1805, label %1776

1776:                                             ; preds = %1773
  %1777 = load double, ptr %70, align 8, !tbaa !11
  %1778 = fmul double %1777, 8.000000e+00
  %1779 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 3
  %1780 = load double, ptr %1779, align 8, !tbaa !11
  %1781 = fcmp oge double %1780, 0.000000e+00
  br i1 %1781, label %1782, label %1785

1782:                                             ; preds = %1776
  %1783 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 3
  %1784 = load double, ptr %1783, align 8, !tbaa !11
  br label %1789

1785:                                             ; preds = %1776
  %1786 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 3
  %1787 = load double, ptr %1786, align 8, !tbaa !11
  %1788 = fneg double %1787
  br label %1789

1789:                                             ; preds = %1785, %1782
  %1790 = phi double [ %1784, %1782 ], [ %1788, %1785 ]
  %1791 = fmul double %1778, %1790
  %1792 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 15
  %1793 = load double, ptr %1792, align 8, !tbaa !11
  %1794 = fcmp oge double %1793, 0.000000e+00
  br i1 %1794, label %1795, label %1798

1795:                                             ; preds = %1789
  %1796 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 15
  %1797 = load double, ptr %1796, align 8, !tbaa !11
  br label %1802

1798:                                             ; preds = %1789
  %1799 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 15
  %1800 = load double, ptr %1799, align 8, !tbaa !11
  %1801 = fneg double %1800
  br label %1802

1802:                                             ; preds = %1798, %1795
  %1803 = phi double [ %1797, %1795 ], [ %1801, %1798 ]
  %1804 = fcmp ogt double %1791, %1803
  br i1 %1804, label %1805, label %1903

1805:                                             ; preds = %1802, %1773, %1744, %1715
  %1806 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1807 = load double, ptr %1806, align 16, !tbaa !11
  %1808 = fcmp oge double %1807, 0.000000e+00
  br i1 %1808, label %1809, label %1812

1809:                                             ; preds = %1805
  %1810 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1811 = load double, ptr %1810, align 16, !tbaa !11
  br label %1816

1812:                                             ; preds = %1805
  %1813 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1814 = load double, ptr %1813, align 16, !tbaa !11
  %1815 = fneg double %1814
  br label %1816

1816:                                             ; preds = %1812, %1809
  %1817 = phi double [ %1811, %1809 ], [ %1815, %1812 ]
  store double %1817, ptr %41, align 8, !tbaa !11
  %1818 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %1819 = load double, ptr %1818, align 8, !tbaa !11
  %1820 = fcmp oge double %1819, 0.000000e+00
  br i1 %1820, label %1821, label %1824

1821:                                             ; preds = %1816
  %1822 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %1823 = load double, ptr %1822, align 8, !tbaa !11
  br label %1828

1824:                                             ; preds = %1816
  %1825 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %1826 = load double, ptr %1825, align 8, !tbaa !11
  %1827 = fneg double %1826
  br label %1828

1828:                                             ; preds = %1824, %1821
  %1829 = phi double [ %1823, %1821 ], [ %1827, %1824 ]
  store double %1829, ptr %42, align 8, !tbaa !11
  %1830 = load double, ptr %41, align 8, !tbaa !11
  %1831 = load double, ptr %42, align 8, !tbaa !11
  %1832 = fcmp oge double %1830, %1831
  br i1 %1832, label %1833, label %1835

1833:                                             ; preds = %1828
  %1834 = load double, ptr %41, align 8, !tbaa !11
  br label %1837

1835:                                             ; preds = %1828
  %1836 = load double, ptr %42, align 8, !tbaa !11
  br label %1837

1837:                                             ; preds = %1835, %1833
  %1838 = phi double [ %1834, %1833 ], [ %1836, %1835 ]
  store double %1838, ptr %41, align 8, !tbaa !11
  %1839 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 2
  %1840 = load double, ptr %1839, align 16, !tbaa !11
  %1841 = fcmp oge double %1840, 0.000000e+00
  br i1 %1841, label %1842, label %1845

1842:                                             ; preds = %1837
  %1843 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 2
  %1844 = load double, ptr %1843, align 16, !tbaa !11
  br label %1849

1845:                                             ; preds = %1837
  %1846 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 2
  %1847 = load double, ptr %1846, align 16, !tbaa !11
  %1848 = fneg double %1847
  br label %1849

1849:                                             ; preds = %1845, %1842
  %1850 = phi double [ %1844, %1842 ], [ %1848, %1845 ]
  store double %1850, ptr %42, align 8, !tbaa !11
  %1851 = load double, ptr %41, align 8, !tbaa !11
  %1852 = load double, ptr %42, align 8, !tbaa !11
  %1853 = fcmp oge double %1851, %1852
  br i1 %1853, label %1854, label %1856

1854:                                             ; preds = %1849
  %1855 = load double, ptr %41, align 8, !tbaa !11
  br label %1858

1856:                                             ; preds = %1849
  %1857 = load double, ptr %42, align 8, !tbaa !11
  br label %1858

1858:                                             ; preds = %1856, %1854
  %1859 = phi double [ %1855, %1854 ], [ %1857, %1856 ]
  store double %1859, ptr %41, align 8, !tbaa !11
  %1860 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 3
  %1861 = load double, ptr %1860, align 8, !tbaa !11
  %1862 = fcmp oge double %1861, 0.000000e+00
  br i1 %1862, label %1863, label %1866

1863:                                             ; preds = %1858
  %1864 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 3
  %1865 = load double, ptr %1864, align 8, !tbaa !11
  br label %1870

1866:                                             ; preds = %1858
  %1867 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 3
  %1868 = load double, ptr %1867, align 8, !tbaa !11
  %1869 = fneg double %1868
  br label %1870

1870:                                             ; preds = %1866, %1863
  %1871 = phi double [ %1865, %1863 ], [ %1869, %1866 ]
  store double %1871, ptr %42, align 8, !tbaa !11
  %1872 = load double, ptr %41, align 8, !tbaa !11
  %1873 = load double, ptr %42, align 8, !tbaa !11
  %1874 = fcmp oge double %1872, %1873
  br i1 %1874, label %1875, label %1877

1875:                                             ; preds = %1870
  %1876 = load double, ptr %41, align 8, !tbaa !11
  br label %1879

1877:                                             ; preds = %1870
  %1878 = load double, ptr %42, align 8, !tbaa !11
  br label %1879

1879:                                             ; preds = %1877, %1875
  %1880 = phi double [ %1876, %1875 ], [ %1878, %1877 ]
  %1881 = fdiv double 1.250000e-01, %1880
  %1882 = load ptr, ptr %28, align 8, !tbaa !5
  store double %1881, ptr %1882, align 8, !tbaa !11
  %1883 = load ptr, ptr %28, align 8, !tbaa !5
  %1884 = load double, ptr %1883, align 8, !tbaa !11
  %1885 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 0
  %1886 = load double, ptr %1885, align 16, !tbaa !11
  %1887 = fmul double %1886, %1884
  store double %1887, ptr %1885, align 16, !tbaa !11
  %1888 = load ptr, ptr %28, align 8, !tbaa !5
  %1889 = load double, ptr %1888, align 8, !tbaa !11
  %1890 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 1
  %1891 = load double, ptr %1890, align 8, !tbaa !11
  %1892 = fmul double %1891, %1889
  store double %1892, ptr %1890, align 8, !tbaa !11
  %1893 = load ptr, ptr %28, align 8, !tbaa !5
  %1894 = load double, ptr %1893, align 8, !tbaa !11
  %1895 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 2
  %1896 = load double, ptr %1895, align 16, !tbaa !11
  %1897 = fmul double %1896, %1894
  store double %1897, ptr %1895, align 16, !tbaa !11
  %1898 = load ptr, ptr %28, align 8, !tbaa !5
  %1899 = load double, ptr %1898, align 8, !tbaa !11
  %1900 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 3
  %1901 = load double, ptr %1900, align 8, !tbaa !11
  %1902 = fmul double %1901, %1899
  store double %1902, ptr %1900, align 8, !tbaa !11
  br label %1903

1903:                                             ; preds = %1879, %1802
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %1904

1904:                                             ; preds = %1962, %1903
  %1905 = load i32, ptr %57, align 4, !tbaa !9
  %1906 = icmp sle i32 %1905, 4
  br i1 %1906, label %1907, label %1965

1907:                                             ; preds = %1904
  %1908 = load i32, ptr %57, align 4, !tbaa !9
  %1909 = sub nsw i32 5, %1908
  store i32 %1909, ptr %59, align 4, !tbaa !9
  %1910 = load i32, ptr %59, align 4, !tbaa !9
  %1911 = load i32, ptr %59, align 4, !tbaa !9
  %1912 = shl i32 %1911, 2
  %1913 = add nsw i32 %1910, %1912
  %1914 = sub nsw i32 %1913, 5
  %1915 = sext i32 %1914 to i64
  %1916 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1915
  %1917 = load double, ptr %1916, align 8, !tbaa !11
  %1918 = fdiv double 1.000000e+00, %1917
  store double %1918, ptr %52, align 8, !tbaa !11
  %1919 = load i32, ptr %59, align 4, !tbaa !9
  %1920 = sub nsw i32 %1919, 1
  %1921 = sext i32 %1920 to i64
  %1922 = getelementptr inbounds [4 x double], ptr %49, i64 0, i64 %1921
  %1923 = load double, ptr %1922, align 8, !tbaa !11
  %1924 = load double, ptr %52, align 8, !tbaa !11
  %1925 = fmul double %1923, %1924
  %1926 = load i32, ptr %59, align 4, !tbaa !9
  %1927 = sub nsw i32 %1926, 1
  %1928 = sext i32 %1927 to i64
  %1929 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %1928
  store double %1925, ptr %1929, align 8, !tbaa !11
  %1930 = load i32, ptr %59, align 4, !tbaa !9
  %1931 = add nsw i32 %1930, 1
  store i32 %1931, ptr %58, align 4, !tbaa !9
  br label %1932

1932:                                             ; preds = %1958, %1907
  %1933 = load i32, ptr %58, align 4, !tbaa !9
  %1934 = icmp sle i32 %1933, 4
  br i1 %1934, label %1935, label %1961

1935:                                             ; preds = %1932
  %1936 = load double, ptr %52, align 8, !tbaa !11
  %1937 = load i32, ptr %59, align 4, !tbaa !9
  %1938 = load i32, ptr %58, align 4, !tbaa !9
  %1939 = shl i32 %1938, 2
  %1940 = add nsw i32 %1937, %1939
  %1941 = sub nsw i32 %1940, 5
  %1942 = sext i32 %1941 to i64
  %1943 = getelementptr inbounds [16 x double], ptr %69, i64 0, i64 %1942
  %1944 = load double, ptr %1943, align 8, !tbaa !11
  %1945 = fmul double %1936, %1944
  %1946 = load i32, ptr %58, align 4, !tbaa !9
  %1947 = sub nsw i32 %1946, 1
  %1948 = sext i32 %1947 to i64
  %1949 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %1948
  %1950 = load double, ptr %1949, align 8, !tbaa !11
  %1951 = load i32, ptr %59, align 4, !tbaa !9
  %1952 = sub nsw i32 %1951, 1
  %1953 = sext i32 %1952 to i64
  %1954 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %1953
  %1955 = load double, ptr %1954, align 8, !tbaa !11
  %1956 = fneg double %1945
  %1957 = call double @llvm.fmuladd.f64(double %1956, double %1950, double %1955)
  store double %1957, ptr %1954, align 8, !tbaa !11
  br label %1958

1958:                                             ; preds = %1935
  %1959 = load i32, ptr %58, align 4, !tbaa !9
  %1960 = add nsw i32 %1959, 1
  store i32 %1960, ptr %58, align 4, !tbaa !9
  br label %1932, !llvm.loop !19

1961:                                             ; preds = %1932
  br label %1962

1962:                                             ; preds = %1961
  %1963 = load i32, ptr %57, align 4, !tbaa !9
  %1964 = add nsw i32 %1963, 1
  store i32 %1964, ptr %57, align 4, !tbaa !9
  br label %1904, !llvm.loop !20

1965:                                             ; preds = %1904
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %1966

1966:                                             ; preds = %2012, %1965
  %1967 = load i32, ptr %57, align 4, !tbaa !9
  %1968 = icmp sle i32 %1967, 3
  br i1 %1968, label %1969, label %2015

1969:                                             ; preds = %1966
  %1970 = load i32, ptr %57, align 4, !tbaa !9
  %1971 = sub nsw i32 4, %1970
  %1972 = sub nsw i32 %1971, 1
  %1973 = sext i32 %1972 to i64
  %1974 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 %1973
  %1975 = load i32, ptr %1974, align 4, !tbaa !9
  %1976 = load i32, ptr %57, align 4, !tbaa !9
  %1977 = sub nsw i32 4, %1976
  %1978 = icmp ne i32 %1975, %1977
  br i1 %1978, label %1979, label %2011

1979:                                             ; preds = %1969
  %1980 = load i32, ptr %57, align 4, !tbaa !9
  %1981 = sub nsw i32 4, %1980
  %1982 = sub nsw i32 %1981, 1
  %1983 = sext i32 %1982 to i64
  %1984 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %1983
  %1985 = load double, ptr %1984, align 8, !tbaa !11
  store double %1985, ptr %52, align 8, !tbaa !11
  %1986 = load i32, ptr %57, align 4, !tbaa !9
  %1987 = sub nsw i32 4, %1986
  %1988 = sub nsw i32 %1987, 1
  %1989 = sext i32 %1988 to i64
  %1990 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 %1989
  %1991 = load i32, ptr %1990, align 4, !tbaa !9
  %1992 = sub nsw i32 %1991, 1
  %1993 = sext i32 %1992 to i64
  %1994 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %1993
  %1995 = load double, ptr %1994, align 8, !tbaa !11
  %1996 = load i32, ptr %57, align 4, !tbaa !9
  %1997 = sub nsw i32 4, %1996
  %1998 = sub nsw i32 %1997, 1
  %1999 = sext i32 %1998 to i64
  %2000 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %1999
  store double %1995, ptr %2000, align 8, !tbaa !11
  %2001 = load double, ptr %52, align 8, !tbaa !11
  %2002 = load i32, ptr %57, align 4, !tbaa !9
  %2003 = sub nsw i32 4, %2002
  %2004 = sub nsw i32 %2003, 1
  %2005 = sext i32 %2004 to i64
  %2006 = getelementptr inbounds [4 x i32], ptr %53, i64 0, i64 %2005
  %2007 = load i32, ptr %2006, align 4, !tbaa !9
  %2008 = sub nsw i32 %2007, 1
  %2009 = sext i32 %2008 to i64
  %2010 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 %2009
  store double %2001, ptr %2010, align 8, !tbaa !11
  br label %2011

2011:                                             ; preds = %1979, %1969
  br label %2012

2012:                                             ; preds = %2011
  %2013 = load i32, ptr %57, align 4, !tbaa !9
  %2014 = add nsw i32 %2013, 1
  store i32 %2014, ptr %57, align 4, !tbaa !9
  br label %1966, !llvm.loop !21

2015:                                             ; preds = %1966
  %2016 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  %2017 = load double, ptr %2016, align 16, !tbaa !11
  %2018 = load ptr, ptr %29, align 8, !tbaa !5
  %2019 = load i32, ptr %39, align 4, !tbaa !9
  %2020 = add nsw i32 %2019, 1
  %2021 = sext i32 %2020 to i64
  %2022 = getelementptr inbounds double, ptr %2018, i64 %2021
  store double %2017, ptr %2022, align 8, !tbaa !11
  %2023 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  %2024 = load double, ptr %2023, align 8, !tbaa !11
  %2025 = load ptr, ptr %29, align 8, !tbaa !5
  %2026 = load i32, ptr %39, align 4, !tbaa !9
  %2027 = add nsw i32 %2026, 2
  %2028 = sext i32 %2027 to i64
  %2029 = getelementptr inbounds double, ptr %2025, i64 %2028
  store double %2024, ptr %2029, align 8, !tbaa !11
  %2030 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  %2031 = load double, ptr %2030, align 16, !tbaa !11
  %2032 = load ptr, ptr %29, align 8, !tbaa !5
  %2033 = load i32, ptr %39, align 4, !tbaa !9
  %2034 = shl i32 %2033, 1
  %2035 = add nsw i32 %2034, 1
  %2036 = sext i32 %2035 to i64
  %2037 = getelementptr inbounds double, ptr %2032, i64 %2036
  store double %2031, ptr %2037, align 8, !tbaa !11
  %2038 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 3
  %2039 = load double, ptr %2038, align 8, !tbaa !11
  %2040 = load ptr, ptr %29, align 8, !tbaa !5
  %2041 = load i32, ptr %39, align 4, !tbaa !9
  %2042 = shl i32 %2041, 1
  %2043 = add nsw i32 %2042, 2
  %2044 = sext i32 %2043 to i64
  %2045 = getelementptr inbounds double, ptr %2040, i64 %2044
  store double %2039, ptr %2045, align 8, !tbaa !11
  %2046 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  %2047 = load double, ptr %2046, align 16, !tbaa !11
  %2048 = fcmp oge double %2047, 0.000000e+00
  br i1 %2048, label %2049, label %2052

2049:                                             ; preds = %2015
  %2050 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  %2051 = load double, ptr %2050, align 16, !tbaa !11
  br label %2056

2052:                                             ; preds = %2015
  %2053 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 0
  %2054 = load double, ptr %2053, align 16, !tbaa !11
  %2055 = fneg double %2054
  br label %2056

2056:                                             ; preds = %2052, %2049
  %2057 = phi double [ %2051, %2049 ], [ %2055, %2052 ]
  %2058 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  %2059 = load double, ptr %2058, align 16, !tbaa !11
  %2060 = fcmp oge double %2059, 0.000000e+00
  br i1 %2060, label %2061, label %2064

2061:                                             ; preds = %2056
  %2062 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  %2063 = load double, ptr %2062, align 16, !tbaa !11
  br label %2068

2064:                                             ; preds = %2056
  %2065 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 2
  %2066 = load double, ptr %2065, align 16, !tbaa !11
  %2067 = fneg double %2066
  br label %2068

2068:                                             ; preds = %2064, %2061
  %2069 = phi double [ %2063, %2061 ], [ %2067, %2064 ]
  %2070 = fadd double %2057, %2069
  store double %2070, ptr %41, align 8, !tbaa !11
  %2071 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  %2072 = load double, ptr %2071, align 8, !tbaa !11
  %2073 = fcmp oge double %2072, 0.000000e+00
  br i1 %2073, label %2074, label %2077

2074:                                             ; preds = %2068
  %2075 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  %2076 = load double, ptr %2075, align 8, !tbaa !11
  br label %2081

2077:                                             ; preds = %2068
  %2078 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 1
  %2079 = load double, ptr %2078, align 8, !tbaa !11
  %2080 = fneg double %2079
  br label %2081

2081:                                             ; preds = %2077, %2074
  %2082 = phi double [ %2076, %2074 ], [ %2080, %2077 ]
  %2083 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 3
  %2084 = load double, ptr %2083, align 8, !tbaa !11
  %2085 = fcmp oge double %2084, 0.000000e+00
  br i1 %2085, label %2086, label %2089

2086:                                             ; preds = %2081
  %2087 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 3
  %2088 = load double, ptr %2087, align 8, !tbaa !11
  br label %2093

2089:                                             ; preds = %2081
  %2090 = getelementptr inbounds [4 x double], ptr %75, i64 0, i64 3
  %2091 = load double, ptr %2090, align 8, !tbaa !11
  %2092 = fneg double %2091
  br label %2093

2093:                                             ; preds = %2089, %2086
  %2094 = phi double [ %2088, %2086 ], [ %2092, %2089 ]
  %2095 = fadd double %2082, %2094
  store double %2095, ptr %42, align 8, !tbaa !11
  %2096 = load double, ptr %41, align 8, !tbaa !11
  %2097 = load double, ptr %42, align 8, !tbaa !11
  %2098 = fcmp oge double %2096, %2097
  br i1 %2098, label %2099, label %2101

2099:                                             ; preds = %2093
  %2100 = load double, ptr %41, align 8, !tbaa !11
  br label %2103

2101:                                             ; preds = %2093
  %2102 = load double, ptr %42, align 8, !tbaa !11
  br label %2103

2103:                                             ; preds = %2101, %2099
  %2104 = phi double [ %2100, %2099 ], [ %2102, %2101 ]
  %2105 = load ptr, ptr %31, align 8, !tbaa !5
  store double %2104, ptr %2105, align 8, !tbaa !11
  store i32 1, ptr %77, align 4
  br label %2106

2106:                                             ; preds = %2103, %992, %237, %126
  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 8, 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 128, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 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 16, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 32, 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 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #4
  ret void
}

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"double", !7, i64 0}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}


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

@dlasy2_.locu12 = external hidden local_unnamed_addr global [4 x i32], align 16
@dlasy2_.locl21 = external hidden local_unnamed_addr global [4 x i32], align 16
@dlasy2_.locu22 = external hidden local_unnamed_addr global [4 x i32], align 16
@dlasy2_.xswpiv = external hidden local_unnamed_addr global [4 x i32], align 16
@dlasy2_.bswpiv = external hidden local_unnamed_addr global [4 x i32], align 16
@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c__4 = external hidden global i32, align 4
@c__1 = external hidden global i32, align 4
@c__16 = external hidden global i32, align 4
@c__0 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @dlasy2_(ptr nocapture noundef readonly %0, ptr nocapture noundef readonly %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr nocapture noundef readonly %4, ptr nocapture noundef readonly %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr nocapture noundef readonly %8, ptr nocapture noundef readonly %9, ptr nocapture noundef readonly %10, ptr nocapture noundef writeonly %11, ptr nocapture noundef %12, ptr nocapture noundef readonly %13, ptr nocapture noundef writeonly %14, ptr nocapture noundef writeonly %15) local_unnamed_addr #0 {
  %17 = alloca [4 x double], align 16
  %18 = alloca [4 x i32], align 16
  %19 = alloca [16 x double], align 16
  %20 = alloca [4 x double], align 16
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #4
  %21 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %21, -1
  %22 = sext i32 %narrow to i64
  %23 = getelementptr inbounds double, ptr %5, i64 %22
  %24 = load i32, ptr %8, align 4, !tbaa !5
  %narrow595 = xor i32 %24, -1
  %25 = sext i32 %narrow595 to i64
  %26 = getelementptr inbounds double, ptr %7, i64 %25
  %27 = load i32, ptr %10, align 4, !tbaa !5
  %narrow596 = xor i32 %27, -1
  %28 = sext i32 %narrow596 to i64
  %29 = getelementptr inbounds double, ptr %9, i64 %28
  %30 = load i32, ptr %13, align 4, !tbaa !5
  %narrow597 = xor i32 %30, -1
  %31 = sext i32 %narrow597 to i64
  %32 = getelementptr inbounds double, ptr %12, i64 %31
  store i32 0, ptr %15, align 4, !tbaa !5
  %33 = load i32, ptr %3, align 4, !tbaa !5
  %34 = icmp eq i32 %33, 0
  br i1 %34, label %891, label %35

35:                                               ; preds = %16
  %36 = load i32, ptr %4, align 4, !tbaa !5
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %891, label %38

38:                                               ; preds = %35
  %39 = tail call double @dlamch_(ptr noundef nonnull @.str) #4
  %40 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #4
  %41 = fdiv double %40, %39
  %42 = load i32, ptr %2, align 4, !tbaa !5
  %43 = sitofp i32 %42 to double
  %44 = load i32, ptr %3, align 4, !tbaa !5
  %45 = shl nsw i32 %44, 1
  %46 = load i32, ptr %4, align 4, !tbaa !5
  %47 = add nsw i32 %45, %46
  switch i32 %47, label %48 [
    i32 6, label %300
    i32 4, label %74
    i32 5, label %127
  ]

48:                                               ; preds = %38
  %49 = load double, ptr %5, align 8, !tbaa !9
  %50 = load double, ptr %7, align 8, !tbaa !9
  %51 = tail call double @llvm.fmuladd.f64(double %43, double %50, double %49)
  %52 = fcmp oge double %51, 0.000000e+00
  %53 = fneg double %51
  %54 = select i1 %52, double %51, double %53
  %55 = fcmp ugt double %54, %41
  br i1 %55, label %57, label %56

56:                                               ; preds = %48
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %57

57:                                               ; preds = %56, %48
  %.0561 = phi double [ %41, %56 ], [ %54, %48 ]
  %.0 = phi double [ %41, %56 ], [ %51, %48 ]
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %58 = load double, ptr %9, align 8, !tbaa !9
  %59 = fcmp oge double %58, 0.000000e+00
  %60 = fneg double %58
  %61 = select i1 %59, double %58, double %60
  %62 = fmul double %41, %61
  %63 = fcmp ogt double %62, %.0561
  br i1 %63, label %64, label %66

64:                                               ; preds = %57
  %65 = fdiv double 1.000000e+00, %61
  store double %65, ptr %11, align 8, !tbaa !9
  %.pre672 = load double, ptr %9, align 8, !tbaa !9
  br label %66

66:                                               ; preds = %64, %57
  %67 = phi double [ %65, %64 ], [ 1.000000e+00, %57 ]
  %68 = phi double [ %.pre672, %64 ], [ %58, %57 ]
  %69 = fmul double %68, %67
  %70 = fdiv double %69, %.0
  store double %70, ptr %12, align 8, !tbaa !9
  %71 = fcmp oge double %70, 0.000000e+00
  %72 = fneg double %70
  %73 = select i1 %71, double %70, double %72
  br label %.sink.split

74:                                               ; preds = %38
  %75 = load double, ptr %5, align 8, !tbaa !9
  %76 = fcmp oge double %75, 0.000000e+00
  %77 = fneg double %75
  %78 = select i1 %76, double %75, double %77
  %79 = load double, ptr %7, align 8, !tbaa !9
  %80 = fcmp oge double %79, 0.000000e+00
  %81 = fneg double %79
  %82 = select i1 %80, double %79, double %81
  %83 = fcmp oge double %78, %82
  %84 = select i1 %83, double %78, double %82
  %85 = shl i32 %24, 1
  %86 = or disjoint i32 %85, 1
  %87 = sext i32 %86 to i64
  %88 = getelementptr inbounds double, ptr %26, i64 %87
  %89 = load double, ptr %88, align 8, !tbaa !9
  %90 = fcmp oge double %89, 0.000000e+00
  %91 = fneg double %89
  %92 = select i1 %90, double %89, double %91
  %93 = fcmp oge double %84, %92
  %94 = select i1 %93, double %84, double %92
  %95 = sext i32 %24 to i64
  %96 = getelementptr double, ptr %26, i64 %95
  %97 = getelementptr i8, ptr %96, i64 16
  %98 = load double, ptr %97, align 8, !tbaa !9
  %99 = fcmp oge double %98, 0.000000e+00
  %100 = fneg double %98
  %101 = select i1 %99, double %98, double %100
  %102 = fcmp oge double %94, %101
  %103 = select i1 %102, double %94, double %101
  %104 = sext i32 %85 to i64
  %105 = getelementptr double, ptr %26, i64 %104
  %106 = getelementptr i8, ptr %105, i64 16
  %107 = load double, ptr %106, align 8, !tbaa !9
  %108 = fcmp oge double %107, 0.000000e+00
  %109 = fneg double %107
  %110 = select i1 %108, double %107, double %109
  %111 = fcmp oge double %103, %110
  %112 = select i1 %111, double %103, double %110
  %113 = fmul double %39, %112
  %114 = fcmp oge double %113, %41
  %115 = select i1 %114, double %113, double %41
  %116 = tail call double @llvm.fmuladd.f64(double %43, double %79, double %75)
  store double %116, ptr %20, align 16, !tbaa !9
  %117 = tail call double @llvm.fmuladd.f64(double %43, double %107, double %75)
  %118 = getelementptr inbounds i8, ptr %20, i64 24
  store double %117, ptr %118, align 8, !tbaa !9
  %119 = load i32, ptr %1, align 4, !tbaa !5
  %.not587 = icmp eq i32 %119, 0
  %.pn = select i1 %.not587, double %89, double %98
  %.pn680 = select i1 %.not587, double %98, double %89
  %.sink = fmul double %.pn680, %43
  %.sink658 = fmul double %.pn, %43
  %120 = getelementptr inbounds i8, ptr %20, i64 8
  store double %.sink658, ptr %120, align 8
  %121 = getelementptr inbounds i8, ptr %20, i64 16
  store double %.sink, ptr %121, align 16
  %122 = load double, ptr %9, align 8, !tbaa !9
  store double %122, ptr %17, align 16, !tbaa !9
  %123 = shl i32 %27, 1
  %124 = or disjoint i32 %123, 1
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %29, i64 %125
  br label %179

127:                                              ; preds = %38
  %128 = load double, ptr %7, align 8, !tbaa !9
  %129 = fcmp oge double %128, 0.000000e+00
  %130 = fneg double %128
  %131 = select i1 %129, double %128, double %130
  %132 = load double, ptr %5, align 8, !tbaa !9
  %133 = fcmp oge double %132, 0.000000e+00
  %134 = fneg double %132
  %135 = select i1 %133, double %132, double %134
  %136 = fcmp oge double %131, %135
  %137 = select i1 %136, double %131, double %135
  %138 = shl i32 %21, 1
  %139 = or disjoint i32 %138, 1
  %140 = sext i32 %139 to i64
  %141 = getelementptr inbounds double, ptr %23, i64 %140
  %142 = load double, ptr %141, align 8, !tbaa !9
  %143 = fcmp oge double %142, 0.000000e+00
  %144 = fneg double %142
  %145 = select i1 %143, double %142, double %144
  %146 = fcmp oge double %137, %145
  %147 = select i1 %146, double %137, double %145
  %148 = sext i32 %21 to i64
  %149 = getelementptr double, ptr %23, i64 %148
  %150 = getelementptr i8, ptr %149, i64 16
  %151 = load double, ptr %150, align 8, !tbaa !9
  %152 = fcmp oge double %151, 0.000000e+00
  %153 = fneg double %151
  %154 = select i1 %152, double %151, double %153
  %155 = fcmp oge double %147, %154
  %156 = select i1 %155, double %147, double %154
  %157 = sext i32 %138 to i64
  %158 = getelementptr double, ptr %23, i64 %157
  %159 = getelementptr i8, ptr %158, i64 16
  %160 = load double, ptr %159, 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 = fcmp oge double %156, %163
  %165 = select i1 %164, double %156, double %163
  %166 = fmul double %39, %165
  %167 = fcmp oge double %166, %41
  %168 = select i1 %167, double %166, double %41
  %169 = tail call double @llvm.fmuladd.f64(double %43, double %128, double %132)
  store double %169, ptr %20, align 16, !tbaa !9
  %170 = tail call double @llvm.fmuladd.f64(double %43, double %128, double %160)
  %171 = getelementptr inbounds i8, ptr %20, i64 24
  store double %170, ptr %171, align 8, !tbaa !9
  %172 = load i32, ptr %0, align 4, !tbaa !5
  %.not = icmp eq i32 %172, 0
  %.sink660 = select i1 %.not, double %151, double %142
  %.sink659 = select i1 %.not, double %142, double %151
  %173 = getelementptr inbounds i8, ptr %20, i64 8
  store double %.sink660, ptr %173, align 8
  %174 = getelementptr inbounds i8, ptr %20, i64 16
  store double %.sink659, ptr %174, align 16
  %175 = load double, ptr %9, align 8, !tbaa !9
  store double %175, ptr %17, align 16, !tbaa !9
  %176 = sext i32 %27 to i64
  %177 = getelementptr double, ptr %29, i64 %176
  %178 = getelementptr i8, ptr %177, i64 16
  br label %179

179:                                              ; preds = %127, %74
  %.sink685 = phi ptr [ %178, %127 ], [ %126, %74 ]
  %.0580 = phi double [ %168, %127 ], [ %115, %74 ]
  %180 = load double, ptr %.sink685, align 8, !tbaa !9
  %181 = getelementptr inbounds i8, ptr %17, i64 8
  store double %180, ptr %181, align 8, !tbaa !9
  %182 = call i32 @idamax_(ptr noundef nonnull @c__4, ptr noundef nonnull %20, ptr noundef nonnull @c__1) #4
  %183 = add nsw i32 %182, -1
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %184
  %186 = load double, ptr %185, align 8, !tbaa !9
  %187 = fcmp oge double %186, 0.000000e+00
  %188 = fneg double %186
  %189 = select i1 %187, double %186, double %188
  %190 = fcmp ugt double %189, %.0580
  br i1 %190, label %192, label %191

191:                                              ; preds = %179
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %192

192:                                              ; preds = %191, %179
  %.0565 = phi double [ %.0580, %191 ], [ %186, %179 ]
  %193 = getelementptr inbounds [4 x i32], ptr @dlasy2_.locu12, i64 0, i64 %184
  %194 = load i32, ptr %193, align 4, !tbaa !5
  %195 = add nsw i32 %194, -1
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %196
  %198 = load double, ptr %197, align 8, !tbaa !9
  %199 = getelementptr inbounds [4 x i32], ptr @dlasy2_.locl21, i64 0, i64 %184
  %200 = load i32, ptr %199, align 4, !tbaa !5
  %201 = add nsw i32 %200, -1
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !9
  %205 = fdiv double %204, %.0565
  %206 = getelementptr inbounds [4 x i32], ptr @dlasy2_.locu22, i64 0, i64 %184
  %207 = load i32, ptr %206, align 4, !tbaa !5
  %208 = add nsw i32 %207, -1
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %209
  %211 = load double, ptr %210, align 8, !tbaa !9
  %212 = fneg double %198
  %213 = call double @llvm.fmuladd.f64(double %212, double %205, double %211)
  %214 = getelementptr inbounds [4 x i32], ptr @dlasy2_.xswpiv, i64 0, i64 %184
  %215 = load i32, ptr %214, align 4, !tbaa !5
  %216 = getelementptr inbounds [4 x i32], ptr @dlasy2_.bswpiv, i64 0, i64 %184
  %217 = load i32, ptr %216, align 4, !tbaa !5
  %218 = fcmp oge double %213, 0.000000e+00
  %219 = fneg double %213
  %220 = select i1 %218, double %213, double %219
  %221 = fcmp ugt double %220, %.0580
  br i1 %221, label %223, label %222

222:                                              ; preds = %192
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %223

223:                                              ; preds = %222, %192
  %.0562 = phi double [ %.0580, %222 ], [ %213, %192 ]
  %.not588 = icmp eq i32 %217, 0
  %224 = fneg double %205
  br i1 %.not588, label %230, label %225

225:                                              ; preds = %223
  %226 = getelementptr inbounds i8, ptr %17, i64 8
  %227 = load double, ptr %226, align 8, !tbaa !9
  %228 = load double, ptr %17, align 16, !tbaa !9
  %229 = call double @llvm.fmuladd.f64(double %224, double %227, double %228)
  br label %235

230:                                              ; preds = %223
  %231 = load double, ptr %17, align 16
  %232 = getelementptr inbounds i8, ptr %17, i64 8
  %233 = load double, ptr %232, align 8, !tbaa !9
  %234 = call double @llvm.fmuladd.f64(double %224, double %231, double %233)
  br label %235

235:                                              ; preds = %230, %225
  %236 = phi double [ %231, %230 ], [ %227, %225 ]
  %237 = phi double [ %234, %230 ], [ %229, %225 ]
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %238 = fmul double %41, 2.000000e+00
  %239 = fcmp oge double %237, 0.000000e+00
  %240 = fneg double %237
  %241 = select i1 %239, double %237, double %240
  %242 = fmul double %238, %241
  %243 = fcmp oge double %.0562, 0.000000e+00
  %244 = fneg double %.0562
  %245 = select i1 %243, double %.0562, double %244
  %246 = fcmp ogt double %242, %245
  br i1 %246, label %._crit_edge674, label %247

._crit_edge674:                                   ; preds = %235
  %.pre678 = fneg double %236
  br label %256

247:                                              ; preds = %235
  %248 = fcmp oge double %236, 0.000000e+00
  %249 = fneg double %236
  %250 = select i1 %248, double %236, double %249
  %251 = fmul double %238, %250
  %252 = fcmp oge double %.0565, 0.000000e+00
  %253 = fneg double %.0565
  %254 = select i1 %252, double %.0565, double %253
  %255 = fcmp ogt double %251, %254
  br i1 %255, label %256, label %264

256:                                              ; preds = %._crit_edge674, %247
  %.pre-phi679 = phi double [ %.pre678, %._crit_edge674 ], [ %249, %247 ]
  %257 = fcmp oge double %236, 0.000000e+00
  %258 = select i1 %257, double %236, double %.pre-phi679
  %259 = fcmp oge double %258, %241
  %260 = select i1 %259, double %258, double %241
  %261 = fdiv double 5.000000e-01, %260
  store double %261, ptr %11, align 8, !tbaa !9
  %262 = fmul double %236, %261
  %263 = fmul double %237, %261
  br label %264

264:                                              ; preds = %256, %247
  %265 = phi double [ %262, %256 ], [ %236, %247 ]
  %266 = phi double [ %263, %256 ], [ %237, %247 ]
  %267 = fdiv double %266, %.0562
  %268 = fdiv double %265, %.0565
  %269 = fdiv double %212, %.0565
  %270 = call double @llvm.fmuladd.f64(double %269, double %267, double %268)
  %.not589 = icmp eq i32 %215, 0
  %.sroa.6.0 = select i1 %.not589, double %267, double %270
  %.sroa.0.0 = select i1 %.not589, double %270, double %267
  store double %.sroa.0.0, ptr %12, align 8, !tbaa !9
  %271 = load i32, ptr %3, align 4, !tbaa !5
  %272 = icmp eq i32 %271, 1
  br i1 %272, label %273, label %286

273:                                              ; preds = %264
  %274 = shl i32 %30, 1
  %275 = or disjoint i32 %274, 1
  %276 = sext i32 %275 to i64
  %277 = getelementptr inbounds double, ptr %32, i64 %276
  store double %.sroa.6.0, ptr %277, align 8, !tbaa !9
  %278 = load double, ptr %12, align 8, !tbaa !9
  %279 = insertelement <2 x double> poison, double %.sroa.6.0, i64 0
  %280 = insertelement <2 x double> %279, double %278, i64 1
  %281 = fcmp oge <2 x double> %280, zeroinitializer
  %282 = fneg <2 x double> %280
  %283 = select <2 x i1> %281, <2 x double> %280, <2 x double> %282
  %shift = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %284 = fadd <2 x double> %283, %shift
  %285 = extractelement <2 x double> %284, i64 0
  br label %.sink.split

286:                                              ; preds = %264
  %287 = sext i32 %30 to i64
  %288 = getelementptr double, ptr %32, i64 %287
  %289 = getelementptr i8, ptr %288, i64 16
  store double %.sroa.6.0, ptr %289, align 8, !tbaa !9
  %290 = load double, ptr %12, align 8, !tbaa !9
  %291 = insertelement <2 x double> poison, double %290, i64 0
  %292 = insertelement <2 x double> %291, double %.sroa.6.0, i64 1
  %293 = fcmp oge <2 x double> %292, zeroinitializer
  %294 = fneg <2 x double> %292
  %295 = select <2 x i1> %293, <2 x double> %292, <2 x double> %294
  %296 = extractelement <2 x double> %295, i64 0
  %297 = extractelement <2 x double> %295, i64 1
  %298 = fcmp oge double %296, %297
  %299 = select i1 %298, double %296, double %297
  br label %.sink.split

300:                                              ; preds = %38
  %301 = load double, ptr %7, align 8, !tbaa !9
  %302 = fcmp oge double %301, 0.000000e+00
  %303 = fneg double %301
  %304 = select i1 %302, double %301, double %303
  %305 = shl i32 %24, 1
  %306 = or disjoint i32 %305, 1
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %26, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !9
  %310 = fcmp oge double %309, 0.000000e+00
  %311 = fneg double %309
  %312 = select i1 %310, double %309, double %311
  %313 = fcmp oge double %304, %312
  %314 = select i1 %313, double %304, double %312
  %315 = sext i32 %24 to i64
  %316 = getelementptr double, ptr %26, i64 %315
  %317 = getelementptr i8, ptr %316, i64 16
  %318 = load double, ptr %317, align 8, !tbaa !9
  %319 = fcmp oge double %318, 0.000000e+00
  %320 = fneg double %318
  %321 = select i1 %319, double %318, double %320
  %322 = fcmp oge double %314, %321
  %323 = select i1 %322, double %314, double %321
  %324 = sext i32 %305 to i64
  %325 = getelementptr double, ptr %26, i64 %324
  %326 = getelementptr i8, ptr %325, i64 16
  %327 = load double, ptr %326, align 8, !tbaa !9
  %328 = fcmp oge double %327, 0.000000e+00
  %329 = fneg double %327
  %330 = select i1 %328, double %327, double %329
  %331 = fcmp oge double %323, %330
  %332 = select i1 %331, double %323, double %330
  %333 = load double, ptr %5, align 8, !tbaa !9
  %334 = fcmp oge double %333, 0.000000e+00
  %335 = fneg double %333
  %336 = select i1 %334, double %333, double %335
  %337 = fcmp oge double %332, %336
  %338 = select i1 %337, double %332, double %336
  %339 = shl i32 %21, 1
  %340 = or disjoint i32 %339, 1
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds double, ptr %23, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !9
  %344 = fcmp oge double %343, 0.000000e+00
  %345 = fneg double %343
  %346 = select i1 %344, double %343, double %345
  %347 = fcmp oge double %338, %346
  %348 = select i1 %347, double %338, double %346
  %349 = sext i32 %21 to i64
  %350 = getelementptr double, ptr %23, i64 %349
  %351 = getelementptr i8, ptr %350, i64 16
  %352 = load double, ptr %351, align 8, !tbaa !9
  %353 = fcmp oge double %352, 0.000000e+00
  %354 = fneg double %352
  %355 = select i1 %353, double %352, double %354
  %356 = fcmp oge double %348, %355
  %357 = select i1 %356, double %348, double %355
  %358 = sext i32 %339 to i64
  %359 = getelementptr double, ptr %23, i64 %358
  %360 = getelementptr i8, ptr %359, i64 16
  %361 = load double, ptr %360, align 8, !tbaa !9
  %362 = fcmp oge double %361, 0.000000e+00
  %363 = fneg double %361
  %364 = select i1 %362, double %361, double %363
  %365 = fcmp oge double %357, %364
  %366 = select i1 %365, double %357, double %364
  %367 = fmul double %39, %366
  %368 = fcmp oge double %367, %41
  %369 = select i1 %368, double %367, double %41
  store double 0.000000e+00, ptr %17, align 16, !tbaa !9
  call void @dcopy_(ptr noundef nonnull @c__16, ptr noundef nonnull %17, ptr noundef nonnull @c__0, ptr noundef nonnull %19, ptr noundef nonnull @c__1) #4
  %370 = load double, ptr %5, align 8, !tbaa !9
  %371 = load double, ptr %7, align 8, !tbaa !9
  %372 = call double @llvm.fmuladd.f64(double %43, double %371, double %370)
  store double %372, ptr %19, align 16, !tbaa !9
  %373 = load double, ptr %360, align 8, !tbaa !9
  %374 = call double @llvm.fmuladd.f64(double %43, double %371, double %373)
  %375 = getelementptr inbounds i8, ptr %19, i64 40
  store double %374, ptr %375, align 8, !tbaa !9
  %376 = load double, ptr %326, align 8, !tbaa !9
  %377 = call double @llvm.fmuladd.f64(double %43, double %376, double %370)
  %378 = getelementptr inbounds i8, ptr %19, i64 80
  store double %377, ptr %378, align 16, !tbaa !9
  %379 = call double @llvm.fmuladd.f64(double %43, double %376, double %373)
  %380 = getelementptr inbounds i8, ptr %19, i64 120
  store double %379, ptr %380, align 8, !tbaa !9
  %381 = load i32, ptr %0, align 4, !tbaa !5
  %.not590 = icmp eq i32 %381, 0
  %spec.select = select i1 %.not590, ptr %342, ptr %351
  %spec.select686 = select i1 %.not590, ptr %351, ptr %342
  %.sink663 = load double, ptr %spec.select686, align 8, !tbaa !9
  %.sink664 = load double, ptr %spec.select, align 8, !tbaa !9
  %382 = getelementptr inbounds i8, ptr %19, i64 32
  store double %.sink664, ptr %382, align 16
  %383 = getelementptr inbounds i8, ptr %19, i64 8
  store double %.sink663, ptr %383, align 8
  %384 = getelementptr inbounds i8, ptr %19, i64 112
  store double %.sink664, ptr %384, align 16
  %385 = getelementptr inbounds i8, ptr %19, i64 88
  store double %.sink663, ptr %385, align 8
  %386 = load i32, ptr %1, align 4, !tbaa !5
  %.not591 = icmp eq i32 %386, 0
  %.pn681.in = select i1 %.not591, ptr %317, ptr %308
  %.pn682.in = select i1 %.not591, ptr %308, ptr %317
  %.pn682 = load double, ptr %.pn682.in, align 8, !tbaa !9
  %.sink666 = fmul double %.pn682, %43
  %.pn681 = load double, ptr %.pn681.in, align 8, !tbaa !9
  %.sink668 = fmul double %.pn681, %43
  %387 = getelementptr inbounds i8, ptr %19, i64 64
  store double %.sink668, ptr %387, align 16
  %388 = getelementptr inbounds i8, ptr %19, i64 104
  store double %.sink668, ptr %388, align 8
  %389 = getelementptr inbounds i8, ptr %19, i64 16
  store double %.sink666, ptr %389, align 16
  %390 = getelementptr inbounds i8, ptr %19, i64 56
  store double %.sink666, ptr %390, align 8
  %391 = load double, ptr %9, align 8, !tbaa !9
  store double %391, ptr %17, align 16, !tbaa !9
  %392 = sext i32 %27 to i64
  %393 = getelementptr double, ptr %29, i64 %392
  %394 = getelementptr i8, ptr %393, i64 16
  %395 = load double, ptr %394, align 8, !tbaa !9
  %396 = getelementptr inbounds i8, ptr %17, i64 8
  store double %395, ptr %396, align 8, !tbaa !9
  %397 = shl i32 %27, 1
  %398 = or disjoint i32 %397, 1
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds double, ptr %29, i64 %399
  %401 = getelementptr inbounds i8, ptr %17, i64 16
  %402 = getelementptr inbounds i8, ptr %17, i64 24
  %403 = load <2 x double>, ptr %400, align 8, !tbaa !9
  store <2 x double> %403, ptr %401, align 16, !tbaa !9
  br label %.preheader599

.loopexit:                                        ; preds = %.lr.ph.2, %713, %724, %._crit_edge.1, %._crit_edge
  %indvars.iv.next632 = add nuw nsw i64 %indvars.iv631, 1
  %exitcond642.not = icmp eq i64 %indvars.iv.next632, 5
  br i1 %exitcond642.not, label %735, label %.preheader599, !llvm.loop !11

.preheader599:                                    ; preds = %300, %.loopexit
  %indvars.iv631 = phi i64 [ 2, %300 ], [ %indvars.iv.next632, %.loopexit ]
  %indvars.iv = phi i64 [ 1, %300 ], [ %indvars.iv.next, %.loopexit ]
  %.0570616 = phi i32 [ undef, %300 ], [ %.3.us.lcssa.lcssa, %.loopexit ]
  %.0573615 = phi i32 [ undef, %300 ], [ %.3576.us.lcssa.lcssa, %.loopexit ]
  %404 = add nsw i64 %indvars.iv, -5
  %405 = trunc nuw nsw i64 %indvars.iv to i32
  %406 = shl nuw nsw i64 %indvars.iv, 2
  %407 = add nsw i64 %404, %406
  %408 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %407
  %409 = load double, ptr %408, align 8, !tbaa !9
  %410 = fcmp oge double %409, 0.000000e+00
  %411 = fneg double %409
  %412 = select i1 %410, double %409, double %411
  %413 = fcmp ult double %412, 0.000000e+00
  %.2579.us = select i1 %413, double 0.000000e+00, double %412
  %.3576.us = select i1 %413, i32 %.0573615, i32 %405
  %414 = trunc nuw nsw i64 %indvars.iv to i32
  %.3.us = select i1 %413, i32 %.0570616, i32 %414
  %indvars.iv.next625 = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next625, 5
  br i1 %exitcond.not, label %._crit_edge.us, label %415, !llvm.loop !13

415:                                              ; preds = %.preheader599
  %416 = shl nuw nsw i64 %indvars.iv.next625, 2
  %417 = add nsw i64 %404, %416
  %418 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %417
  %419 = load double, ptr %418, align 8, !tbaa !9
  %420 = fcmp oge double %419, 0.000000e+00
  %421 = fneg double %419
  %422 = select i1 %420, double %419, double %421
  %423 = fcmp ult double %422, %.2579.us
  %.2579.us.1 = select i1 %423, double %.2579.us, double %422
  %.3576.us.1 = select i1 %423, i32 %.3576.us, i32 %405
  %424 = trunc nuw nsw i64 %indvars.iv.next625 to i32
  %.3.us.1 = select i1 %423, i32 %.3.us, i32 %424
  %indvars.iv.next625.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1 = icmp eq i64 %indvars.iv.next625.1, 5
  br i1 %exitcond.not.1, label %._crit_edge.us, label %425, !llvm.loop !13

425:                                              ; preds = %415
  %426 = shl nuw nsw i64 %indvars.iv.next625.1, 2
  %427 = add nsw i64 %404, %426
  %428 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %427
  %429 = load double, ptr %428, align 8, !tbaa !9
  %430 = fcmp oge double %429, 0.000000e+00
  %431 = fneg double %429
  %432 = select i1 %430, double %429, double %431
  %433 = fcmp ult double %432, %.2579.us.1
  %.2579.us.2 = select i1 %433, double %.2579.us.1, double %432
  %.3576.us.2 = select i1 %433, i32 %.3576.us.1, i32 %405
  %434 = trunc nuw nsw i64 %indvars.iv.next625.1 to i32
  %.3.us.2 = select i1 %433, i32 %.3.us.1, i32 %434
  %indvars.iv.next625.2 = add nuw nsw i64 %indvars.iv, 3
  %exitcond.not.2 = icmp eq i64 %indvars.iv.next625.2, 5
  br i1 %exitcond.not.2, label %._crit_edge.us, label %435, !llvm.loop !13

435:                                              ; preds = %425
  %436 = shl nuw nsw i64 %indvars.iv.next625.2, 2
  %437 = add nsw i64 %404, %436
  %438 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %437
  %439 = load double, ptr %438, align 8, !tbaa !9
  %440 = fcmp oge double %439, 0.000000e+00
  %441 = fneg double %439
  %442 = select i1 %440, double %439, double %441
  %443 = fcmp ult double %442, %.2579.us.2
  %.2579.us.3 = select i1 %443, double %.2579.us.2, double %442
  %.3576.us.3 = select i1 %443, i32 %.3576.us.2, i32 %405
  %444 = trunc nuw nsw i64 %indvars.iv.next625.2 to i32
  %.3.us.3 = select i1 %443, i32 %.3.us.2, i32 %444
  br label %._crit_edge.us

._crit_edge.us:                                   ; preds = %435, %425, %415, %.preheader599
  %.2579.us.lcssa = phi double [ %.2579.us, %.preheader599 ], [ %.2579.us.1, %415 ], [ %.2579.us.2, %425 ], [ %.2579.us.3, %435 ]
  %.3576.us.lcssa = phi i32 [ %.3576.us, %.preheader599 ], [ %.3576.us.1, %415 ], [ %.3576.us.2, %425 ], [ %.3576.us.3, %435 ]
  %.3.us.lcssa = phi i32 [ %.3.us, %.preheader599 ], [ %.3.us.1, %415 ], [ %.3.us.2, %425 ], [ %.3.us.3, %435 ]
  %indvars.iv.next628 = add nuw nsw i64 %indvars.iv, 1
  %exitcond630.not = icmp eq i64 %indvars.iv.next628, 5
  br i1 %exitcond630.not, label %.split.us, label %.preheader598.us.1, !llvm.loop !14

.preheader598.us.1:                               ; preds = %._crit_edge.us
  %445 = add nsw i64 %indvars.iv, -4
  %446 = trunc nuw nsw i64 %indvars.iv.next628 to i32
  %447 = shl nuw nsw i64 %indvars.iv, 2
  %448 = add nsw i64 %445, %447
  %449 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !9
  %451 = fcmp oge double %450, 0.000000e+00
  %452 = fneg double %450
  %453 = select i1 %451, double %450, double %452
  %454 = fcmp ult double %453, %.2579.us.lcssa
  %.2579.us.1688 = select i1 %454, double %.2579.us.lcssa, double %453
  %.3576.us.1689 = select i1 %454, i32 %.3576.us.lcssa, i32 %446
  %455 = trunc nuw nsw i64 %indvars.iv to i32
  %.3.us.1690 = select i1 %454, i32 %.3.us.lcssa, i32 %455
  %indvars.iv.next625.1691 = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not.1692 = icmp eq i64 %indvars.iv.next625.1691, 5
  br i1 %exitcond.not.1692, label %._crit_edge.us.1, label %456, !llvm.loop !13

456:                                              ; preds = %.preheader598.us.1
  %457 = shl nuw nsw i64 %indvars.iv.next625.1691, 2
  %458 = add nsw i64 %445, %457
  %459 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %458
  %460 = load double, ptr %459, align 8, !tbaa !9
  %461 = fcmp oge double %460, 0.000000e+00
  %462 = fneg double %460
  %463 = select i1 %461, double %460, double %462
  %464 = fcmp ult double %463, %.2579.us.1688
  %.2579.us.1.1 = select i1 %464, double %.2579.us.1688, double %463
  %.3576.us.1.1 = select i1 %464, i32 %.3576.us.1689, i32 %446
  %465 = trunc nuw nsw i64 %indvars.iv.next625.1691 to i32
  %.3.us.1.1 = select i1 %464, i32 %.3.us.1690, i32 %465
  %indvars.iv.next625.1.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1.1 = icmp eq i64 %indvars.iv.next625.1.1, 5
  br i1 %exitcond.not.1.1, label %._crit_edge.us.1, label %466, !llvm.loop !13

466:                                              ; preds = %456
  %467 = shl nuw nsw i64 %indvars.iv.next625.1.1, 2
  %468 = add nsw i64 %445, %467
  %469 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %468
  %470 = load double, ptr %469, align 8, !tbaa !9
  %471 = fcmp oge double %470, 0.000000e+00
  %472 = fneg double %470
  %473 = select i1 %471, double %470, double %472
  %474 = fcmp ult double %473, %.2579.us.1.1
  %.2579.us.2.1 = select i1 %474, double %.2579.us.1.1, double %473
  %.3576.us.2.1 = select i1 %474, i32 %.3576.us.1.1, i32 %446
  %475 = trunc nuw nsw i64 %indvars.iv.next625.1.1 to i32
  %.3.us.2.1 = select i1 %474, i32 %.3.us.1.1, i32 %475
  %indvars.iv.next625.2.1 = add nuw nsw i64 %indvars.iv, 3
  %exitcond.not.2.1 = icmp eq i64 %indvars.iv.next625.2.1, 5
  br i1 %exitcond.not.2.1, label %._crit_edge.us.1, label %476, !llvm.loop !13

476:                                              ; preds = %466
  %477 = shl nuw nsw i64 %indvars.iv.next625.2.1, 2
  %478 = add nsw i64 %445, %477
  %479 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %478
  %480 = load double, ptr %479, align 8, !tbaa !9
  %481 = fcmp oge double %480, 0.000000e+00
  %482 = fneg double %480
  %483 = select i1 %481, double %480, double %482
  %484 = fcmp ult double %483, %.2579.us.2.1
  %.2579.us.3.1 = select i1 %484, double %.2579.us.2.1, double %483
  %.3576.us.3.1 = select i1 %484, i32 %.3576.us.2.1, i32 %446
  %485 = trunc nuw nsw i64 %indvars.iv.next625.2.1 to i32
  %.3.us.3.1 = select i1 %484, i32 %.3.us.2.1, i32 %485
  br label %._crit_edge.us.1

._crit_edge.us.1:                                 ; preds = %476, %466, %456, %.preheader598.us.1
  %.2579.us.lcssa.1 = phi double [ %.2579.us.1688, %.preheader598.us.1 ], [ %.2579.us.1.1, %456 ], [ %.2579.us.2.1, %466 ], [ %.2579.us.3.1, %476 ]
  %.3576.us.lcssa.1 = phi i32 [ %.3576.us.1689, %.preheader598.us.1 ], [ %.3576.us.1.1, %456 ], [ %.3576.us.2.1, %466 ], [ %.3576.us.3.1, %476 ]
  %.3.us.lcssa.1 = phi i32 [ %.3.us.1690, %.preheader598.us.1 ], [ %.3.us.1.1, %456 ], [ %.3.us.2.1, %466 ], [ %.3.us.3.1, %476 ]
  %indvars.iv.next628.1 = add nuw nsw i64 %indvars.iv, 2
  %exitcond630.not.1 = icmp eq i64 %indvars.iv.next628.1, 5
  br i1 %exitcond630.not.1, label %.split.us, label %.preheader598.us.2, !llvm.loop !14

.preheader598.us.2:                               ; preds = %._crit_edge.us.1
  %486 = add nsw i64 %indvars.iv, -3
  %487 = trunc nuw nsw i64 %indvars.iv.next628.1 to i32
  %488 = shl nuw nsw i64 %indvars.iv, 2
  %489 = add nsw i64 %486, %488
  %490 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %489
  %491 = load double, ptr %490, align 8, !tbaa !9
  %492 = fcmp oge double %491, 0.000000e+00
  %493 = fneg double %491
  %494 = select i1 %492, double %491, double %493
  %495 = fcmp ult double %494, %.2579.us.lcssa.1
  %.2579.us.2693 = select i1 %495, double %.2579.us.lcssa.1, double %494
  %.3576.us.2694 = select i1 %495, i32 %.3576.us.lcssa.1, i32 %487
  %496 = trunc nuw nsw i64 %indvars.iv to i32
  %.3.us.2695 = select i1 %495, i32 %.3.us.lcssa.1, i32 %496
  %indvars.iv.next625.2696 = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not.2697 = icmp eq i64 %indvars.iv.next625.2696, 5
  br i1 %exitcond.not.2697, label %._crit_edge.us.2, label %497, !llvm.loop !13

497:                                              ; preds = %.preheader598.us.2
  %498 = shl nuw nsw i64 %indvars.iv.next625.2696, 2
  %499 = add nsw i64 %486, %498
  %500 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %499
  %501 = load double, ptr %500, align 8, !tbaa !9
  %502 = fcmp oge double %501, 0.000000e+00
  %503 = fneg double %501
  %504 = select i1 %502, double %501, double %503
  %505 = fcmp ult double %504, %.2579.us.2693
  %.2579.us.1.2 = select i1 %505, double %.2579.us.2693, double %504
  %.3576.us.1.2 = select i1 %505, i32 %.3576.us.2694, i32 %487
  %506 = trunc nuw nsw i64 %indvars.iv.next625.2696 to i32
  %.3.us.1.2 = select i1 %505, i32 %.3.us.2695, i32 %506
  %indvars.iv.next625.1.2 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1.2 = icmp eq i64 %indvars.iv.next625.1.2, 5
  br i1 %exitcond.not.1.2, label %._crit_edge.us.2, label %507, !llvm.loop !13

507:                                              ; preds = %497
  %508 = shl nuw nsw i64 %indvars.iv.next625.1.2, 2
  %509 = add nsw i64 %486, %508
  %510 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %509
  %511 = load double, ptr %510, align 8, !tbaa !9
  %512 = fcmp oge double %511, 0.000000e+00
  %513 = fneg double %511
  %514 = select i1 %512, double %511, double %513
  %515 = fcmp ult double %514, %.2579.us.1.2
  %.2579.us.2.2 = select i1 %515, double %.2579.us.1.2, double %514
  %.3576.us.2.2 = select i1 %515, i32 %.3576.us.1.2, i32 %487
  %516 = trunc nuw nsw i64 %indvars.iv.next625.1.2 to i32
  %.3.us.2.2 = select i1 %515, i32 %.3.us.1.2, i32 %516
  %indvars.iv.next625.2.2 = add nuw nsw i64 %indvars.iv, 3
  %exitcond.not.2.2 = icmp eq i64 %indvars.iv.next625.2.2, 5
  br i1 %exitcond.not.2.2, label %._crit_edge.us.2, label %517, !llvm.loop !13

517:                                              ; preds = %507
  %518 = shl nuw nsw i64 %indvars.iv.next625.2.2, 2
  %519 = add nsw i64 %486, %518
  %520 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %519
  %521 = load double, ptr %520, align 8, !tbaa !9
  %522 = fcmp oge double %521, 0.000000e+00
  %523 = fneg double %521
  %524 = select i1 %522, double %521, double %523
  %525 = fcmp ult double %524, %.2579.us.2.2
  %.2579.us.3.2 = select i1 %525, double %.2579.us.2.2, double %524
  %.3576.us.3.2 = select i1 %525, i32 %.3576.us.2.2, i32 %487
  %526 = trunc nuw nsw i64 %indvars.iv.next625.2.2 to i32
  %.3.us.3.2 = select i1 %525, i32 %.3.us.2.2, i32 %526
  br label %._crit_edge.us.2

._crit_edge.us.2:                                 ; preds = %517, %507, %497, %.preheader598.us.2
  %.2579.us.lcssa.2 = phi double [ %.2579.us.2693, %.preheader598.us.2 ], [ %.2579.us.1.2, %497 ], [ %.2579.us.2.2, %507 ], [ %.2579.us.3.2, %517 ]
  %.3576.us.lcssa.2 = phi i32 [ %.3576.us.2694, %.preheader598.us.2 ], [ %.3576.us.1.2, %497 ], [ %.3576.us.2.2, %507 ], [ %.3576.us.3.2, %517 ]
  %.3.us.lcssa.2 = phi i32 [ %.3.us.2695, %.preheader598.us.2 ], [ %.3.us.1.2, %497 ], [ %.3.us.2.2, %507 ], [ %.3.us.3.2, %517 ]
  %indvars.iv.next628.2 = add nuw nsw i64 %indvars.iv, 3
  %exitcond630.not.2 = icmp eq i64 %indvars.iv.next628.2, 5
  br i1 %exitcond630.not.2, label %.split.us, label %.preheader598.us.3, !llvm.loop !14

.preheader598.us.3:                               ; preds = %._crit_edge.us.2
  %527 = add nsw i64 %indvars.iv, -2
  %528 = trunc nuw nsw i64 %indvars.iv.next628.2 to i32
  %529 = shl nuw nsw i64 %indvars.iv, 2
  %530 = add nsw i64 %527, %529
  %531 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %530
  %532 = load double, ptr %531, align 8, !tbaa !9
  %533 = fcmp oge double %532, 0.000000e+00
  %534 = fneg double %532
  %535 = select i1 %533, double %532, double %534
  %536 = fcmp ult double %535, %.2579.us.lcssa.2
  %.3576.us.3699 = select i1 %536, i32 %.3576.us.lcssa.2, i32 %528
  %537 = trunc nuw nsw i64 %indvars.iv to i32
  %.3.us.3700 = select i1 %536, i32 %.3.us.lcssa.2, i32 %537
  %indvars.iv.next625.3 = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next625.3, 5
  br i1 %exitcond.not.3, label %.split.us, label %538, !llvm.loop !13

538:                                              ; preds = %.preheader598.us.3
  %.2579.us.3698 = select i1 %536, double %.2579.us.lcssa.2, double %535
  %539 = shl nuw nsw i64 %indvars.iv.next625.3, 2
  %540 = add nsw i64 %527, %539
  %541 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %540
  %542 = load double, ptr %541, align 8, !tbaa !9
  %543 = fcmp oge double %542, 0.000000e+00
  %544 = fneg double %542
  %545 = select i1 %543, double %542, double %544
  %546 = fcmp ult double %545, %.2579.us.3698
  %.3576.us.1.3 = select i1 %546, i32 %.3576.us.3699, i32 %528
  %547 = trunc nuw nsw i64 %indvars.iv.next625.3 to i32
  %.3.us.1.3 = select i1 %546, i32 %.3.us.3700, i32 %547
  %indvars.iv.next625.1.3 = add nuw nsw i64 %indvars.iv, 2
  %exitcond.not.1.3 = icmp eq i64 %indvars.iv.next625.1.3, 5
  br i1 %exitcond.not.1.3, label %.split.us, label %548, !llvm.loop !13

548:                                              ; preds = %538
  %.2579.us.1.3 = select i1 %546, double %.2579.us.3698, double %545
  %549 = shl nuw nsw i64 %indvars.iv.next625.1.3, 2
  %550 = add nsw i64 %527, %549
  %551 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %550
  %552 = load double, ptr %551, align 8, !tbaa !9
  %553 = fcmp oge double %552, 0.000000e+00
  %554 = fneg double %552
  %555 = select i1 %553, double %552, double %554
  %556 = fcmp ult double %555, %.2579.us.1.3
  %.3576.us.2.3 = select i1 %556, i32 %.3576.us.1.3, i32 %528
  %557 = trunc nuw nsw i64 %indvars.iv.next625.1.3 to i32
  %.3.us.2.3 = select i1 %556, i32 %.3.us.1.3, i32 %557
  %indvars.iv.next625.2.3 = add nuw nsw i64 %indvars.iv, 3
  %exitcond.not.2.3 = icmp eq i64 %indvars.iv.next625.2.3, 5
  br i1 %exitcond.not.2.3, label %.split.us, label %558, !llvm.loop !13

558:                                              ; preds = %548
  %.2579.us.2.3 = select i1 %556, double %.2579.us.1.3, double %555
  %559 = shl nuw nsw i64 %indvars.iv.next625.2.3, 2
  %560 = add nsw i64 %527, %559
  %561 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %560
  %562 = load double, ptr %561, align 8, !tbaa !9
  %563 = fcmp oge double %562, 0.000000e+00
  %564 = fneg double %562
  %565 = select i1 %563, double %562, double %564
  %566 = fcmp ult double %565, %.2579.us.2.3
  %.3576.us.3.3 = select i1 %566, i32 %.3576.us.2.3, i32 %528
  %567 = trunc nuw nsw i64 %indvars.iv.next625.2.3 to i32
  %.3.us.3.3 = select i1 %566, i32 %.3.us.2.3, i32 %567
  br label %.split.us

.split.us:                                        ; preds = %.preheader598.us.3, %538, %548, %558, %._crit_edge.us.2, %._crit_edge.us.1, %._crit_edge.us
  %.3576.us.lcssa.lcssa = phi i32 [ %.3576.us.lcssa, %._crit_edge.us ], [ %.3576.us.lcssa.1, %._crit_edge.us.1 ], [ %.3576.us.lcssa.2, %._crit_edge.us.2 ], [ %.3576.us.3699, %.preheader598.us.3 ], [ %.3576.us.1.3, %538 ], [ %.3576.us.2.3, %548 ], [ %.3576.us.3.3, %558 ]
  %.3.us.lcssa.lcssa = phi i32 [ %.3.us.lcssa, %._crit_edge.us ], [ %.3.us.lcssa.1, %._crit_edge.us.1 ], [ %.3.us.lcssa.2, %._crit_edge.us.2 ], [ %.3.us.3700, %.preheader598.us.3 ], [ %.3.us.1.3, %538 ], [ %.3.us.2.3, %548 ], [ %.3.us.3.3, %558 ]
  %568 = zext i32 %.3576.us.lcssa.lcssa to i64
  %.not593 = icmp eq i64 %indvars.iv, %568
  br i1 %.not593, label %579, label %569

569:                                              ; preds = %.split.us
  %570 = add nsw i32 %.3576.us.lcssa.lcssa, -1
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %571
  %573 = add nsw i64 %indvars.iv, -1
  %574 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %573
  call void @dswap_(ptr noundef nonnull @c__4, ptr noundef nonnull %572, ptr noundef nonnull @c__4, ptr noundef nonnull %574, ptr noundef nonnull @c__4) #4
  %575 = getelementptr inbounds [4 x double], ptr %17, i64 0, i64 %573
  %576 = load double, ptr %575, align 8, !tbaa !9
  %577 = getelementptr inbounds [4 x double], ptr %17, i64 0, i64 %571
  %578 = load double, ptr %577, align 8, !tbaa !9
  store double %578, ptr %575, align 8, !tbaa !9
  store double %576, ptr %577, align 8, !tbaa !9
  br label %579

579:                                              ; preds = %569, %.split.us
  %580 = zext i32 %.3.us.lcssa.lcssa to i64
  %.not594 = icmp eq i64 %indvars.iv, %580
  br i1 %.not594, label %._crit_edge675, label %581

._crit_edge675:                                   ; preds = %579
  %.pre676 = shl nuw nsw i64 %indvars.iv, 2
  br label %589

581:                                              ; preds = %579
  %582 = shl i32 %.3.us.lcssa.lcssa, 2
  %583 = add nsw i32 %582, -4
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %584
  %586 = shl nuw nsw i64 %indvars.iv, 2
  %587 = add nsw i64 %586, -4
  %588 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %587
  call void @dswap_(ptr noundef nonnull @c__4, ptr noundef nonnull %585, ptr noundef nonnull @c__1, ptr noundef nonnull %588, ptr noundef nonnull @c__1) #4
  br label %589

589:                                              ; preds = %._crit_edge675, %581
  %.pre-phi677 = phi i64 [ %.pre676, %._crit_edge675 ], [ %586, %581 ]
  %590 = add nsw i64 %indvars.iv, -1
  %591 = getelementptr inbounds [4 x i32], ptr %18, i64 0, i64 %590
  store i32 %.3.us.lcssa.lcssa, ptr %591, align 4, !tbaa !5
  %592 = mul nuw nsw i64 %indvars.iv, 5
  %593 = add nsw i64 %592, -5
  %594 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %593
  %595 = load double, ptr %594, align 8, !tbaa !9
  %596 = fcmp oge double %595, 0.000000e+00
  %597 = fneg double %595
  %598 = select i1 %596, double %595, double %597
  %599 = fcmp olt double %598, %369
  br i1 %599, label %600, label %.lr.ph614

600:                                              ; preds = %589
  store i32 1, ptr %15, align 4, !tbaa !5
  store double %369, ptr %594, align 8, !tbaa !9
  br label %.lr.ph614

.lr.ph614:                                        ; preds = %589, %600
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %601 = add nsw i64 %.pre-phi677, -5
  %602 = getelementptr inbounds [4 x double], ptr %17, i64 0, i64 %590
  %603 = add nuw nsw i64 %indvars.iv, -5
  %604 = load double, ptr %594, align 8, !tbaa !9
  %605 = add nsw i64 %601, %indvars.iv631
  %606 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %605
  %607 = load double, ptr %606, align 8, !tbaa !9
  %608 = fdiv double %607, %604
  store double %608, ptr %606, align 8, !tbaa !9
  %609 = load double, ptr %602, align 8, !tbaa !9
  %610 = add nsw i64 %indvars.iv631, -1
  %611 = getelementptr inbounds [4 x double], ptr %17, i64 0, i64 %610
  %612 = load double, ptr %611, align 8, !tbaa !9
  %613 = fneg double %608
  %614 = call double @llvm.fmuladd.f64(double %613, double %609, double %612)
  store double %614, ptr %611, align 8, !tbaa !9
  %615 = add nsw i64 %indvars.iv631, -5
  %616 = load double, ptr %606, align 8, !tbaa !9
  %617 = shl nuw nsw i64 %indvars.iv631, 2
  %618 = add nsw i64 %603, %617
  %619 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %618
  %620 = load double, ptr %619, align 8, !tbaa !9
  %621 = add nsw i64 %615, %617
  %622 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %621
  %623 = load double, ptr %622, align 8, !tbaa !9
  %624 = fneg double %616
  %625 = call double @llvm.fmuladd.f64(double %624, double %620, double %623)
  store double %625, ptr %622, align 8, !tbaa !9
  %indvars.iv.next634 = add nuw nsw i64 %indvars.iv631, 1
  %exitcond636.not = icmp eq i64 %indvars.iv.next634, 5
  br i1 %exitcond636.not, label %._crit_edge, label %626, !llvm.loop !15

626:                                              ; preds = %.lr.ph614
  %627 = load double, ptr %606, align 8, !tbaa !9
  %628 = shl nuw nsw i64 %indvars.iv.next634, 2
  %629 = add nsw i64 %603, %628
  %630 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %629
  %631 = load double, ptr %630, align 8, !tbaa !9
  %632 = add nsw i64 %615, %628
  %633 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %632
  %634 = load double, ptr %633, align 8, !tbaa !9
  %635 = fneg double %627
  %636 = call double @llvm.fmuladd.f64(double %635, double %631, double %634)
  store double %636, ptr %633, align 8, !tbaa !9
  %indvars.iv.next634.1 = add nuw nsw i64 %indvars.iv631, 2
  %exitcond636.not.1 = icmp eq i64 %indvars.iv.next634.1, 5
  br i1 %exitcond636.not.1, label %._crit_edge, label %637, !llvm.loop !15

637:                                              ; preds = %626
  %638 = load double, ptr %606, align 8, !tbaa !9
  %639 = shl nuw nsw i64 %indvars.iv.next634.1, 2
  %640 = add nsw i64 %603, %639
  %641 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %640
  %642 = load double, ptr %641, align 8, !tbaa !9
  %643 = add nsw i64 %615, %639
  %644 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %643
  %645 = load double, ptr %644, align 8, !tbaa !9
  %646 = fneg double %638
  %647 = call double @llvm.fmuladd.f64(double %646, double %642, double %645)
  store double %647, ptr %644, align 8, !tbaa !9
  br label %._crit_edge

._crit_edge:                                      ; preds = %637, %626, %.lr.ph614
  %indvars.iv.next638 = add nuw nsw i64 %indvars.iv631, 1
  %exitcond640.not = icmp eq i64 %indvars.iv.next638, 5
  br i1 %exitcond640.not, label %.loopexit, label %.lr.ph.1, !llvm.loop !16

.lr.ph.1:                                         ; preds = %._crit_edge
  %648 = load double, ptr %594, align 8, !tbaa !9
  %649 = add nsw i64 %601, %indvars.iv.next638
  %650 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %649
  %651 = load double, ptr %650, align 8, !tbaa !9
  %652 = fdiv double %651, %648
  store double %652, ptr %650, align 8, !tbaa !9
  %653 = load double, ptr %602, align 8, !tbaa !9
  %654 = getelementptr inbounds [4 x double], ptr %17, i64 0, i64 %indvars.iv631
  %655 = load double, ptr %654, align 8, !tbaa !9
  %656 = fneg double %652
  %657 = call double @llvm.fmuladd.f64(double %656, double %653, double %655)
  store double %657, ptr %654, align 8, !tbaa !9
  %658 = add nsw i64 %indvars.iv631, -4
  %659 = load double, ptr %650, align 8, !tbaa !9
  %660 = shl nuw nsw i64 %indvars.iv631, 2
  %661 = add nsw i64 %603, %660
  %662 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !9
  %664 = add nsw i64 %658, %660
  %665 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %664
  %666 = load double, ptr %665, align 8, !tbaa !9
  %667 = fneg double %659
  %668 = call double @llvm.fmuladd.f64(double %667, double %663, double %666)
  store double %668, ptr %665, align 8, !tbaa !9
  %indvars.iv.next634.1701 = add nuw nsw i64 %indvars.iv631, 1
  %exitcond636.not.1702 = icmp eq i64 %indvars.iv.next634.1701, 5
  br i1 %exitcond636.not.1702, label %._crit_edge.1, label %669, !llvm.loop !15

669:                                              ; preds = %.lr.ph.1
  %670 = load double, ptr %650, align 8, !tbaa !9
  %671 = shl nuw nsw i64 %indvars.iv.next634.1701, 2
  %672 = add nsw i64 %603, %671
  %673 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !9
  %675 = add nsw i64 %658, %671
  %676 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %675
  %677 = load double, ptr %676, align 8, !tbaa !9
  %678 = fneg double %670
  %679 = call double @llvm.fmuladd.f64(double %678, double %674, double %677)
  store double %679, ptr %676, align 8, !tbaa !9
  %indvars.iv.next634.1.1 = add nuw nsw i64 %indvars.iv631, 2
  %exitcond636.not.1.1 = icmp eq i64 %indvars.iv.next634.1.1, 5
  br i1 %exitcond636.not.1.1, label %._crit_edge.1, label %680, !llvm.loop !15

680:                                              ; preds = %669
  %681 = load double, ptr %650, align 8, !tbaa !9
  %682 = shl nuw nsw i64 %indvars.iv.next634.1.1, 2
  %683 = add nsw i64 %603, %682
  %684 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %683
  %685 = load double, ptr %684, align 8, !tbaa !9
  %686 = add nsw i64 %658, %682
  %687 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %686
  %688 = load double, ptr %687, align 8, !tbaa !9
  %689 = fneg double %681
  %690 = call double @llvm.fmuladd.f64(double %689, double %685, double %688)
  store double %690, ptr %687, align 8, !tbaa !9
  br label %._crit_edge.1

._crit_edge.1:                                    ; preds = %680, %669, %.lr.ph.1
  %indvars.iv.next638.1 = add nuw nsw i64 %indvars.iv631, 2
  %exitcond640.not.1 = icmp eq i64 %indvars.iv.next638.1, 5
  br i1 %exitcond640.not.1, label %.loopexit, label %.lr.ph.2, !llvm.loop !16

.lr.ph.2:                                         ; preds = %._crit_edge.1
  %691 = load double, ptr %594, align 8, !tbaa !9
  %692 = add nsw i64 %601, %indvars.iv.next638.1
  %693 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %692
  %694 = load double, ptr %693, align 8, !tbaa !9
  %695 = fdiv double %694, %691
  store double %695, ptr %693, align 8, !tbaa !9
  %696 = load double, ptr %602, align 8, !tbaa !9
  %697 = add nuw nsw i64 %indvars.iv631, 1
  %698 = getelementptr inbounds [4 x double], ptr %17, i64 0, i64 %697
  %699 = load double, ptr %698, align 8, !tbaa !9
  %700 = fneg double %695
  %701 = call double @llvm.fmuladd.f64(double %700, double %696, double %699)
  store double %701, ptr %698, align 8, !tbaa !9
  %702 = add nsw i64 %indvars.iv631, -3
  %703 = load double, ptr %693, align 8, !tbaa !9
  %704 = shl nuw nsw i64 %indvars.iv631, 2
  %705 = add nsw i64 %603, %704
  %706 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %705
  %707 = load double, ptr %706, align 8, !tbaa !9
  %708 = add nsw i64 %702, %704
  %709 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %708
  %710 = load double, ptr %709, align 8, !tbaa !9
  %711 = fneg double %703
  %712 = call double @llvm.fmuladd.f64(double %711, double %707, double %710)
  store double %712, ptr %709, align 8, !tbaa !9
  %indvars.iv.next634.2 = add nuw nsw i64 %indvars.iv631, 1
  %exitcond636.not.2 = icmp eq i64 %indvars.iv.next634.2, 5
  br i1 %exitcond636.not.2, label %.loopexit, label %713, !llvm.loop !15

713:                                              ; preds = %.lr.ph.2
  %714 = load double, ptr %693, align 8, !tbaa !9
  %715 = shl nuw nsw i64 %indvars.iv.next634.2, 2
  %716 = add nsw i64 %603, %715
  %717 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !9
  %719 = add nsw i64 %702, %715
  %720 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %719
  %721 = load double, ptr %720, align 8, !tbaa !9
  %722 = fneg double %714
  %723 = call double @llvm.fmuladd.f64(double %722, double %718, double %721)
  store double %723, ptr %720, align 8, !tbaa !9
  %indvars.iv.next634.1.2 = add nuw nsw i64 %indvars.iv631, 2
  %exitcond636.not.1.2 = icmp eq i64 %indvars.iv.next634.1.2, 5
  br i1 %exitcond636.not.1.2, label %.loopexit, label %724, !llvm.loop !15

724:                                              ; preds = %713
  %725 = load double, ptr %693, align 8, !tbaa !9
  %726 = shl nuw nsw i64 %indvars.iv.next634.1.2, 2
  %727 = add nsw i64 %603, %726
  %728 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %727
  %729 = load double, ptr %728, align 8, !tbaa !9
  %730 = add nsw i64 %702, %726
  %731 = getelementptr inbounds [16 x double], ptr %19, i64 0, i64 %730
  %732 = load double, ptr %731, align 8, !tbaa !9
  %733 = fneg double %725
  %734 = call double @llvm.fmuladd.f64(double %733, double %729, double %732)
  store double %734, ptr %731, align 8, !tbaa !9
  br label %.loopexit

735:                                              ; preds = %.loopexit
  %736 = load double, ptr %380, align 8
  %737 = fcmp oge double %736, 0.000000e+00
  %738 = fneg double %736
  %739 = select i1 %737, double %736, double %738
  %740 = fcmp olt double %739, %369
  br i1 %740, label %741, label %742

741:                                              ; preds = %735
  store i32 1, ptr %15, align 4, !tbaa !5
  br label %742

742:                                              ; preds = %741, %735
  %743 = phi double [ %369, %741 ], [ %736, %735 ]
  store double 1.000000e+00, ptr %11, align 8, !tbaa !9
  %744 = fmul double %41, 8.000000e+00
  %745 = load double, ptr %17, align 16
  %746 = fcmp oge double %745, 0.000000e+00
  %747 = fneg double %745
  %748 = select i1 %746, double %745, double %747
  %749 = fmul double %744, %748
  %750 = load double, ptr %19, align 16
  %751 = fcmp oge double %750, 0.000000e+00
  %752 = fneg double %750
  %753 = select i1 %751, double %750, double %752
  %754 = fcmp ogt double %749, %753
  %.pre = load double, ptr %396, align 8
  %.pre673 = fneg double %.pre
  br i1 %754, label %._crit_edge669, label %755

._crit_edge669:                                   ; preds = %742
  %.pre670 = load double, ptr %401, align 16
  br label %784

755:                                              ; preds = %742
  %756 = fcmp oge double %.pre, 0.000000e+00
  %757 = select i1 %756, double %.pre, double %.pre673
  %758 = fmul double %744, %757
  %759 = load double, ptr %375, align 8
  %760 = fcmp oge double %759, 0.000000e+00
  %761 = fneg double %759
  %762 = select i1 %760, double %759, double %761
  %763 = fcmp ogt double %758, %762
  %.pre671 = load double, ptr %401, align 16
  br i1 %763, label %784, label %764

764:                                              ; preds = %755
  %765 = fcmp oge double %.pre671, 0.000000e+00
  %766 = fneg double %.pre671
  %767 = select i1 %765, double %.pre671, double %766
  %768 = fmul double %744, %767
  %769 = load double, ptr %378, align 16
  %770 = fcmp oge double %769, 0.000000e+00
  %771 = fneg double %769
  %772 = select i1 %770, double %769, double %771
  %773 = fcmp ogt double %768, %772
  br i1 %773, label %784, label %774

774:                                              ; preds = %764
  %775 = load double, ptr %402, align 8
  %776 = fcmp oge double %775, 0.000000e+00
  %777 = fneg double %775
  %778 = select i1 %776, double %775, double %777
  %779 = fmul double %744, %778
  %780 = fcmp oge double %743, 0.000000e+00
  %781 = fneg double %743
  %782 = select i1 %780, double %743, double %781
  %783 = fcmp ogt double %779, %782
  br i1 %783, label %784, label %._crit_edge621.3

784:                                              ; preds = %._crit_edge669, %774, %764, %755
  %785 = phi double [ %.pre670, %._crit_edge669 ], [ %.pre671, %774 ], [ %.pre671, %764 ], [ %.pre671, %755 ]
  %786 = fcmp oge double %.pre, 0.000000e+00
  %787 = select i1 %786, double %.pre, double %.pre673
  %788 = fcmp oge double %748, %787
  %789 = select i1 %788, double %748, double %787
  %790 = fcmp oge double %785, 0.000000e+00
  %791 = fneg double %785
  %792 = select i1 %790, double %785, double %791
  %793 = fcmp oge double %789, %792
  %794 = select i1 %793, double %789, double %792
  %795 = load double, ptr %402, align 8
  %796 = fcmp oge double %795, 0.000000e+00
  %797 = fneg double %795
  %798 = select i1 %796, double %795, double %797
  %799 = fcmp oge double %794, %798
  %800 = select i1 %799, double %794, double %798
  %801 = fdiv double 1.250000e-01, %800
  store double %801, ptr %11, align 8, !tbaa !9
  %802 = fmul double %745, %801
  %803 = fmul double %.pre, %801
  %804 = fmul double %785, %801
  %805 = fmul double %795, %801
  br label %._crit_edge621.3

._crit_edge621.3:                                 ; preds = %774, %784
  %806 = phi double [ %802, %784 ], [ %745, %774 ]
  %807 = phi double [ %803, %784 ], [ %.pre, %774 ]
  %808 = phi double [ %804, %784 ], [ %.pre671, %774 ]
  %809 = phi double [ %805, %784 ], [ %775, %774 ]
  %810 = fdiv double 1.000000e+00, %743
  %811 = fmul double %809, %810
  %812 = getelementptr inbounds i8, ptr %20, i64 24
  store double %811, ptr %812, align 8, !tbaa !9
  %813 = load double, ptr %378, align 16, !tbaa !9
  %814 = fdiv double 1.000000e+00, %813
  %815 = fmul double %808, %814
  %816 = getelementptr inbounds i8, ptr %20, i64 16
  %817 = fneg double %814
  %818 = load double, ptr %384, align 16, !tbaa !9
  %819 = fmul double %818, %817
  %820 = call double @llvm.fmuladd.f64(double %819, double %811, double %815)
  store double %820, ptr %816, align 16, !tbaa !9
  %821 = load double, ptr %375, align 8, !tbaa !9
  %822 = fdiv double 1.000000e+00, %821
  %823 = fmul double %807, %822
  %824 = getelementptr inbounds i8, ptr %20, i64 8
  %825 = fneg double %822
  %826 = getelementptr inbounds i8, ptr %19, i64 72
  %827 = load double, ptr %826, align 8, !tbaa !9
  %828 = fmul double %827, %825
  %829 = call double @llvm.fmuladd.f64(double %828, double %820, double %823)
  %830 = load double, ptr %388, align 8, !tbaa !9
  %831 = fmul double %830, %825
  %832 = call double @llvm.fmuladd.f64(double %831, double %811, double %829)
  store double %832, ptr %824, align 8, !tbaa !9
  %833 = fdiv double 1.000000e+00, %750
  %834 = fmul double %806, %833
  %835 = fneg double %833
  %836 = load double, ptr %382, align 16, !tbaa !9
  %837 = fmul double %836, %835
  %838 = call double @llvm.fmuladd.f64(double %837, double %832, double %834)
  %839 = load double, ptr %387, align 16, !tbaa !9
  %840 = fmul double %839, %835
  %841 = call double @llvm.fmuladd.f64(double %840, double %820, double %838)
  %842 = getelementptr inbounds i8, ptr %19, i64 96
  %843 = load double, ptr %842, align 16, !tbaa !9
  %844 = fmul double %843, %835
  %845 = call double @llvm.fmuladd.f64(double %844, double %811, double %841)
  store double %845, ptr %20, align 16, !tbaa !9
  %846 = getelementptr inbounds i8, ptr %18, i64 8
  %847 = load i32, ptr %846, align 8, !tbaa !5
  %.not592 = icmp eq i32 %847, 3
  br i1 %.not592, label %.preheader.1, label %848

848:                                              ; preds = %._crit_edge621.3
  %849 = add nsw i32 %847, -1
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %850
  %852 = load double, ptr %851, align 8, !tbaa !9
  store double %852, ptr %816, align 16, !tbaa !9
  store double %820, ptr %851, align 8, !tbaa !9
  br label %.preheader.1

.preheader.1:                                     ; preds = %._crit_edge621.3, %848
  %853 = getelementptr inbounds i8, ptr %18, i64 4
  %854 = load i32, ptr %853, align 4, !tbaa !5
  %.not592.1 = icmp eq i32 %854, 2
  br i1 %.not592.1, label %.preheader.2, label %855

855:                                              ; preds = %.preheader.1
  %856 = load double, ptr %824, align 8, !tbaa !9
  %857 = add nsw i32 %854, -1
  %858 = sext i32 %857 to i64
  %859 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %858
  %860 = load double, ptr %859, align 8, !tbaa !9
  store double %860, ptr %824, align 8, !tbaa !9
  store double %856, ptr %859, align 8, !tbaa !9
  br label %.preheader.2

.preheader.2:                                     ; preds = %855, %.preheader.1
  %861 = load i32, ptr %18, align 16, !tbaa !5
  %.not592.2 = icmp eq i32 %861, 1
  br i1 %.not592.2, label %868, label %862

862:                                              ; preds = %.preheader.2
  %863 = load double, ptr %20, align 16, !tbaa !9
  %864 = add nsw i32 %861, -1
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds [4 x double], ptr %20, i64 0, i64 %865
  %867 = load double, ptr %866, align 8, !tbaa !9
  store double %867, ptr %20, align 16, !tbaa !9
  store double %863, ptr %866, align 8, !tbaa !9
  br label %868

868:                                              ; preds = %862, %.preheader.2
  %869 = sext i32 %30 to i64
  %870 = getelementptr double, ptr %32, i64 %869
  %871 = getelementptr i8, ptr %870, i64 16
  %872 = shl i32 %30, 1
  %873 = or disjoint i32 %872, 1
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds double, ptr %32, i64 %874
  %876 = load <2 x double>, ptr %816, align 16
  %877 = load <2 x double>, ptr %20, align 16
  %878 = extractelement <2 x double> %877, i64 0
  store double %878, ptr %12, align 8, !tbaa !9
  %879 = extractelement <2 x double> %877, i64 1
  store double %879, ptr %871, align 8, !tbaa !9
  store <2 x double> %876, ptr %875, align 8, !tbaa !9
  %880 = fcmp oge <2 x double> %877, zeroinitializer
  %881 = fneg <2 x double> %877
  %882 = select <2 x i1> %880, <2 x double> %877, <2 x double> %881
  %883 = fcmp oge <2 x double> %876, zeroinitializer
  %884 = fneg <2 x double> %876
  %885 = select <2 x i1> %883, <2 x double> %876, <2 x double> %884
  %886 = fadd <2 x double> %882, %885
  %887 = extractelement <2 x double> %886, i64 0
  %888 = extractelement <2 x double> %886, i64 1
  %889 = fcmp oge double %887, %888
  %890 = select i1 %889, double %887, double %888
  br label %.sink.split

.sink.split:                                      ; preds = %273, %286, %66, %868
  %.sink687 = phi double [ %890, %868 ], [ %73, %66 ], [ %299, %286 ], [ %285, %273 ]
  store double %.sink687, ptr %14, align 8, !tbaa !9
  br label %891

891:                                              ; preds = %.sink.split, %16, %35
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #4
  ret void
}

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

declare double @dlamch_(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 @idamax_(ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @dswap_(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

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 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass