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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @dla_porcond_(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) #0 {
  %12 = alloca double, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %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 i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca [3 x i32], align 4
  %36 = alloca i32, align 4
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  store ptr %0, ptr %13, align 8, !tbaa !5
  store ptr %1, ptr %14, align 8, !tbaa !5
  store ptr %2, ptr %15, align 8, !tbaa !5
  store ptr %3, ptr %16, align 8, !tbaa !5
  store ptr %4, ptr %17, align 8, !tbaa !5
  store ptr %5, ptr %18, align 8, !tbaa !5
  store ptr %6, ptr %19, align 8, !tbaa !5
  store ptr %7, ptr %20, align 8, !tbaa !5
  store ptr %8, ptr %21, align 8, !tbaa !5
  store ptr %9, ptr %22, align 8, !tbaa !5
  store ptr %10, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 12, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  %40 = load ptr, ptr %16, align 8, !tbaa !5
  %41 = load i32, ptr %40, align 4, !tbaa !9
  store i32 %41, ptr %24, align 4, !tbaa !9
  %42 = load i32, ptr %24, align 4, !tbaa !9
  %43 = mul nsw i32 %42, 1
  %44 = add nsw i32 1, %43
  store i32 %44, ptr %25, align 4, !tbaa !9
  %45 = load i32, ptr %25, align 4, !tbaa !9
  %46 = load ptr, ptr %15, align 8, !tbaa !5
  %47 = sext i32 %45 to i64
  %48 = sub i64 0, %47
  %49 = getelementptr inbounds double, ptr %46, i64 %48
  store ptr %49, ptr %15, align 8, !tbaa !5
  %50 = load ptr, ptr %18, align 8, !tbaa !5
  %51 = load i32, ptr %50, align 4, !tbaa !9
  store i32 %51, ptr %26, align 4, !tbaa !9
  %52 = load i32, ptr %26, align 4, !tbaa !9
  %53 = mul nsw i32 %52, 1
  %54 = add nsw i32 1, %53
  store i32 %54, ptr %27, align 4, !tbaa !9
  %55 = load i32, ptr %27, align 4, !tbaa !9
  %56 = load ptr, ptr %17, align 8, !tbaa !5
  %57 = sext i32 %55 to i64
  %58 = sub i64 0, %57
  %59 = getelementptr inbounds double, ptr %56, i64 %58
  store ptr %59, ptr %17, align 8, !tbaa !5
  %60 = load ptr, ptr %20, align 8, !tbaa !5
  %61 = getelementptr inbounds double, ptr %60, i32 -1
  store ptr %61, ptr %20, align 8, !tbaa !5
  %62 = load ptr, ptr %22, align 8, !tbaa !5
  %63 = getelementptr inbounds double, ptr %62, i32 -1
  store ptr %63, ptr %22, align 8, !tbaa !5
  %64 = load ptr, ptr %23, align 8, !tbaa !5
  %65 = getelementptr inbounds i32, ptr %64, i32 -1
  store ptr %65, ptr %23, align 8, !tbaa !5
  store double 0.000000e+00, ptr %30, align 8, !tbaa !11
  %66 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 0, ptr %66, align 4, !tbaa !9
  %67 = load ptr, ptr %14, align 8, !tbaa !5
  %68 = load i32, ptr %67, align 4, !tbaa !9
  %69 = icmp slt i32 %68, 0
  br i1 %69, label %70, label %72

70:                                               ; preds = %11
  %71 = load ptr, ptr %21, align 8, !tbaa !5
  store i32 -2, ptr %71, align 4, !tbaa !9
  br label %72

72:                                               ; preds = %70, %11
  %73 = load ptr, ptr %21, align 8, !tbaa !5
  %74 = load i32, ptr %73, align 4, !tbaa !9
  %75 = icmp ne i32 %74, 0
  br i1 %75, label %76, label %82

76:                                               ; preds = %72
  %77 = load ptr, ptr %21, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = sub nsw i32 0, %78
  store i32 %79, ptr %28, align 4, !tbaa !9
  %80 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %28, i32 noundef 11)
  %81 = load double, ptr %30, align 8, !tbaa !11
  store double %81, ptr %12, align 8
  store i32 1, ptr %39, align 4
  br label %830

82:                                               ; preds = %72
  %83 = load ptr, ptr %14, align 8, !tbaa !5
  %84 = load i32, ptr %83, align 4, !tbaa !9
  %85 = icmp eq i32 %84, 0
  br i1 %85, label %86, label %88

86:                                               ; preds = %82
  store double 1.000000e+00, ptr %30, align 8, !tbaa !11
  %87 = load double, ptr %30, align 8, !tbaa !11
  store double %87, ptr %12, align 8
  store i32 1, ptr %39, align 4
  br label %830

88:                                               ; preds = %82
  store i32 0, ptr %36, align 4, !tbaa !9
  %89 = load ptr, ptr %13, align 8, !tbaa !5
  %90 = call i32 @lsame_(ptr noundef %89, ptr noundef @.str.1)
  %91 = icmp ne i32 %90, 0
  br i1 %91, label %92, label %93

92:                                               ; preds = %88
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %93

93:                                               ; preds = %92, %88
  %94 = load i32, ptr %36, align 4, !tbaa !9
  %95 = icmp ne i32 %94, 0
  br i1 %95, label %96, label %342

96:                                               ; preds = %93
  %97 = load ptr, ptr %14, align 8, !tbaa !5
  %98 = load i32, ptr %97, align 4, !tbaa !9
  store i32 %98, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %99

99:                                               ; preds = %338, %96
  %100 = load i32, ptr %33, align 4, !tbaa !9
  %101 = load i32, ptr %28, align 4, !tbaa !9
  %102 = icmp sle i32 %100, %101
  br i1 %102, label %103, label %341

103:                                              ; preds = %99
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  %104 = load ptr, ptr %19, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = icmp eq i32 %105, 1
  br i1 %106, label %107, label %183

107:                                              ; preds = %103
  %108 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %108, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %109

109:                                              ; preds = %140, %107
  %110 = load i32, ptr %34, align 4, !tbaa !9
  %111 = load i32, ptr %29, align 4, !tbaa !9
  %112 = icmp sle i32 %110, %111
  br i1 %112, label %113, label %143

113:                                              ; preds = %109
  %114 = load ptr, ptr %15, align 8, !tbaa !5
  %115 = load i32, ptr %34, align 4, !tbaa !9
  %116 = load i32, ptr %33, align 4, !tbaa !9
  %117 = load i32, ptr %24, align 4, !tbaa !9
  %118 = mul nsw i32 %116, %117
  %119 = add nsw i32 %115, %118
  %120 = sext i32 %119 to i64
  %121 = getelementptr inbounds double, ptr %114, i64 %120
  %122 = load double, ptr %121, align 8, !tbaa !11
  %123 = load ptr, ptr %20, align 8, !tbaa !5
  %124 = load i32, ptr %34, align 4, !tbaa !9
  %125 = sext i32 %124 to i64
  %126 = getelementptr inbounds double, ptr %123, i64 %125
  %127 = load double, ptr %126, align 8, !tbaa !11
  %128 = fmul double %122, %127
  store double %128, ptr %31, align 8, !tbaa !11
  %129 = load double, ptr %31, align 8, !tbaa !11
  %130 = fcmp oge double %129, 0.000000e+00
  br i1 %130, label %131, label %133

131:                                              ; preds = %113
  %132 = load double, ptr %31, align 8, !tbaa !11
  br label %136

133:                                              ; preds = %113
  %134 = load double, ptr %31, align 8, !tbaa !11
  %135 = fneg double %134
  br label %136

136:                                              ; preds = %133, %131
  %137 = phi double [ %132, %131 ], [ %135, %133 ]
  %138 = load double, ptr %38, align 8, !tbaa !11
  %139 = fadd double %138, %137
  store double %139, ptr %38, align 8, !tbaa !11
  br label %140

140:                                              ; preds = %136
  %141 = load i32, ptr %34, align 4, !tbaa !9
  %142 = add nsw i32 %141, 1
  store i32 %142, ptr %34, align 4, !tbaa !9
  br label %109, !llvm.loop !13

143:                                              ; preds = %109
  %144 = load ptr, ptr %14, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  store i32 %145, ptr %29, align 4, !tbaa !9
  %146 = load i32, ptr %33, align 4, !tbaa !9
  %147 = add nsw i32 %146, 1
  store i32 %147, ptr %34, align 4, !tbaa !9
  br label %148

148:                                              ; preds = %179, %143
  %149 = load i32, ptr %34, align 4, !tbaa !9
  %150 = load i32, ptr %29, align 4, !tbaa !9
  %151 = icmp sle i32 %149, %150
  br i1 %151, label %152, label %182

152:                                              ; preds = %148
  %153 = load ptr, ptr %15, align 8, !tbaa !5
  %154 = load i32, ptr %33, align 4, !tbaa !9
  %155 = load i32, ptr %34, align 4, !tbaa !9
  %156 = load i32, ptr %24, align 4, !tbaa !9
  %157 = mul nsw i32 %155, %156
  %158 = add nsw i32 %154, %157
  %159 = sext i32 %158 to i64
  %160 = getelementptr inbounds double, ptr %153, i64 %159
  %161 = load double, ptr %160, align 8, !tbaa !11
  %162 = load ptr, ptr %20, align 8, !tbaa !5
  %163 = load i32, ptr %34, align 4, !tbaa !9
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds double, ptr %162, i64 %164
  %166 = load double, ptr %165, align 8, !tbaa !11
  %167 = fmul double %161, %166
  store double %167, ptr %31, align 8, !tbaa !11
  %168 = load double, ptr %31, align 8, !tbaa !11
  %169 = fcmp oge double %168, 0.000000e+00
  br i1 %169, label %170, label %172

170:                                              ; preds = %152
  %171 = load double, ptr %31, align 8, !tbaa !11
  br label %175

172:                                              ; preds = %152
  %173 = load double, ptr %31, align 8, !tbaa !11
  %174 = fneg double %173
  br label %175

175:                                              ; preds = %172, %170
  %176 = phi double [ %171, %170 ], [ %174, %172 ]
  %177 = load double, ptr %38, align 8, !tbaa !11
  %178 = fadd double %177, %176
  store double %178, ptr %38, align 8, !tbaa !11
  br label %179

179:                                              ; preds = %175
  %180 = load i32, ptr %34, align 4, !tbaa !9
  %181 = add nsw i32 %180, 1
  store i32 %181, ptr %34, align 4, !tbaa !9
  br label %148, !llvm.loop !15

182:                                              ; preds = %148
  br label %328

183:                                              ; preds = %103
  %184 = load ptr, ptr %19, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = icmp eq i32 %185, 0
  br i1 %186, label %187, label %251

187:                                              ; preds = %183
  %188 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %188, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %214, %187
  %190 = load i32, ptr %34, align 4, !tbaa !9
  %191 = load i32, ptr %29, align 4, !tbaa !9
  %192 = icmp sle i32 %190, %191
  br i1 %192, label %193, label %217

193:                                              ; preds = %189
  %194 = load ptr, ptr %15, align 8, !tbaa !5
  %195 = load i32, ptr %34, align 4, !tbaa !9
  %196 = load i32, ptr %33, align 4, !tbaa !9
  %197 = load i32, ptr %24, align 4, !tbaa !9
  %198 = mul nsw i32 %196, %197
  %199 = add nsw i32 %195, %198
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds double, ptr %194, i64 %200
  %202 = load double, ptr %201, align 8, !tbaa !11
  store double %202, ptr %31, align 8, !tbaa !11
  %203 = load double, ptr %31, align 8, !tbaa !11
  %204 = fcmp oge double %203, 0.000000e+00
  br i1 %204, label %205, label %207

205:                                              ; preds = %193
  %206 = load double, ptr %31, align 8, !tbaa !11
  br label %210

207:                                              ; preds = %193
  %208 = load double, ptr %31, align 8, !tbaa !11
  %209 = fneg double %208
  br label %210

210:                                              ; preds = %207, %205
  %211 = phi double [ %206, %205 ], [ %209, %207 ]
  %212 = load double, ptr %38, align 8, !tbaa !11
  %213 = fadd double %212, %211
  store double %213, ptr %38, align 8, !tbaa !11
  br label %214

214:                                              ; preds = %210
  %215 = load i32, ptr %34, align 4, !tbaa !9
  %216 = add nsw i32 %215, 1
  store i32 %216, ptr %34, align 4, !tbaa !9
  br label %189, !llvm.loop !16

217:                                              ; preds = %189
  %218 = load ptr, ptr %14, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  store i32 %219, ptr %29, align 4, !tbaa !9
  %220 = load i32, ptr %33, align 4, !tbaa !9
  %221 = add nsw i32 %220, 1
  store i32 %221, ptr %34, align 4, !tbaa !9
  br label %222

222:                                              ; preds = %247, %217
  %223 = load i32, ptr %34, align 4, !tbaa !9
  %224 = load i32, ptr %29, align 4, !tbaa !9
  %225 = icmp sle i32 %223, %224
  br i1 %225, label %226, label %250

226:                                              ; preds = %222
  %227 = load ptr, ptr %15, align 8, !tbaa !5
  %228 = load i32, ptr %33, align 4, !tbaa !9
  %229 = load i32, ptr %34, align 4, !tbaa !9
  %230 = load i32, ptr %24, align 4, !tbaa !9
  %231 = mul nsw i32 %229, %230
  %232 = add nsw i32 %228, %231
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds double, ptr %227, i64 %233
  %235 = load double, ptr %234, align 8, !tbaa !11
  store double %235, ptr %31, align 8, !tbaa !11
  %236 = load double, ptr %31, align 8, !tbaa !11
  %237 = fcmp oge double %236, 0.000000e+00
  br i1 %237, label %238, label %240

238:                                              ; preds = %226
  %239 = load double, ptr %31, align 8, !tbaa !11
  br label %243

240:                                              ; preds = %226
  %241 = load double, ptr %31, align 8, !tbaa !11
  %242 = fneg double %241
  br label %243

243:                                              ; preds = %240, %238
  %244 = phi double [ %239, %238 ], [ %242, %240 ]
  %245 = load double, ptr %38, align 8, !tbaa !11
  %246 = fadd double %245, %244
  store double %246, ptr %38, align 8, !tbaa !11
  br label %247

247:                                              ; preds = %243
  %248 = load i32, ptr %34, align 4, !tbaa !9
  %249 = add nsw i32 %248, 1
  store i32 %249, ptr %34, align 4, !tbaa !9
  br label %222, !llvm.loop !17

250:                                              ; preds = %222
  br label %327

251:                                              ; preds = %183
  %252 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %252, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %284, %251
  %254 = load i32, ptr %34, align 4, !tbaa !9
  %255 = load i32, ptr %29, align 4, !tbaa !9
  %256 = icmp sle i32 %254, %255
  br i1 %256, label %257, label %287

257:                                              ; preds = %253
  %258 = load ptr, ptr %15, align 8, !tbaa !5
  %259 = load i32, ptr %34, align 4, !tbaa !9
  %260 = load i32, ptr %33, align 4, !tbaa !9
  %261 = load i32, ptr %24, align 4, !tbaa !9
  %262 = mul nsw i32 %260, %261
  %263 = add nsw i32 %259, %262
  %264 = sext i32 %263 to i64
  %265 = getelementptr inbounds double, ptr %258, i64 %264
  %266 = load double, ptr %265, align 8, !tbaa !11
  %267 = load ptr, ptr %20, align 8, !tbaa !5
  %268 = load i32, ptr %34, align 4, !tbaa !9
  %269 = sext i32 %268 to i64
  %270 = getelementptr inbounds double, ptr %267, i64 %269
  %271 = load double, ptr %270, align 8, !tbaa !11
  %272 = fdiv double %266, %271
  store double %272, ptr %31, align 8, !tbaa !11
  %273 = load double, ptr %31, align 8, !tbaa !11
  %274 = fcmp oge double %273, 0.000000e+00
  br i1 %274, label %275, label %277

275:                                              ; preds = %257
  %276 = load double, ptr %31, align 8, !tbaa !11
  br label %280

277:                                              ; preds = %257
  %278 = load double, ptr %31, align 8, !tbaa !11
  %279 = fneg double %278
  br label %280

280:                                              ; preds = %277, %275
  %281 = phi double [ %276, %275 ], [ %279, %277 ]
  %282 = load double, ptr %38, align 8, !tbaa !11
  %283 = fadd double %282, %281
  store double %283, ptr %38, align 8, !tbaa !11
  br label %284

284:                                              ; preds = %280
  %285 = load i32, ptr %34, align 4, !tbaa !9
  %286 = add nsw i32 %285, 1
  store i32 %286, ptr %34, align 4, !tbaa !9
  br label %253, !llvm.loop !18

287:                                              ; preds = %253
  %288 = load ptr, ptr %14, align 8, !tbaa !5
  %289 = load i32, ptr %288, align 4, !tbaa !9
  store i32 %289, ptr %29, align 4, !tbaa !9
  %290 = load i32, ptr %33, align 4, !tbaa !9
  %291 = add nsw i32 %290, 1
  store i32 %291, ptr %34, align 4, !tbaa !9
  br label %292

292:                                              ; preds = %323, %287
  %293 = load i32, ptr %34, align 4, !tbaa !9
  %294 = load i32, ptr %29, align 4, !tbaa !9
  %295 = icmp sle i32 %293, %294
  br i1 %295, label %296, label %326

296:                                              ; preds = %292
  %297 = load ptr, ptr %15, align 8, !tbaa !5
  %298 = load i32, ptr %33, align 4, !tbaa !9
  %299 = load i32, ptr %34, align 4, !tbaa !9
  %300 = load i32, ptr %24, align 4, !tbaa !9
  %301 = mul nsw i32 %299, %300
  %302 = add nsw i32 %298, %301
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds double, ptr %297, i64 %303
  %305 = load double, ptr %304, align 8, !tbaa !11
  %306 = load ptr, ptr %20, align 8, !tbaa !5
  %307 = load i32, ptr %34, align 4, !tbaa !9
  %308 = sext i32 %307 to i64
  %309 = getelementptr inbounds double, ptr %306, i64 %308
  %310 = load double, ptr %309, align 8, !tbaa !11
  %311 = fdiv double %305, %310
  store double %311, ptr %31, align 8, !tbaa !11
  %312 = load double, ptr %31, align 8, !tbaa !11
  %313 = fcmp oge double %312, 0.000000e+00
  br i1 %313, label %314, label %316

314:                                              ; preds = %296
  %315 = load double, ptr %31, align 8, !tbaa !11
  br label %319

316:                                              ; preds = %296
  %317 = load double, ptr %31, align 8, !tbaa !11
  %318 = fneg double %317
  br label %319

319:                                              ; preds = %316, %314
  %320 = phi double [ %315, %314 ], [ %318, %316 ]
  %321 = load double, ptr %38, align 8, !tbaa !11
  %322 = fadd double %321, %320
  store double %322, ptr %38, align 8, !tbaa !11
  br label %323

323:                                              ; preds = %319
  %324 = load i32, ptr %34, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %34, align 4, !tbaa !9
  br label %292, !llvm.loop !19

326:                                              ; preds = %292
  br label %327

327:                                              ; preds = %326, %250
  br label %328

328:                                              ; preds = %327, %182
  %329 = load double, ptr %38, align 8, !tbaa !11
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = load ptr, ptr %14, align 8, !tbaa !5
  %332 = load i32, ptr %331, align 4, !tbaa !9
  %333 = shl i32 %332, 1
  %334 = load i32, ptr %33, align 4, !tbaa !9
  %335 = add nsw i32 %333, %334
  %336 = sext i32 %335 to i64
  %337 = getelementptr inbounds double, ptr %330, i64 %336
  store double %329, ptr %337, align 8, !tbaa !11
  br label %338

338:                                              ; preds = %328
  %339 = load i32, ptr %33, align 4, !tbaa !9
  %340 = add nsw i32 %339, 1
  store i32 %340, ptr %33, align 4, !tbaa !9
  br label %99, !llvm.loop !20

341:                                              ; preds = %99
  br label %588

342:                                              ; preds = %93
  %343 = load ptr, ptr %14, align 8, !tbaa !5
  %344 = load i32, ptr %343, align 4, !tbaa !9
  store i32 %344, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %345

345:                                              ; preds = %584, %342
  %346 = load i32, ptr %33, align 4, !tbaa !9
  %347 = load i32, ptr %28, align 4, !tbaa !9
  %348 = icmp sle i32 %346, %347
  br i1 %348, label %349, label %587

349:                                              ; preds = %345
  store double 0.000000e+00, ptr %38, align 8, !tbaa !11
  %350 = load ptr, ptr %19, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = icmp eq i32 %351, 1
  br i1 %352, label %353, label %429

353:                                              ; preds = %349
  %354 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %354, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %355

355:                                              ; preds = %386, %353
  %356 = load i32, ptr %34, align 4, !tbaa !9
  %357 = load i32, ptr %29, align 4, !tbaa !9
  %358 = icmp sle i32 %356, %357
  br i1 %358, label %359, label %389

359:                                              ; preds = %355
  %360 = load ptr, ptr %15, align 8, !tbaa !5
  %361 = load i32, ptr %33, align 4, !tbaa !9
  %362 = load i32, ptr %34, align 4, !tbaa !9
  %363 = load i32, ptr %24, align 4, !tbaa !9
  %364 = mul nsw i32 %362, %363
  %365 = add nsw i32 %361, %364
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds double, ptr %360, i64 %366
  %368 = load double, ptr %367, align 8, !tbaa !11
  %369 = load ptr, ptr %20, align 8, !tbaa !5
  %370 = load i32, ptr %34, align 4, !tbaa !9
  %371 = sext i32 %370 to i64
  %372 = getelementptr inbounds double, ptr %369, i64 %371
  %373 = load double, ptr %372, align 8, !tbaa !11
  %374 = fmul double %368, %373
  store double %374, ptr %31, align 8, !tbaa !11
  %375 = load double, ptr %31, align 8, !tbaa !11
  %376 = fcmp oge double %375, 0.000000e+00
  br i1 %376, label %377, label %379

377:                                              ; preds = %359
  %378 = load double, ptr %31, align 8, !tbaa !11
  br label %382

379:                                              ; preds = %359
  %380 = load double, ptr %31, align 8, !tbaa !11
  %381 = fneg double %380
  br label %382

382:                                              ; preds = %379, %377
  %383 = phi double [ %378, %377 ], [ %381, %379 ]
  %384 = load double, ptr %38, align 8, !tbaa !11
  %385 = fadd double %384, %383
  store double %385, ptr %38, align 8, !tbaa !11
  br label %386

386:                                              ; preds = %382
  %387 = load i32, ptr %34, align 4, !tbaa !9
  %388 = add nsw i32 %387, 1
  store i32 %388, ptr %34, align 4, !tbaa !9
  br label %355, !llvm.loop !21

389:                                              ; preds = %355
  %390 = load ptr, ptr %14, align 8, !tbaa !5
  %391 = load i32, ptr %390, align 4, !tbaa !9
  store i32 %391, ptr %29, align 4, !tbaa !9
  %392 = load i32, ptr %33, align 4, !tbaa !9
  %393 = add nsw i32 %392, 1
  store i32 %393, ptr %34, align 4, !tbaa !9
  br label %394

394:                                              ; preds = %425, %389
  %395 = load i32, ptr %34, align 4, !tbaa !9
  %396 = load i32, ptr %29, align 4, !tbaa !9
  %397 = icmp sle i32 %395, %396
  br i1 %397, label %398, label %428

398:                                              ; preds = %394
  %399 = load ptr, ptr %15, align 8, !tbaa !5
  %400 = load i32, ptr %34, align 4, !tbaa !9
  %401 = load i32, ptr %33, align 4, !tbaa !9
  %402 = load i32, ptr %24, align 4, !tbaa !9
  %403 = mul nsw i32 %401, %402
  %404 = add nsw i32 %400, %403
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds double, ptr %399, i64 %405
  %407 = load double, ptr %406, align 8, !tbaa !11
  %408 = load ptr, ptr %20, align 8, !tbaa !5
  %409 = load i32, ptr %34, align 4, !tbaa !9
  %410 = sext i32 %409 to i64
  %411 = getelementptr inbounds double, ptr %408, i64 %410
  %412 = load double, ptr %411, align 8, !tbaa !11
  %413 = fmul double %407, %412
  store double %413, ptr %31, align 8, !tbaa !11
  %414 = load double, ptr %31, align 8, !tbaa !11
  %415 = fcmp oge double %414, 0.000000e+00
  br i1 %415, label %416, label %418

416:                                              ; preds = %398
  %417 = load double, ptr %31, align 8, !tbaa !11
  br label %421

418:                                              ; preds = %398
  %419 = load double, ptr %31, align 8, !tbaa !11
  %420 = fneg double %419
  br label %421

421:                                              ; preds = %418, %416
  %422 = phi double [ %417, %416 ], [ %420, %418 ]
  %423 = load double, ptr %38, align 8, !tbaa !11
  %424 = fadd double %423, %422
  store double %424, ptr %38, align 8, !tbaa !11
  br label %425

425:                                              ; preds = %421
  %426 = load i32, ptr %34, align 4, !tbaa !9
  %427 = add nsw i32 %426, 1
  store i32 %427, ptr %34, align 4, !tbaa !9
  br label %394, !llvm.loop !22

428:                                              ; preds = %394
  br label %574

429:                                              ; preds = %349
  %430 = load ptr, ptr %19, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = icmp eq i32 %431, 0
  br i1 %432, label %433, label %497

433:                                              ; preds = %429
  %434 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %434, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %435

435:                                              ; preds = %460, %433
  %436 = load i32, ptr %34, align 4, !tbaa !9
  %437 = load i32, ptr %29, align 4, !tbaa !9
  %438 = icmp sle i32 %436, %437
  br i1 %438, label %439, label %463

439:                                              ; preds = %435
  %440 = load ptr, ptr %15, align 8, !tbaa !5
  %441 = load i32, ptr %33, align 4, !tbaa !9
  %442 = load i32, ptr %34, align 4, !tbaa !9
  %443 = load i32, ptr %24, align 4, !tbaa !9
  %444 = mul nsw i32 %442, %443
  %445 = add nsw i32 %441, %444
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds double, ptr %440, i64 %446
  %448 = load double, ptr %447, align 8, !tbaa !11
  store double %448, ptr %31, align 8, !tbaa !11
  %449 = load double, ptr %31, align 8, !tbaa !11
  %450 = fcmp oge double %449, 0.000000e+00
  br i1 %450, label %451, label %453

451:                                              ; preds = %439
  %452 = load double, ptr %31, align 8, !tbaa !11
  br label %456

453:                                              ; preds = %439
  %454 = load double, ptr %31, align 8, !tbaa !11
  %455 = fneg double %454
  br label %456

456:                                              ; preds = %453, %451
  %457 = phi double [ %452, %451 ], [ %455, %453 ]
  %458 = load double, ptr %38, align 8, !tbaa !11
  %459 = fadd double %458, %457
  store double %459, ptr %38, align 8, !tbaa !11
  br label %460

460:                                              ; preds = %456
  %461 = load i32, ptr %34, align 4, !tbaa !9
  %462 = add nsw i32 %461, 1
  store i32 %462, ptr %34, align 4, !tbaa !9
  br label %435, !llvm.loop !23

463:                                              ; preds = %435
  %464 = load ptr, ptr %14, align 8, !tbaa !5
  %465 = load i32, ptr %464, align 4, !tbaa !9
  store i32 %465, ptr %29, align 4, !tbaa !9
  %466 = load i32, ptr %33, align 4, !tbaa !9
  %467 = add nsw i32 %466, 1
  store i32 %467, ptr %34, align 4, !tbaa !9
  br label %468

468:                                              ; preds = %493, %463
  %469 = load i32, ptr %34, align 4, !tbaa !9
  %470 = load i32, ptr %29, align 4, !tbaa !9
  %471 = icmp sle i32 %469, %470
  br i1 %471, label %472, label %496

472:                                              ; preds = %468
  %473 = load ptr, ptr %15, align 8, !tbaa !5
  %474 = load i32, ptr %34, align 4, !tbaa !9
  %475 = load i32, ptr %33, align 4, !tbaa !9
  %476 = load i32, ptr %24, align 4, !tbaa !9
  %477 = mul nsw i32 %475, %476
  %478 = add nsw i32 %474, %477
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds double, ptr %473, i64 %479
  %481 = load double, ptr %480, align 8, !tbaa !11
  store double %481, ptr %31, align 8, !tbaa !11
  %482 = load double, ptr %31, align 8, !tbaa !11
  %483 = fcmp oge double %482, 0.000000e+00
  br i1 %483, label %484, label %486

484:                                              ; preds = %472
  %485 = load double, ptr %31, align 8, !tbaa !11
  br label %489

486:                                              ; preds = %472
  %487 = load double, ptr %31, align 8, !tbaa !11
  %488 = fneg double %487
  br label %489

489:                                              ; preds = %486, %484
  %490 = phi double [ %485, %484 ], [ %488, %486 ]
  %491 = load double, ptr %38, align 8, !tbaa !11
  %492 = fadd double %491, %490
  store double %492, ptr %38, align 8, !tbaa !11
  br label %493

493:                                              ; preds = %489
  %494 = load i32, ptr %34, align 4, !tbaa !9
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %34, align 4, !tbaa !9
  br label %468, !llvm.loop !24

496:                                              ; preds = %468
  br label %573

497:                                              ; preds = %429
  %498 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %498, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %34, align 4, !tbaa !9
  br label %499

499:                                              ; preds = %530, %497
  %500 = load i32, ptr %34, align 4, !tbaa !9
  %501 = load i32, ptr %29, align 4, !tbaa !9
  %502 = icmp sle i32 %500, %501
  br i1 %502, label %503, label %533

503:                                              ; preds = %499
  %504 = load ptr, ptr %15, align 8, !tbaa !5
  %505 = load i32, ptr %33, align 4, !tbaa !9
  %506 = load i32, ptr %34, align 4, !tbaa !9
  %507 = load i32, ptr %24, align 4, !tbaa !9
  %508 = mul nsw i32 %506, %507
  %509 = add nsw i32 %505, %508
  %510 = sext i32 %509 to i64
  %511 = getelementptr inbounds double, ptr %504, i64 %510
  %512 = load double, ptr %511, align 8, !tbaa !11
  %513 = load ptr, ptr %20, align 8, !tbaa !5
  %514 = load i32, ptr %34, align 4, !tbaa !9
  %515 = sext i32 %514 to i64
  %516 = getelementptr inbounds double, ptr %513, i64 %515
  %517 = load double, ptr %516, align 8, !tbaa !11
  %518 = fdiv double %512, %517
  store double %518, ptr %31, align 8, !tbaa !11
  %519 = load double, ptr %31, align 8, !tbaa !11
  %520 = fcmp oge double %519, 0.000000e+00
  br i1 %520, label %521, label %523

521:                                              ; preds = %503
  %522 = load double, ptr %31, align 8, !tbaa !11
  br label %526

523:                                              ; preds = %503
  %524 = load double, ptr %31, align 8, !tbaa !11
  %525 = fneg double %524
  br label %526

526:                                              ; preds = %523, %521
  %527 = phi double [ %522, %521 ], [ %525, %523 ]
  %528 = load double, ptr %38, align 8, !tbaa !11
  %529 = fadd double %528, %527
  store double %529, ptr %38, align 8, !tbaa !11
  br label %530

530:                                              ; preds = %526
  %531 = load i32, ptr %34, align 4, !tbaa !9
  %532 = add nsw i32 %531, 1
  store i32 %532, ptr %34, align 4, !tbaa !9
  br label %499, !llvm.loop !25

533:                                              ; preds = %499
  %534 = load ptr, ptr %14, align 8, !tbaa !5
  %535 = load i32, ptr %534, align 4, !tbaa !9
  store i32 %535, ptr %29, align 4, !tbaa !9
  %536 = load i32, ptr %33, align 4, !tbaa !9
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %34, align 4, !tbaa !9
  br label %538

538:                                              ; preds = %569, %533
  %539 = load i32, ptr %34, align 4, !tbaa !9
  %540 = load i32, ptr %29, align 4, !tbaa !9
  %541 = icmp sle i32 %539, %540
  br i1 %541, label %542, label %572

542:                                              ; preds = %538
  %543 = load ptr, ptr %15, align 8, !tbaa !5
  %544 = load i32, ptr %34, align 4, !tbaa !9
  %545 = load i32, ptr %33, align 4, !tbaa !9
  %546 = load i32, ptr %24, align 4, !tbaa !9
  %547 = mul nsw i32 %545, %546
  %548 = add nsw i32 %544, %547
  %549 = sext i32 %548 to i64
  %550 = getelementptr inbounds double, ptr %543, i64 %549
  %551 = load double, ptr %550, align 8, !tbaa !11
  %552 = load ptr, ptr %20, align 8, !tbaa !5
  %553 = load i32, ptr %34, align 4, !tbaa !9
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds double, ptr %552, i64 %554
  %556 = load double, ptr %555, align 8, !tbaa !11
  %557 = fdiv double %551, %556
  store double %557, ptr %31, align 8, !tbaa !11
  %558 = load double, ptr %31, align 8, !tbaa !11
  %559 = fcmp oge double %558, 0.000000e+00
  br i1 %559, label %560, label %562

560:                                              ; preds = %542
  %561 = load double, ptr %31, align 8, !tbaa !11
  br label %565

562:                                              ; preds = %542
  %563 = load double, ptr %31, align 8, !tbaa !11
  %564 = fneg double %563
  br label %565

565:                                              ; preds = %562, %560
  %566 = phi double [ %561, %560 ], [ %564, %562 ]
  %567 = load double, ptr %38, align 8, !tbaa !11
  %568 = fadd double %567, %566
  store double %568, ptr %38, align 8, !tbaa !11
  br label %569

569:                                              ; preds = %565
  %570 = load i32, ptr %34, align 4, !tbaa !9
  %571 = add nsw i32 %570, 1
  store i32 %571, ptr %34, align 4, !tbaa !9
  br label %538, !llvm.loop !26

572:                                              ; preds = %538
  br label %573

573:                                              ; preds = %572, %496
  br label %574

574:                                              ; preds = %573, %428
  %575 = load double, ptr %38, align 8, !tbaa !11
  %576 = load ptr, ptr %22, align 8, !tbaa !5
  %577 = load ptr, ptr %14, align 8, !tbaa !5
  %578 = load i32, ptr %577, align 4, !tbaa !9
  %579 = shl i32 %578, 1
  %580 = load i32, ptr %33, align 4, !tbaa !9
  %581 = add nsw i32 %579, %580
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds double, ptr %576, i64 %582
  store double %575, ptr %583, align 8, !tbaa !11
  br label %584

584:                                              ; preds = %574
  %585 = load i32, ptr %33, align 4, !tbaa !9
  %586 = add nsw i32 %585, 1
  store i32 %586, ptr %33, align 4, !tbaa !9
  br label %345, !llvm.loop !27

587:                                              ; preds = %345
  br label %588

588:                                              ; preds = %587, %341
  store double 0.000000e+00, ptr %37, align 8, !tbaa !11
  store i32 0, ptr %32, align 4, !tbaa !9
  br label %589

589:                                              ; preds = %821, %588
  %590 = load ptr, ptr %14, align 8, !tbaa !5
  %591 = load ptr, ptr %22, align 8, !tbaa !5
  %592 = load ptr, ptr %14, align 8, !tbaa !5
  %593 = load i32, ptr %592, align 4, !tbaa !9
  %594 = add nsw i32 %593, 1
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds double, ptr %591, i64 %595
  %597 = load ptr, ptr %22, align 8, !tbaa !5
  %598 = getelementptr inbounds double, ptr %597, i64 1
  %599 = load ptr, ptr %23, align 8, !tbaa !5
  %600 = getelementptr inbounds i32, ptr %599, i64 1
  %601 = getelementptr inbounds [3 x i32], ptr %35, i64 0, i64 0
  call void @dlacn2_(ptr noundef %590, ptr noundef %596, ptr noundef %598, ptr noundef %600, ptr noundef %37, ptr noundef %32, ptr noundef %601)
  %602 = load i32, ptr %32, align 4, !tbaa !9
  %603 = icmp ne i32 %602, 0
  br i1 %603, label %604, label %822

604:                                              ; preds = %589
  %605 = load i32, ptr %32, align 4, !tbaa !9
  %606 = icmp eq i32 %605, 2
  br i1 %606, label %607, label %714

607:                                              ; preds = %604
  %608 = load ptr, ptr %14, align 8, !tbaa !5
  %609 = load i32, ptr %608, align 4, !tbaa !9
  store i32 %609, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %610

610:                                              ; preds = %630, %607
  %611 = load i32, ptr %33, align 4, !tbaa !9
  %612 = load i32, ptr %28, align 4, !tbaa !9
  %613 = icmp sle i32 %611, %612
  br i1 %613, label %614, label %633

614:                                              ; preds = %610
  %615 = load ptr, ptr %22, align 8, !tbaa !5
  %616 = load ptr, ptr %14, align 8, !tbaa !5
  %617 = load i32, ptr %616, align 4, !tbaa !9
  %618 = shl i32 %617, 1
  %619 = load i32, ptr %33, align 4, !tbaa !9
  %620 = add nsw i32 %618, %619
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds double, ptr %615, i64 %621
  %623 = load double, ptr %622, align 8, !tbaa !11
  %624 = load ptr, ptr %22, align 8, !tbaa !5
  %625 = load i32, ptr %33, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds double, ptr %624, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = fmul double %628, %623
  store double %629, ptr %627, align 8, !tbaa !11
  br label %630

630:                                              ; preds = %614
  %631 = load i32, ptr %33, align 4, !tbaa !9
  %632 = add nsw i32 %631, 1
  store i32 %632, ptr %33, align 4, !tbaa !9
  br label %610, !llvm.loop !28

633:                                              ; preds = %610
  %634 = load i32, ptr %36, align 4, !tbaa !9
  %635 = icmp ne i32 %634, 0
  br i1 %635, label %636, label %647

636:                                              ; preds = %633
  %637 = load ptr, ptr %14, align 8, !tbaa !5
  %638 = load ptr, ptr %17, align 8, !tbaa !5
  %639 = load i32, ptr %27, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds double, ptr %638, i64 %640
  %642 = load ptr, ptr %18, align 8, !tbaa !5
  %643 = load ptr, ptr %22, align 8, !tbaa !5
  %644 = getelementptr inbounds double, ptr %643, i64 1
  %645 = load ptr, ptr %14, align 8, !tbaa !5
  %646 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dpotrs_(ptr noundef @.str.2, ptr noundef %637, ptr noundef @c__1, ptr noundef %641, ptr noundef %642, ptr noundef %644, ptr noundef %645, ptr noundef %646)
  br label %658

647:                                              ; preds = %633
  %648 = load ptr, ptr %14, align 8, !tbaa !5
  %649 = load ptr, ptr %17, align 8, !tbaa !5
  %650 = load i32, ptr %27, align 4, !tbaa !9
  %651 = sext i32 %650 to i64
  %652 = getelementptr inbounds double, ptr %649, i64 %651
  %653 = load ptr, ptr %18, align 8, !tbaa !5
  %654 = load ptr, ptr %22, align 8, !tbaa !5
  %655 = getelementptr inbounds double, ptr %654, i64 1
  %656 = load ptr, ptr %14, align 8, !tbaa !5
  %657 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dpotrs_(ptr noundef @.str.3, ptr noundef %648, ptr noundef @c__1, ptr noundef %652, ptr noundef %653, ptr noundef %655, ptr noundef %656, ptr noundef %657)
  br label %658

658:                                              ; preds = %647, %636
  %659 = load ptr, ptr %19, align 8, !tbaa !5
  %660 = load i32, ptr %659, align 4, !tbaa !9
  %661 = icmp eq i32 %660, 1
  br i1 %661, label %662, label %685

662:                                              ; preds = %658
  %663 = load ptr, ptr %14, align 8, !tbaa !5
  %664 = load i32, ptr %663, align 4, !tbaa !9
  store i32 %664, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %665

665:                                              ; preds = %681, %662
  %666 = load i32, ptr %33, align 4, !tbaa !9
  %667 = load i32, ptr %28, align 4, !tbaa !9
  %668 = icmp sle i32 %666, %667
  br i1 %668, label %669, label %684

669:                                              ; preds = %665
  %670 = load ptr, ptr %20, align 8, !tbaa !5
  %671 = load i32, ptr %33, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds double, ptr %670, i64 %672
  %674 = load double, ptr %673, align 8, !tbaa !11
  %675 = load ptr, ptr %22, align 8, !tbaa !5
  %676 = load i32, ptr %33, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds double, ptr %675, i64 %677
  %679 = load double, ptr %678, align 8, !tbaa !11
  %680 = fdiv double %679, %674
  store double %680, ptr %678, align 8, !tbaa !11
  br label %681

681:                                              ; preds = %669
  %682 = load i32, ptr %33, align 4, !tbaa !9
  %683 = add nsw i32 %682, 1
  store i32 %683, ptr %33, align 4, !tbaa !9
  br label %665, !llvm.loop !29

684:                                              ; preds = %665
  br label %713

685:                                              ; preds = %658
  %686 = load ptr, ptr %19, align 8, !tbaa !5
  %687 = load i32, ptr %686, align 4, !tbaa !9
  %688 = icmp eq i32 %687, -1
  br i1 %688, label %689, label %712

689:                                              ; preds = %685
  %690 = load ptr, ptr %14, align 8, !tbaa !5
  %691 = load i32, ptr %690, align 4, !tbaa !9
  store i32 %691, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %692

692:                                              ; preds = %708, %689
  %693 = load i32, ptr %33, align 4, !tbaa !9
  %694 = load i32, ptr %28, align 4, !tbaa !9
  %695 = icmp sle i32 %693, %694
  br i1 %695, label %696, label %711

696:                                              ; preds = %692
  %697 = load ptr, ptr %20, align 8, !tbaa !5
  %698 = load i32, ptr %33, align 4, !tbaa !9
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds double, ptr %697, i64 %699
  %701 = load double, ptr %700, align 8, !tbaa !11
  %702 = load ptr, ptr %22, align 8, !tbaa !5
  %703 = load i32, ptr %33, align 4, !tbaa !9
  %704 = sext i32 %703 to i64
  %705 = getelementptr inbounds double, ptr %702, i64 %704
  %706 = load double, ptr %705, align 8, !tbaa !11
  %707 = fmul double %706, %701
  store double %707, ptr %705, align 8, !tbaa !11
  br label %708

708:                                              ; preds = %696
  %709 = load i32, ptr %33, align 4, !tbaa !9
  %710 = add nsw i32 %709, 1
  store i32 %710, ptr %33, align 4, !tbaa !9
  br label %692, !llvm.loop !30

711:                                              ; preds = %692
  br label %712

712:                                              ; preds = %711, %685
  br label %713

713:                                              ; preds = %712, %684
  br label %821

714:                                              ; preds = %604
  %715 = load ptr, ptr %19, align 8, !tbaa !5
  %716 = load i32, ptr %715, align 4, !tbaa !9
  %717 = icmp eq i32 %716, 1
  br i1 %717, label %718, label %741

718:                                              ; preds = %714
  %719 = load ptr, ptr %14, align 8, !tbaa !5
  %720 = load i32, ptr %719, align 4, !tbaa !9
  store i32 %720, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %721

721:                                              ; preds = %737, %718
  %722 = load i32, ptr %33, align 4, !tbaa !9
  %723 = load i32, ptr %28, align 4, !tbaa !9
  %724 = icmp sle i32 %722, %723
  br i1 %724, label %725, label %740

725:                                              ; preds = %721
  %726 = load ptr, ptr %20, align 8, !tbaa !5
  %727 = load i32, ptr %33, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds double, ptr %726, i64 %728
  %730 = load double, ptr %729, align 8, !tbaa !11
  %731 = load ptr, ptr %22, align 8, !tbaa !5
  %732 = load i32, ptr %33, align 4, !tbaa !9
  %733 = sext i32 %732 to i64
  %734 = getelementptr inbounds double, ptr %731, i64 %733
  %735 = load double, ptr %734, align 8, !tbaa !11
  %736 = fdiv double %735, %730
  store double %736, ptr %734, align 8, !tbaa !11
  br label %737

737:                                              ; preds = %725
  %738 = load i32, ptr %33, align 4, !tbaa !9
  %739 = add nsw i32 %738, 1
  store i32 %739, ptr %33, align 4, !tbaa !9
  br label %721, !llvm.loop !31

740:                                              ; preds = %721
  br label %769

741:                                              ; preds = %714
  %742 = load ptr, ptr %19, align 8, !tbaa !5
  %743 = load i32, ptr %742, align 4, !tbaa !9
  %744 = icmp eq i32 %743, -1
  br i1 %744, label %745, label %768

745:                                              ; preds = %741
  %746 = load ptr, ptr %14, align 8, !tbaa !5
  %747 = load i32, ptr %746, align 4, !tbaa !9
  store i32 %747, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %748

748:                                              ; preds = %764, %745
  %749 = load i32, ptr %33, align 4, !tbaa !9
  %750 = load i32, ptr %28, align 4, !tbaa !9
  %751 = icmp sle i32 %749, %750
  br i1 %751, label %752, label %767

752:                                              ; preds = %748
  %753 = load ptr, ptr %20, align 8, !tbaa !5
  %754 = load i32, ptr %33, align 4, !tbaa !9
  %755 = sext i32 %754 to i64
  %756 = getelementptr inbounds double, ptr %753, i64 %755
  %757 = load double, ptr %756, align 8, !tbaa !11
  %758 = load ptr, ptr %22, align 8, !tbaa !5
  %759 = load i32, ptr %33, align 4, !tbaa !9
  %760 = sext i32 %759 to i64
  %761 = getelementptr inbounds double, ptr %758, i64 %760
  %762 = load double, ptr %761, align 8, !tbaa !11
  %763 = fmul double %762, %757
  store double %763, ptr %761, align 8, !tbaa !11
  br label %764

764:                                              ; preds = %752
  %765 = load i32, ptr %33, align 4, !tbaa !9
  %766 = add nsw i32 %765, 1
  store i32 %766, ptr %33, align 4, !tbaa !9
  br label %748, !llvm.loop !32

767:                                              ; preds = %748
  br label %768

768:                                              ; preds = %767, %741
  br label %769

769:                                              ; preds = %768, %740
  %770 = load i32, ptr %36, align 4, !tbaa !9
  %771 = icmp ne i32 %770, 0
  br i1 %771, label %772, label %783

772:                                              ; preds = %769
  %773 = load ptr, ptr %14, align 8, !tbaa !5
  %774 = load ptr, ptr %17, align 8, !tbaa !5
  %775 = load i32, ptr %27, align 4, !tbaa !9
  %776 = sext i32 %775 to i64
  %777 = getelementptr inbounds double, ptr %774, i64 %776
  %778 = load ptr, ptr %18, align 8, !tbaa !5
  %779 = load ptr, ptr %22, align 8, !tbaa !5
  %780 = getelementptr inbounds double, ptr %779, i64 1
  %781 = load ptr, ptr %14, align 8, !tbaa !5
  %782 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dpotrs_(ptr noundef @.str.2, ptr noundef %773, ptr noundef @c__1, ptr noundef %777, ptr noundef %778, ptr noundef %780, ptr noundef %781, ptr noundef %782)
  br label %794

783:                                              ; preds = %769
  %784 = load ptr, ptr %14, align 8, !tbaa !5
  %785 = load ptr, ptr %17, align 8, !tbaa !5
  %786 = load i32, ptr %27, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds double, ptr %785, i64 %787
  %789 = load ptr, ptr %18, align 8, !tbaa !5
  %790 = load ptr, ptr %22, align 8, !tbaa !5
  %791 = getelementptr inbounds double, ptr %790, i64 1
  %792 = load ptr, ptr %14, align 8, !tbaa !5
  %793 = load ptr, ptr %21, align 8, !tbaa !5
  call void @dpotrs_(ptr noundef @.str.3, ptr noundef %784, ptr noundef @c__1, ptr noundef %788, ptr noundef %789, ptr noundef %791, ptr noundef %792, ptr noundef %793)
  br label %794

794:                                              ; preds = %783, %772
  %795 = load ptr, ptr %14, align 8, !tbaa !5
  %796 = load i32, ptr %795, align 4, !tbaa !9
  store i32 %796, ptr %28, align 4, !tbaa !9
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %797

797:                                              ; preds = %817, %794
  %798 = load i32, ptr %33, align 4, !tbaa !9
  %799 = load i32, ptr %28, align 4, !tbaa !9
  %800 = icmp sle i32 %798, %799
  br i1 %800, label %801, label %820

801:                                              ; preds = %797
  %802 = load ptr, ptr %22, align 8, !tbaa !5
  %803 = load ptr, ptr %14, align 8, !tbaa !5
  %804 = load i32, ptr %803, align 4, !tbaa !9
  %805 = shl i32 %804, 1
  %806 = load i32, ptr %33, align 4, !tbaa !9
  %807 = add nsw i32 %805, %806
  %808 = sext i32 %807 to i64
  %809 = getelementptr inbounds double, ptr %802, i64 %808
  %810 = load double, ptr %809, align 8, !tbaa !11
  %811 = load ptr, ptr %22, align 8, !tbaa !5
  %812 = load i32, ptr %33, align 4, !tbaa !9
  %813 = sext i32 %812 to i64
  %814 = getelementptr inbounds double, ptr %811, i64 %813
  %815 = load double, ptr %814, align 8, !tbaa !11
  %816 = fmul double %815, %810
  store double %816, ptr %814, align 8, !tbaa !11
  br label %817

817:                                              ; preds = %801
  %818 = load i32, ptr %33, align 4, !tbaa !9
  %819 = add nsw i32 %818, 1
  store i32 %819, ptr %33, align 4, !tbaa !9
  br label %797, !llvm.loop !33

820:                                              ; preds = %797
  br label %821

821:                                              ; preds = %820, %713
  br label %589

822:                                              ; preds = %589
  %823 = load double, ptr %37, align 8, !tbaa !11
  %824 = fcmp une double %823, 0.000000e+00
  br i1 %824, label %825, label %828

825:                                              ; preds = %822
  %826 = load double, ptr %37, align 8, !tbaa !11
  %827 = fdiv double 1.000000e+00, %826
  store double %827, ptr %30, align 8, !tbaa !11
  br label %828

828:                                              ; preds = %825, %822
  %829 = load double, ptr %30, align 8, !tbaa !11
  store double %829, ptr %12, align 8
  store i32 1, ptr %39, align 4
  br label %830

830:                                              ; preds = %828, %86, %76
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 12, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #3
  %831 = load double, ptr %12, align 8
  ret double %831
}

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

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

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

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

@.str = external hidden unnamed_addr constant [12 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [6 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local double @dla_porcond_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr nocapture noundef readonly %7, ptr noundef %8, ptr noundef %9, ptr noundef %10) local_unnamed_addr #0 {
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca [3 x i32], align 4
  %15 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #3
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #3
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %14) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #3
  %16 = load i32, ptr %3, align 4, !tbaa !5
  %narrow = xor i32 %16, -1
  %17 = sext i32 %narrow to i64
  %18 = getelementptr inbounds double, ptr %2, i64 %17
  %19 = getelementptr inbounds i8, ptr %7, i64 -8
  %20 = getelementptr inbounds i8, ptr %9, i64 -8
  store i32 0, ptr %8, align 4, !tbaa !5
  %21 = load i32, ptr %1, align 4, !tbaa !5
  %22 = icmp sgt i32 %21, -1
  %spec.store.select = select i1 %22, i32 0, i32 -2
  store i32 %spec.store.select, ptr %8, align 4
  br i1 %22, label %25, label %23

23:                                               ; preds = %11
  store i32 2, ptr %12, align 4, !tbaa !5
  %24 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %12, i32 noundef 11) #3
  br label %506

25:                                               ; preds = %11
  %26 = load i32, ptr %1, align 4, !tbaa !5
  %27 = icmp eq i32 %26, 0
  br i1 %27, label %506, label %28

28:                                               ; preds = %25
  %29 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #3
  %.not319 = icmp eq i32 %29, 0
  %30 = load i32, ptr %1, align 4, !tbaa !5
  %.not321412 = icmp slt i32 %30, 1
  br i1 %.not319, label %140, label %31

31:                                               ; preds = %28
  br i1 %.not321412, label %.loopexit354, label %.lr.ph387

.lr.ph387:                                        ; preds = %31
  %32 = load i32, ptr %6, align 4, !tbaa !5
  %33 = shl nuw i32 %30, 1
  %34 = sext i32 %16 to i64
  %35 = zext nneg i32 %30 to i64
  %36 = sext i32 %33 to i64
  %37 = add nuw i32 %30, 2
  %wide.trip.count519 = zext i32 %37 to i64
  %wide.trip.count512 = zext nneg i32 %30 to i64
  %invariant.gep645 = getelementptr double, ptr %20, i64 %36
  switch i32 %32, label %.preheader357 [
    i32 1, label %.preheader360.us
    i32 0, label %.preheader363.us
  ]

.preheader360.us:                                 ; preds = %.lr.ph387, %.loopexit359.us
  %indvar842 = phi i64 [ %indvar.next843, %.loopexit359.us ], [ 0, %.lr.ph387 ]
  %indvars.iv494 = phi i64 [ %indvars.iv.next495, %.loopexit359.us ], [ 2, %.lr.ph387 ]
  %indvars.iv487 = phi i64 [ %indvars.iv.next488, %.loopexit359.us ], [ 1, %.lr.ph387 ]
  %38 = mul nsw i64 %indvars.iv487, %34
  %invariant.gep635 = getelementptr double, ptr %18, i64 %38
  %39 = icmp eq i64 %indvar842, 0
  br i1 %39, label %.preheader358.us.unr-lcssa, label %.preheader360.us.new

.preheader360.us.new:                             ; preds = %.preheader360.us
  %40 = add i64 %indvar842, 1
  %unroll_iter847 = and i64 %40, -2
  %invariant.gep912 = getelementptr i8, ptr %invariant.gep635, i64 8
  br label %41

41:                                               ; preds = %41, %.preheader360.us.new
  %indvars.iv481 = phi i64 [ 1, %.preheader360.us.new ], [ %indvars.iv.next482.1, %41 ]
  %.0371.us = phi double [ 0.000000e+00, %.preheader360.us.new ], [ %57, %41 ]
  %niter848 = phi i64 [ 0, %.preheader360.us.new ], [ %niter848.next.1, %41 ]
  %gep636 = getelementptr double, ptr %invariant.gep635, i64 %indvars.iv481
  %42 = load double, ptr %gep636, align 8, !tbaa !9
  %43 = getelementptr inbounds double, ptr %19, i64 %indvars.iv481
  %44 = load double, ptr %43, align 8, !tbaa !9
  %45 = fmul double %42, %44
  %46 = fcmp oge double %45, 0.000000e+00
  %47 = fneg double %45
  %48 = select i1 %46, double %45, double %47
  %49 = fadd double %.0371.us, %48
  %gep913 = getelementptr double, ptr %invariant.gep912, i64 %indvars.iv481
  %50 = load double, ptr %gep913, align 8, !tbaa !9
  %51 = getelementptr double, ptr %7, i64 %indvars.iv481
  %52 = load double, ptr %51, align 8, !tbaa !9
  %53 = fmul double %50, %52
  %54 = fcmp oge double %53, 0.000000e+00
  %55 = fneg double %53
  %56 = select i1 %54, double %53, double %55
  %57 = fadd double %49, %56
  %indvars.iv.next482.1 = add nuw nsw i64 %indvars.iv481, 2
  %niter848.next.1 = add i64 %niter848, 2
  %niter848.ncmp.1 = icmp eq i64 %niter848.next.1, %unroll_iter847
  br i1 %niter848.ncmp.1, label %.preheader358.us.unr-lcssa, label %41, !llvm.loop !11

.lr.ph375.us:                                     ; preds = %.lr.ph375.us.preheader, %.lr.ph375.us
  %indvars.iv489 = phi i64 [ %indvars.iv487, %.lr.ph375.us.preheader ], [ %indvars.iv.next490, %.lr.ph375.us ]
  %.1374.us = phi double [ %.lcssa835, %.lr.ph375.us.preheader ], [ %66, %.lr.ph375.us ]
  %indvars.iv.next490 = add nuw nsw i64 %indvars.iv489, 1
  %58 = mul nsw i64 %indvars.iv.next490, %34
  %gep638 = getelementptr double, ptr %invariant.gep637, i64 %58
  %59 = load double, ptr %gep638, align 8, !tbaa !9
  %60 = getelementptr double, ptr %7, i64 %indvars.iv489
  %61 = load double, ptr %60, align 8, !tbaa !9
  %62 = fmul double %59, %61
  %63 = fcmp oge double %62, 0.000000e+00
  %64 = fneg double %62
  %65 = select i1 %63, double %62, double %64
  %66 = fadd double %.1374.us, %65
  %exitcond493.not = icmp eq i64 %indvars.iv.next490, %wide.trip.count512
  br i1 %exitcond493.not, label %.loopexit359.us, label %.lr.ph375.us, !llvm.loop !13

.preheader358.us.unr-lcssa:                       ; preds = %41, %.preheader360.us
  %.lcssa835.ph = phi double [ poison, %.preheader360.us ], [ %57, %41 ]
  %indvars.iv481.unr = phi i64 [ 1, %.preheader360.us ], [ %indvars.iv.next482.1, %41 ]
  %.0371.us.unr = phi double [ 0.000000e+00, %.preheader360.us ], [ %57, %41 ]
  %67 = and i64 %indvar842, 1
  %lcmp.mod845.not.not = icmp eq i64 %67, 0
  br i1 %lcmp.mod845.not.not, label %.preheader358.us.epilog-lcssa, label %.preheader358.us

.preheader358.us.epilog-lcssa:                    ; preds = %.preheader358.us.unr-lcssa
  %gep636.epil = getelementptr double, ptr %invariant.gep635, i64 %indvars.iv481.unr
  %68 = load double, ptr %gep636.epil, align 8, !tbaa !9
  %69 = getelementptr inbounds double, ptr %19, i64 %indvars.iv481.unr
  %70 = load double, ptr %69, align 8, !tbaa !9
  %71 = fmul double %68, %70
  %72 = fcmp oge double %71, 0.000000e+00
  %73 = fneg double %71
  %74 = select i1 %72, double %71, double %73
  %75 = fadd double %.0371.us.unr, %74
  br label %.preheader358.us

.preheader358.us:                                 ; preds = %.preheader358.us.unr-lcssa, %.preheader358.us.epilog-lcssa
  %.lcssa835 = phi double [ %.lcssa835.ph, %.preheader358.us.unr-lcssa ], [ %75, %.preheader358.us.epilog-lcssa ]
  %.not341.not372.us = icmp ult i64 %indvars.iv487, %35
  br i1 %.not341.not372.us, label %.lr.ph375.us.preheader, label %.loopexit359.us

.lr.ph375.us.preheader:                           ; preds = %.preheader358.us
  %invariant.gep637 = getelementptr double, ptr %18, i64 %indvars.iv487
  br label %.lr.ph375.us

.loopexit359.us:                                  ; preds = %.lr.ph375.us, %.preheader358.us
  %.1.lcssa.us = phi double [ %.lcssa835, %.preheader358.us ], [ %66, %.lr.ph375.us ]
  %gep640 = getelementptr double, ptr %invariant.gep645, i64 %indvars.iv487
  store double %.1.lcssa.us, ptr %gep640, align 8, !tbaa !9
  %indvars.iv.next488 = add nuw nsw i64 %indvars.iv487, 1
  %indvars.iv.next495 = add nuw nsw i64 %indvars.iv494, 1
  %exitcond500.not = icmp eq i64 %indvars.iv.next495, %wide.trip.count519
  %indvar.next843 = add i64 %indvar842, 1
  br i1 %exitcond500.not, label %.loopexit354, label %.preheader360.us, !llvm.loop !14

.preheader363.us:                                 ; preds = %.lr.ph387, %.loopexit362.us
  %indvar = phi i64 [ %indvar.next, %.loopexit362.us ], [ 0, %.lr.ph387 ]
  %indvars.iv474 = phi i64 [ %indvars.iv.next475, %.loopexit362.us ], [ 2, %.lr.ph387 ]
  %indvars.iv467 = phi i64 [ %indvars.iv.next468, %.loopexit362.us ], [ 1, %.lr.ph387 ]
  %76 = mul nsw i64 %indvars.iv467, %34
  %invariant.gep = getelementptr double, ptr %18, i64 %76
  %77 = icmp eq i64 %indvar, 0
  br i1 %77, label %.preheader361.us.unr-lcssa, label %.preheader363.us.new

.preheader363.us.new:                             ; preds = %.preheader363.us
  %78 = add i64 %indvar, 1
  %unroll_iter = and i64 %78, -2
  %invariant.gep910 = getelementptr i8, ptr %invariant.gep, i64 8
  br label %79

79:                                               ; preds = %79, %.preheader363.us.new
  %indvars.iv = phi i64 [ 1, %.preheader363.us.new ], [ %indvars.iv.next.1, %79 ]
  %.2366.us = phi double [ 0.000000e+00, %.preheader363.us.new ], [ %89, %79 ]
  %niter = phi i64 [ 0, %.preheader363.us.new ], [ %niter.next.1, %79 ]
  %gep630 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %80 = load double, ptr %gep630, align 8, !tbaa !9
  %81 = fcmp oge double %80, 0.000000e+00
  %82 = fneg double %80
  %83 = select i1 %81, double %80, double %82
  %84 = fadd double %.2366.us, %83
  %gep911 = getelementptr double, ptr %invariant.gep910, i64 %indvars.iv
  %85 = load double, ptr %gep911, align 8, !tbaa !9
  %86 = fcmp oge double %85, 0.000000e+00
  %87 = fneg double %85
  %88 = select i1 %86, double %85, double %87
  %89 = fadd double %84, %88
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %.preheader361.us.unr-lcssa, label %79, !llvm.loop !15

.lr.ph.us:                                        ; preds = %.lr.ph.us.preheader, %.lr.ph.us
  %indvars.iv469 = phi i64 [ %indvars.iv467, %.lr.ph.us.preheader ], [ %indvars.iv.next470, %.lr.ph.us ]
  %.3369.us = phi double [ %.lcssa838, %.lr.ph.us.preheader ], [ %95, %.lr.ph.us ]
  %indvars.iv.next470 = add nuw nsw i64 %indvars.iv469, 1
  %90 = mul nsw i64 %indvars.iv.next470, %34
  %gep632 = getelementptr double, ptr %invariant.gep631, i64 %90
  %91 = load double, ptr %gep632, align 8, !tbaa !9
  %92 = fcmp oge double %91, 0.000000e+00
  %93 = fneg double %91
  %94 = select i1 %92, double %91, double %93
  %95 = fadd double %.3369.us, %94
  %exitcond473.not = icmp eq i64 %indvars.iv.next470, %wide.trip.count512
  br i1 %exitcond473.not, label %.loopexit362.us, label %.lr.ph.us, !llvm.loop !16

.preheader361.us.unr-lcssa:                       ; preds = %79, %.preheader363.us
  %.lcssa838.ph = phi double [ poison, %.preheader363.us ], [ %89, %79 ]
  %indvars.iv.unr = phi i64 [ 1, %.preheader363.us ], [ %indvars.iv.next.1, %79 ]
  %.2366.us.unr = phi double [ 0.000000e+00, %.preheader363.us ], [ %89, %79 ]
  %96 = and i64 %indvar, 1
  %lcmp.mod.not.not = icmp eq i64 %96, 0
  br i1 %lcmp.mod.not.not, label %.preheader361.us.epilog-lcssa, label %.preheader361.us

.preheader361.us.epilog-lcssa:                    ; preds = %.preheader361.us.unr-lcssa
  %gep630.epil = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.unr
  %97 = load double, ptr %gep630.epil, align 8, !tbaa !9
  %98 = fcmp oge double %97, 0.000000e+00
  %99 = fneg double %97
  %100 = select i1 %98, double %97, double %99
  %101 = fadd double %.2366.us.unr, %100
  br label %.preheader361.us

.preheader361.us:                                 ; preds = %.preheader361.us.unr-lcssa, %.preheader361.us.epilog-lcssa
  %.lcssa838 = phi double [ %.lcssa838.ph, %.preheader361.us.unr-lcssa ], [ %101, %.preheader361.us.epilog-lcssa ]
  %.not339.not367.us = icmp ult i64 %indvars.iv467, %35
  br i1 %.not339.not367.us, label %.lr.ph.us.preheader, label %.loopexit362.us

.lr.ph.us.preheader:                              ; preds = %.preheader361.us
  %invariant.gep631 = getelementptr double, ptr %18, i64 %indvars.iv467
  br label %.lr.ph.us

.loopexit362.us:                                  ; preds = %.lr.ph.us, %.preheader361.us
  %.3.lcssa.us = phi double [ %.lcssa838, %.preheader361.us ], [ %95, %.lr.ph.us ]
  %gep634 = getelementptr double, ptr %invariant.gep645, i64 %indvars.iv467
  store double %.3.lcssa.us, ptr %gep634, align 8, !tbaa !9
  %indvars.iv.next468 = add nuw nsw i64 %indvars.iv467, 1
  %indvars.iv.next475 = add nuw nsw i64 %indvars.iv474, 1
  %exitcond480.not = icmp eq i64 %indvars.iv.next475, %wide.trip.count519
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond480.not, label %.loopexit354, label %.preheader363.us, !llvm.loop !14

.preheader357:                                    ; preds = %.lr.ph387, %.loopexit356
  %indvar850 = phi i64 [ %indvar.next851, %.loopexit356 ], [ 0, %.lr.ph387 ]
  %indvars.iv514 = phi i64 [ %indvars.iv.next515, %.loopexit356 ], [ 2, %.lr.ph387 ]
  %indvars.iv507 = phi i64 [ %indvars.iv.next508, %.loopexit356 ], [ 1, %.lr.ph387 ]
  %102 = mul nsw i64 %indvars.iv507, %34
  %invariant.gep641 = getelementptr double, ptr %18, i64 %102
  %103 = icmp eq i64 %indvar850, 0
  br i1 %103, label %.preheader355.unr-lcssa, label %.preheader357.new

.preheader357.new:                                ; preds = %.preheader357
  %104 = add i64 %indvar850, 1
  %unroll_iter855 = and i64 %104, -2
  %invariant.gep914 = getelementptr i8, ptr %invariant.gep641, i64 8
  br label %114

.preheader355.unr-lcssa:                          ; preds = %114, %.preheader357
  %.lcssa832.ph = phi double [ poison, %.preheader357 ], [ %130, %114 ]
  %indvars.iv501.unr = phi i64 [ 1, %.preheader357 ], [ %indvars.iv.next502.1, %114 ]
  %.4378.unr = phi double [ 0.000000e+00, %.preheader357 ], [ %130, %114 ]
  %105 = and i64 %indvar850, 1
  %lcmp.mod853.not.not = icmp eq i64 %105, 0
  br i1 %lcmp.mod853.not.not, label %.preheader355.epilog-lcssa, label %.preheader355

.preheader355.epilog-lcssa:                       ; preds = %.preheader355.unr-lcssa
  %gep642.epil = getelementptr double, ptr %invariant.gep641, i64 %indvars.iv501.unr
  %106 = load double, ptr %gep642.epil, align 8, !tbaa !9
  %107 = getelementptr inbounds double, ptr %19, i64 %indvars.iv501.unr
  %108 = load double, ptr %107, align 8, !tbaa !9
  %109 = fdiv double %106, %108
  %110 = fcmp oge double %109, 0.000000e+00
  %111 = fneg double %109
  %112 = select i1 %110, double %109, double %111
  %113 = fadd double %.4378.unr, %112
  br label %.preheader355

.preheader355:                                    ; preds = %.preheader355.unr-lcssa, %.preheader355.epilog-lcssa
  %.lcssa832 = phi double [ %.lcssa832.ph, %.preheader355.unr-lcssa ], [ %113, %.preheader355.epilog-lcssa ]
  %.not337.not379 = icmp ult i64 %indvars.iv507, %35
  br i1 %.not337.not379, label %.lr.ph382.preheader, label %.loopexit356

.lr.ph382.preheader:                              ; preds = %.preheader355
  %invariant.gep643 = getelementptr double, ptr %18, i64 %indvars.iv507
  br label %.lr.ph382

114:                                              ; preds = %114, %.preheader357.new
  %indvars.iv501 = phi i64 [ 1, %.preheader357.new ], [ %indvars.iv.next502.1, %114 ]
  %.4378 = phi double [ 0.000000e+00, %.preheader357.new ], [ %130, %114 ]
  %niter856 = phi i64 [ 0, %.preheader357.new ], [ %niter856.next.1, %114 ]
  %gep642 = getelementptr double, ptr %invariant.gep641, i64 %indvars.iv501
  %115 = load double, ptr %gep642, align 8, !tbaa !9
  %116 = getelementptr inbounds double, ptr %19, i64 %indvars.iv501
  %117 = load double, ptr %116, align 8, !tbaa !9
  %118 = fdiv double %115, %117
  %119 = fcmp oge double %118, 0.000000e+00
  %120 = fneg double %118
  %121 = select i1 %119, double %118, double %120
  %122 = fadd double %.4378, %121
  %gep915 = getelementptr double, ptr %invariant.gep914, i64 %indvars.iv501
  %123 = load double, ptr %gep915, align 8, !tbaa !9
  %124 = getelementptr double, ptr %7, i64 %indvars.iv501
  %125 = load double, ptr %124, align 8, !tbaa !9
  %126 = fdiv double %123, %125
  %127 = fcmp oge double %126, 0.000000e+00
  %128 = fneg double %126
  %129 = select i1 %127, double %126, double %128
  %130 = fadd double %122, %129
  %indvars.iv.next502.1 = add nuw nsw i64 %indvars.iv501, 2
  %niter856.next.1 = add i64 %niter856, 2
  %niter856.ncmp.1 = icmp eq i64 %niter856.next.1, %unroll_iter855
  br i1 %niter856.ncmp.1, label %.preheader355.unr-lcssa, label %114, !llvm.loop !17

.lr.ph382:                                        ; preds = %.lr.ph382.preheader, %.lr.ph382
  %indvars.iv509 = phi i64 [ %indvars.iv507, %.lr.ph382.preheader ], [ %indvars.iv.next510, %.lr.ph382 ]
  %.5381 = phi double [ %.lcssa832, %.lr.ph382.preheader ], [ %139, %.lr.ph382 ]
  %indvars.iv.next510 = add nuw nsw i64 %indvars.iv509, 1
  %131 = mul nsw i64 %indvars.iv.next510, %34
  %gep644 = getelementptr double, ptr %invariant.gep643, i64 %131
  %132 = load double, ptr %gep644, align 8, !tbaa !9
  %133 = getelementptr double, ptr %7, i64 %indvars.iv509
  %134 = load double, ptr %133, align 8, !tbaa !9
  %135 = fdiv double %132, %134
  %136 = fcmp oge double %135, 0.000000e+00
  %137 = fneg double %135
  %138 = select i1 %136, double %135, double %137
  %139 = fadd double %.5381, %138
  %exitcond513.not = icmp eq i64 %indvars.iv.next510, %wide.trip.count512
  br i1 %exitcond513.not, label %.loopexit356, label %.lr.ph382, !llvm.loop !18

.loopexit356:                                     ; preds = %.lr.ph382, %.preheader355
  %.5.lcssa = phi double [ %.lcssa832, %.preheader355 ], [ %139, %.lr.ph382 ]
  %gep646 = getelementptr double, ptr %invariant.gep645, i64 %indvars.iv507
  store double %.5.lcssa, ptr %gep646, align 8, !tbaa !9
  %indvars.iv.next508 = add nuw nsw i64 %indvars.iv507, 1
  %indvars.iv.next515 = add nuw nsw i64 %indvars.iv514, 1
  %exitcond520.not = icmp eq i64 %indvars.iv.next515, %wide.trip.count519
  %indvar.next851 = add i64 %indvar850, 1
  br i1 %exitcond520.not, label %.loopexit354, label %.preheader357, !llvm.loop !14

140:                                              ; preds = %28
  br i1 %.not321412, label %.loopexit354, label %.lr.ph415

.lr.ph415:                                        ; preds = %140
  %141 = load i32, ptr %6, align 4, !tbaa !5
  %142 = shl nuw i32 %30, 1
  %143 = sext i32 %16 to i64
  %144 = zext nneg i32 %30 to i64
  %145 = sext i32 %142 to i64
  %146 = add nuw i32 %30, 2
  %wide.trip.count579 = zext i32 %146 to i64
  %wide.trip.count572 = zext nneg i32 %30 to i64
  %invariant.gep663 = getelementptr double, ptr %20, i64 %145
  switch i32 %141, label %.preheader347 [
    i32 1, label %.preheader350.us
    i32 0, label %.preheader353.us
  ]

.preheader350.us:                                 ; preds = %.lr.ph415, %.loopexit349.us
  %indvar866 = phi i64 [ %indvar.next867, %.loopexit349.us ], [ 0, %.lr.ph415 ]
  %indvars.iv554 = phi i64 [ %indvars.iv.next555, %.loopexit349.us ], [ 2, %.lr.ph415 ]
  %indvars.iv547 = phi i64 [ %indvars.iv.next548, %.loopexit349.us ], [ 1, %.lr.ph415 ]
  %invariant.gep653 = getelementptr double, ptr %18, i64 %indvars.iv547
  %147 = icmp eq i64 %indvar866, 0
  br i1 %147, label %.preheader348.us.unr-lcssa, label %.preheader350.us.new

.preheader350.us.new:                             ; preds = %.preheader350.us
  %148 = add i64 %indvar866, 1
  %unroll_iter871 = and i64 %148, -2
  br label %149

149:                                              ; preds = %149, %.preheader350.us.new
  %indvars.iv541 = phi i64 [ 1, %.preheader350.us.new ], [ %indvars.iv.next542.1, %149 ]
  %.7399.us = phi double [ 0.000000e+00, %.preheader350.us.new ], [ %167, %149 ]
  %niter872 = phi i64 [ 0, %.preheader350.us.new ], [ %niter872.next.1, %149 ]
  %150 = mul nsw i64 %indvars.iv541, %143
  %gep654 = getelementptr double, ptr %invariant.gep653, i64 %150
  %151 = load double, ptr %gep654, align 8, !tbaa !9
  %152 = getelementptr inbounds double, ptr %19, i64 %indvars.iv541
  %153 = load double, ptr %152, align 8, !tbaa !9
  %154 = fmul double %151, %153
  %155 = fcmp oge double %154, 0.000000e+00
  %156 = fneg double %154
  %157 = select i1 %155, double %154, double %156
  %158 = fadd double %.7399.us, %157
  %indvars.iv.next542 = add nuw nsw i64 %indvars.iv541, 1
  %159 = mul nsw i64 %indvars.iv.next542, %143
  %gep654.1 = getelementptr double, ptr %invariant.gep653, i64 %159
  %160 = load double, ptr %gep654.1, align 8, !tbaa !9
  %161 = getelementptr double, ptr %7, i64 %indvars.iv541
  %162 = load double, ptr %161, align 8, !tbaa !9
  %163 = fmul double %160, %162
  %164 = fcmp oge double %163, 0.000000e+00
  %165 = fneg double %163
  %166 = select i1 %164, double %163, double %165
  %167 = fadd double %158, %166
  %indvars.iv.next542.1 = add nuw nsw i64 %indvars.iv541, 2
  %niter872.next.1 = add i64 %niter872, 2
  %niter872.ncmp.1 = icmp eq i64 %niter872.next.1, %unroll_iter871
  br i1 %niter872.ncmp.1, label %.preheader348.us.unr-lcssa, label %149, !llvm.loop !19

168:                                              ; preds = %.lr.ph403.us, %168
  %indvars.iv549 = phi i64 [ %indvars.iv547, %.lr.ph403.us ], [ %indvars.iv.next550, %168 ]
  %.8402.us = phi double [ %.lcssa826, %.lr.ph403.us ], [ %176, %168 ]
  %indvars.iv.next550 = add nuw nsw i64 %indvars.iv549, 1
  %gep656 = getelementptr double, ptr %invariant.gep655, i64 %indvars.iv.next550
  %169 = load double, ptr %gep656, align 8, !tbaa !9
  %170 = getelementptr double, ptr %7, i64 %indvars.iv549
  %171 = load double, ptr %170, align 8, !tbaa !9
  %172 = fmul double %169, %171
  %173 = fcmp oge double %172, 0.000000e+00
  %174 = fneg double %172
  %175 = select i1 %173, double %172, double %174
  %176 = fadd double %.8402.us, %175
  %exitcond553.not = icmp eq i64 %indvars.iv.next550, %wide.trip.count572
  br i1 %exitcond553.not, label %.loopexit349.us, label %168, !llvm.loop !20

.preheader348.us.unr-lcssa:                       ; preds = %149, %.preheader350.us
  %.lcssa826.ph = phi double [ poison, %.preheader350.us ], [ %167, %149 ]
  %indvars.iv541.unr = phi i64 [ 1, %.preheader350.us ], [ %indvars.iv.next542.1, %149 ]
  %.7399.us.unr = phi double [ 0.000000e+00, %.preheader350.us ], [ %167, %149 ]
  %177 = and i64 %indvar866, 1
  %lcmp.mod869.not.not = icmp eq i64 %177, 0
  br i1 %lcmp.mod869.not.not, label %.preheader348.us.epilog-lcssa, label %.preheader348.us

.preheader348.us.epilog-lcssa:                    ; preds = %.preheader348.us.unr-lcssa
  %178 = mul nsw i64 %indvars.iv541.unr, %143
  %gep654.epil = getelementptr double, ptr %invariant.gep653, i64 %178
  %179 = load double, ptr %gep654.epil, align 8, !tbaa !9
  %180 = getelementptr inbounds double, ptr %19, i64 %indvars.iv541.unr
  %181 = load double, ptr %180, align 8, !tbaa !9
  %182 = fmul double %179, %181
  %183 = fcmp oge double %182, 0.000000e+00
  %184 = fneg double %182
  %185 = select i1 %183, double %182, double %184
  %186 = fadd double %.7399.us.unr, %185
  br label %.preheader348.us

.preheader348.us:                                 ; preds = %.preheader348.us.unr-lcssa, %.preheader348.us.epilog-lcssa
  %.lcssa826 = phi double [ %.lcssa826.ph, %.preheader348.us.unr-lcssa ], [ %186, %.preheader348.us.epilog-lcssa ]
  %.not327.not400.us = icmp ult i64 %indvars.iv547, %144
  br i1 %.not327.not400.us, label %.lr.ph403.us, label %.loopexit349.us

.loopexit349.us:                                  ; preds = %168, %.preheader348.us
  %.8.lcssa.us = phi double [ %.lcssa826, %.preheader348.us ], [ %176, %168 ]
  %gep658 = getelementptr double, ptr %invariant.gep663, i64 %indvars.iv547
  store double %.8.lcssa.us, ptr %gep658, align 8, !tbaa !9
  %indvars.iv.next548 = add nuw nsw i64 %indvars.iv547, 1
  %indvars.iv.next555 = add nuw nsw i64 %indvars.iv554, 1
  %exitcond560.not = icmp eq i64 %indvars.iv.next555, %wide.trip.count579
  %indvar.next867 = add i64 %indvar866, 1
  br i1 %exitcond560.not, label %.loopexit354, label %.preheader350.us, !llvm.loop !21

.lr.ph403.us:                                     ; preds = %.preheader348.us
  %187 = mul nsw i64 %indvars.iv547, %143
  %invariant.gep655 = getelementptr double, ptr %18, i64 %187
  br label %168

.preheader353.us:                                 ; preds = %.lr.ph415, %.loopexit352.us
  %indvar858 = phi i64 [ %indvar.next859, %.loopexit352.us ], [ 0, %.lr.ph415 ]
  %indvars.iv534 = phi i64 [ %indvars.iv.next535, %.loopexit352.us ], [ 2, %.lr.ph415 ]
  %indvars.iv527 = phi i64 [ %indvars.iv.next528, %.loopexit352.us ], [ 1, %.lr.ph415 ]
  %invariant.gep647 = getelementptr double, ptr %18, i64 %indvars.iv527
  %188 = icmp eq i64 %indvar858, 0
  br i1 %188, label %.preheader351.us.unr-lcssa, label %.preheader353.us.new

.preheader353.us.new:                             ; preds = %.preheader353.us
  %189 = add i64 %indvar858, 1
  %unroll_iter863 = and i64 %189, -2
  br label %190

190:                                              ; preds = %190, %.preheader353.us.new
  %indvars.iv521 = phi i64 [ 1, %.preheader353.us.new ], [ %indvars.iv.next522.1, %190 ]
  %.9394.us = phi double [ 0.000000e+00, %.preheader353.us.new ], [ %202, %190 ]
  %niter864 = phi i64 [ 0, %.preheader353.us.new ], [ %niter864.next.1, %190 ]
  %191 = mul nsw i64 %indvars.iv521, %143
  %gep648 = getelementptr double, ptr %invariant.gep647, i64 %191
  %192 = load double, ptr %gep648, align 8, !tbaa !9
  %193 = fcmp oge double %192, 0.000000e+00
  %194 = fneg double %192
  %195 = select i1 %193, double %192, double %194
  %196 = fadd double %.9394.us, %195
  %indvars.iv.next522 = add nuw nsw i64 %indvars.iv521, 1
  %197 = mul nsw i64 %indvars.iv.next522, %143
  %gep648.1 = getelementptr double, ptr %invariant.gep647, i64 %197
  %198 = load double, ptr %gep648.1, align 8, !tbaa !9
  %199 = fcmp oge double %198, 0.000000e+00
  %200 = fneg double %198
  %201 = select i1 %199, double %198, double %200
  %202 = fadd double %196, %201
  %indvars.iv.next522.1 = add nuw nsw i64 %indvars.iv521, 2
  %niter864.next.1 = add i64 %niter864, 2
  %niter864.ncmp.1 = icmp eq i64 %niter864.next.1, %unroll_iter863
  br i1 %niter864.ncmp.1, label %.preheader351.us.unr-lcssa, label %190, !llvm.loop !22

203:                                              ; preds = %.lr.ph.us421, %203
  %indvars.iv529 = phi i64 [ %indvars.iv527, %.lr.ph.us421 ], [ %indvars.iv.next530, %203 ]
  %.10397.us = phi double [ %.lcssa829, %.lr.ph.us421 ], [ %208, %203 ]
  %indvars.iv.next530 = add nuw nsw i64 %indvars.iv529, 1
  %gep650 = getelementptr double, ptr %invariant.gep649, i64 %indvars.iv.next530
  %204 = load double, ptr %gep650, align 8, !tbaa !9
  %205 = fcmp oge double %204, 0.000000e+00
  %206 = fneg double %204
  %207 = select i1 %205, double %204, double %206
  %208 = fadd double %.10397.us, %207
  %exitcond533.not = icmp eq i64 %indvars.iv.next530, %wide.trip.count572
  br i1 %exitcond533.not, label %.loopexit352.us, label %203, !llvm.loop !23

.preheader351.us.unr-lcssa:                       ; preds = %190, %.preheader353.us
  %.lcssa829.ph = phi double [ poison, %.preheader353.us ], [ %202, %190 ]
  %indvars.iv521.unr = phi i64 [ 1, %.preheader353.us ], [ %indvars.iv.next522.1, %190 ]
  %.9394.us.unr = phi double [ 0.000000e+00, %.preheader353.us ], [ %202, %190 ]
  %209 = and i64 %indvar858, 1
  %lcmp.mod861.not.not = icmp eq i64 %209, 0
  br i1 %lcmp.mod861.not.not, label %.preheader351.us.epilog-lcssa, label %.preheader351.us

.preheader351.us.epilog-lcssa:                    ; preds = %.preheader351.us.unr-lcssa
  %210 = mul nsw i64 %indvars.iv521.unr, %143
  %gep648.epil = getelementptr double, ptr %invariant.gep647, i64 %210
  %211 = load double, ptr %gep648.epil, align 8, !tbaa !9
  %212 = fcmp oge double %211, 0.000000e+00
  %213 = fneg double %211
  %214 = select i1 %212, double %211, double %213
  %215 = fadd double %.9394.us.unr, %214
  br label %.preheader351.us

.preheader351.us:                                 ; preds = %.preheader351.us.unr-lcssa, %.preheader351.us.epilog-lcssa
  %.lcssa829 = phi double [ %.lcssa829.ph, %.preheader351.us.unr-lcssa ], [ %215, %.preheader351.us.epilog-lcssa ]
  %.not325.not395.us = icmp ult i64 %indvars.iv527, %144
  br i1 %.not325.not395.us, label %.lr.ph.us421, label %.loopexit352.us

.loopexit352.us:                                  ; preds = %203, %.preheader351.us
  %.10.lcssa.us = phi double [ %.lcssa829, %.preheader351.us ], [ %208, %203 ]
  %gep652 = getelementptr double, ptr %invariant.gep663, i64 %indvars.iv527
  store double %.10.lcssa.us, ptr %gep652, align 8, !tbaa !9
  %indvars.iv.next528 = add nuw nsw i64 %indvars.iv527, 1
  %indvars.iv.next535 = add nuw nsw i64 %indvars.iv534, 1
  %exitcond540.not = icmp eq i64 %indvars.iv.next535, %wide.trip.count579
  %indvar.next859 = add i64 %indvar858, 1
  br i1 %exitcond540.not, label %.loopexit354, label %.preheader353.us, !llvm.loop !21

.lr.ph.us421:                                     ; preds = %.preheader351.us
  %216 = mul nsw i64 %indvars.iv527, %143
  %invariant.gep649 = getelementptr double, ptr %18, i64 %216
  br label %203

.preheader347:                                    ; preds = %.lr.ph415, %.loopexit346
  %indvar874 = phi i64 [ %indvar.next875, %.loopexit346 ], [ 0, %.lr.ph415 ]
  %indvars.iv574 = phi i64 [ %indvars.iv.next575, %.loopexit346 ], [ 2, %.lr.ph415 ]
  %indvars.iv567 = phi i64 [ %indvars.iv.next568, %.loopexit346 ], [ 1, %.lr.ph415 ]
  %invariant.gep659 = getelementptr double, ptr %18, i64 %indvars.iv567
  %217 = icmp eq i64 %indvar874, 0
  br i1 %217, label %.preheader.unr-lcssa, label %.preheader347.new

.preheader347.new:                                ; preds = %.preheader347
  %218 = add i64 %indvar874, 1
  %unroll_iter879 = and i64 %218, -2
  br label %230

.preheader.unr-lcssa:                             ; preds = %230, %.preheader347
  %.lcssa.ph = phi double [ poison, %.preheader347 ], [ %248, %230 ]
  %indvars.iv561.unr = phi i64 [ 1, %.preheader347 ], [ %indvars.iv.next562.1, %230 ]
  %.11406.unr = phi double [ 0.000000e+00, %.preheader347 ], [ %248, %230 ]
  %219 = and i64 %indvar874, 1
  %lcmp.mod877.not.not = icmp eq i64 %219, 0
  br i1 %lcmp.mod877.not.not, label %.preheader.epilog-lcssa, label %.preheader

.preheader.epilog-lcssa:                          ; preds = %.preheader.unr-lcssa
  %220 = mul nsw i64 %indvars.iv561.unr, %143
  %gep660.epil = getelementptr double, ptr %invariant.gep659, i64 %220
  %221 = load double, ptr %gep660.epil, align 8, !tbaa !9
  %222 = getelementptr inbounds double, ptr %19, i64 %indvars.iv561.unr
  %223 = load double, ptr %222, align 8, !tbaa !9
  %224 = fdiv double %221, %223
  %225 = fcmp oge double %224, 0.000000e+00
  %226 = fneg double %224
  %227 = select i1 %225, double %224, double %226
  %228 = fadd double %.11406.unr, %227
  br label %.preheader

.preheader:                                       ; preds = %.preheader.unr-lcssa, %.preheader.epilog-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %.preheader.unr-lcssa ], [ %228, %.preheader.epilog-lcssa ]
  %.not323.not407 = icmp ult i64 %indvars.iv567, %144
  br i1 %.not323.not407, label %.lr.ph410, label %.loopexit346

.lr.ph410:                                        ; preds = %.preheader
  %229 = mul nsw i64 %indvars.iv567, %143
  %invariant.gep661 = getelementptr double, ptr %18, i64 %229
  br label %249

230:                                              ; preds = %230, %.preheader347.new
  %indvars.iv561 = phi i64 [ 1, %.preheader347.new ], [ %indvars.iv.next562.1, %230 ]
  %.11406 = phi double [ 0.000000e+00, %.preheader347.new ], [ %248, %230 ]
  %niter880 = phi i64 [ 0, %.preheader347.new ], [ %niter880.next.1, %230 ]
  %231 = mul nsw i64 %indvars.iv561, %143
  %gep660 = getelementptr double, ptr %invariant.gep659, i64 %231
  %232 = load double, ptr %gep660, align 8, !tbaa !9
  %233 = getelementptr inbounds double, ptr %19, i64 %indvars.iv561
  %234 = load double, ptr %233, align 8, !tbaa !9
  %235 = fdiv double %232, %234
  %236 = fcmp oge double %235, 0.000000e+00
  %237 = fneg double %235
  %238 = select i1 %236, double %235, double %237
  %239 = fadd double %.11406, %238
  %indvars.iv.next562 = add nuw nsw i64 %indvars.iv561, 1
  %240 = mul nsw i64 %indvars.iv.next562, %143
  %gep660.1 = getelementptr double, ptr %invariant.gep659, i64 %240
  %241 = load double, ptr %gep660.1, align 8, !tbaa !9
  %242 = getelementptr double, ptr %7, i64 %indvars.iv561
  %243 = load double, ptr %242, align 8, !tbaa !9
  %244 = fdiv double %241, %243
  %245 = fcmp oge double %244, 0.000000e+00
  %246 = fneg double %244
  %247 = select i1 %245, double %244, double %246
  %248 = fadd double %239, %247
  %indvars.iv.next562.1 = add nuw nsw i64 %indvars.iv561, 2
  %niter880.next.1 = add i64 %niter880, 2
  %niter880.ncmp.1 = icmp eq i64 %niter880.next.1, %unroll_iter879
  br i1 %niter880.ncmp.1, label %.preheader.unr-lcssa, label %230, !llvm.loop !24

249:                                              ; preds = %.lr.ph410, %249
  %indvars.iv569 = phi i64 [ %indvars.iv567, %.lr.ph410 ], [ %indvars.iv.next570, %249 ]
  %.12409 = phi double [ %.lcssa, %.lr.ph410 ], [ %257, %249 ]
  %indvars.iv.next570 = add nuw nsw i64 %indvars.iv569, 1
  %gep662 = getelementptr double, ptr %invariant.gep661, i64 %indvars.iv.next570
  %250 = load double, ptr %gep662, align 8, !tbaa !9
  %251 = getelementptr double, ptr %7, i64 %indvars.iv569
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = fdiv double %250, %252
  %254 = fcmp oge double %253, 0.000000e+00
  %255 = fneg double %253
  %256 = select i1 %254, double %253, double %255
  %257 = fadd double %.12409, %256
  %exitcond573.not = icmp eq i64 %indvars.iv.next570, %wide.trip.count572
  br i1 %exitcond573.not, label %.loopexit346, label %249, !llvm.loop !25

.loopexit346:                                     ; preds = %249, %.preheader
  %.12.lcssa = phi double [ %.lcssa, %.preheader ], [ %257, %249 ]
  %gep664 = getelementptr double, ptr %invariant.gep663, i64 %indvars.iv567
  store double %.12.lcssa, ptr %gep664, align 8, !tbaa !9
  %indvars.iv.next568 = add nuw nsw i64 %indvars.iv567, 1
  %indvars.iv.next575 = add nuw nsw i64 %indvars.iv574, 1
  %exitcond580.not = icmp eq i64 %indvars.iv.next575, %wide.trip.count579
  %indvar.next875 = add i64 %indvar874, 1
  br i1 %exitcond580.not, label %.loopexit354, label %.preheader347, !llvm.loop !21

.loopexit354:                                     ; preds = %.loopexit362.us, %.loopexit359.us, %.loopexit356, %.loopexit352.us, %.loopexit349.us, %.loopexit346, %31, %140
  store double 0.000000e+00, ptr %15, align 8, !tbaa !9
  store i32 0, ptr %13, align 4, !tbaa !5
  %scevgep = getelementptr i8, ptr %9, i64 -8
  %scevgep690 = getelementptr i8, ptr %9, i64 -8
  %scevgep696 = getelementptr i8, ptr %9, i64 -8
  %scevgep698 = getelementptr i8, ptr %7, i64 -8
  %scevgep719 = getelementptr i8, ptr %9, i64 -8
  %scevgep721 = getelementptr i8, ptr %7, i64 -8
  %scevgep744 = getelementptr i8, ptr %9, i64 -8
  %scevgep746 = getelementptr i8, ptr %7, i64 -8
  %scevgep767 = getelementptr i8, ptr %9, i64 -8
  %scevgep769 = getelementptr i8, ptr %7, i64 -8
  %scevgep792 = getelementptr i8, ptr %9, i64 -8
  %scevgep795 = getelementptr i8, ptr %9, i64 -8
  %.str.3..str.2 = select i1 %.not319, ptr @.str.3, ptr @.str.2
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.backedge, %.loopexit354
  %258 = phi i32 [ %30, %.loopexit354 ], [ %.be, %.loopexit.backedge ]
  %259 = sext i32 %258 to i64
  %gep = getelementptr double, ptr %9, i64 %259
  call void @dlacn2_(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef %9, ptr noundef %10, ptr noundef nonnull %15, ptr noundef nonnull %13, ptr noundef nonnull %14) #3
  %260 = load i32, ptr %13, align 4, !tbaa !5
  switch i32 %260, label %382 [
    i32 0, label %502
    i32 2, label %261
  ]

261:                                              ; preds = %.loopexit
  %262 = load i32, ptr %1, align 4, !tbaa !5
  %.not333423 = icmp slt i32 %262, 1
  br i1 %.not333423, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %261
  %263 = shl nuw i32 %262, 1
  %264 = sext i32 %263 to i64
  %265 = add nuw i32 %262, 1
  %wide.trip.count = zext i32 %265 to i64
  %invariant.gep665 = getelementptr double, ptr %20, i64 %264
  %266 = zext nneg i32 %262 to i64
  %min.iters.check802 = icmp ult i32 %262, 6
  br i1 %min.iters.check802, label %scalar.ph801.preheader, label %vector.memcheck791

vector.memcheck791:                               ; preds = %.lr.ph
  %267 = shl nuw nsw i64 %wide.trip.count, 3
  %scevgep793 = getelementptr i8, ptr %scevgep792, i64 %267
  %268 = shl nsw i64 %264, 3
  %scevgep794 = getelementptr i8, ptr %9, i64 %268
  %269 = getelementptr i8, ptr %scevgep795, i64 %268
  %scevgep796 = getelementptr i8, ptr %269, i64 %267
  %bound0797 = icmp ugt ptr %scevgep796, %9
  %bound1798 = icmp ult ptr %scevgep794, %scevgep793
  %found.conflict799 = and i1 %bound0797, %bound1798
  br i1 %found.conflict799, label %scalar.ph801.preheader, label %vector.ph803

vector.ph803:                                     ; preds = %vector.memcheck791
  %n.vec805 = and i64 %266, 2147483644
  %ind.end806 = or disjoint i64 %n.vec805, 1
  br label %vector.body808

vector.body808:                                   ; preds = %vector.body808, %vector.ph803
  %index809 = phi i64 [ 0, %vector.ph803 ], [ %index.next815, %vector.body808 ]
  %offset.idx810 = or disjoint i64 %index809, 1
  %270 = getelementptr double, ptr %invariant.gep665, i64 %offset.idx810
  %271 = getelementptr i8, ptr %270, i64 16
  %wide.load811 = load <2 x double>, ptr %270, align 8, !tbaa !9, !alias.scope !26
  %wide.load812 = load <2 x double>, ptr %271, align 8, !tbaa !9, !alias.scope !26
  %272 = getelementptr double, ptr %9, i64 %index809
  %273 = getelementptr inbounds i8, ptr %272, i64 16
  %wide.load813 = load <2 x double>, ptr %272, align 8, !tbaa !9, !alias.scope !29, !noalias !26
  %wide.load814 = load <2 x double>, ptr %273, align 8, !tbaa !9, !alias.scope !29, !noalias !26
  %274 = fmul <2 x double> %wide.load811, %wide.load813
  %275 = fmul <2 x double> %wide.load812, %wide.load814
  store <2 x double> %274, ptr %272, align 8, !tbaa !9, !alias.scope !29, !noalias !26
  store <2 x double> %275, ptr %273, align 8, !tbaa !9, !alias.scope !29, !noalias !26
  %index.next815 = add nuw i64 %index809, 4
  %276 = icmp eq i64 %index.next815, %n.vec805
  br i1 %276, label %middle.block800, label %vector.body808, !llvm.loop !31

middle.block800:                                  ; preds = %vector.body808
  %cmp.n816 = icmp eq i64 %n.vec805, %266
  br i1 %cmp.n816, label %._crit_edge, label %scalar.ph801.preheader

scalar.ph801.preheader:                           ; preds = %middle.block800, %vector.memcheck791, %.lr.ph
  %indvars.iv581.ph = phi i64 [ 1, %vector.memcheck791 ], [ 1, %.lr.ph ], [ %ind.end806, %middle.block800 ]
  %277 = sub nsw i64 %wide.trip.count, %indvars.iv581.ph
  %278 = zext nneg i32 %262 to i64
  %279 = sub nsw i64 %278, %indvars.iv581.ph
  %xtraiter881 = and i64 %277, 3
  %lcmp.mod882.not = icmp eq i64 %xtraiter881, 0
  br i1 %lcmp.mod882.not, label %scalar.ph801.prol.loopexit, label %scalar.ph801.prol

scalar.ph801.prol:                                ; preds = %scalar.ph801.preheader, %scalar.ph801.prol
  %indvars.iv581.prol = phi i64 [ %indvars.iv.next582.prol, %scalar.ph801.prol ], [ %indvars.iv581.ph, %scalar.ph801.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph801.prol ], [ 0, %scalar.ph801.preheader ]
  %gep666.prol = getelementptr double, ptr %invariant.gep665, i64 %indvars.iv581.prol
  %280 = load double, ptr %gep666.prol, align 8, !tbaa !9
  %281 = getelementptr inbounds double, ptr %20, i64 %indvars.iv581.prol
  %282 = load double, ptr %281, align 8, !tbaa !9
  %283 = fmul double %280, %282
  store double %283, ptr %281, align 8, !tbaa !9
  %indvars.iv.next582.prol = add nuw nsw i64 %indvars.iv581.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter881
  br i1 %prol.iter.cmp.not, label %scalar.ph801.prol.loopexit, label %scalar.ph801.prol, !llvm.loop !34

scalar.ph801.prol.loopexit:                       ; preds = %scalar.ph801.prol, %scalar.ph801.preheader
  %indvars.iv581.unr = phi i64 [ %indvars.iv581.ph, %scalar.ph801.preheader ], [ %indvars.iv.next582.prol, %scalar.ph801.prol ]
  %284 = icmp ult i64 %279, 3
  br i1 %284, label %._crit_edge, label %scalar.ph801.preheader.new

scalar.ph801.preheader.new:                       ; preds = %scalar.ph801.prol.loopexit
  %invariant.gep916 = getelementptr i8, ptr %invariant.gep665, i64 8
  br label %scalar.ph801

scalar.ph801:                                     ; preds = %scalar.ph801, %scalar.ph801.preheader.new
  %indvars.iv581 = phi i64 [ %indvars.iv581.unr, %scalar.ph801.preheader.new ], [ %indvars.iv.next582.3, %scalar.ph801 ]
  %gep666 = getelementptr double, ptr %invariant.gep665, i64 %indvars.iv581
  %285 = load double, ptr %gep666, align 8, !tbaa !9
  %286 = getelementptr inbounds double, ptr %20, i64 %indvars.iv581
  %287 = load double, ptr %286, align 8, !tbaa !9
  %288 = fmul double %285, %287
  store double %288, ptr %286, align 8, !tbaa !9
  %gep917 = getelementptr double, ptr %invariant.gep916, i64 %indvars.iv581
  %289 = load double, ptr %gep917, align 8, !tbaa !9
  %290 = getelementptr double, ptr %9, i64 %indvars.iv581
  %291 = load double, ptr %290, align 8, !tbaa !9
  %292 = fmul double %289, %291
  store double %292, ptr %290, align 8, !tbaa !9
  %indvars.iv.next582.1 = add nuw nsw i64 %indvars.iv581, 2
  %gep666.2 = getelementptr double, ptr %invariant.gep665, i64 %indvars.iv.next582.1
  %293 = load double, ptr %gep666.2, align 8, !tbaa !9
  %294 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next582.1
  %295 = load double, ptr %294, align 8, !tbaa !9
  %296 = fmul double %293, %295
  store double %296, ptr %294, align 8, !tbaa !9
  %indvars.iv.next582.2 = add nuw nsw i64 %indvars.iv581, 3
  %gep666.3 = getelementptr double, ptr %invariant.gep665, i64 %indvars.iv.next582.2
  %297 = load double, ptr %gep666.3, align 8, !tbaa !9
  %298 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next582.2
  %299 = load double, ptr %298, align 8, !tbaa !9
  %300 = fmul double %297, %299
  store double %300, ptr %298, align 8, !tbaa !9
  %indvars.iv.next582.3 = add nuw nsw i64 %indvars.iv581, 4
  %exitcond584.not.3 = icmp eq i64 %indvars.iv.next582.3, %wide.trip.count
  br i1 %exitcond584.not.3, label %._crit_edge, label %scalar.ph801, !llvm.loop !36

._crit_edge:                                      ; preds = %scalar.ph801.prol.loopexit, %scalar.ph801, %middle.block800, %261
  br i1 %.not319, label %302, label %301

301:                                              ; preds = %._crit_edge
  call void @dpotrs_(ptr noundef nonnull @.str.2, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %9, ptr noundef nonnull %1, ptr noundef nonnull %8) #3
  br label %303

302:                                              ; preds = %._crit_edge
  call void @dpotrs_(ptr noundef nonnull @.str.3, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %1, ptr noundef nonnull %8) #3
  br label %303

303:                                              ; preds = %302, %301
  %304 = load i32, ptr %6, align 4, !tbaa !5
  %.pre.pre = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %304, label %.loopexit.backedge [
    i32 1, label %305
    i32 -1, label %342
  ]

305:                                              ; preds = %303
  %.not335429 = icmp slt i32 %.pre.pre, 1
  br i1 %.not335429, label %.loopexit.backedge, label %.lr.ph432.preheader

.lr.ph432.preheader:                              ; preds = %305
  %306 = add nuw i32 %.pre.pre, 1
  %wide.trip.count593 = zext i32 %306 to i64
  %307 = zext nneg i32 %.pre.pre to i64
  %min.iters.check753 = icmp eq i32 %.pre.pre, 1
  br i1 %min.iters.check753, label %.lr.ph432.preheader820, label %vector.memcheck743

vector.memcheck743:                               ; preds = %.lr.ph432.preheader
  %308 = shl nuw nsw i64 %wide.trip.count593, 3
  %scevgep745 = getelementptr i8, ptr %scevgep744, i64 %308
  %scevgep747 = getelementptr i8, ptr %scevgep746, i64 %308
  %bound0748 = icmp ugt ptr %scevgep747, %9
  %bound1749 = icmp ugt ptr %scevgep745, %7
  %found.conflict750 = and i1 %bound0748, %bound1749
  br i1 %found.conflict750, label %.lr.ph432.preheader820, label %vector.ph754

vector.ph754:                                     ; preds = %vector.memcheck743
  %n.vec756 = and i64 %307, 2147483646
  %ind.end757 = or i64 %307, 1
  br label %vector.body759

vector.body759:                                   ; preds = %vector.body759, %vector.ph754
  %index760 = phi i64 [ 0, %vector.ph754 ], [ %index.next764, %vector.body759 ]
  %309 = getelementptr double, ptr %7, i64 %index760
  %wide.load762 = load <2 x double>, ptr %309, align 8, !tbaa !9, !alias.scope !37
  %310 = getelementptr double, ptr %9, i64 %index760
  %wide.load763 = load <2 x double>, ptr %310, align 8, !tbaa !9, !alias.scope !40, !noalias !37
  %311 = fdiv <2 x double> %wide.load763, %wide.load762
  store <2 x double> %311, ptr %310, align 8, !tbaa !9, !alias.scope !40, !noalias !37
  %index.next764 = add nuw i64 %index760, 2
  %312 = icmp eq i64 %index.next764, %n.vec756
  br i1 %312, label %middle.block751, label %vector.body759, !llvm.loop !42

middle.block751:                                  ; preds = %vector.body759
  %cmp.n765 = icmp eq i64 %n.vec756, %307
  br i1 %cmp.n765, label %.loopexit.backedge, label %.lr.ph432.preheader820

.lr.ph432.preheader820:                           ; preds = %middle.block751, %vector.memcheck743, %.lr.ph432.preheader
  %indvars.iv590.ph = phi i64 [ 1, %vector.memcheck743 ], [ 1, %.lr.ph432.preheader ], [ %ind.end757, %middle.block751 ]
  %313 = sub nsw i64 %wide.trip.count593, %indvars.iv590.ph
  %314 = zext nneg i32 %.pre.pre to i64
  %315 = sub nsw i64 %314, %indvars.iv590.ph
  %xtraiter886 = and i64 %313, 3
  %lcmp.mod887.not = icmp eq i64 %xtraiter886, 0
  br i1 %lcmp.mod887.not, label %.lr.ph432.prol.loopexit, label %.lr.ph432.prol

.lr.ph432.prol:                                   ; preds = %.lr.ph432.preheader820, %.lr.ph432.prol
  %indvars.iv590.prol = phi i64 [ %indvars.iv.next591.prol, %.lr.ph432.prol ], [ %indvars.iv590.ph, %.lr.ph432.preheader820 ]
  %prol.iter888 = phi i64 [ %prol.iter888.next, %.lr.ph432.prol ], [ 0, %.lr.ph432.preheader820 ]
  %316 = getelementptr inbounds double, ptr %19, i64 %indvars.iv590.prol
  %317 = load double, ptr %316, align 8, !tbaa !9
  %318 = getelementptr inbounds double, ptr %20, i64 %indvars.iv590.prol
  %319 = load double, ptr %318, align 8, !tbaa !9
  %320 = fdiv double %319, %317
  store double %320, ptr %318, align 8, !tbaa !9
  %indvars.iv.next591.prol = add nuw nsw i64 %indvars.iv590.prol, 1
  %prol.iter888.next = add i64 %prol.iter888, 1
  %prol.iter888.cmp.not = icmp eq i64 %prol.iter888.next, %xtraiter886
  br i1 %prol.iter888.cmp.not, label %.lr.ph432.prol.loopexit, label %.lr.ph432.prol, !llvm.loop !43

.lr.ph432.prol.loopexit:                          ; preds = %.lr.ph432.prol, %.lr.ph432.preheader820
  %indvars.iv590.unr = phi i64 [ %indvars.iv590.ph, %.lr.ph432.preheader820 ], [ %indvars.iv.next591.prol, %.lr.ph432.prol ]
  %321 = icmp ult i64 %315, 3
  br i1 %321, label %.loopexit.backedge, label %.lr.ph432

.lr.ph432:                                        ; preds = %.lr.ph432.prol.loopexit, %.lr.ph432
  %indvars.iv590 = phi i64 [ %indvars.iv.next591.3, %.lr.ph432 ], [ %indvars.iv590.unr, %.lr.ph432.prol.loopexit ]
  %322 = getelementptr inbounds double, ptr %19, i64 %indvars.iv590
  %323 = load double, ptr %322, align 8, !tbaa !9
  %324 = getelementptr inbounds double, ptr %20, i64 %indvars.iv590
  %325 = load double, ptr %324, align 8, !tbaa !9
  %326 = fdiv double %325, %323
  store double %326, ptr %324, align 8, !tbaa !9
  %327 = getelementptr double, ptr %7, i64 %indvars.iv590
  %328 = load double, ptr %327, align 8, !tbaa !9
  %329 = getelementptr double, ptr %9, i64 %indvars.iv590
  %330 = load double, ptr %329, align 8, !tbaa !9
  %331 = fdiv double %330, %328
  store double %331, ptr %329, align 8, !tbaa !9
  %indvars.iv.next591.1 = add nuw nsw i64 %indvars.iv590, 2
  %332 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next591.1
  %333 = load double, ptr %332, align 8, !tbaa !9
  %334 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next591.1
  %335 = load double, ptr %334, align 8, !tbaa !9
  %336 = fdiv double %335, %333
  store double %336, ptr %334, align 8, !tbaa !9
  %indvars.iv.next591.2 = add nuw nsw i64 %indvars.iv590, 3
  %337 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next591.2
  %338 = load double, ptr %337, align 8, !tbaa !9
  %339 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next591.2
  %340 = load double, ptr %339, align 8, !tbaa !9
  %341 = fdiv double %340, %338
  store double %341, ptr %339, align 8, !tbaa !9
  %indvars.iv.next591.3 = add nuw nsw i64 %indvars.iv590, 4
  %exitcond594.not.3 = icmp eq i64 %indvars.iv.next591.3, %wide.trip.count593
  br i1 %exitcond594.not.3, label %.loopexit.backedge, label %.lr.ph432, !llvm.loop !44

342:                                              ; preds = %303
  %.not334425 = icmp slt i32 %.pre.pre, 1
  br i1 %.not334425, label %.loopexit.backedge, label %.lr.ph428.preheader

.lr.ph428.preheader:                              ; preds = %342
  %343 = add nuw i32 %.pre.pre, 1
  %wide.trip.count588 = zext i32 %343 to i64
  %344 = zext nneg i32 %.pre.pre to i64
  %min.iters.check776 = icmp ult i32 %.pre.pre, 4
  br i1 %min.iters.check776, label %.lr.ph428.preheader822, label %vector.memcheck766

vector.memcheck766:                               ; preds = %.lr.ph428.preheader
  %345 = shl nuw nsw i64 %wide.trip.count588, 3
  %scevgep768 = getelementptr i8, ptr %scevgep767, i64 %345
  %scevgep770 = getelementptr i8, ptr %scevgep769, i64 %345
  %bound0771 = icmp ugt ptr %scevgep770, %9
  %bound1772 = icmp ugt ptr %scevgep768, %7
  %found.conflict773 = and i1 %bound0771, %bound1772
  br i1 %found.conflict773, label %.lr.ph428.preheader822, label %vector.ph777

vector.ph777:                                     ; preds = %vector.memcheck766
  %n.vec779 = and i64 %344, 2147483644
  %ind.end780 = or disjoint i64 %n.vec779, 1
  br label %vector.body782

vector.body782:                                   ; preds = %vector.body782, %vector.ph777
  %index783 = phi i64 [ 0, %vector.ph777 ], [ %index.next789, %vector.body782 ]
  %346 = getelementptr double, ptr %7, i64 %index783
  %347 = getelementptr inbounds i8, ptr %346, i64 16
  %wide.load785 = load <2 x double>, ptr %346, align 8, !tbaa !9, !alias.scope !45
  %wide.load786 = load <2 x double>, ptr %347, align 8, !tbaa !9, !alias.scope !45
  %348 = getelementptr double, ptr %9, i64 %index783
  %349 = getelementptr inbounds i8, ptr %348, i64 16
  %wide.load787 = load <2 x double>, ptr %348, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %wide.load788 = load <2 x double>, ptr %349, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %350 = fmul <2 x double> %wide.load785, %wide.load787
  %351 = fmul <2 x double> %wide.load786, %wide.load788
  store <2 x double> %350, ptr %348, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  store <2 x double> %351, ptr %349, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %index.next789 = add nuw i64 %index783, 4
  %352 = icmp eq i64 %index.next789, %n.vec779
  br i1 %352, label %middle.block774, label %vector.body782, !llvm.loop !50

middle.block774:                                  ; preds = %vector.body782
  %cmp.n790 = icmp eq i64 %n.vec779, %344
  br i1 %cmp.n790, label %.loopexit.backedge, label %.lr.ph428.preheader822

.loopexit.backedge:                               ; preds = %.lr.ph428.prol.loopexit, %.lr.ph428, %.lr.ph432.prol.loopexit, %.lr.ph432, %scalar.ph.prol.loopexit, %scalar.ph, %middle.block774, %middle.block751, %middle.block, %303, %342, %305, %.loopexit342
  %.be = phi i32 [ %.pre.pre, %342 ], [ %.pre.pre, %305 ], [ %463, %.loopexit342 ], [ %.pre.pre, %303 ], [ %463, %middle.block ], [ %.pre.pre, %middle.block751 ], [ %.pre.pre, %middle.block774 ], [ %463, %scalar.ph ], [ %463, %scalar.ph.prol.loopexit ], [ %.pre.pre, %.lr.ph432 ], [ %.pre.pre, %.lr.ph432.prol.loopexit ], [ %.pre.pre, %.lr.ph428 ], [ %.pre.pre, %.lr.ph428.prol.loopexit ]
  br label %.loopexit

.lr.ph428.preheader822:                           ; preds = %middle.block774, %vector.memcheck766, %.lr.ph428.preheader
  %indvars.iv585.ph = phi i64 [ 1, %vector.memcheck766 ], [ 1, %.lr.ph428.preheader ], [ %ind.end780, %middle.block774 ]
  %353 = sub nsw i64 %wide.trip.count588, %indvars.iv585.ph
  %354 = zext nneg i32 %.pre.pre to i64
  %355 = sub nsw i64 %354, %indvars.iv585.ph
  %xtraiter883 = and i64 %353, 3
  %lcmp.mod884.not = icmp eq i64 %xtraiter883, 0
  br i1 %lcmp.mod884.not, label %.lr.ph428.prol.loopexit, label %.lr.ph428.prol

.lr.ph428.prol:                                   ; preds = %.lr.ph428.preheader822, %.lr.ph428.prol
  %indvars.iv585.prol = phi i64 [ %indvars.iv.next586.prol, %.lr.ph428.prol ], [ %indvars.iv585.ph, %.lr.ph428.preheader822 ]
  %prol.iter885 = phi i64 [ %prol.iter885.next, %.lr.ph428.prol ], [ 0, %.lr.ph428.preheader822 ]
  %356 = getelementptr inbounds double, ptr %19, i64 %indvars.iv585.prol
  %357 = load double, ptr %356, align 8, !tbaa !9
  %358 = getelementptr inbounds double, ptr %20, i64 %indvars.iv585.prol
  %359 = load double, ptr %358, align 8, !tbaa !9
  %360 = fmul double %357, %359
  store double %360, ptr %358, align 8, !tbaa !9
  %indvars.iv.next586.prol = add nuw nsw i64 %indvars.iv585.prol, 1
  %prol.iter885.next = add i64 %prol.iter885, 1
  %prol.iter885.cmp.not = icmp eq i64 %prol.iter885.next, %xtraiter883
  br i1 %prol.iter885.cmp.not, label %.lr.ph428.prol.loopexit, label %.lr.ph428.prol, !llvm.loop !51

.lr.ph428.prol.loopexit:                          ; preds = %.lr.ph428.prol, %.lr.ph428.preheader822
  %indvars.iv585.unr = phi i64 [ %indvars.iv585.ph, %.lr.ph428.preheader822 ], [ %indvars.iv.next586.prol, %.lr.ph428.prol ]
  %361 = icmp ult i64 %355, 3
  br i1 %361, label %.loopexit.backedge, label %.lr.ph428

.lr.ph428:                                        ; preds = %.lr.ph428.prol.loopexit, %.lr.ph428
  %indvars.iv585 = phi i64 [ %indvars.iv.next586.3, %.lr.ph428 ], [ %indvars.iv585.unr, %.lr.ph428.prol.loopexit ]
  %362 = getelementptr inbounds double, ptr %19, i64 %indvars.iv585
  %363 = load double, ptr %362, align 8, !tbaa !9
  %364 = getelementptr inbounds double, ptr %20, i64 %indvars.iv585
  %365 = load double, ptr %364, align 8, !tbaa !9
  %366 = fmul double %363, %365
  store double %366, ptr %364, align 8, !tbaa !9
  %367 = getelementptr double, ptr %7, i64 %indvars.iv585
  %368 = load double, ptr %367, align 8, !tbaa !9
  %369 = getelementptr double, ptr %9, i64 %indvars.iv585
  %370 = load double, ptr %369, align 8, !tbaa !9
  %371 = fmul double %368, %370
  store double %371, ptr %369, align 8, !tbaa !9
  %indvars.iv.next586.1 = add nuw nsw i64 %indvars.iv585, 2
  %372 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next586.1
  %373 = load double, ptr %372, align 8, !tbaa !9
  %374 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next586.1
  %375 = load double, ptr %374, align 8, !tbaa !9
  %376 = fmul double %373, %375
  store double %376, ptr %374, align 8, !tbaa !9
  %indvars.iv.next586.2 = add nuw nsw i64 %indvars.iv585, 3
  %377 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next586.2
  %378 = load double, ptr %377, align 8, !tbaa !9
  %379 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next586.2
  %380 = load double, ptr %379, align 8, !tbaa !9
  %381 = fmul double %378, %380
  store double %381, ptr %379, align 8, !tbaa !9
  %indvars.iv.next586.3 = add nuw nsw i64 %indvars.iv585, 4
  %exitcond589.not.3 = icmp eq i64 %indvars.iv.next586.3, %wide.trip.count588
  br i1 %exitcond589.not.3, label %.loopexit.backedge, label %.lr.ph428, !llvm.loop !52

382:                                              ; preds = %.loopexit
  %383 = load i32, ptr %6, align 4, !tbaa !5
  switch i32 %383, label %.loopexit342 [
    i32 1, label %384
    i32 -1, label %422
  ]

384:                                              ; preds = %382
  %385 = load i32, ptr %1, align 4, !tbaa !5
  %.not331437 = icmp slt i32 %385, 1
  br i1 %.not331437, label %.loopexit342, label %.lr.ph440.preheader

.lr.ph440.preheader:                              ; preds = %384
  %386 = add nuw i32 %385, 1
  %wide.trip.count603 = zext i32 %386 to i64
  %387 = zext nneg i32 %385 to i64
  %min.iters.check705 = icmp eq i32 %385, 1
  br i1 %min.iters.check705, label %.lr.ph440.preheader817, label %vector.memcheck695

vector.memcheck695:                               ; preds = %.lr.ph440.preheader
  %388 = shl nuw nsw i64 %wide.trip.count603, 3
  %scevgep697 = getelementptr i8, ptr %scevgep696, i64 %388
  %scevgep699 = getelementptr i8, ptr %scevgep698, i64 %388
  %bound0700 = icmp ugt ptr %scevgep699, %9
  %bound1701 = icmp ugt ptr %scevgep697, %7
  %found.conflict702 = and i1 %bound0700, %bound1701
  br i1 %found.conflict702, label %.lr.ph440.preheader817, label %vector.ph706

vector.ph706:                                     ; preds = %vector.memcheck695
  %n.vec708 = and i64 %387, 2147483646
  %ind.end709 = or i64 %387, 1
  br label %vector.body711

vector.body711:                                   ; preds = %vector.body711, %vector.ph706
  %index712 = phi i64 [ 0, %vector.ph706 ], [ %index.next716, %vector.body711 ]
  %389 = getelementptr double, ptr %7, i64 %index712
  %wide.load714 = load <2 x double>, ptr %389, align 8, !tbaa !9, !alias.scope !53
  %390 = getelementptr double, ptr %9, i64 %index712
  %wide.load715 = load <2 x double>, ptr %390, align 8, !tbaa !9, !alias.scope !56, !noalias !53
  %391 = fdiv <2 x double> %wide.load715, %wide.load714
  store <2 x double> %391, ptr %390, align 8, !tbaa !9, !alias.scope !56, !noalias !53
  %index.next716 = add nuw i64 %index712, 2
  %392 = icmp eq i64 %index.next716, %n.vec708
  br i1 %392, label %middle.block703, label %vector.body711, !llvm.loop !58

middle.block703:                                  ; preds = %vector.body711
  %cmp.n717 = icmp eq i64 %n.vec708, %387
  br i1 %cmp.n717, label %.loopexit342, label %.lr.ph440.preheader817

.lr.ph440.preheader817:                           ; preds = %middle.block703, %vector.memcheck695, %.lr.ph440.preheader
  %indvars.iv600.ph = phi i64 [ 1, %vector.memcheck695 ], [ 1, %.lr.ph440.preheader ], [ %ind.end709, %middle.block703 ]
  %393 = sub nsw i64 %wide.trip.count603, %indvars.iv600.ph
  %394 = zext nneg i32 %385 to i64
  %395 = sub nsw i64 %394, %indvars.iv600.ph
  %xtraiter892 = and i64 %393, 3
  %lcmp.mod893.not = icmp eq i64 %xtraiter892, 0
  br i1 %lcmp.mod893.not, label %.lr.ph440.prol.loopexit, label %.lr.ph440.prol

.lr.ph440.prol:                                   ; preds = %.lr.ph440.preheader817, %.lr.ph440.prol
  %indvars.iv600.prol = phi i64 [ %indvars.iv.next601.prol, %.lr.ph440.prol ], [ %indvars.iv600.ph, %.lr.ph440.preheader817 ]
  %prol.iter894 = phi i64 [ %prol.iter894.next, %.lr.ph440.prol ], [ 0, %.lr.ph440.preheader817 ]
  %396 = getelementptr inbounds double, ptr %19, i64 %indvars.iv600.prol
  %397 = load double, ptr %396, align 8, !tbaa !9
  %398 = getelementptr inbounds double, ptr %20, i64 %indvars.iv600.prol
  %399 = load double, ptr %398, align 8, !tbaa !9
  %400 = fdiv double %399, %397
  store double %400, ptr %398, align 8, !tbaa !9
  %indvars.iv.next601.prol = add nuw nsw i64 %indvars.iv600.prol, 1
  %prol.iter894.next = add i64 %prol.iter894, 1
  %prol.iter894.cmp.not = icmp eq i64 %prol.iter894.next, %xtraiter892
  br i1 %prol.iter894.cmp.not, label %.lr.ph440.prol.loopexit, label %.lr.ph440.prol, !llvm.loop !59

.lr.ph440.prol.loopexit:                          ; preds = %.lr.ph440.prol, %.lr.ph440.preheader817
  %indvars.iv600.unr = phi i64 [ %indvars.iv600.ph, %.lr.ph440.preheader817 ], [ %indvars.iv.next601.prol, %.lr.ph440.prol ]
  %401 = icmp ult i64 %395, 3
  br i1 %401, label %.loopexit342, label %.lr.ph440

.lr.ph440:                                        ; preds = %.lr.ph440.prol.loopexit, %.lr.ph440
  %indvars.iv600 = phi i64 [ %indvars.iv.next601.3, %.lr.ph440 ], [ %indvars.iv600.unr, %.lr.ph440.prol.loopexit ]
  %402 = getelementptr inbounds double, ptr %19, i64 %indvars.iv600
  %403 = load double, ptr %402, align 8, !tbaa !9
  %404 = getelementptr inbounds double, ptr %20, i64 %indvars.iv600
  %405 = load double, ptr %404, align 8, !tbaa !9
  %406 = fdiv double %405, %403
  store double %406, ptr %404, align 8, !tbaa !9
  %407 = getelementptr double, ptr %7, i64 %indvars.iv600
  %408 = load double, ptr %407, align 8, !tbaa !9
  %409 = getelementptr double, ptr %9, i64 %indvars.iv600
  %410 = load double, ptr %409, align 8, !tbaa !9
  %411 = fdiv double %410, %408
  store double %411, ptr %409, align 8, !tbaa !9
  %indvars.iv.next601.1 = add nuw nsw i64 %indvars.iv600, 2
  %412 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next601.1
  %413 = load double, ptr %412, align 8, !tbaa !9
  %414 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next601.1
  %415 = load double, ptr %414, align 8, !tbaa !9
  %416 = fdiv double %415, %413
  store double %416, ptr %414, align 8, !tbaa !9
  %indvars.iv.next601.2 = add nuw nsw i64 %indvars.iv600, 3
  %417 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next601.2
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next601.2
  %420 = load double, ptr %419, align 8, !tbaa !9
  %421 = fdiv double %420, %418
  store double %421, ptr %419, align 8, !tbaa !9
  %indvars.iv.next601.3 = add nuw nsw i64 %indvars.iv600, 4
  %exitcond604.not.3 = icmp eq i64 %indvars.iv.next601.3, %wide.trip.count603
  br i1 %exitcond604.not.3, label %.loopexit342, label %.lr.ph440, !llvm.loop !60

422:                                              ; preds = %382
  %423 = load i32, ptr %1, align 4, !tbaa !5
  %.not330433 = icmp slt i32 %423, 1
  br i1 %.not330433, label %.loopexit342, label %.lr.ph436.preheader

.lr.ph436.preheader:                              ; preds = %422
  %424 = add nuw i32 %423, 1
  %wide.trip.count598 = zext i32 %424 to i64
  %425 = zext nneg i32 %423 to i64
  %min.iters.check728 = icmp ult i32 %423, 4
  br i1 %min.iters.check728, label %.lr.ph436.preheader818, label %vector.memcheck718

vector.memcheck718:                               ; preds = %.lr.ph436.preheader
  %426 = shl nuw nsw i64 %wide.trip.count598, 3
  %scevgep720 = getelementptr i8, ptr %scevgep719, i64 %426
  %scevgep722 = getelementptr i8, ptr %scevgep721, i64 %426
  %bound0723 = icmp ugt ptr %scevgep722, %9
  %bound1724 = icmp ugt ptr %scevgep720, %7
  %found.conflict725 = and i1 %bound0723, %bound1724
  br i1 %found.conflict725, label %.lr.ph436.preheader818, label %vector.ph729

vector.ph729:                                     ; preds = %vector.memcheck718
  %n.vec731 = and i64 %425, 2147483644
  %ind.end732 = or disjoint i64 %n.vec731, 1
  br label %vector.body734

vector.body734:                                   ; preds = %vector.body734, %vector.ph729
  %index735 = phi i64 [ 0, %vector.ph729 ], [ %index.next741, %vector.body734 ]
  %427 = getelementptr double, ptr %7, i64 %index735
  %428 = getelementptr inbounds i8, ptr %427, i64 16
  %wide.load737 = load <2 x double>, ptr %427, align 8, !tbaa !9, !alias.scope !61
  %wide.load738 = load <2 x double>, ptr %428, align 8, !tbaa !9, !alias.scope !61
  %429 = getelementptr double, ptr %9, i64 %index735
  %430 = getelementptr inbounds i8, ptr %429, i64 16
  %wide.load739 = load <2 x double>, ptr %429, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %wide.load740 = load <2 x double>, ptr %430, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %431 = fmul <2 x double> %wide.load737, %wide.load739
  %432 = fmul <2 x double> %wide.load738, %wide.load740
  store <2 x double> %431, ptr %429, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  store <2 x double> %432, ptr %430, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %index.next741 = add nuw i64 %index735, 4
  %433 = icmp eq i64 %index.next741, %n.vec731
  br i1 %433, label %middle.block726, label %vector.body734, !llvm.loop !66

middle.block726:                                  ; preds = %vector.body734
  %cmp.n742 = icmp eq i64 %n.vec731, %425
  br i1 %cmp.n742, label %.loopexit342, label %.lr.ph436.preheader818

.lr.ph436.preheader818:                           ; preds = %middle.block726, %vector.memcheck718, %.lr.ph436.preheader
  %indvars.iv595.ph = phi i64 [ 1, %vector.memcheck718 ], [ 1, %.lr.ph436.preheader ], [ %ind.end732, %middle.block726 ]
  %434 = sub nsw i64 %wide.trip.count598, %indvars.iv595.ph
  %435 = zext nneg i32 %423 to i64
  %436 = sub nsw i64 %435, %indvars.iv595.ph
  %xtraiter889 = and i64 %434, 3
  %lcmp.mod890.not = icmp eq i64 %xtraiter889, 0
  br i1 %lcmp.mod890.not, label %.lr.ph436.prol.loopexit, label %.lr.ph436.prol

.lr.ph436.prol:                                   ; preds = %.lr.ph436.preheader818, %.lr.ph436.prol
  %indvars.iv595.prol = phi i64 [ %indvars.iv.next596.prol, %.lr.ph436.prol ], [ %indvars.iv595.ph, %.lr.ph436.preheader818 ]
  %prol.iter891 = phi i64 [ %prol.iter891.next, %.lr.ph436.prol ], [ 0, %.lr.ph436.preheader818 ]
  %437 = getelementptr inbounds double, ptr %19, i64 %indvars.iv595.prol
  %438 = load double, ptr %437, align 8, !tbaa !9
  %439 = getelementptr inbounds double, ptr %20, i64 %indvars.iv595.prol
  %440 = load double, ptr %439, align 8, !tbaa !9
  %441 = fmul double %438, %440
  store double %441, ptr %439, align 8, !tbaa !9
  %indvars.iv.next596.prol = add nuw nsw i64 %indvars.iv595.prol, 1
  %prol.iter891.next = add i64 %prol.iter891, 1
  %prol.iter891.cmp.not = icmp eq i64 %prol.iter891.next, %xtraiter889
  br i1 %prol.iter891.cmp.not, label %.lr.ph436.prol.loopexit, label %.lr.ph436.prol, !llvm.loop !67

.lr.ph436.prol.loopexit:                          ; preds = %.lr.ph436.prol, %.lr.ph436.preheader818
  %indvars.iv595.unr = phi i64 [ %indvars.iv595.ph, %.lr.ph436.preheader818 ], [ %indvars.iv.next596.prol, %.lr.ph436.prol ]
  %442 = icmp ult i64 %436, 3
  br i1 %442, label %.loopexit342, label %.lr.ph436

.lr.ph436:                                        ; preds = %.lr.ph436.prol.loopexit, %.lr.ph436
  %indvars.iv595 = phi i64 [ %indvars.iv.next596.3, %.lr.ph436 ], [ %indvars.iv595.unr, %.lr.ph436.prol.loopexit ]
  %443 = getelementptr inbounds double, ptr %19, i64 %indvars.iv595
  %444 = load double, ptr %443, align 8, !tbaa !9
  %445 = getelementptr inbounds double, ptr %20, i64 %indvars.iv595
  %446 = load double, ptr %445, align 8, !tbaa !9
  %447 = fmul double %444, %446
  store double %447, ptr %445, align 8, !tbaa !9
  %448 = getelementptr double, ptr %7, i64 %indvars.iv595
  %449 = load double, ptr %448, align 8, !tbaa !9
  %450 = getelementptr double, ptr %9, i64 %indvars.iv595
  %451 = load double, ptr %450, align 8, !tbaa !9
  %452 = fmul double %449, %451
  store double %452, ptr %450, align 8, !tbaa !9
  %indvars.iv.next596.1 = add nuw nsw i64 %indvars.iv595, 2
  %453 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next596.1
  %454 = load double, ptr %453, align 8, !tbaa !9
  %455 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next596.1
  %456 = load double, ptr %455, align 8, !tbaa !9
  %457 = fmul double %454, %456
  store double %457, ptr %455, align 8, !tbaa !9
  %indvars.iv.next596.2 = add nuw nsw i64 %indvars.iv595, 3
  %458 = getelementptr inbounds double, ptr %19, i64 %indvars.iv.next596.2
  %459 = load double, ptr %458, align 8, !tbaa !9
  %460 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next596.2
  %461 = load double, ptr %460, align 8, !tbaa !9
  %462 = fmul double %459, %461
  store double %462, ptr %460, align 8, !tbaa !9
  %indvars.iv.next596.3 = add nuw nsw i64 %indvars.iv595, 4
  %exitcond599.not.3 = icmp eq i64 %indvars.iv.next596.3, %wide.trip.count598
  br i1 %exitcond599.not.3, label %.loopexit342, label %.lr.ph436, !llvm.loop !68

.loopexit342:                                     ; preds = %.lr.ph436.prol.loopexit, %.lr.ph436, %.lr.ph440.prol.loopexit, %.lr.ph440, %middle.block726, %middle.block703, %422, %384, %382
  call void @dpotrs_(ptr noundef nonnull %.str.3..str.2, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %1, ptr noundef nonnull %8) #3
  %463 = load i32, ptr %1, align 4, !tbaa !5
  %.not332441 = icmp slt i32 %463, 1
  br i1 %.not332441, label %.loopexit.backedge, label %.lr.ph444

.lr.ph444:                                        ; preds = %.loopexit342
  %464 = shl nuw i32 %463, 1
  %465 = sext i32 %464 to i64
  %466 = add nuw i32 %463, 1
  %wide.trip.count608 = zext i32 %466 to i64
  %invariant.gep667 = getelementptr double, ptr %20, i64 %465
  %467 = zext nneg i32 %463 to i64
  %min.iters.check = icmp ult i32 %463, 6
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph444
  %468 = shl nuw nsw i64 %wide.trip.count608, 3
  %scevgep688 = getelementptr i8, ptr %scevgep, i64 %468
  %469 = shl nsw i64 %465, 3
  %scevgep689 = getelementptr i8, ptr %9, i64 %469
  %470 = getelementptr i8, ptr %scevgep690, i64 %469
  %scevgep691 = getelementptr i8, ptr %470, i64 %468
  %bound0 = icmp ugt ptr %scevgep691, %9
  %bound1 = icmp ult ptr %scevgep689, %scevgep688
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %467, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %471 = getelementptr double, ptr %invariant.gep667, i64 %offset.idx
  %472 = getelementptr i8, ptr %471, i64 16
  %wide.load = load <2 x double>, ptr %471, align 8, !tbaa !9, !alias.scope !69
  %wide.load692 = load <2 x double>, ptr %472, align 8, !tbaa !9, !alias.scope !69
  %473 = getelementptr double, ptr %9, i64 %index
  %474 = getelementptr inbounds i8, ptr %473, i64 16
  %wide.load693 = load <2 x double>, ptr %473, align 8, !tbaa !9, !alias.scope !72, !noalias !69
  %wide.load694 = load <2 x double>, ptr %474, align 8, !tbaa !9, !alias.scope !72, !noalias !69
  %475 = fmul <2 x double> %wide.load, %wide.load693
  %476 = fmul <2 x double> %wide.load692, %wide.load694
  store <2 x double> %475, ptr %473, align 8, !tbaa !9, !alias.scope !72, !noalias !69
  store <2 x double> %476, ptr %474, align 8, !tbaa !9, !alias.scope !72, !noalias !69
  %index.next = add nuw i64 %index, 4
  %477 = icmp eq i64 %index.next, %n.vec
  br i1 %477, label %middle.block, label %vector.body, !llvm.loop !74

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph444
  %indvars.iv605.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph444 ], [ %ind.end, %middle.block ]
  %478 = sub nsw i64 %wide.trip.count608, %indvars.iv605.ph
  %479 = zext nneg i32 %463 to i64
  %480 = sub nsw i64 %479, %indvars.iv605.ph
  %xtraiter895 = and i64 %478, 3
  %lcmp.mod896.not = icmp eq i64 %xtraiter895, 0
  br i1 %lcmp.mod896.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv605.prol = phi i64 [ %indvars.iv.next606.prol, %scalar.ph.prol ], [ %indvars.iv605.ph, %scalar.ph.preheader ]
  %prol.iter897 = phi i64 [ %prol.iter897.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep668.prol = getelementptr double, ptr %invariant.gep667, i64 %indvars.iv605.prol
  %481 = load double, ptr %gep668.prol, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %20, i64 %indvars.iv605.prol
  %483 = load double, ptr %482, align 8, !tbaa !9
  %484 = fmul double %481, %483
  store double %484, ptr %482, align 8, !tbaa !9
  %indvars.iv.next606.prol = add nuw nsw i64 %indvars.iv605.prol, 1
  %prol.iter897.next = add i64 %prol.iter897, 1
  %prol.iter897.cmp.not = icmp eq i64 %prol.iter897.next, %xtraiter895
  br i1 %prol.iter897.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !75

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv605.unr = phi i64 [ %indvars.iv605.ph, %scalar.ph.preheader ], [ %indvars.iv.next606.prol, %scalar.ph.prol ]
  %485 = icmp ult i64 %480, 3
  br i1 %485, label %.loopexit.backedge, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep918 = getelementptr i8, ptr %invariant.gep667, i64 8
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv605 = phi i64 [ %indvars.iv605.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next606.3, %scalar.ph ]
  %gep668 = getelementptr double, ptr %invariant.gep667, i64 %indvars.iv605
  %486 = load double, ptr %gep668, align 8, !tbaa !9
  %487 = getelementptr inbounds double, ptr %20, i64 %indvars.iv605
  %488 = load double, ptr %487, align 8, !tbaa !9
  %489 = fmul double %486, %488
  store double %489, ptr %487, align 8, !tbaa !9
  %gep919 = getelementptr double, ptr %invariant.gep918, i64 %indvars.iv605
  %490 = load double, ptr %gep919, align 8, !tbaa !9
  %491 = getelementptr double, ptr %9, i64 %indvars.iv605
  %492 = load double, ptr %491, align 8, !tbaa !9
  %493 = fmul double %490, %492
  store double %493, ptr %491, align 8, !tbaa !9
  %indvars.iv.next606.1 = add nuw nsw i64 %indvars.iv605, 2
  %gep668.2 = getelementptr double, ptr %invariant.gep667, i64 %indvars.iv.next606.1
  %494 = load double, ptr %gep668.2, align 8, !tbaa !9
  %495 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next606.1
  %496 = load double, ptr %495, align 8, !tbaa !9
  %497 = fmul double %494, %496
  store double %497, ptr %495, align 8, !tbaa !9
  %indvars.iv.next606.2 = add nuw nsw i64 %indvars.iv605, 3
  %gep668.3 = getelementptr double, ptr %invariant.gep667, i64 %indvars.iv.next606.2
  %498 = load double, ptr %gep668.3, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next606.2
  %500 = load double, ptr %499, align 8, !tbaa !9
  %501 = fmul double %498, %500
  store double %501, ptr %499, align 8, !tbaa !9
  %indvars.iv.next606.3 = add nuw nsw i64 %indvars.iv605, 4
  %exitcond609.not.3 = icmp eq i64 %indvars.iv.next606.3, %wide.trip.count608
  br i1 %exitcond609.not.3, label %.loopexit.backedge, label %scalar.ph, !llvm.loop !76

502:                                              ; preds = %.loopexit
  %503 = load double, ptr %15, align 8, !tbaa !9
  %504 = fcmp une double %503, 0.000000e+00
  %505 = fdiv double 1.000000e+00, %503
  %.0310 = select i1 %504, double %505, double 0.000000e+00
  br label %506

506:                                              ; preds = %25, %502, %23
  %.0311 = phi double [ 0.000000e+00, %23 ], [ %.0310, %502 ], [ 1.000000e+00, %25 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #3
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %14) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #3
  ret double %.0311
}

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

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

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

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

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind 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 = { nounwind }

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

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


; Effective O3 passes: DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SROAPass,SimplifyCFGPass,TailCallElimPass