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

; 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 [13 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1

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

76:                                               ; preds = %12
  %77 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 -2, ptr %77, align 4, !tbaa !9
  br label %110

78:                                               ; preds = %12
  %79 = load ptr, ptr %17, align 8, !tbaa !5
  %80 = load i32, ptr %79, align 4, !tbaa !9
  %81 = load ptr, ptr %15, align 8, !tbaa !5
  %82 = load i32, ptr %81, align 4, !tbaa !9
  %83 = icmp sge i32 1, %82
  br i1 %83, label %84, label %85

84:                                               ; preds = %78
  br label %88

85:                                               ; preds = %78
  %86 = load ptr, ptr %15, align 8, !tbaa !5
  %87 = load i32, ptr %86, align 4, !tbaa !9
  br label %88

88:                                               ; preds = %85, %84
  %89 = phi i32 [ 1, %84 ], [ %87, %85 ]
  %90 = icmp slt i32 %80, %89
  br i1 %90, label %91, label %93

91:                                               ; preds = %88
  %92 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 -4, ptr %92, align 4, !tbaa !9
  br label %109

93:                                               ; preds = %88
  %94 = load ptr, ptr %19, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  %96 = load ptr, ptr %15, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = icmp sge i32 1, %97
  br i1 %98, label %99, label %100

99:                                               ; preds = %93
  br label %103

100:                                              ; preds = %93
  %101 = load ptr, ptr %15, align 8, !tbaa !5
  %102 = load i32, ptr %101, align 4, !tbaa !9
  br label %103

103:                                              ; preds = %100, %99
  %104 = phi i32 [ 1, %99 ], [ %102, %100 ]
  %105 = icmp slt i32 %95, %104
  br i1 %105, label %106, label %108

106:                                              ; preds = %103
  %107 = load ptr, ptr %23, align 8, !tbaa !5
  store i32 -6, ptr %107, align 4, !tbaa !9
  br label %108

108:                                              ; preds = %106, %103
  br label %109

109:                                              ; preds = %108, %91
  br label %110

110:                                              ; preds = %109, %76
  %111 = load ptr, ptr %23, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp ne i32 %112, 0
  br i1 %113, label %114, label %120

114:                                              ; preds = %110
  %115 = load ptr, ptr %23, align 8, !tbaa !5
  %116 = load i32, ptr %115, align 4, !tbaa !9
  %117 = sub nsw i32 0, %116
  store i32 %117, ptr %30, align 4, !tbaa !9
  %118 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %30, i32 noundef 11)
  %119 = load double, ptr %32, align 8, !tbaa !11
  store double %119, ptr %13, align 8
  store i32 1, ptr %43, align 4
  br label %878

120:                                              ; preds = %110
  %121 = load ptr, ptr %15, align 8, !tbaa !5
  %122 = load i32, ptr %121, align 4, !tbaa !9
  %123 = icmp eq i32 %122, 0
  br i1 %123, label %124, label %126

124:                                              ; preds = %120
  store double 1.000000e+00, ptr %32, align 8, !tbaa !11
  %125 = load double, ptr %32, align 8, !tbaa !11
  store double %125, ptr %13, align 8
  store i32 1, ptr %43, align 4
  br label %878

126:                                              ; preds = %120
  store i32 0, ptr %38, align 4, !tbaa !9
  %127 = load ptr, ptr %14, align 8, !tbaa !5
  %128 = call i32 @lsame_(ptr noundef %127, ptr noundef @.str.1)
  %129 = icmp ne i32 %128, 0
  br i1 %129, label %130, label %131

130:                                              ; preds = %126
  store i32 1, ptr %38, align 4, !tbaa !9
  br label %131

131:                                              ; preds = %130, %126
  %132 = load i32, ptr %38, align 4, !tbaa !9
  %133 = icmp ne i32 %132, 0
  br i1 %133, label %134, label %380

134:                                              ; preds = %131
  %135 = load ptr, ptr %15, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  store i32 %136, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %137

137:                                              ; preds = %376, %134
  %138 = load i32, ptr %35, align 4, !tbaa !9
  %139 = load i32, ptr %30, align 4, !tbaa !9
  %140 = icmp sle i32 %138, %139
  br i1 %140, label %141, label %379

141:                                              ; preds = %137
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  %142 = load ptr, ptr %21, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  %144 = icmp eq i32 %143, 1
  br i1 %144, label %145, label %221

145:                                              ; preds = %141
  %146 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %146, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %147

147:                                              ; preds = %178, %145
  %148 = load i32, ptr %36, align 4, !tbaa !9
  %149 = load i32, ptr %31, align 4, !tbaa !9
  %150 = icmp sle i32 %148, %149
  br i1 %150, label %151, label %181

151:                                              ; preds = %147
  %152 = load ptr, ptr %16, align 8, !tbaa !5
  %153 = load i32, ptr %36, align 4, !tbaa !9
  %154 = load i32, ptr %35, align 4, !tbaa !9
  %155 = load i32, ptr %26, align 4, !tbaa !9
  %156 = mul nsw i32 %154, %155
  %157 = add nsw i32 %153, %156
  %158 = sext i32 %157 to i64
  %159 = getelementptr inbounds double, ptr %152, i64 %158
  %160 = load double, ptr %159, align 8, !tbaa !11
  %161 = load ptr, ptr %22, align 8, !tbaa !5
  %162 = load i32, ptr %36, align 4, !tbaa !9
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds double, ptr %161, i64 %163
  %165 = load double, ptr %164, align 8, !tbaa !11
  %166 = fmul double %160, %165
  store double %166, ptr %33, align 8, !tbaa !11
  %167 = load double, ptr %33, align 8, !tbaa !11
  %168 = fcmp oge double %167, 0.000000e+00
  br i1 %168, label %169, label %171

169:                                              ; preds = %151
  %170 = load double, ptr %33, align 8, !tbaa !11
  br label %174

171:                                              ; preds = %151
  %172 = load double, ptr %33, align 8, !tbaa !11
  %173 = fneg double %172
  br label %174

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

178:                                              ; preds = %174
  %179 = load i32, ptr %36, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %36, align 4, !tbaa !9
  br label %147, !llvm.loop !13

181:                                              ; preds = %147
  %182 = load ptr, ptr %15, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  store i32 %183, ptr %31, align 4, !tbaa !9
  %184 = load i32, ptr %35, align 4, !tbaa !9
  %185 = add nsw i32 %184, 1
  store i32 %185, ptr %36, align 4, !tbaa !9
  br label %186

186:                                              ; preds = %217, %181
  %187 = load i32, ptr %36, align 4, !tbaa !9
  %188 = load i32, ptr %31, align 4, !tbaa !9
  %189 = icmp sle i32 %187, %188
  br i1 %189, label %190, label %220

190:                                              ; preds = %186
  %191 = load ptr, ptr %16, align 8, !tbaa !5
  %192 = load i32, ptr %35, align 4, !tbaa !9
  %193 = load i32, ptr %36, align 4, !tbaa !9
  %194 = load i32, ptr %26, align 4, !tbaa !9
  %195 = mul nsw i32 %193, %194
  %196 = add nsw i32 %192, %195
  %197 = sext i32 %196 to i64
  %198 = getelementptr inbounds double, ptr %191, i64 %197
  %199 = load double, ptr %198, align 8, !tbaa !11
  %200 = load ptr, ptr %22, align 8, !tbaa !5
  %201 = load i32, ptr %36, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds double, ptr %200, i64 %202
  %204 = load double, ptr %203, align 8, !tbaa !11
  %205 = fmul double %199, %204
  store double %205, ptr %33, align 8, !tbaa !11
  %206 = load double, ptr %33, align 8, !tbaa !11
  %207 = fcmp oge double %206, 0.000000e+00
  br i1 %207, label %208, label %210

208:                                              ; preds = %190
  %209 = load double, ptr %33, align 8, !tbaa !11
  br label %213

210:                                              ; preds = %190
  %211 = load double, ptr %33, align 8, !tbaa !11
  %212 = fneg double %211
  br label %213

213:                                              ; preds = %210, %208
  %214 = phi double [ %209, %208 ], [ %212, %210 ]
  %215 = load double, ptr %42, align 8, !tbaa !11
  %216 = fadd double %215, %214
  store double %216, ptr %42, align 8, !tbaa !11
  br label %217

217:                                              ; preds = %213
  %218 = load i32, ptr %36, align 4, !tbaa !9
  %219 = add nsw i32 %218, 1
  store i32 %219, ptr %36, align 4, !tbaa !9
  br label %186, !llvm.loop !15

220:                                              ; preds = %186
  br label %366

221:                                              ; preds = %141
  %222 = load ptr, ptr %21, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = icmp eq i32 %223, 0
  br i1 %224, label %225, label %289

225:                                              ; preds = %221
  %226 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %226, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %227

227:                                              ; preds = %252, %225
  %228 = load i32, ptr %36, align 4, !tbaa !9
  %229 = load i32, ptr %31, align 4, !tbaa !9
  %230 = icmp sle i32 %228, %229
  br i1 %230, label %231, label %255

231:                                              ; preds = %227
  %232 = load ptr, ptr %16, align 8, !tbaa !5
  %233 = load i32, ptr %36, align 4, !tbaa !9
  %234 = load i32, ptr %35, align 4, !tbaa !9
  %235 = load i32, ptr %26, align 4, !tbaa !9
  %236 = mul nsw i32 %234, %235
  %237 = add nsw i32 %233, %236
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds double, ptr %232, i64 %238
  %240 = load double, ptr %239, align 8, !tbaa !11
  store double %240, ptr %33, align 8, !tbaa !11
  %241 = load double, ptr %33, align 8, !tbaa !11
  %242 = fcmp oge double %241, 0.000000e+00
  br i1 %242, label %243, label %245

243:                                              ; preds = %231
  %244 = load double, ptr %33, align 8, !tbaa !11
  br label %248

245:                                              ; preds = %231
  %246 = load double, ptr %33, align 8, !tbaa !11
  %247 = fneg double %246
  br label %248

248:                                              ; preds = %245, %243
  %249 = phi double [ %244, %243 ], [ %247, %245 ]
  %250 = load double, ptr %42, align 8, !tbaa !11
  %251 = fadd double %250, %249
  store double %251, ptr %42, align 8, !tbaa !11
  br label %252

252:                                              ; preds = %248
  %253 = load i32, ptr %36, align 4, !tbaa !9
  %254 = add nsw i32 %253, 1
  store i32 %254, ptr %36, align 4, !tbaa !9
  br label %227, !llvm.loop !16

255:                                              ; preds = %227
  %256 = load ptr, ptr %15, align 8, !tbaa !5
  %257 = load i32, ptr %256, align 4, !tbaa !9
  store i32 %257, ptr %31, align 4, !tbaa !9
  %258 = load i32, ptr %35, align 4, !tbaa !9
  %259 = add nsw i32 %258, 1
  store i32 %259, ptr %36, align 4, !tbaa !9
  br label %260

260:                                              ; preds = %285, %255
  %261 = load i32, ptr %36, align 4, !tbaa !9
  %262 = load i32, ptr %31, align 4, !tbaa !9
  %263 = icmp sle i32 %261, %262
  br i1 %263, label %264, label %288

264:                                              ; preds = %260
  %265 = load ptr, ptr %16, align 8, !tbaa !5
  %266 = load i32, ptr %35, align 4, !tbaa !9
  %267 = load i32, ptr %36, align 4, !tbaa !9
  %268 = load i32, ptr %26, align 4, !tbaa !9
  %269 = mul nsw i32 %267, %268
  %270 = add nsw i32 %266, %269
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds double, ptr %265, i64 %271
  %273 = load double, ptr %272, align 8, !tbaa !11
  store double %273, ptr %33, align 8, !tbaa !11
  %274 = load double, ptr %33, align 8, !tbaa !11
  %275 = fcmp oge double %274, 0.000000e+00
  br i1 %275, label %276, label %278

276:                                              ; preds = %264
  %277 = load double, ptr %33, align 8, !tbaa !11
  br label %281

278:                                              ; preds = %264
  %279 = load double, ptr %33, align 8, !tbaa !11
  %280 = fneg double %279
  br label %281

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

285:                                              ; preds = %281
  %286 = load i32, ptr %36, align 4, !tbaa !9
  %287 = add nsw i32 %286, 1
  store i32 %287, ptr %36, align 4, !tbaa !9
  br label %260, !llvm.loop !17

288:                                              ; preds = %260
  br label %365

289:                                              ; preds = %221
  %290 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %290, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %322, %289
  %292 = load i32, ptr %36, align 4, !tbaa !9
  %293 = load i32, ptr %31, align 4, !tbaa !9
  %294 = icmp sle i32 %292, %293
  br i1 %294, label %295, label %325

295:                                              ; preds = %291
  %296 = load ptr, ptr %16, align 8, !tbaa !5
  %297 = load i32, ptr %36, align 4, !tbaa !9
  %298 = load i32, ptr %35, align 4, !tbaa !9
  %299 = load i32, ptr %26, align 4, !tbaa !9
  %300 = mul nsw i32 %298, %299
  %301 = add nsw i32 %297, %300
  %302 = sext i32 %301 to i64
  %303 = getelementptr inbounds double, ptr %296, i64 %302
  %304 = load double, ptr %303, align 8, !tbaa !11
  %305 = load ptr, ptr %22, align 8, !tbaa !5
  %306 = load i32, ptr %36, align 4, !tbaa !9
  %307 = sext i32 %306 to i64
  %308 = getelementptr inbounds double, ptr %305, i64 %307
  %309 = load double, ptr %308, align 8, !tbaa !11
  %310 = fdiv double %304, %309
  store double %310, ptr %33, align 8, !tbaa !11
  %311 = load double, ptr %33, align 8, !tbaa !11
  %312 = fcmp oge double %311, 0.000000e+00
  br i1 %312, label %313, label %315

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

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

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

322:                                              ; preds = %318
  %323 = load i32, ptr %36, align 4, !tbaa !9
  %324 = add nsw i32 %323, 1
  store i32 %324, ptr %36, align 4, !tbaa !9
  br label %291, !llvm.loop !18

325:                                              ; preds = %291
  %326 = load ptr, ptr %15, align 8, !tbaa !5
  %327 = load i32, ptr %326, align 4, !tbaa !9
  store i32 %327, ptr %31, align 4, !tbaa !9
  %328 = load i32, ptr %35, align 4, !tbaa !9
  %329 = add nsw i32 %328, 1
  store i32 %329, ptr %36, align 4, !tbaa !9
  br label %330

330:                                              ; preds = %361, %325
  %331 = load i32, ptr %36, align 4, !tbaa !9
  %332 = load i32, ptr %31, align 4, !tbaa !9
  %333 = icmp sle i32 %331, %332
  br i1 %333, label %334, label %364

334:                                              ; preds = %330
  %335 = load ptr, ptr %16, align 8, !tbaa !5
  %336 = load i32, ptr %35, align 4, !tbaa !9
  %337 = load i32, ptr %36, align 4, !tbaa !9
  %338 = load i32, ptr %26, align 4, !tbaa !9
  %339 = mul nsw i32 %337, %338
  %340 = add nsw i32 %336, %339
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds double, ptr %335, i64 %341
  %343 = load double, ptr %342, align 8, !tbaa !11
  %344 = load ptr, ptr %22, align 8, !tbaa !5
  %345 = load i32, ptr %36, align 4, !tbaa !9
  %346 = sext i32 %345 to i64
  %347 = getelementptr inbounds double, ptr %344, i64 %346
  %348 = load double, ptr %347, align 8, !tbaa !11
  %349 = fdiv double %343, %348
  store double %349, ptr %33, align 8, !tbaa !11
  %350 = load double, ptr %33, align 8, !tbaa !11
  %351 = fcmp oge double %350, 0.000000e+00
  br i1 %351, label %352, label %354

352:                                              ; preds = %334
  %353 = load double, ptr %33, align 8, !tbaa !11
  br label %357

354:                                              ; preds = %334
  %355 = load double, ptr %33, align 8, !tbaa !11
  %356 = fneg double %355
  br label %357

357:                                              ; preds = %354, %352
  %358 = phi double [ %353, %352 ], [ %356, %354 ]
  %359 = load double, ptr %42, align 8, !tbaa !11
  %360 = fadd double %359, %358
  store double %360, ptr %42, align 8, !tbaa !11
  br label %361

361:                                              ; preds = %357
  %362 = load i32, ptr %36, align 4, !tbaa !9
  %363 = add nsw i32 %362, 1
  store i32 %363, ptr %36, align 4, !tbaa !9
  br label %330, !llvm.loop !19

364:                                              ; preds = %330
  br label %365

365:                                              ; preds = %364, %288
  br label %366

366:                                              ; preds = %365, %220
  %367 = load double, ptr %42, align 8, !tbaa !11
  %368 = load ptr, ptr %24, align 8, !tbaa !5
  %369 = load ptr, ptr %15, align 8, !tbaa !5
  %370 = load i32, ptr %369, align 4, !tbaa !9
  %371 = shl i32 %370, 1
  %372 = load i32, ptr %35, align 4, !tbaa !9
  %373 = add nsw i32 %371, %372
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds double, ptr %368, i64 %374
  store double %367, ptr %375, align 8, !tbaa !11
  br label %376

376:                                              ; preds = %366
  %377 = load i32, ptr %35, align 4, !tbaa !9
  %378 = add nsw i32 %377, 1
  store i32 %378, ptr %35, align 4, !tbaa !9
  br label %137, !llvm.loop !20

379:                                              ; preds = %137
  br label %626

380:                                              ; preds = %131
  %381 = load ptr, ptr %15, align 8, !tbaa !5
  %382 = load i32, ptr %381, align 4, !tbaa !9
  store i32 %382, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %622, %380
  %384 = load i32, ptr %35, align 4, !tbaa !9
  %385 = load i32, ptr %30, align 4, !tbaa !9
  %386 = icmp sle i32 %384, %385
  br i1 %386, label %387, label %625

387:                                              ; preds = %383
  store double 0.000000e+00, ptr %42, align 8, !tbaa !11
  %388 = load ptr, ptr %21, align 8, !tbaa !5
  %389 = load i32, ptr %388, align 4, !tbaa !9
  %390 = icmp eq i32 %389, 1
  br i1 %390, label %391, label %467

391:                                              ; preds = %387
  %392 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %392, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %424, %391
  %394 = load i32, ptr %36, align 4, !tbaa !9
  %395 = load i32, ptr %31, align 4, !tbaa !9
  %396 = icmp sle i32 %394, %395
  br i1 %396, label %397, label %427

397:                                              ; preds = %393
  %398 = load ptr, ptr %16, align 8, !tbaa !5
  %399 = load i32, ptr %35, align 4, !tbaa !9
  %400 = load i32, ptr %36, align 4, !tbaa !9
  %401 = load i32, ptr %26, align 4, !tbaa !9
  %402 = mul nsw i32 %400, %401
  %403 = add nsw i32 %399, %402
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds double, ptr %398, i64 %404
  %406 = load double, ptr %405, align 8, !tbaa !11
  %407 = load ptr, ptr %22, align 8, !tbaa !5
  %408 = load i32, ptr %36, align 4, !tbaa !9
  %409 = sext i32 %408 to i64
  %410 = getelementptr inbounds double, ptr %407, i64 %409
  %411 = load double, ptr %410, align 8, !tbaa !11
  %412 = fmul double %406, %411
  store double %412, ptr %33, align 8, !tbaa !11
  %413 = load double, ptr %33, align 8, !tbaa !11
  %414 = fcmp oge double %413, 0.000000e+00
  br i1 %414, label %415, label %417

415:                                              ; preds = %397
  %416 = load double, ptr %33, align 8, !tbaa !11
  br label %420

417:                                              ; preds = %397
  %418 = load double, ptr %33, align 8, !tbaa !11
  %419 = fneg double %418
  br label %420

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

424:                                              ; preds = %420
  %425 = load i32, ptr %36, align 4, !tbaa !9
  %426 = add nsw i32 %425, 1
  store i32 %426, ptr %36, align 4, !tbaa !9
  br label %393, !llvm.loop !21

427:                                              ; preds = %393
  %428 = load ptr, ptr %15, align 8, !tbaa !5
  %429 = load i32, ptr %428, align 4, !tbaa !9
  store i32 %429, ptr %31, align 4, !tbaa !9
  %430 = load i32, ptr %35, align 4, !tbaa !9
  %431 = add nsw i32 %430, 1
  store i32 %431, ptr %36, align 4, !tbaa !9
  br label %432

432:                                              ; preds = %463, %427
  %433 = load i32, ptr %36, align 4, !tbaa !9
  %434 = load i32, ptr %31, align 4, !tbaa !9
  %435 = icmp sle i32 %433, %434
  br i1 %435, label %436, label %466

436:                                              ; preds = %432
  %437 = load ptr, ptr %16, align 8, !tbaa !5
  %438 = load i32, ptr %36, align 4, !tbaa !9
  %439 = load i32, ptr %35, align 4, !tbaa !9
  %440 = load i32, ptr %26, align 4, !tbaa !9
  %441 = mul nsw i32 %439, %440
  %442 = add nsw i32 %438, %441
  %443 = sext i32 %442 to i64
  %444 = getelementptr inbounds double, ptr %437, i64 %443
  %445 = load double, ptr %444, align 8, !tbaa !11
  %446 = load ptr, ptr %22, align 8, !tbaa !5
  %447 = load i32, ptr %36, align 4, !tbaa !9
  %448 = sext i32 %447 to i64
  %449 = getelementptr inbounds double, ptr %446, i64 %448
  %450 = load double, ptr %449, align 8, !tbaa !11
  %451 = fmul double %445, %450
  store double %451, ptr %33, align 8, !tbaa !11
  %452 = load double, ptr %33, align 8, !tbaa !11
  %453 = fcmp oge double %452, 0.000000e+00
  br i1 %453, label %454, label %456

454:                                              ; preds = %436
  %455 = load double, ptr %33, align 8, !tbaa !11
  br label %459

456:                                              ; preds = %436
  %457 = load double, ptr %33, align 8, !tbaa !11
  %458 = fneg double %457
  br label %459

459:                                              ; preds = %456, %454
  %460 = phi double [ %455, %454 ], [ %458, %456 ]
  %461 = load double, ptr %42, align 8, !tbaa !11
  %462 = fadd double %461, %460
  store double %462, ptr %42, align 8, !tbaa !11
  br label %463

463:                                              ; preds = %459
  %464 = load i32, ptr %36, align 4, !tbaa !9
  %465 = add nsw i32 %464, 1
  store i32 %465, ptr %36, align 4, !tbaa !9
  br label %432, !llvm.loop !22

466:                                              ; preds = %432
  br label %612

467:                                              ; preds = %387
  %468 = load ptr, ptr %21, align 8, !tbaa !5
  %469 = load i32, ptr %468, align 4, !tbaa !9
  %470 = icmp eq i32 %469, 0
  br i1 %470, label %471, label %535

471:                                              ; preds = %467
  %472 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %472, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %473

473:                                              ; preds = %498, %471
  %474 = load i32, ptr %36, align 4, !tbaa !9
  %475 = load i32, ptr %31, align 4, !tbaa !9
  %476 = icmp sle i32 %474, %475
  br i1 %476, label %477, label %501

477:                                              ; preds = %473
  %478 = load ptr, ptr %16, align 8, !tbaa !5
  %479 = load i32, ptr %35, align 4, !tbaa !9
  %480 = load i32, ptr %36, align 4, !tbaa !9
  %481 = load i32, ptr %26, align 4, !tbaa !9
  %482 = mul nsw i32 %480, %481
  %483 = add nsw i32 %479, %482
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds double, ptr %478, i64 %484
  %486 = load double, ptr %485, align 8, !tbaa !11
  store double %486, ptr %33, align 8, !tbaa !11
  %487 = load double, ptr %33, align 8, !tbaa !11
  %488 = fcmp oge double %487, 0.000000e+00
  br i1 %488, label %489, label %491

489:                                              ; preds = %477
  %490 = load double, ptr %33, align 8, !tbaa !11
  br label %494

491:                                              ; preds = %477
  %492 = load double, ptr %33, align 8, !tbaa !11
  %493 = fneg double %492
  br label %494

494:                                              ; preds = %491, %489
  %495 = phi double [ %490, %489 ], [ %493, %491 ]
  %496 = load double, ptr %42, align 8, !tbaa !11
  %497 = fadd double %496, %495
  store double %497, ptr %42, align 8, !tbaa !11
  br label %498

498:                                              ; preds = %494
  %499 = load i32, ptr %36, align 4, !tbaa !9
  %500 = add nsw i32 %499, 1
  store i32 %500, ptr %36, align 4, !tbaa !9
  br label %473, !llvm.loop !23

501:                                              ; preds = %473
  %502 = load ptr, ptr %15, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  store i32 %503, ptr %31, align 4, !tbaa !9
  %504 = load i32, ptr %35, align 4, !tbaa !9
  %505 = add nsw i32 %504, 1
  store i32 %505, ptr %36, align 4, !tbaa !9
  br label %506

506:                                              ; preds = %531, %501
  %507 = load i32, ptr %36, align 4, !tbaa !9
  %508 = load i32, ptr %31, align 4, !tbaa !9
  %509 = icmp sle i32 %507, %508
  br i1 %509, label %510, label %534

510:                                              ; preds = %506
  %511 = load ptr, ptr %16, align 8, !tbaa !5
  %512 = load i32, ptr %36, align 4, !tbaa !9
  %513 = load i32, ptr %35, align 4, !tbaa !9
  %514 = load i32, ptr %26, align 4, !tbaa !9
  %515 = mul nsw i32 %513, %514
  %516 = add nsw i32 %512, %515
  %517 = sext i32 %516 to i64
  %518 = getelementptr inbounds double, ptr %511, i64 %517
  %519 = load double, ptr %518, align 8, !tbaa !11
  store double %519, ptr %33, align 8, !tbaa !11
  %520 = load double, ptr %33, align 8, !tbaa !11
  %521 = fcmp oge double %520, 0.000000e+00
  br i1 %521, label %522, label %524

522:                                              ; preds = %510
  %523 = load double, ptr %33, align 8, !tbaa !11
  br label %527

524:                                              ; preds = %510
  %525 = load double, ptr %33, align 8, !tbaa !11
  %526 = fneg double %525
  br label %527

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

531:                                              ; preds = %527
  %532 = load i32, ptr %36, align 4, !tbaa !9
  %533 = add nsw i32 %532, 1
  store i32 %533, ptr %36, align 4, !tbaa !9
  br label %506, !llvm.loop !24

534:                                              ; preds = %506
  br label %611

535:                                              ; preds = %467
  %536 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %536, ptr %31, align 4, !tbaa !9
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %568, %535
  %538 = load i32, ptr %36, align 4, !tbaa !9
  %539 = load i32, ptr %31, align 4, !tbaa !9
  %540 = icmp sle i32 %538, %539
  br i1 %540, label %541, label %571

541:                                              ; preds = %537
  %542 = load ptr, ptr %16, align 8, !tbaa !5
  %543 = load i32, ptr %35, align 4, !tbaa !9
  %544 = load i32, ptr %36, align 4, !tbaa !9
  %545 = load i32, ptr %26, align 4, !tbaa !9
  %546 = mul nsw i32 %544, %545
  %547 = add nsw i32 %543, %546
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds double, ptr %542, i64 %548
  %550 = load double, ptr %549, align 8, !tbaa !11
  %551 = load ptr, ptr %22, align 8, !tbaa !5
  %552 = load i32, ptr %36, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds double, ptr %551, i64 %553
  %555 = load double, ptr %554, align 8, !tbaa !11
  %556 = fdiv double %550, %555
  store double %556, ptr %33, align 8, !tbaa !11
  %557 = load double, ptr %33, align 8, !tbaa !11
  %558 = fcmp oge double %557, 0.000000e+00
  br i1 %558, label %559, label %561

559:                                              ; preds = %541
  %560 = load double, ptr %33, align 8, !tbaa !11
  br label %564

561:                                              ; preds = %541
  %562 = load double, ptr %33, align 8, !tbaa !11
  %563 = fneg double %562
  br label %564

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

568:                                              ; preds = %564
  %569 = load i32, ptr %36, align 4, !tbaa !9
  %570 = add nsw i32 %569, 1
  store i32 %570, ptr %36, align 4, !tbaa !9
  br label %537, !llvm.loop !25

571:                                              ; preds = %537
  %572 = load ptr, ptr %15, align 8, !tbaa !5
  %573 = load i32, ptr %572, align 4, !tbaa !9
  store i32 %573, ptr %31, align 4, !tbaa !9
  %574 = load i32, ptr %35, align 4, !tbaa !9
  %575 = add nsw i32 %574, 1
  store i32 %575, ptr %36, align 4, !tbaa !9
  br label %576

576:                                              ; preds = %607, %571
  %577 = load i32, ptr %36, align 4, !tbaa !9
  %578 = load i32, ptr %31, align 4, !tbaa !9
  %579 = icmp sle i32 %577, %578
  br i1 %579, label %580, label %610

580:                                              ; preds = %576
  %581 = load ptr, ptr %16, align 8, !tbaa !5
  %582 = load i32, ptr %36, align 4, !tbaa !9
  %583 = load i32, ptr %35, align 4, !tbaa !9
  %584 = load i32, ptr %26, align 4, !tbaa !9
  %585 = mul nsw i32 %583, %584
  %586 = add nsw i32 %582, %585
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds double, ptr %581, i64 %587
  %589 = load double, ptr %588, align 8, !tbaa !11
  %590 = load ptr, ptr %22, align 8, !tbaa !5
  %591 = load i32, ptr %36, align 4, !tbaa !9
  %592 = sext i32 %591 to i64
  %593 = getelementptr inbounds double, ptr %590, i64 %592
  %594 = load double, ptr %593, align 8, !tbaa !11
  %595 = fdiv double %589, %594
  store double %595, ptr %33, align 8, !tbaa !11
  %596 = load double, ptr %33, align 8, !tbaa !11
  %597 = fcmp oge double %596, 0.000000e+00
  br i1 %597, label %598, label %600

598:                                              ; preds = %580
  %599 = load double, ptr %33, align 8, !tbaa !11
  br label %603

600:                                              ; preds = %580
  %601 = load double, ptr %33, align 8, !tbaa !11
  %602 = fneg double %601
  br label %603

603:                                              ; preds = %600, %598
  %604 = phi double [ %599, %598 ], [ %602, %600 ]
  %605 = load double, ptr %42, align 8, !tbaa !11
  %606 = fadd double %605, %604
  store double %606, ptr %42, align 8, !tbaa !11
  br label %607

607:                                              ; preds = %603
  %608 = load i32, ptr %36, align 4, !tbaa !9
  %609 = add nsw i32 %608, 1
  store i32 %609, ptr %36, align 4, !tbaa !9
  br label %576, !llvm.loop !26

610:                                              ; preds = %576
  br label %611

611:                                              ; preds = %610, %534
  br label %612

612:                                              ; preds = %611, %466
  %613 = load double, ptr %42, align 8, !tbaa !11
  %614 = load ptr, ptr %24, align 8, !tbaa !5
  %615 = load ptr, ptr %15, align 8, !tbaa !5
  %616 = load i32, ptr %615, align 4, !tbaa !9
  %617 = shl i32 %616, 1
  %618 = load i32, ptr %35, align 4, !tbaa !9
  %619 = add nsw i32 %617, %618
  %620 = sext i32 %619 to i64
  %621 = getelementptr inbounds double, ptr %614, i64 %620
  store double %613, ptr %621, align 8, !tbaa !11
  br label %622

622:                                              ; preds = %612
  %623 = load i32, ptr %35, align 4, !tbaa !9
  %624 = add nsw i32 %623, 1
  store i32 %624, ptr %35, align 4, !tbaa !9
  br label %383, !llvm.loop !27

625:                                              ; preds = %383
  br label %626

626:                                              ; preds = %625, %379
  %627 = call double @dlamch_(ptr noundef @.str.2)
  store double %627, ptr %41, align 8, !tbaa !11
  store double 0.000000e+00, ptr %39, align 8, !tbaa !11
  %628 = getelementptr inbounds [1 x i8], ptr %40, i64 0, i64 0
  store i8 78, ptr %628, align 1, !tbaa !28
  store i32 0, ptr %34, align 4, !tbaa !9
  br label %629

629:                                              ; preds = %869, %626
  %630 = load ptr, ptr %15, align 8, !tbaa !5
  %631 = load ptr, ptr %24, align 8, !tbaa !5
  %632 = load ptr, ptr %15, align 8, !tbaa !5
  %633 = load i32, ptr %632, align 4, !tbaa !9
  %634 = add nsw i32 %633, 1
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds double, ptr %631, i64 %635
  %637 = load ptr, ptr %24, align 8, !tbaa !5
  %638 = getelementptr inbounds double, ptr %637, i64 1
  %639 = load ptr, ptr %25, align 8, !tbaa !5
  %640 = getelementptr inbounds i32, ptr %639, i64 1
  %641 = getelementptr inbounds [3 x i32], ptr %37, i64 0, i64 0
  call void @dlacn2_(ptr noundef %630, ptr noundef %636, ptr noundef %638, ptr noundef %640, ptr noundef %39, ptr noundef %34, ptr noundef %641)
  %642 = load i32, ptr %34, align 4, !tbaa !9
  %643 = icmp ne i32 %642, 0
  br i1 %643, label %644, label %870

644:                                              ; preds = %629
  %645 = load i32, ptr %34, align 4, !tbaa !9
  %646 = icmp eq i32 %645, 2
  br i1 %646, label %647, label %758

647:                                              ; preds = %644
  %648 = load ptr, ptr %15, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  store i32 %649, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %650

650:                                              ; preds = %670, %647
  %651 = load i32, ptr %35, align 4, !tbaa !9
  %652 = load i32, ptr %30, align 4, !tbaa !9
  %653 = icmp sle i32 %651, %652
  br i1 %653, label %654, label %673

654:                                              ; preds = %650
  %655 = load ptr, ptr %24, align 8, !tbaa !5
  %656 = load ptr, ptr %15, align 8, !tbaa !5
  %657 = load i32, ptr %656, align 4, !tbaa !9
  %658 = shl i32 %657, 1
  %659 = load i32, ptr %35, align 4, !tbaa !9
  %660 = add nsw i32 %658, %659
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds double, ptr %655, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !11
  %664 = load ptr, ptr %24, align 8, !tbaa !5
  %665 = load i32, ptr %35, align 4, !tbaa !9
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds double, ptr %664, i64 %666
  %668 = load double, ptr %667, align 8, !tbaa !11
  %669 = fmul double %668, %663
  store double %669, ptr %667, align 8, !tbaa !11
  br label %670

670:                                              ; preds = %654
  %671 = load i32, ptr %35, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %35, align 4, !tbaa !9
  br label %650, !llvm.loop !29

673:                                              ; preds = %650
  %674 = load i32, ptr %38, align 4, !tbaa !9
  %675 = icmp ne i32 %674, 0
  br i1 %675, label %676, label %689

676:                                              ; preds = %673
  %677 = load ptr, ptr %15, align 8, !tbaa !5
  %678 = load ptr, ptr %18, align 8, !tbaa !5
  %679 = load i32, ptr %29, align 4, !tbaa !9
  %680 = sext i32 %679 to i64
  %681 = getelementptr inbounds double, ptr %678, i64 %680
  %682 = load ptr, ptr %19, align 8, !tbaa !5
  %683 = load ptr, ptr %20, align 8, !tbaa !5
  %684 = getelementptr inbounds i32, ptr %683, i64 1
  %685 = load ptr, ptr %24, align 8, !tbaa !5
  %686 = getelementptr inbounds double, ptr %685, i64 1
  %687 = load ptr, ptr %15, align 8, !tbaa !5
  %688 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dsytrs_(ptr noundef @.str.1, ptr noundef %677, ptr noundef @c__1, ptr noundef %681, ptr noundef %682, ptr noundef %684, ptr noundef %686, ptr noundef %687, ptr noundef %688)
  br label %702

689:                                              ; preds = %673
  %690 = load ptr, ptr %15, align 8, !tbaa !5
  %691 = load ptr, ptr %18, align 8, !tbaa !5
  %692 = load i32, ptr %29, align 4, !tbaa !9
  %693 = sext i32 %692 to i64
  %694 = getelementptr inbounds double, ptr %691, i64 %693
  %695 = load ptr, ptr %19, align 8, !tbaa !5
  %696 = load ptr, ptr %20, align 8, !tbaa !5
  %697 = getelementptr inbounds i32, ptr %696, i64 1
  %698 = load ptr, ptr %24, align 8, !tbaa !5
  %699 = getelementptr inbounds double, ptr %698, i64 1
  %700 = load ptr, ptr %15, align 8, !tbaa !5
  %701 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dsytrs_(ptr noundef @.str.3, ptr noundef %690, ptr noundef @c__1, ptr noundef %694, ptr noundef %695, ptr noundef %697, ptr noundef %699, ptr noundef %700, ptr noundef %701)
  br label %702

702:                                              ; preds = %689, %676
  %703 = load ptr, ptr %21, align 8, !tbaa !5
  %704 = load i32, ptr %703, align 4, !tbaa !9
  %705 = icmp eq i32 %704, 1
  br i1 %705, label %706, label %729

706:                                              ; preds = %702
  %707 = load ptr, ptr %15, align 8, !tbaa !5
  %708 = load i32, ptr %707, align 4, !tbaa !9
  store i32 %708, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %709

709:                                              ; preds = %725, %706
  %710 = load i32, ptr %35, align 4, !tbaa !9
  %711 = load i32, ptr %30, align 4, !tbaa !9
  %712 = icmp sle i32 %710, %711
  br i1 %712, label %713, label %728

713:                                              ; preds = %709
  %714 = load ptr, ptr %22, align 8, !tbaa !5
  %715 = load i32, ptr %35, align 4, !tbaa !9
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds double, ptr %714, i64 %716
  %718 = load double, ptr %717, align 8, !tbaa !11
  %719 = load ptr, ptr %24, align 8, !tbaa !5
  %720 = load i32, ptr %35, align 4, !tbaa !9
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds double, ptr %719, i64 %721
  %723 = load double, ptr %722, align 8, !tbaa !11
  %724 = fdiv double %723, %718
  store double %724, ptr %722, align 8, !tbaa !11
  br label %725

725:                                              ; preds = %713
  %726 = load i32, ptr %35, align 4, !tbaa !9
  %727 = add nsw i32 %726, 1
  store i32 %727, ptr %35, align 4, !tbaa !9
  br label %709, !llvm.loop !30

728:                                              ; preds = %709
  br label %757

729:                                              ; preds = %702
  %730 = load ptr, ptr %21, align 8, !tbaa !5
  %731 = load i32, ptr %730, align 4, !tbaa !9
  %732 = icmp eq i32 %731, -1
  br i1 %732, label %733, label %756

733:                                              ; preds = %729
  %734 = load ptr, ptr %15, align 8, !tbaa !5
  %735 = load i32, ptr %734, align 4, !tbaa !9
  store i32 %735, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %736

736:                                              ; preds = %752, %733
  %737 = load i32, ptr %35, align 4, !tbaa !9
  %738 = load i32, ptr %30, align 4, !tbaa !9
  %739 = icmp sle i32 %737, %738
  br i1 %739, label %740, label %755

740:                                              ; preds = %736
  %741 = load ptr, ptr %22, align 8, !tbaa !5
  %742 = load i32, ptr %35, align 4, !tbaa !9
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds double, ptr %741, i64 %743
  %745 = load double, ptr %744, align 8, !tbaa !11
  %746 = load ptr, ptr %24, align 8, !tbaa !5
  %747 = load i32, ptr %35, align 4, !tbaa !9
  %748 = sext i32 %747 to i64
  %749 = getelementptr inbounds double, ptr %746, i64 %748
  %750 = load double, ptr %749, align 8, !tbaa !11
  %751 = fmul double %750, %745
  store double %751, ptr %749, align 8, !tbaa !11
  br label %752

752:                                              ; preds = %740
  %753 = load i32, ptr %35, align 4, !tbaa !9
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr %35, align 4, !tbaa !9
  br label %736, !llvm.loop !31

755:                                              ; preds = %736
  br label %756

756:                                              ; preds = %755, %729
  br label %757

757:                                              ; preds = %756, %728
  br label %869

758:                                              ; preds = %644
  %759 = load ptr, ptr %21, align 8, !tbaa !5
  %760 = load i32, ptr %759, align 4, !tbaa !9
  %761 = icmp eq i32 %760, 1
  br i1 %761, label %762, label %785

762:                                              ; preds = %758
  %763 = load ptr, ptr %15, align 8, !tbaa !5
  %764 = load i32, ptr %763, align 4, !tbaa !9
  store i32 %764, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %765

765:                                              ; preds = %781, %762
  %766 = load i32, ptr %35, align 4, !tbaa !9
  %767 = load i32, ptr %30, align 4, !tbaa !9
  %768 = icmp sle i32 %766, %767
  br i1 %768, label %769, label %784

769:                                              ; preds = %765
  %770 = load ptr, ptr %22, align 8, !tbaa !5
  %771 = load i32, ptr %35, align 4, !tbaa !9
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds double, ptr %770, i64 %772
  %774 = load double, ptr %773, align 8, !tbaa !11
  %775 = load ptr, ptr %24, align 8, !tbaa !5
  %776 = load i32, ptr %35, align 4, !tbaa !9
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds double, ptr %775, i64 %777
  %779 = load double, ptr %778, align 8, !tbaa !11
  %780 = fdiv double %779, %774
  store double %780, ptr %778, align 8, !tbaa !11
  br label %781

781:                                              ; preds = %769
  %782 = load i32, ptr %35, align 4, !tbaa !9
  %783 = add nsw i32 %782, 1
  store i32 %783, ptr %35, align 4, !tbaa !9
  br label %765, !llvm.loop !32

784:                                              ; preds = %765
  br label %813

785:                                              ; preds = %758
  %786 = load ptr, ptr %21, align 8, !tbaa !5
  %787 = load i32, ptr %786, align 4, !tbaa !9
  %788 = icmp eq i32 %787, -1
  br i1 %788, label %789, label %812

789:                                              ; preds = %785
  %790 = load ptr, ptr %15, align 8, !tbaa !5
  %791 = load i32, ptr %790, align 4, !tbaa !9
  store i32 %791, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %792

792:                                              ; preds = %808, %789
  %793 = load i32, ptr %35, align 4, !tbaa !9
  %794 = load i32, ptr %30, align 4, !tbaa !9
  %795 = icmp sle i32 %793, %794
  br i1 %795, label %796, label %811

796:                                              ; preds = %792
  %797 = load ptr, ptr %22, align 8, !tbaa !5
  %798 = load i32, ptr %35, align 4, !tbaa !9
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds double, ptr %797, i64 %799
  %801 = load double, ptr %800, align 8, !tbaa !11
  %802 = load ptr, ptr %24, align 8, !tbaa !5
  %803 = load i32, ptr %35, align 4, !tbaa !9
  %804 = sext i32 %803 to i64
  %805 = getelementptr inbounds double, ptr %802, i64 %804
  %806 = load double, ptr %805, align 8, !tbaa !11
  %807 = fmul double %806, %801
  store double %807, ptr %805, align 8, !tbaa !11
  br label %808

808:                                              ; preds = %796
  %809 = load i32, ptr %35, align 4, !tbaa !9
  %810 = add nsw i32 %809, 1
  store i32 %810, ptr %35, align 4, !tbaa !9
  br label %792, !llvm.loop !33

811:                                              ; preds = %792
  br label %812

812:                                              ; preds = %811, %785
  br label %813

813:                                              ; preds = %812, %784
  %814 = load i32, ptr %38, align 4, !tbaa !9
  %815 = icmp ne i32 %814, 0
  br i1 %815, label %816, label %829

816:                                              ; preds = %813
  %817 = load ptr, ptr %15, align 8, !tbaa !5
  %818 = load ptr, ptr %18, align 8, !tbaa !5
  %819 = load i32, ptr %29, align 4, !tbaa !9
  %820 = sext i32 %819 to i64
  %821 = getelementptr inbounds double, ptr %818, i64 %820
  %822 = load ptr, ptr %19, align 8, !tbaa !5
  %823 = load ptr, ptr %20, align 8, !tbaa !5
  %824 = getelementptr inbounds i32, ptr %823, i64 1
  %825 = load ptr, ptr %24, align 8, !tbaa !5
  %826 = getelementptr inbounds double, ptr %825, i64 1
  %827 = load ptr, ptr %15, align 8, !tbaa !5
  %828 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dsytrs_(ptr noundef @.str.1, ptr noundef %817, ptr noundef @c__1, ptr noundef %821, ptr noundef %822, ptr noundef %824, ptr noundef %826, ptr noundef %827, ptr noundef %828)
  br label %842

829:                                              ; preds = %813
  %830 = load ptr, ptr %15, align 8, !tbaa !5
  %831 = load ptr, ptr %18, align 8, !tbaa !5
  %832 = load i32, ptr %29, align 4, !tbaa !9
  %833 = sext i32 %832 to i64
  %834 = getelementptr inbounds double, ptr %831, i64 %833
  %835 = load ptr, ptr %19, align 8, !tbaa !5
  %836 = load ptr, ptr %20, align 8, !tbaa !5
  %837 = getelementptr inbounds i32, ptr %836, i64 1
  %838 = load ptr, ptr %24, align 8, !tbaa !5
  %839 = getelementptr inbounds double, ptr %838, i64 1
  %840 = load ptr, ptr %15, align 8, !tbaa !5
  %841 = load ptr, ptr %23, align 8, !tbaa !5
  call void @dsytrs_(ptr noundef @.str.3, ptr noundef %830, ptr noundef @c__1, ptr noundef %834, ptr noundef %835, ptr noundef %837, ptr noundef %839, ptr noundef %840, ptr noundef %841)
  br label %842

842:                                              ; preds = %829, %816
  %843 = load ptr, ptr %15, align 8, !tbaa !5
  %844 = load i32, ptr %843, align 4, !tbaa !9
  store i32 %844, ptr %30, align 4, !tbaa !9
  store i32 1, ptr %35, align 4, !tbaa !9
  br label %845

845:                                              ; preds = %865, %842
  %846 = load i32, ptr %35, align 4, !tbaa !9
  %847 = load i32, ptr %30, align 4, !tbaa !9
  %848 = icmp sle i32 %846, %847
  br i1 %848, label %849, label %868

849:                                              ; preds = %845
  %850 = load ptr, ptr %24, align 8, !tbaa !5
  %851 = load ptr, ptr %15, align 8, !tbaa !5
  %852 = load i32, ptr %851, align 4, !tbaa !9
  %853 = shl i32 %852, 1
  %854 = load i32, ptr %35, align 4, !tbaa !9
  %855 = add nsw i32 %853, %854
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds double, ptr %850, i64 %856
  %858 = load double, ptr %857, align 8, !tbaa !11
  %859 = load ptr, ptr %24, align 8, !tbaa !5
  %860 = load i32, ptr %35, align 4, !tbaa !9
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds double, ptr %859, i64 %861
  %863 = load double, ptr %862, align 8, !tbaa !11
  %864 = fmul double %863, %858
  store double %864, ptr %862, align 8, !tbaa !11
  br label %865

865:                                              ; preds = %849
  %866 = load i32, ptr %35, align 4, !tbaa !9
  %867 = add nsw i32 %866, 1
  store i32 %867, ptr %35, align 4, !tbaa !9
  br label %845, !llvm.loop !34

868:                                              ; preds = %845
  br label %869

869:                                              ; preds = %868, %757
  br label %629

870:                                              ; preds = %629
  %871 = load double, ptr %39, align 8, !tbaa !11
  %872 = fcmp une double %871, 0.000000e+00
  br i1 %872, label %873, label %876

873:                                              ; preds = %870
  %874 = load double, ptr %39, align 8, !tbaa !11
  %875 = fdiv double 1.000000e+00, %874
  store double %875, ptr %32, align 8, !tbaa !11
  br label %876

876:                                              ; preds = %873, %870
  %877 = load double, ptr %32, align 8, !tbaa !11
  store double %877, ptr %13, align 8
  store i32 1, ptr %43, align 4
  br label %878

878:                                              ; preds = %876, %124, %114
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 12, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 4, 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
  %879 = load double, ptr %13, align 8
  ret double %879
}

; 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 double @dlamch_(ptr noundef) #2

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

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

; Function Attrs: nocallback nofree nosync nounwind 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 = !{!7, !7, i64 0}
!29 = distinct !{!29, !14}
!30 = distinct !{!30, !14}
!31 = distinct !{!31, !14}
!32 = distinct !{!32, !14}
!33 = distinct !{!33, !14}
!34 = distinct !{!34, !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 [13 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1

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

24:                                               ; preds = %12
  %25 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %22, i32 1)
  %26 = icmp slt i32 %25, %spec.select
  br i1 %26, label %.thread, label %27

27:                                               ; preds = %24
  %28 = load i32, ptr %5, align 4, !tbaa !5
  %29 = icmp slt i32 %28, %spec.select
  br i1 %29, label %.thread, label %31

.thread:                                          ; preds = %27, %24, %12
  %.sink = phi i32 [ -2, %12 ], [ -4, %24 ], [ -6, %27 ]
  %.neg = phi i32 [ 2, %12 ], [ 4, %24 ], [ 6, %27 ]
  store i32 %.sink, ptr %9, align 4, !tbaa !5
  store i32 %.neg, ptr %13, align 4, !tbaa !5
  %30 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %13, i32 noundef 11) #4
  br label %511

31:                                               ; preds = %27
  %32 = icmp eq i32 %22, 0
  br i1 %32, label %511, label %33

33:                                               ; preds = %31
  %34 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %.not334 = icmp eq i32 %34, 0
  %35 = load i32, ptr %1, align 4, !tbaa !5
  %.not336429 = icmp slt i32 %35, 1
  br i1 %.not334, label %145, label %36

36:                                               ; preds = %33
  br i1 %.not336429, label %.loopexit371, label %.lr.ph404

.lr.ph404:                                        ; preds = %36
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %38 = shl nuw i32 %35, 1
  %39 = sext i32 %17 to i64
  %40 = zext nneg i32 %35 to i64
  %41 = sext i32 %38 to i64
  %42 = add nuw i32 %35, 2
  %wide.trip.count536 = zext i32 %42 to i64
  %wide.trip.count529 = zext nneg i32 %35 to i64
  %invariant.gep661 = getelementptr double, ptr %21, i64 %41
  switch i32 %37, label %.preheader374 [
    i32 1, label %.preheader377.us
    i32 0, label %.preheader380.us
  ]

.preheader377.us:                                 ; preds = %.lr.ph404, %.loopexit376.us
  %indvar860 = phi i64 [ %indvar.next861, %.loopexit376.us ], [ 0, %.lr.ph404 ]
  %indvars.iv511 = phi i64 [ %indvars.iv.next512, %.loopexit376.us ], [ 2, %.lr.ph404 ]
  %indvars.iv504 = phi i64 [ %indvars.iv.next505, %.loopexit376.us ], [ 1, %.lr.ph404 ]
  %43 = mul nsw i64 %indvars.iv504, %39
  %invariant.gep651 = getelementptr double, ptr %19, i64 %43
  %44 = icmp eq i64 %indvar860, 0
  br i1 %44, label %.preheader375.us.unr-lcssa, label %.preheader377.us.new

.preheader377.us.new:                             ; preds = %.preheader377.us
  %45 = add i64 %indvar860, 1
  %unroll_iter865 = and i64 %45, -2
  %invariant.gep930 = getelementptr i8, ptr %invariant.gep651, i64 8
  br label %46

46:                                               ; preds = %46, %.preheader377.us.new
  %indvars.iv498 = phi i64 [ 1, %.preheader377.us.new ], [ %indvars.iv.next499.1, %46 ]
  %.0388.us = phi double [ 0.000000e+00, %.preheader377.us.new ], [ %62, %46 ]
  %niter866 = phi i64 [ 0, %.preheader377.us.new ], [ %niter866.next.1, %46 ]
  %gep652 = getelementptr double, ptr %invariant.gep651, i64 %indvars.iv498
  %47 = load double, ptr %gep652, align 8, !tbaa !9
  %48 = getelementptr inbounds double, ptr %20, i64 %indvars.iv498
  %49 = load double, ptr %48, align 8, !tbaa !9
  %50 = fmul double %47, %49
  %51 = fcmp oge double %50, 0.000000e+00
  %52 = fneg double %50
  %53 = select i1 %51, double %50, double %52
  %54 = fadd double %.0388.us, %53
  %gep931 = getelementptr double, ptr %invariant.gep930, i64 %indvars.iv498
  %55 = load double, ptr %gep931, align 8, !tbaa !9
  %56 = getelementptr double, ptr %8, i64 %indvars.iv498
  %57 = load double, ptr %56, align 8, !tbaa !9
  %58 = fmul double %55, %57
  %59 = fcmp oge double %58, 0.000000e+00
  %60 = fneg double %58
  %61 = select i1 %59, double %58, double %60
  %62 = fadd double %54, %61
  %indvars.iv.next499.1 = add nuw nsw i64 %indvars.iv498, 2
  %niter866.next.1 = add i64 %niter866, 2
  %niter866.ncmp.1 = icmp eq i64 %niter866.next.1, %unroll_iter865
  br i1 %niter866.ncmp.1, label %.preheader375.us.unr-lcssa, label %46, !llvm.loop !11

.lr.ph392.us:                                     ; preds = %.lr.ph392.us.preheader, %.lr.ph392.us
  %indvars.iv506 = phi i64 [ %indvars.iv504, %.lr.ph392.us.preheader ], [ %indvars.iv.next507, %.lr.ph392.us ]
  %.1391.us = phi double [ %.lcssa853, %.lr.ph392.us.preheader ], [ %71, %.lr.ph392.us ]
  %indvars.iv.next507 = add nuw nsw i64 %indvars.iv506, 1
  %63 = mul nsw i64 %indvars.iv.next507, %39
  %gep654 = getelementptr double, ptr %invariant.gep653, i64 %63
  %64 = load double, ptr %gep654, align 8, !tbaa !9
  %65 = getelementptr double, ptr %8, i64 %indvars.iv506
  %66 = load double, ptr %65, align 8, !tbaa !9
  %67 = fmul double %64, %66
  %68 = fcmp oge double %67, 0.000000e+00
  %69 = fneg double %67
  %70 = select i1 %68, double %67, double %69
  %71 = fadd double %.1391.us, %70
  %exitcond510.not = icmp eq i64 %indvars.iv.next507, %wide.trip.count529
  br i1 %exitcond510.not, label %.loopexit376.us, label %.lr.ph392.us, !llvm.loop !13

.preheader375.us.unr-lcssa:                       ; preds = %46, %.preheader377.us
  %.lcssa853.ph = phi double [ poison, %.preheader377.us ], [ %62, %46 ]
  %indvars.iv498.unr = phi i64 [ 1, %.preheader377.us ], [ %indvars.iv.next499.1, %46 ]
  %.0388.us.unr = phi double [ 0.000000e+00, %.preheader377.us ], [ %62, %46 ]
  %72 = and i64 %indvar860, 1
  %lcmp.mod863.not.not = icmp eq i64 %72, 0
  br i1 %lcmp.mod863.not.not, label %.preheader375.us.epilog-lcssa, label %.preheader375.us

.preheader375.us.epilog-lcssa:                    ; preds = %.preheader375.us.unr-lcssa
  %gep652.epil = getelementptr double, ptr %invariant.gep651, i64 %indvars.iv498.unr
  %73 = load double, ptr %gep652.epil, align 8, !tbaa !9
  %74 = getelementptr inbounds double, ptr %20, i64 %indvars.iv498.unr
  %75 = load double, ptr %74, align 8, !tbaa !9
  %76 = fmul double %73, %75
  %77 = fcmp oge double %76, 0.000000e+00
  %78 = fneg double %76
  %79 = select i1 %77, double %76, double %78
  %80 = fadd double %.0388.us.unr, %79
  br label %.preheader375.us

.preheader375.us:                                 ; preds = %.preheader375.us.unr-lcssa, %.preheader375.us.epilog-lcssa
  %.lcssa853 = phi double [ %.lcssa853.ph, %.preheader375.us.unr-lcssa ], [ %80, %.preheader375.us.epilog-lcssa ]
  %.not356.not389.us = icmp ult i64 %indvars.iv504, %40
  br i1 %.not356.not389.us, label %.lr.ph392.us.preheader, label %.loopexit376.us

.lr.ph392.us.preheader:                           ; preds = %.preheader375.us
  %invariant.gep653 = getelementptr double, ptr %19, i64 %indvars.iv504
  br label %.lr.ph392.us

.loopexit376.us:                                  ; preds = %.lr.ph392.us, %.preheader375.us
  %.1.lcssa.us = phi double [ %.lcssa853, %.preheader375.us ], [ %71, %.lr.ph392.us ]
  %gep656 = getelementptr double, ptr %invariant.gep661, i64 %indvars.iv504
  store double %.1.lcssa.us, ptr %gep656, align 8, !tbaa !9
  %indvars.iv.next505 = add nuw nsw i64 %indvars.iv504, 1
  %indvars.iv.next512 = add nuw nsw i64 %indvars.iv511, 1
  %exitcond517.not = icmp eq i64 %indvars.iv.next512, %wide.trip.count536
  %indvar.next861 = add i64 %indvar860, 1
  br i1 %exitcond517.not, label %.loopexit371, label %.preheader377.us, !llvm.loop !14

.preheader380.us:                                 ; preds = %.lr.ph404, %.loopexit379.us
  %indvar = phi i64 [ %indvar.next, %.loopexit379.us ], [ 0, %.lr.ph404 ]
  %indvars.iv491 = phi i64 [ %indvars.iv.next492, %.loopexit379.us ], [ 2, %.lr.ph404 ]
  %indvars.iv484 = phi i64 [ %indvars.iv.next485, %.loopexit379.us ], [ 1, %.lr.ph404 ]
  %81 = mul nsw i64 %indvars.iv484, %39
  %invariant.gep = getelementptr double, ptr %19, i64 %81
  %82 = icmp eq i64 %indvar, 0
  br i1 %82, label %.preheader378.us.unr-lcssa, label %.preheader380.us.new

.preheader380.us.new:                             ; preds = %.preheader380.us
  %83 = add i64 %indvar, 1
  %unroll_iter = and i64 %83, -2
  %invariant.gep928 = getelementptr i8, ptr %invariant.gep, i64 8
  br label %84

84:                                               ; preds = %84, %.preheader380.us.new
  %indvars.iv = phi i64 [ 1, %.preheader380.us.new ], [ %indvars.iv.next.1, %84 ]
  %.2383.us = phi double [ 0.000000e+00, %.preheader380.us.new ], [ %94, %84 ]
  %niter = phi i64 [ 0, %.preheader380.us.new ], [ %niter.next.1, %84 ]
  %gep646 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv
  %85 = load double, ptr %gep646, 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 %.2383.us, %88
  %gep929 = getelementptr double, ptr %invariant.gep928, i64 %indvars.iv
  %90 = load double, ptr %gep929, align 8, !tbaa !9
  %91 = fcmp oge double %90, 0.000000e+00
  %92 = fneg double %90
  %93 = select i1 %91, double %90, double %92
  %94 = fadd double %89, %93
  %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 %.preheader378.us.unr-lcssa, label %84, !llvm.loop !15

.lr.ph.us:                                        ; preds = %.lr.ph.us.preheader, %.lr.ph.us
  %indvars.iv486 = phi i64 [ %indvars.iv484, %.lr.ph.us.preheader ], [ %indvars.iv.next487, %.lr.ph.us ]
  %.3386.us = phi double [ %.lcssa856, %.lr.ph.us.preheader ], [ %100, %.lr.ph.us ]
  %indvars.iv.next487 = add nuw nsw i64 %indvars.iv486, 1
  %95 = mul nsw i64 %indvars.iv.next487, %39
  %gep648 = getelementptr double, ptr %invariant.gep647, i64 %95
  %96 = load double, ptr %gep648, align 8, !tbaa !9
  %97 = fcmp oge double %96, 0.000000e+00
  %98 = fneg double %96
  %99 = select i1 %97, double %96, double %98
  %100 = fadd double %.3386.us, %99
  %exitcond490.not = icmp eq i64 %indvars.iv.next487, %wide.trip.count529
  br i1 %exitcond490.not, label %.loopexit379.us, label %.lr.ph.us, !llvm.loop !16

.preheader378.us.unr-lcssa:                       ; preds = %84, %.preheader380.us
  %.lcssa856.ph = phi double [ poison, %.preheader380.us ], [ %94, %84 ]
  %indvars.iv.unr = phi i64 [ 1, %.preheader380.us ], [ %indvars.iv.next.1, %84 ]
  %.2383.us.unr = phi double [ 0.000000e+00, %.preheader380.us ], [ %94, %84 ]
  %101 = and i64 %indvar, 1
  %lcmp.mod.not.not = icmp eq i64 %101, 0
  br i1 %lcmp.mod.not.not, label %.preheader378.us.epilog-lcssa, label %.preheader378.us

.preheader378.us.epilog-lcssa:                    ; preds = %.preheader378.us.unr-lcssa
  %gep646.epil = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.unr
  %102 = load double, ptr %gep646.epil, align 8, !tbaa !9
  %103 = fcmp oge double %102, 0.000000e+00
  %104 = fneg double %102
  %105 = select i1 %103, double %102, double %104
  %106 = fadd double %.2383.us.unr, %105
  br label %.preheader378.us

.preheader378.us:                                 ; preds = %.preheader378.us.unr-lcssa, %.preheader378.us.epilog-lcssa
  %.lcssa856 = phi double [ %.lcssa856.ph, %.preheader378.us.unr-lcssa ], [ %106, %.preheader378.us.epilog-lcssa ]
  %.not354.not384.us = icmp ult i64 %indvars.iv484, %40
  br i1 %.not354.not384.us, label %.lr.ph.us.preheader, label %.loopexit379.us

.lr.ph.us.preheader:                              ; preds = %.preheader378.us
  %invariant.gep647 = getelementptr double, ptr %19, i64 %indvars.iv484
  br label %.lr.ph.us

.loopexit379.us:                                  ; preds = %.lr.ph.us, %.preheader378.us
  %.3.lcssa.us = phi double [ %.lcssa856, %.preheader378.us ], [ %100, %.lr.ph.us ]
  %gep650 = getelementptr double, ptr %invariant.gep661, i64 %indvars.iv484
  store double %.3.lcssa.us, ptr %gep650, align 8, !tbaa !9
  %indvars.iv.next485 = add nuw nsw i64 %indvars.iv484, 1
  %indvars.iv.next492 = add nuw nsw i64 %indvars.iv491, 1
  %exitcond497.not = icmp eq i64 %indvars.iv.next492, %wide.trip.count536
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond497.not, label %.loopexit371, label %.preheader380.us, !llvm.loop !14

.preheader374:                                    ; preds = %.lr.ph404, %.loopexit373
  %indvar868 = phi i64 [ %indvar.next869, %.loopexit373 ], [ 0, %.lr.ph404 ]
  %indvars.iv531 = phi i64 [ %indvars.iv.next532, %.loopexit373 ], [ 2, %.lr.ph404 ]
  %indvars.iv524 = phi i64 [ %indvars.iv.next525, %.loopexit373 ], [ 1, %.lr.ph404 ]
  %107 = mul nsw i64 %indvars.iv524, %39
  %invariant.gep657 = getelementptr double, ptr %19, i64 %107
  %108 = icmp eq i64 %indvar868, 0
  br i1 %108, label %.preheader372.unr-lcssa, label %.preheader374.new

.preheader374.new:                                ; preds = %.preheader374
  %109 = add i64 %indvar868, 1
  %unroll_iter873 = and i64 %109, -2
  %invariant.gep932 = getelementptr i8, ptr %invariant.gep657, i64 8
  br label %119

.preheader372.unr-lcssa:                          ; preds = %119, %.preheader374
  %.lcssa850.ph = phi double [ poison, %.preheader374 ], [ %135, %119 ]
  %indvars.iv518.unr = phi i64 [ 1, %.preheader374 ], [ %indvars.iv.next519.1, %119 ]
  %.4395.unr = phi double [ 0.000000e+00, %.preheader374 ], [ %135, %119 ]
  %110 = and i64 %indvar868, 1
  %lcmp.mod871.not.not = icmp eq i64 %110, 0
  br i1 %lcmp.mod871.not.not, label %.preheader372.epilog-lcssa, label %.preheader372

.preheader372.epilog-lcssa:                       ; preds = %.preheader372.unr-lcssa
  %gep658.epil = getelementptr double, ptr %invariant.gep657, i64 %indvars.iv518.unr
  %111 = load double, ptr %gep658.epil, align 8, !tbaa !9
  %112 = getelementptr inbounds double, ptr %20, i64 %indvars.iv518.unr
  %113 = load double, ptr %112, align 8, !tbaa !9
  %114 = fdiv double %111, %113
  %115 = fcmp oge double %114, 0.000000e+00
  %116 = fneg double %114
  %117 = select i1 %115, double %114, double %116
  %118 = fadd double %.4395.unr, %117
  br label %.preheader372

.preheader372:                                    ; preds = %.preheader372.unr-lcssa, %.preheader372.epilog-lcssa
  %.lcssa850 = phi double [ %.lcssa850.ph, %.preheader372.unr-lcssa ], [ %118, %.preheader372.epilog-lcssa ]
  %.not352.not396 = icmp ult i64 %indvars.iv524, %40
  br i1 %.not352.not396, label %.lr.ph399.preheader, label %.loopexit373

.lr.ph399.preheader:                              ; preds = %.preheader372
  %invariant.gep659 = getelementptr double, ptr %19, i64 %indvars.iv524
  br label %.lr.ph399

119:                                              ; preds = %119, %.preheader374.new
  %indvars.iv518 = phi i64 [ 1, %.preheader374.new ], [ %indvars.iv.next519.1, %119 ]
  %.4395 = phi double [ 0.000000e+00, %.preheader374.new ], [ %135, %119 ]
  %niter874 = phi i64 [ 0, %.preheader374.new ], [ %niter874.next.1, %119 ]
  %gep658 = getelementptr double, ptr %invariant.gep657, i64 %indvars.iv518
  %120 = load double, ptr %gep658, align 8, !tbaa !9
  %121 = getelementptr inbounds double, ptr %20, i64 %indvars.iv518
  %122 = load double, ptr %121, align 8, !tbaa !9
  %123 = fdiv double %120, %122
  %124 = fcmp oge double %123, 0.000000e+00
  %125 = fneg double %123
  %126 = select i1 %124, double %123, double %125
  %127 = fadd double %.4395, %126
  %gep933 = getelementptr double, ptr %invariant.gep932, i64 %indvars.iv518
  %128 = load double, ptr %gep933, align 8, !tbaa !9
  %129 = getelementptr double, ptr %8, i64 %indvars.iv518
  %130 = load double, ptr %129, align 8, !tbaa !9
  %131 = fdiv double %128, %130
  %132 = fcmp oge double %131, 0.000000e+00
  %133 = fneg double %131
  %134 = select i1 %132, double %131, double %133
  %135 = fadd double %127, %134
  %indvars.iv.next519.1 = add nuw nsw i64 %indvars.iv518, 2
  %niter874.next.1 = add i64 %niter874, 2
  %niter874.ncmp.1 = icmp eq i64 %niter874.next.1, %unroll_iter873
  br i1 %niter874.ncmp.1, label %.preheader372.unr-lcssa, label %119, !llvm.loop !17

.lr.ph399:                                        ; preds = %.lr.ph399.preheader, %.lr.ph399
  %indvars.iv526 = phi i64 [ %indvars.iv524, %.lr.ph399.preheader ], [ %indvars.iv.next527, %.lr.ph399 ]
  %.5398 = phi double [ %.lcssa850, %.lr.ph399.preheader ], [ %144, %.lr.ph399 ]
  %indvars.iv.next527 = add nuw nsw i64 %indvars.iv526, 1
  %136 = mul nsw i64 %indvars.iv.next527, %39
  %gep660 = getelementptr double, ptr %invariant.gep659, i64 %136
  %137 = load double, ptr %gep660, align 8, !tbaa !9
  %138 = getelementptr double, ptr %8, i64 %indvars.iv526
  %139 = load double, ptr %138, align 8, !tbaa !9
  %140 = fdiv double %137, %139
  %141 = fcmp oge double %140, 0.000000e+00
  %142 = fneg double %140
  %143 = select i1 %141, double %140, double %142
  %144 = fadd double %.5398, %143
  %exitcond530.not = icmp eq i64 %indvars.iv.next527, %wide.trip.count529
  br i1 %exitcond530.not, label %.loopexit373, label %.lr.ph399, !llvm.loop !18

.loopexit373:                                     ; preds = %.lr.ph399, %.preheader372
  %.5.lcssa = phi double [ %.lcssa850, %.preheader372 ], [ %144, %.lr.ph399 ]
  %gep662 = getelementptr double, ptr %invariant.gep661, i64 %indvars.iv524
  store double %.5.lcssa, ptr %gep662, align 8, !tbaa !9
  %indvars.iv.next525 = add nuw nsw i64 %indvars.iv524, 1
  %indvars.iv.next532 = add nuw nsw i64 %indvars.iv531, 1
  %exitcond537.not = icmp eq i64 %indvars.iv.next532, %wide.trip.count536
  %indvar.next869 = add i64 %indvar868, 1
  br i1 %exitcond537.not, label %.loopexit371, label %.preheader374, !llvm.loop !14

145:                                              ; preds = %33
  br i1 %.not336429, label %.loopexit371, label %.lr.ph432

.lr.ph432:                                        ; preds = %145
  %146 = load i32, ptr %7, align 4, !tbaa !5
  %147 = shl nuw i32 %35, 1
  %148 = sext i32 %17 to i64
  %149 = zext nneg i32 %35 to i64
  %150 = sext i32 %147 to i64
  %151 = add nuw i32 %35, 2
  %wide.trip.count596 = zext i32 %151 to i64
  %wide.trip.count589 = zext nneg i32 %35 to i64
  %invariant.gep679 = getelementptr double, ptr %21, i64 %150
  switch i32 %146, label %.preheader364 [
    i32 1, label %.preheader367.us
    i32 0, label %.preheader370.us
  ]

.preheader367.us:                                 ; preds = %.lr.ph432, %.loopexit366.us
  %indvar884 = phi i64 [ %indvar.next885, %.loopexit366.us ], [ 0, %.lr.ph432 ]
  %indvars.iv571 = phi i64 [ %indvars.iv.next572, %.loopexit366.us ], [ 2, %.lr.ph432 ]
  %indvars.iv564 = phi i64 [ %indvars.iv.next565, %.loopexit366.us ], [ 1, %.lr.ph432 ]
  %invariant.gep669 = getelementptr double, ptr %19, i64 %indvars.iv564
  %152 = icmp eq i64 %indvar884, 0
  br i1 %152, label %.preheader365.us.unr-lcssa, label %.preheader367.us.new

.preheader367.us.new:                             ; preds = %.preheader367.us
  %153 = add i64 %indvar884, 1
  %unroll_iter889 = and i64 %153, -2
  br label %154

154:                                              ; preds = %154, %.preheader367.us.new
  %indvars.iv558 = phi i64 [ 1, %.preheader367.us.new ], [ %indvars.iv.next559.1, %154 ]
  %.7416.us = phi double [ 0.000000e+00, %.preheader367.us.new ], [ %172, %154 ]
  %niter890 = phi i64 [ 0, %.preheader367.us.new ], [ %niter890.next.1, %154 ]
  %155 = mul nsw i64 %indvars.iv558, %148
  %gep670 = getelementptr double, ptr %invariant.gep669, i64 %155
  %156 = load double, ptr %gep670, align 8, !tbaa !9
  %157 = getelementptr inbounds double, ptr %20, i64 %indvars.iv558
  %158 = load double, ptr %157, align 8, !tbaa !9
  %159 = fmul double %156, %158
  %160 = fcmp oge double %159, 0.000000e+00
  %161 = fneg double %159
  %162 = select i1 %160, double %159, double %161
  %163 = fadd double %.7416.us, %162
  %indvars.iv.next559 = add nuw nsw i64 %indvars.iv558, 1
  %164 = mul nsw i64 %indvars.iv.next559, %148
  %gep670.1 = getelementptr double, ptr %invariant.gep669, i64 %164
  %165 = load double, ptr %gep670.1, align 8, !tbaa !9
  %166 = getelementptr double, ptr %8, i64 %indvars.iv558
  %167 = load double, ptr %166, align 8, !tbaa !9
  %168 = fmul double %165, %167
  %169 = fcmp oge double %168, 0.000000e+00
  %170 = fneg double %168
  %171 = select i1 %169, double %168, double %170
  %172 = fadd double %163, %171
  %indvars.iv.next559.1 = add nuw nsw i64 %indvars.iv558, 2
  %niter890.next.1 = add i64 %niter890, 2
  %niter890.ncmp.1 = icmp eq i64 %niter890.next.1, %unroll_iter889
  br i1 %niter890.ncmp.1, label %.preheader365.us.unr-lcssa, label %154, !llvm.loop !19

173:                                              ; preds = %.lr.ph420.us, %173
  %indvars.iv566 = phi i64 [ %indvars.iv564, %.lr.ph420.us ], [ %indvars.iv.next567, %173 ]
  %.8419.us = phi double [ %.lcssa844, %.lr.ph420.us ], [ %181, %173 ]
  %indvars.iv.next567 = add nuw nsw i64 %indvars.iv566, 1
  %gep672 = getelementptr double, ptr %invariant.gep671, i64 %indvars.iv.next567
  %174 = load double, ptr %gep672, align 8, !tbaa !9
  %175 = getelementptr double, ptr %8, i64 %indvars.iv566
  %176 = load double, ptr %175, align 8, !tbaa !9
  %177 = fmul double %174, %176
  %178 = fcmp oge double %177, 0.000000e+00
  %179 = fneg double %177
  %180 = select i1 %178, double %177, double %179
  %181 = fadd double %.8419.us, %180
  %exitcond570.not = icmp eq i64 %indvars.iv.next567, %wide.trip.count589
  br i1 %exitcond570.not, label %.loopexit366.us, label %173, !llvm.loop !20

.preheader365.us.unr-lcssa:                       ; preds = %154, %.preheader367.us
  %.lcssa844.ph = phi double [ poison, %.preheader367.us ], [ %172, %154 ]
  %indvars.iv558.unr = phi i64 [ 1, %.preheader367.us ], [ %indvars.iv.next559.1, %154 ]
  %.7416.us.unr = phi double [ 0.000000e+00, %.preheader367.us ], [ %172, %154 ]
  %182 = and i64 %indvar884, 1
  %lcmp.mod887.not.not = icmp eq i64 %182, 0
  br i1 %lcmp.mod887.not.not, label %.preheader365.us.epilog-lcssa, label %.preheader365.us

.preheader365.us.epilog-lcssa:                    ; preds = %.preheader365.us.unr-lcssa
  %183 = mul nsw i64 %indvars.iv558.unr, %148
  %gep670.epil = getelementptr double, ptr %invariant.gep669, i64 %183
  %184 = load double, ptr %gep670.epil, align 8, !tbaa !9
  %185 = getelementptr inbounds double, ptr %20, i64 %indvars.iv558.unr
  %186 = load double, ptr %185, align 8, !tbaa !9
  %187 = fmul double %184, %186
  %188 = fcmp oge double %187, 0.000000e+00
  %189 = fneg double %187
  %190 = select i1 %188, double %187, double %189
  %191 = fadd double %.7416.us.unr, %190
  br label %.preheader365.us

.preheader365.us:                                 ; preds = %.preheader365.us.unr-lcssa, %.preheader365.us.epilog-lcssa
  %.lcssa844 = phi double [ %.lcssa844.ph, %.preheader365.us.unr-lcssa ], [ %191, %.preheader365.us.epilog-lcssa ]
  %.not342.not417.us = icmp ult i64 %indvars.iv564, %149
  br i1 %.not342.not417.us, label %.lr.ph420.us, label %.loopexit366.us

.loopexit366.us:                                  ; preds = %173, %.preheader365.us
  %.8.lcssa.us = phi double [ %.lcssa844, %.preheader365.us ], [ %181, %173 ]
  %gep674 = getelementptr double, ptr %invariant.gep679, i64 %indvars.iv564
  store double %.8.lcssa.us, ptr %gep674, align 8, !tbaa !9
  %indvars.iv.next565 = add nuw nsw i64 %indvars.iv564, 1
  %indvars.iv.next572 = add nuw nsw i64 %indvars.iv571, 1
  %exitcond577.not = icmp eq i64 %indvars.iv.next572, %wide.trip.count596
  %indvar.next885 = add i64 %indvar884, 1
  br i1 %exitcond577.not, label %.loopexit371, label %.preheader367.us, !llvm.loop !21

.lr.ph420.us:                                     ; preds = %.preheader365.us
  %192 = mul nsw i64 %indvars.iv564, %148
  %invariant.gep671 = getelementptr double, ptr %19, i64 %192
  br label %173

.preheader370.us:                                 ; preds = %.lr.ph432, %.loopexit369.us
  %indvar876 = phi i64 [ %indvar.next877, %.loopexit369.us ], [ 0, %.lr.ph432 ]
  %indvars.iv551 = phi i64 [ %indvars.iv.next552, %.loopexit369.us ], [ 2, %.lr.ph432 ]
  %indvars.iv544 = phi i64 [ %indvars.iv.next545, %.loopexit369.us ], [ 1, %.lr.ph432 ]
  %invariant.gep663 = getelementptr double, ptr %19, i64 %indvars.iv544
  %193 = icmp eq i64 %indvar876, 0
  br i1 %193, label %.preheader368.us.unr-lcssa, label %.preheader370.us.new

.preheader370.us.new:                             ; preds = %.preheader370.us
  %194 = add i64 %indvar876, 1
  %unroll_iter881 = and i64 %194, -2
  br label %195

195:                                              ; preds = %195, %.preheader370.us.new
  %indvars.iv538 = phi i64 [ 1, %.preheader370.us.new ], [ %indvars.iv.next539.1, %195 ]
  %.9411.us = phi double [ 0.000000e+00, %.preheader370.us.new ], [ %207, %195 ]
  %niter882 = phi i64 [ 0, %.preheader370.us.new ], [ %niter882.next.1, %195 ]
  %196 = mul nsw i64 %indvars.iv538, %148
  %gep664 = getelementptr double, ptr %invariant.gep663, i64 %196
  %197 = load double, ptr %gep664, align 8, !tbaa !9
  %198 = fcmp oge double %197, 0.000000e+00
  %199 = fneg double %197
  %200 = select i1 %198, double %197, double %199
  %201 = fadd double %.9411.us, %200
  %indvars.iv.next539 = add nuw nsw i64 %indvars.iv538, 1
  %202 = mul nsw i64 %indvars.iv.next539, %148
  %gep664.1 = getelementptr double, ptr %invariant.gep663, i64 %202
  %203 = load double, ptr %gep664.1, align 8, !tbaa !9
  %204 = fcmp oge double %203, 0.000000e+00
  %205 = fneg double %203
  %206 = select i1 %204, double %203, double %205
  %207 = fadd double %201, %206
  %indvars.iv.next539.1 = add nuw nsw i64 %indvars.iv538, 2
  %niter882.next.1 = add i64 %niter882, 2
  %niter882.ncmp.1 = icmp eq i64 %niter882.next.1, %unroll_iter881
  br i1 %niter882.ncmp.1, label %.preheader368.us.unr-lcssa, label %195, !llvm.loop !22

208:                                              ; preds = %.lr.ph.us438, %208
  %indvars.iv546 = phi i64 [ %indvars.iv544, %.lr.ph.us438 ], [ %indvars.iv.next547, %208 ]
  %.10414.us = phi double [ %.lcssa847, %.lr.ph.us438 ], [ %213, %208 ]
  %indvars.iv.next547 = add nuw nsw i64 %indvars.iv546, 1
  %gep666 = getelementptr double, ptr %invariant.gep665, i64 %indvars.iv.next547
  %209 = load double, ptr %gep666, align 8, !tbaa !9
  %210 = fcmp oge double %209, 0.000000e+00
  %211 = fneg double %209
  %212 = select i1 %210, double %209, double %211
  %213 = fadd double %.10414.us, %212
  %exitcond550.not = icmp eq i64 %indvars.iv.next547, %wide.trip.count589
  br i1 %exitcond550.not, label %.loopexit369.us, label %208, !llvm.loop !23

.preheader368.us.unr-lcssa:                       ; preds = %195, %.preheader370.us
  %.lcssa847.ph = phi double [ poison, %.preheader370.us ], [ %207, %195 ]
  %indvars.iv538.unr = phi i64 [ 1, %.preheader370.us ], [ %indvars.iv.next539.1, %195 ]
  %.9411.us.unr = phi double [ 0.000000e+00, %.preheader370.us ], [ %207, %195 ]
  %214 = and i64 %indvar876, 1
  %lcmp.mod879.not.not = icmp eq i64 %214, 0
  br i1 %lcmp.mod879.not.not, label %.preheader368.us.epilog-lcssa, label %.preheader368.us

.preheader368.us.epilog-lcssa:                    ; preds = %.preheader368.us.unr-lcssa
  %215 = mul nsw i64 %indvars.iv538.unr, %148
  %gep664.epil = getelementptr double, ptr %invariant.gep663, i64 %215
  %216 = load double, ptr %gep664.epil, align 8, !tbaa !9
  %217 = fcmp oge double %216, 0.000000e+00
  %218 = fneg double %216
  %219 = select i1 %217, double %216, double %218
  %220 = fadd double %.9411.us.unr, %219
  br label %.preheader368.us

.preheader368.us:                                 ; preds = %.preheader368.us.unr-lcssa, %.preheader368.us.epilog-lcssa
  %.lcssa847 = phi double [ %.lcssa847.ph, %.preheader368.us.unr-lcssa ], [ %220, %.preheader368.us.epilog-lcssa ]
  %.not340.not412.us = icmp ult i64 %indvars.iv544, %149
  br i1 %.not340.not412.us, label %.lr.ph.us438, label %.loopexit369.us

.loopexit369.us:                                  ; preds = %208, %.preheader368.us
  %.10.lcssa.us = phi double [ %.lcssa847, %.preheader368.us ], [ %213, %208 ]
  %gep668 = getelementptr double, ptr %invariant.gep679, i64 %indvars.iv544
  store double %.10.lcssa.us, ptr %gep668, align 8, !tbaa !9
  %indvars.iv.next545 = add nuw nsw i64 %indvars.iv544, 1
  %indvars.iv.next552 = add nuw nsw i64 %indvars.iv551, 1
  %exitcond557.not = icmp eq i64 %indvars.iv.next552, %wide.trip.count596
  %indvar.next877 = add i64 %indvar876, 1
  br i1 %exitcond557.not, label %.loopexit371, label %.preheader370.us, !llvm.loop !21

.lr.ph.us438:                                     ; preds = %.preheader368.us
  %221 = mul nsw i64 %indvars.iv544, %148
  %invariant.gep665 = getelementptr double, ptr %19, i64 %221
  br label %208

.preheader364:                                    ; preds = %.lr.ph432, %.loopexit363
  %indvar892 = phi i64 [ %indvar.next893, %.loopexit363 ], [ 0, %.lr.ph432 ]
  %indvars.iv591 = phi i64 [ %indvars.iv.next592, %.loopexit363 ], [ 2, %.lr.ph432 ]
  %indvars.iv584 = phi i64 [ %indvars.iv.next585, %.loopexit363 ], [ 1, %.lr.ph432 ]
  %invariant.gep675 = getelementptr double, ptr %19, i64 %indvars.iv584
  %222 = icmp eq i64 %indvar892, 0
  br i1 %222, label %.preheader.unr-lcssa, label %.preheader364.new

.preheader364.new:                                ; preds = %.preheader364
  %223 = add i64 %indvar892, 1
  %unroll_iter897 = and i64 %223, -2
  br label %235

.preheader.unr-lcssa:                             ; preds = %235, %.preheader364
  %.lcssa.ph = phi double [ poison, %.preheader364 ], [ %253, %235 ]
  %indvars.iv578.unr = phi i64 [ 1, %.preheader364 ], [ %indvars.iv.next579.1, %235 ]
  %.11423.unr = phi double [ 0.000000e+00, %.preheader364 ], [ %253, %235 ]
  %224 = and i64 %indvar892, 1
  %lcmp.mod895.not.not = icmp eq i64 %224, 0
  br i1 %lcmp.mod895.not.not, label %.preheader.epilog-lcssa, label %.preheader

.preheader.epilog-lcssa:                          ; preds = %.preheader.unr-lcssa
  %225 = mul nsw i64 %indvars.iv578.unr, %148
  %gep676.epil = getelementptr double, ptr %invariant.gep675, i64 %225
  %226 = load double, ptr %gep676.epil, align 8, !tbaa !9
  %227 = getelementptr inbounds double, ptr %20, i64 %indvars.iv578.unr
  %228 = load double, ptr %227, align 8, !tbaa !9
  %229 = fdiv double %226, %228
  %230 = fcmp oge double %229, 0.000000e+00
  %231 = fneg double %229
  %232 = select i1 %230, double %229, double %231
  %233 = fadd double %.11423.unr, %232
  br label %.preheader

.preheader:                                       ; preds = %.preheader.unr-lcssa, %.preheader.epilog-lcssa
  %.lcssa = phi double [ %.lcssa.ph, %.preheader.unr-lcssa ], [ %233, %.preheader.epilog-lcssa ]
  %.not338.not424 = icmp ult i64 %indvars.iv584, %149
  br i1 %.not338.not424, label %.lr.ph427, label %.loopexit363

.lr.ph427:                                        ; preds = %.preheader
  %234 = mul nsw i64 %indvars.iv584, %148
  %invariant.gep677 = getelementptr double, ptr %19, i64 %234
  br label %254

235:                                              ; preds = %235, %.preheader364.new
  %indvars.iv578 = phi i64 [ 1, %.preheader364.new ], [ %indvars.iv.next579.1, %235 ]
  %.11423 = phi double [ 0.000000e+00, %.preheader364.new ], [ %253, %235 ]
  %niter898 = phi i64 [ 0, %.preheader364.new ], [ %niter898.next.1, %235 ]
  %236 = mul nsw i64 %indvars.iv578, %148
  %gep676 = getelementptr double, ptr %invariant.gep675, i64 %236
  %237 = load double, ptr %gep676, align 8, !tbaa !9
  %238 = getelementptr inbounds double, ptr %20, i64 %indvars.iv578
  %239 = load double, ptr %238, align 8, !tbaa !9
  %240 = fdiv double %237, %239
  %241 = fcmp oge double %240, 0.000000e+00
  %242 = fneg double %240
  %243 = select i1 %241, double %240, double %242
  %244 = fadd double %.11423, %243
  %indvars.iv.next579 = add nuw nsw i64 %indvars.iv578, 1
  %245 = mul nsw i64 %indvars.iv.next579, %148
  %gep676.1 = getelementptr double, ptr %invariant.gep675, i64 %245
  %246 = load double, ptr %gep676.1, align 8, !tbaa !9
  %247 = getelementptr double, ptr %8, i64 %indvars.iv578
  %248 = load double, ptr %247, align 8, !tbaa !9
  %249 = fdiv double %246, %248
  %250 = fcmp oge double %249, 0.000000e+00
  %251 = fneg double %249
  %252 = select i1 %250, double %249, double %251
  %253 = fadd double %244, %252
  %indvars.iv.next579.1 = add nuw nsw i64 %indvars.iv578, 2
  %niter898.next.1 = add i64 %niter898, 2
  %niter898.ncmp.1 = icmp eq i64 %niter898.next.1, %unroll_iter897
  br i1 %niter898.ncmp.1, label %.preheader.unr-lcssa, label %235, !llvm.loop !24

254:                                              ; preds = %.lr.ph427, %254
  %indvars.iv586 = phi i64 [ %indvars.iv584, %.lr.ph427 ], [ %indvars.iv.next587, %254 ]
  %.12426 = phi double [ %.lcssa, %.lr.ph427 ], [ %262, %254 ]
  %indvars.iv.next587 = add nuw nsw i64 %indvars.iv586, 1
  %gep678 = getelementptr double, ptr %invariant.gep677, i64 %indvars.iv.next587
  %255 = load double, ptr %gep678, align 8, !tbaa !9
  %256 = getelementptr double, ptr %8, i64 %indvars.iv586
  %257 = load double, ptr %256, align 8, !tbaa !9
  %258 = fdiv double %255, %257
  %259 = fcmp oge double %258, 0.000000e+00
  %260 = fneg double %258
  %261 = select i1 %259, double %258, double %260
  %262 = fadd double %.12426, %261
  %exitcond590.not = icmp eq i64 %indvars.iv.next587, %wide.trip.count589
  br i1 %exitcond590.not, label %.loopexit363, label %254, !llvm.loop !25

.loopexit363:                                     ; preds = %254, %.preheader
  %.12.lcssa = phi double [ %.lcssa, %.preheader ], [ %262, %254 ]
  %gep680 = getelementptr double, ptr %invariant.gep679, i64 %indvars.iv584
  store double %.12.lcssa, ptr %gep680, align 8, !tbaa !9
  %indvars.iv.next585 = add nuw nsw i64 %indvars.iv584, 1
  %indvars.iv.next592 = add nuw nsw i64 %indvars.iv591, 1
  %exitcond597.not = icmp eq i64 %indvars.iv.next592, %wide.trip.count596
  %indvar.next893 = add i64 %indvar892, 1
  br i1 %exitcond597.not, label %.loopexit371, label %.preheader364, !llvm.loop !21

.loopexit371:                                     ; preds = %.loopexit379.us, %.loopexit376.us, %.loopexit373, %.loopexit369.us, %.loopexit366.us, %.loopexit363, %36, %145
  %263 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #4
  store double 0.000000e+00, ptr %16, align 8, !tbaa !9
  store i32 0, ptr %14, align 4, !tbaa !5
  %scevgep = getelementptr i8, ptr %10, i64 -8
  %scevgep708 = getelementptr i8, ptr %10, i64 -8
  %scevgep714 = getelementptr i8, ptr %10, i64 -8
  %scevgep716 = getelementptr i8, ptr %8, i64 -8
  %scevgep737 = getelementptr i8, ptr %10, i64 -8
  %scevgep739 = getelementptr i8, ptr %8, i64 -8
  %scevgep762 = getelementptr i8, ptr %10, i64 -8
  %scevgep764 = getelementptr i8, ptr %8, i64 -8
  %scevgep785 = getelementptr i8, ptr %10, i64 -8
  %scevgep787 = getelementptr i8, ptr %8, i64 -8
  %scevgep810 = getelementptr i8, ptr %10, i64 -8
  %scevgep813 = getelementptr i8, ptr %10, i64 -8
  %.str.3..str.1 = select i1 %.not334, ptr @.str.3, ptr @.str.1
  %.str.3..str.1686 = select i1 %.not334, ptr @.str.3, ptr @.str.1
  br label %.loopexit

.loopexit:                                        ; preds = %.loopexit.backedge, %.loopexit371
  %264 = load i32, ptr %1, align 4, !tbaa !5
  %265 = sext i32 %264 to i64
  %gep = getelementptr double, ptr %10, i64 %265
  call void @dlacn2_(ptr noundef nonnull %1, ptr noundef %gep, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %16, ptr noundef nonnull %14, ptr noundef nonnull %15) #4
  %266 = load i32, ptr %14, align 4, !tbaa !5
  switch i32 %266, label %387 [
    i32 0, label %507
    i32 2, label %267
  ]

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

.lr.ph:                                           ; preds = %267
  %269 = shl nuw i32 %268, 1
  %270 = sext i32 %269 to i64
  %271 = add nuw i32 %268, 1
  %wide.trip.count = zext i32 %271 to i64
  %invariant.gep681 = getelementptr double, ptr %21, i64 %270
  %272 = zext nneg i32 %268 to i64
  %min.iters.check820 = icmp ult i32 %268, 6
  br i1 %min.iters.check820, label %scalar.ph819.preheader, label %vector.memcheck809

vector.memcheck809:                               ; preds = %.lr.ph
  %273 = shl nuw nsw i64 %wide.trip.count, 3
  %scevgep811 = getelementptr i8, ptr %scevgep810, i64 %273
  %274 = shl nsw i64 %270, 3
  %scevgep812 = getelementptr i8, ptr %10, i64 %274
  %275 = getelementptr i8, ptr %scevgep813, i64 %274
  %scevgep814 = getelementptr i8, ptr %275, i64 %273
  %bound0815 = icmp ugt ptr %scevgep814, %10
  %bound1816 = icmp ult ptr %scevgep812, %scevgep811
  %found.conflict817 = and i1 %bound0815, %bound1816
  br i1 %found.conflict817, label %scalar.ph819.preheader, label %vector.ph821

vector.ph821:                                     ; preds = %vector.memcheck809
  %n.vec823 = and i64 %272, 2147483644
  %ind.end824 = or disjoint i64 %n.vec823, 1
  br label %vector.body826

vector.body826:                                   ; preds = %vector.body826, %vector.ph821
  %index827 = phi i64 [ 0, %vector.ph821 ], [ %index.next833, %vector.body826 ]
  %offset.idx828 = or disjoint i64 %index827, 1
  %276 = getelementptr double, ptr %invariant.gep681, i64 %offset.idx828
  %277 = getelementptr i8, ptr %276, i64 16
  %wide.load829 = load <2 x double>, ptr %276, align 8, !tbaa !9, !alias.scope !26
  %wide.load830 = load <2 x double>, ptr %277, align 8, !tbaa !9, !alias.scope !26
  %278 = getelementptr double, ptr %10, i64 %index827
  %279 = getelementptr inbounds i8, ptr %278, i64 16
  %wide.load831 = load <2 x double>, ptr %278, align 8, !tbaa !9, !alias.scope !29, !noalias !26
  %wide.load832 = load <2 x double>, ptr %279, align 8, !tbaa !9, !alias.scope !29, !noalias !26
  %280 = fmul <2 x double> %wide.load829, %wide.load831
  %281 = fmul <2 x double> %wide.load830, %wide.load832
  store <2 x double> %280, ptr %278, align 8, !tbaa !9, !alias.scope !29, !noalias !26
  store <2 x double> %281, ptr %279, align 8, !tbaa !9, !alias.scope !29, !noalias !26
  %index.next833 = add nuw i64 %index827, 4
  %282 = icmp eq i64 %index.next833, %n.vec823
  br i1 %282, label %middle.block818, label %vector.body826, !llvm.loop !31

middle.block818:                                  ; preds = %vector.body826
  %cmp.n834 = icmp eq i64 %n.vec823, %272
  br i1 %cmp.n834, label %._crit_edge, label %scalar.ph819.preheader

scalar.ph819.preheader:                           ; preds = %middle.block818, %vector.memcheck809, %.lr.ph
  %indvars.iv598.ph = phi i64 [ 1, %vector.memcheck809 ], [ 1, %.lr.ph ], [ %ind.end824, %middle.block818 ]
  %283 = sub nsw i64 %wide.trip.count, %indvars.iv598.ph
  %284 = zext nneg i32 %268 to i64
  %285 = sub nsw i64 %284, %indvars.iv598.ph
  %xtraiter899 = and i64 %283, 3
  %lcmp.mod900.not = icmp eq i64 %xtraiter899, 0
  br i1 %lcmp.mod900.not, label %scalar.ph819.prol.loopexit, label %scalar.ph819.prol

scalar.ph819.prol:                                ; preds = %scalar.ph819.preheader, %scalar.ph819.prol
  %indvars.iv598.prol = phi i64 [ %indvars.iv.next599.prol, %scalar.ph819.prol ], [ %indvars.iv598.ph, %scalar.ph819.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph819.prol ], [ 0, %scalar.ph819.preheader ]
  %gep682.prol = getelementptr double, ptr %invariant.gep681, i64 %indvars.iv598.prol
  %286 = load double, ptr %gep682.prol, align 8, !tbaa !9
  %287 = getelementptr inbounds double, ptr %21, i64 %indvars.iv598.prol
  %288 = load double, ptr %287, align 8, !tbaa !9
  %289 = fmul double %286, %288
  store double %289, ptr %287, align 8, !tbaa !9
  %indvars.iv.next599.prol = add nuw nsw i64 %indvars.iv598.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter899
  br i1 %prol.iter.cmp.not, label %scalar.ph819.prol.loopexit, label %scalar.ph819.prol, !llvm.loop !34

scalar.ph819.prol.loopexit:                       ; preds = %scalar.ph819.prol, %scalar.ph819.preheader
  %indvars.iv598.unr = phi i64 [ %indvars.iv598.ph, %scalar.ph819.preheader ], [ %indvars.iv.next599.prol, %scalar.ph819.prol ]
  %290 = icmp ult i64 %285, 3
  br i1 %290, label %._crit_edge, label %scalar.ph819.preheader.new

scalar.ph819.preheader.new:                       ; preds = %scalar.ph819.prol.loopexit
  %invariant.gep934 = getelementptr i8, ptr %invariant.gep681, i64 8
  br label %scalar.ph819

scalar.ph819:                                     ; preds = %scalar.ph819, %scalar.ph819.preheader.new
  %indvars.iv598 = phi i64 [ %indvars.iv598.unr, %scalar.ph819.preheader.new ], [ %indvars.iv.next599.3, %scalar.ph819 ]
  %gep682 = getelementptr double, ptr %invariant.gep681, i64 %indvars.iv598
  %291 = load double, ptr %gep682, align 8, !tbaa !9
  %292 = getelementptr inbounds double, ptr %21, i64 %indvars.iv598
  %293 = load double, ptr %292, align 8, !tbaa !9
  %294 = fmul double %291, %293
  store double %294, ptr %292, align 8, !tbaa !9
  %gep935 = getelementptr double, ptr %invariant.gep934, i64 %indvars.iv598
  %295 = load double, ptr %gep935, align 8, !tbaa !9
  %296 = getelementptr double, ptr %10, i64 %indvars.iv598
  %297 = load double, ptr %296, align 8, !tbaa !9
  %298 = fmul double %295, %297
  store double %298, ptr %296, align 8, !tbaa !9
  %indvars.iv.next599.1 = add nuw nsw i64 %indvars.iv598, 2
  %gep682.2 = getelementptr double, ptr %invariant.gep681, i64 %indvars.iv.next599.1
  %299 = load double, ptr %gep682.2, align 8, !tbaa !9
  %300 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next599.1
  %301 = load double, ptr %300, align 8, !tbaa !9
  %302 = fmul double %299, %301
  store double %302, ptr %300, align 8, !tbaa !9
  %indvars.iv.next599.2 = add nuw nsw i64 %indvars.iv598, 3
  %gep682.3 = getelementptr double, ptr %invariant.gep681, i64 %indvars.iv.next599.2
  %303 = load double, ptr %gep682.3, align 8, !tbaa !9
  %304 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next599.2
  %305 = load double, ptr %304, align 8, !tbaa !9
  %306 = fmul double %303, %305
  store double %306, ptr %304, align 8, !tbaa !9
  %indvars.iv.next599.3 = add nuw nsw i64 %indvars.iv598, 4
  %exitcond601.not.3 = icmp eq i64 %indvars.iv.next599.3, %wide.trip.count
  br i1 %exitcond601.not.3, label %._crit_edge, label %scalar.ph819, !llvm.loop !36

._crit_edge:                                      ; preds = %scalar.ph819.prol.loopexit, %scalar.ph819, %middle.block818, %267
  call void @dsytrs_(ptr noundef nonnull %.str.3..str.1, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef %10, ptr noundef nonnull %1, ptr noundef nonnull %9) #4
  %307 = load i32, ptr %7, align 4, !tbaa !5
  switch i32 %307, label %.loopexit.backedge [
    i32 1, label %308
    i32 -1, label %346
  ]

308:                                              ; preds = %._crit_edge
  %309 = load i32, ptr %1, align 4, !tbaa !5
  %.not350446 = icmp slt i32 %309, 1
  br i1 %.not350446, label %.loopexit.backedge, label %.lr.ph449.preheader

.lr.ph449.preheader:                              ; preds = %308
  %310 = add nuw i32 %309, 1
  %wide.trip.count610 = zext i32 %310 to i64
  %311 = zext nneg i32 %309 to i64
  %min.iters.check771 = icmp eq i32 %309, 1
  br i1 %min.iters.check771, label %.lr.ph449.preheader838, label %vector.memcheck761

vector.memcheck761:                               ; preds = %.lr.ph449.preheader
  %312 = shl nuw nsw i64 %wide.trip.count610, 3
  %scevgep763 = getelementptr i8, ptr %scevgep762, i64 %312
  %scevgep765 = getelementptr i8, ptr %scevgep764, i64 %312
  %bound0766 = icmp ugt ptr %scevgep765, %10
  %bound1767 = icmp ugt ptr %scevgep763, %8
  %found.conflict768 = and i1 %bound0766, %bound1767
  br i1 %found.conflict768, label %.lr.ph449.preheader838, label %vector.ph772

vector.ph772:                                     ; preds = %vector.memcheck761
  %n.vec774 = and i64 %311, 2147483646
  %ind.end775 = or i64 %311, 1
  br label %vector.body777

vector.body777:                                   ; preds = %vector.body777, %vector.ph772
  %index778 = phi i64 [ 0, %vector.ph772 ], [ %index.next782, %vector.body777 ]
  %313 = getelementptr double, ptr %8, i64 %index778
  %wide.load780 = load <2 x double>, ptr %313, align 8, !tbaa !9, !alias.scope !37
  %314 = getelementptr double, ptr %10, i64 %index778
  %wide.load781 = load <2 x double>, ptr %314, align 8, !tbaa !9, !alias.scope !40, !noalias !37
  %315 = fdiv <2 x double> %wide.load781, %wide.load780
  store <2 x double> %315, ptr %314, align 8, !tbaa !9, !alias.scope !40, !noalias !37
  %index.next782 = add nuw i64 %index778, 2
  %316 = icmp eq i64 %index.next782, %n.vec774
  br i1 %316, label %middle.block769, label %vector.body777, !llvm.loop !42

middle.block769:                                  ; preds = %vector.body777
  %cmp.n783 = icmp eq i64 %n.vec774, %311
  br i1 %cmp.n783, label %.loopexit.backedge, label %.lr.ph449.preheader838

.lr.ph449.preheader838:                           ; preds = %middle.block769, %vector.memcheck761, %.lr.ph449.preheader
  %indvars.iv607.ph = phi i64 [ 1, %vector.memcheck761 ], [ 1, %.lr.ph449.preheader ], [ %ind.end775, %middle.block769 ]
  %317 = sub nsw i64 %wide.trip.count610, %indvars.iv607.ph
  %318 = zext nneg i32 %309 to i64
  %319 = sub nsw i64 %318, %indvars.iv607.ph
  %xtraiter904 = and i64 %317, 3
  %lcmp.mod905.not = icmp eq i64 %xtraiter904, 0
  br i1 %lcmp.mod905.not, label %.lr.ph449.prol.loopexit, label %.lr.ph449.prol

.lr.ph449.prol:                                   ; preds = %.lr.ph449.preheader838, %.lr.ph449.prol
  %indvars.iv607.prol = phi i64 [ %indvars.iv.next608.prol, %.lr.ph449.prol ], [ %indvars.iv607.ph, %.lr.ph449.preheader838 ]
  %prol.iter906 = phi i64 [ %prol.iter906.next, %.lr.ph449.prol ], [ 0, %.lr.ph449.preheader838 ]
  %320 = getelementptr inbounds double, ptr %20, i64 %indvars.iv607.prol
  %321 = load double, ptr %320, align 8, !tbaa !9
  %322 = getelementptr inbounds double, ptr %21, i64 %indvars.iv607.prol
  %323 = load double, ptr %322, align 8, !tbaa !9
  %324 = fdiv double %323, %321
  store double %324, ptr %322, align 8, !tbaa !9
  %indvars.iv.next608.prol = add nuw nsw i64 %indvars.iv607.prol, 1
  %prol.iter906.next = add i64 %prol.iter906, 1
  %prol.iter906.cmp.not = icmp eq i64 %prol.iter906.next, %xtraiter904
  br i1 %prol.iter906.cmp.not, label %.lr.ph449.prol.loopexit, label %.lr.ph449.prol, !llvm.loop !43

.lr.ph449.prol.loopexit:                          ; preds = %.lr.ph449.prol, %.lr.ph449.preheader838
  %indvars.iv607.unr = phi i64 [ %indvars.iv607.ph, %.lr.ph449.preheader838 ], [ %indvars.iv.next608.prol, %.lr.ph449.prol ]
  %325 = icmp ult i64 %319, 3
  br i1 %325, label %.loopexit.backedge, label %.lr.ph449

.lr.ph449:                                        ; preds = %.lr.ph449.prol.loopexit, %.lr.ph449
  %indvars.iv607 = phi i64 [ %indvars.iv.next608.3, %.lr.ph449 ], [ %indvars.iv607.unr, %.lr.ph449.prol.loopexit ]
  %326 = getelementptr inbounds double, ptr %20, i64 %indvars.iv607
  %327 = load double, ptr %326, align 8, !tbaa !9
  %328 = getelementptr inbounds double, ptr %21, i64 %indvars.iv607
  %329 = load double, ptr %328, align 8, !tbaa !9
  %330 = fdiv double %329, %327
  store double %330, ptr %328, align 8, !tbaa !9
  %331 = getelementptr double, ptr %8, i64 %indvars.iv607
  %332 = load double, ptr %331, align 8, !tbaa !9
  %333 = getelementptr double, ptr %10, i64 %indvars.iv607
  %334 = load double, ptr %333, align 8, !tbaa !9
  %335 = fdiv double %334, %332
  store double %335, ptr %333, align 8, !tbaa !9
  %indvars.iv.next608.1 = add nuw nsw i64 %indvars.iv607, 2
  %336 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next608.1
  %337 = load double, ptr %336, align 8, !tbaa !9
  %338 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next608.1
  %339 = load double, ptr %338, align 8, !tbaa !9
  %340 = fdiv double %339, %337
  store double %340, ptr %338, align 8, !tbaa !9
  %indvars.iv.next608.2 = add nuw nsw i64 %indvars.iv607, 3
  %341 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next608.2
  %342 = load double, ptr %341, align 8, !tbaa !9
  %343 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next608.2
  %344 = load double, ptr %343, align 8, !tbaa !9
  %345 = fdiv double %344, %342
  store double %345, ptr %343, align 8, !tbaa !9
  %indvars.iv.next608.3 = add nuw nsw i64 %indvars.iv607, 4
  %exitcond611.not.3 = icmp eq i64 %indvars.iv.next608.3, %wide.trip.count610
  br i1 %exitcond611.not.3, label %.loopexit.backedge, label %.lr.ph449, !llvm.loop !44

346:                                              ; preds = %._crit_edge
  %347 = load i32, ptr %1, align 4, !tbaa !5
  %.not349442 = icmp slt i32 %347, 1
  br i1 %.not349442, label %.loopexit.backedge, label %.lr.ph445.preheader

.lr.ph445.preheader:                              ; preds = %346
  %348 = add nuw i32 %347, 1
  %wide.trip.count605 = zext i32 %348 to i64
  %349 = zext nneg i32 %347 to i64
  %min.iters.check794 = icmp ult i32 %347, 4
  br i1 %min.iters.check794, label %.lr.ph445.preheader840, label %vector.memcheck784

vector.memcheck784:                               ; preds = %.lr.ph445.preheader
  %350 = shl nuw nsw i64 %wide.trip.count605, 3
  %scevgep786 = getelementptr i8, ptr %scevgep785, i64 %350
  %scevgep788 = getelementptr i8, ptr %scevgep787, i64 %350
  %bound0789 = icmp ugt ptr %scevgep788, %10
  %bound1790 = icmp ugt ptr %scevgep786, %8
  %found.conflict791 = and i1 %bound0789, %bound1790
  br i1 %found.conflict791, label %.lr.ph445.preheader840, label %vector.ph795

vector.ph795:                                     ; preds = %vector.memcheck784
  %n.vec797 = and i64 %349, 2147483644
  %ind.end798 = or disjoint i64 %n.vec797, 1
  br label %vector.body800

vector.body800:                                   ; preds = %vector.body800, %vector.ph795
  %index801 = phi i64 [ 0, %vector.ph795 ], [ %index.next807, %vector.body800 ]
  %351 = getelementptr double, ptr %8, i64 %index801
  %352 = getelementptr inbounds i8, ptr %351, i64 16
  %wide.load803 = load <2 x double>, ptr %351, align 8, !tbaa !9, !alias.scope !45
  %wide.load804 = load <2 x double>, ptr %352, align 8, !tbaa !9, !alias.scope !45
  %353 = getelementptr double, ptr %10, i64 %index801
  %354 = getelementptr inbounds i8, ptr %353, i64 16
  %wide.load805 = load <2 x double>, ptr %353, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %wide.load806 = load <2 x double>, ptr %354, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %355 = fmul <2 x double> %wide.load803, %wide.load805
  %356 = fmul <2 x double> %wide.load804, %wide.load806
  store <2 x double> %355, ptr %353, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  store <2 x double> %356, ptr %354, align 8, !tbaa !9, !alias.scope !48, !noalias !45
  %index.next807 = add nuw i64 %index801, 4
  %357 = icmp eq i64 %index.next807, %n.vec797
  br i1 %357, label %middle.block792, label %vector.body800, !llvm.loop !50

middle.block792:                                  ; preds = %vector.body800
  %cmp.n808 = icmp eq i64 %n.vec797, %349
  br i1 %cmp.n808, label %.loopexit.backedge, label %.lr.ph445.preheader840

.loopexit.backedge:                               ; preds = %.lr.ph445.prol.loopexit, %.lr.ph445, %.lr.ph449.prol.loopexit, %.lr.ph449, %scalar.ph.prol.loopexit, %scalar.ph, %middle.block792, %middle.block769, %middle.block, %346, %308, %.loopexit359, %._crit_edge
  br label %.loopexit

.lr.ph445.preheader840:                           ; preds = %middle.block792, %vector.memcheck784, %.lr.ph445.preheader
  %indvars.iv602.ph = phi i64 [ 1, %vector.memcheck784 ], [ 1, %.lr.ph445.preheader ], [ %ind.end798, %middle.block792 ]
  %358 = sub nsw i64 %wide.trip.count605, %indvars.iv602.ph
  %359 = zext nneg i32 %347 to i64
  %360 = sub nsw i64 %359, %indvars.iv602.ph
  %xtraiter901 = and i64 %358, 3
  %lcmp.mod902.not = icmp eq i64 %xtraiter901, 0
  br i1 %lcmp.mod902.not, label %.lr.ph445.prol.loopexit, label %.lr.ph445.prol

.lr.ph445.prol:                                   ; preds = %.lr.ph445.preheader840, %.lr.ph445.prol
  %indvars.iv602.prol = phi i64 [ %indvars.iv.next603.prol, %.lr.ph445.prol ], [ %indvars.iv602.ph, %.lr.ph445.preheader840 ]
  %prol.iter903 = phi i64 [ %prol.iter903.next, %.lr.ph445.prol ], [ 0, %.lr.ph445.preheader840 ]
  %361 = getelementptr inbounds double, ptr %20, i64 %indvars.iv602.prol
  %362 = load double, ptr %361, align 8, !tbaa !9
  %363 = getelementptr inbounds double, ptr %21, i64 %indvars.iv602.prol
  %364 = load double, ptr %363, align 8, !tbaa !9
  %365 = fmul double %362, %364
  store double %365, ptr %363, align 8, !tbaa !9
  %indvars.iv.next603.prol = add nuw nsw i64 %indvars.iv602.prol, 1
  %prol.iter903.next = add i64 %prol.iter903, 1
  %prol.iter903.cmp.not = icmp eq i64 %prol.iter903.next, %xtraiter901
  br i1 %prol.iter903.cmp.not, label %.lr.ph445.prol.loopexit, label %.lr.ph445.prol, !llvm.loop !51

.lr.ph445.prol.loopexit:                          ; preds = %.lr.ph445.prol, %.lr.ph445.preheader840
  %indvars.iv602.unr = phi i64 [ %indvars.iv602.ph, %.lr.ph445.preheader840 ], [ %indvars.iv.next603.prol, %.lr.ph445.prol ]
  %366 = icmp ult i64 %360, 3
  br i1 %366, label %.loopexit.backedge, label %.lr.ph445

.lr.ph445:                                        ; preds = %.lr.ph445.prol.loopexit, %.lr.ph445
  %indvars.iv602 = phi i64 [ %indvars.iv.next603.3, %.lr.ph445 ], [ %indvars.iv602.unr, %.lr.ph445.prol.loopexit ]
  %367 = getelementptr inbounds double, ptr %20, i64 %indvars.iv602
  %368 = load double, ptr %367, align 8, !tbaa !9
  %369 = getelementptr inbounds double, ptr %21, i64 %indvars.iv602
  %370 = load double, ptr %369, align 8, !tbaa !9
  %371 = fmul double %368, %370
  store double %371, ptr %369, align 8, !tbaa !9
  %372 = getelementptr double, ptr %8, i64 %indvars.iv602
  %373 = load double, ptr %372, align 8, !tbaa !9
  %374 = getelementptr double, ptr %10, i64 %indvars.iv602
  %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.next603.1 = add nuw nsw i64 %indvars.iv602, 2
  %377 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next603.1
  %378 = load double, ptr %377, align 8, !tbaa !9
  %379 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next603.1
  %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.next603.2 = add nuw nsw i64 %indvars.iv602, 3
  %382 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next603.2
  %383 = load double, ptr %382, align 8, !tbaa !9
  %384 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next603.2
  %385 = load double, ptr %384, align 8, !tbaa !9
  %386 = fmul double %383, %385
  store double %386, ptr %384, align 8, !tbaa !9
  %indvars.iv.next603.3 = add nuw nsw i64 %indvars.iv602, 4
  %exitcond606.not.3 = icmp eq i64 %indvars.iv.next603.3, %wide.trip.count605
  br i1 %exitcond606.not.3, label %.loopexit.backedge, label %.lr.ph445, !llvm.loop !52

387:                                              ; preds = %.loopexit
  %388 = load i32, ptr %7, align 4, !tbaa !5
  switch i32 %388, label %.loopexit359 [
    i32 1, label %389
    i32 -1, label %427
  ]

389:                                              ; preds = %387
  %390 = load i32, ptr %1, align 4, !tbaa !5
  %.not346454 = icmp slt i32 %390, 1
  br i1 %.not346454, label %.loopexit359, label %.lr.ph457.preheader

.lr.ph457.preheader:                              ; preds = %389
  %391 = add nuw i32 %390, 1
  %wide.trip.count620 = zext i32 %391 to i64
  %392 = zext nneg i32 %390 to i64
  %min.iters.check723 = icmp eq i32 %390, 1
  br i1 %min.iters.check723, label %.lr.ph457.preheader835, label %vector.memcheck713

vector.memcheck713:                               ; preds = %.lr.ph457.preheader
  %393 = shl nuw nsw i64 %wide.trip.count620, 3
  %scevgep715 = getelementptr i8, ptr %scevgep714, i64 %393
  %scevgep717 = getelementptr i8, ptr %scevgep716, i64 %393
  %bound0718 = icmp ugt ptr %scevgep717, %10
  %bound1719 = icmp ugt ptr %scevgep715, %8
  %found.conflict720 = and i1 %bound0718, %bound1719
  br i1 %found.conflict720, label %.lr.ph457.preheader835, label %vector.ph724

vector.ph724:                                     ; preds = %vector.memcheck713
  %n.vec726 = and i64 %392, 2147483646
  %ind.end727 = or i64 %392, 1
  br label %vector.body729

vector.body729:                                   ; preds = %vector.body729, %vector.ph724
  %index730 = phi i64 [ 0, %vector.ph724 ], [ %index.next734, %vector.body729 ]
  %394 = getelementptr double, ptr %8, i64 %index730
  %wide.load732 = load <2 x double>, ptr %394, align 8, !tbaa !9, !alias.scope !53
  %395 = getelementptr double, ptr %10, i64 %index730
  %wide.load733 = load <2 x double>, ptr %395, align 8, !tbaa !9, !alias.scope !56, !noalias !53
  %396 = fdiv <2 x double> %wide.load733, %wide.load732
  store <2 x double> %396, ptr %395, align 8, !tbaa !9, !alias.scope !56, !noalias !53
  %index.next734 = add nuw i64 %index730, 2
  %397 = icmp eq i64 %index.next734, %n.vec726
  br i1 %397, label %middle.block721, label %vector.body729, !llvm.loop !58

middle.block721:                                  ; preds = %vector.body729
  %cmp.n735 = icmp eq i64 %n.vec726, %392
  br i1 %cmp.n735, label %.loopexit359, label %.lr.ph457.preheader835

.lr.ph457.preheader835:                           ; preds = %middle.block721, %vector.memcheck713, %.lr.ph457.preheader
  %indvars.iv617.ph = phi i64 [ 1, %vector.memcheck713 ], [ 1, %.lr.ph457.preheader ], [ %ind.end727, %middle.block721 ]
  %398 = sub nsw i64 %wide.trip.count620, %indvars.iv617.ph
  %399 = zext nneg i32 %390 to i64
  %400 = sub nsw i64 %399, %indvars.iv617.ph
  %xtraiter910 = and i64 %398, 3
  %lcmp.mod911.not = icmp eq i64 %xtraiter910, 0
  br i1 %lcmp.mod911.not, label %.lr.ph457.prol.loopexit, label %.lr.ph457.prol

.lr.ph457.prol:                                   ; preds = %.lr.ph457.preheader835, %.lr.ph457.prol
  %indvars.iv617.prol = phi i64 [ %indvars.iv.next618.prol, %.lr.ph457.prol ], [ %indvars.iv617.ph, %.lr.ph457.preheader835 ]
  %prol.iter912 = phi i64 [ %prol.iter912.next, %.lr.ph457.prol ], [ 0, %.lr.ph457.preheader835 ]
  %401 = getelementptr inbounds double, ptr %20, i64 %indvars.iv617.prol
  %402 = load double, ptr %401, align 8, !tbaa !9
  %403 = getelementptr inbounds double, ptr %21, i64 %indvars.iv617.prol
  %404 = load double, ptr %403, align 8, !tbaa !9
  %405 = fdiv double %404, %402
  store double %405, ptr %403, align 8, !tbaa !9
  %indvars.iv.next618.prol = add nuw nsw i64 %indvars.iv617.prol, 1
  %prol.iter912.next = add i64 %prol.iter912, 1
  %prol.iter912.cmp.not = icmp eq i64 %prol.iter912.next, %xtraiter910
  br i1 %prol.iter912.cmp.not, label %.lr.ph457.prol.loopexit, label %.lr.ph457.prol, !llvm.loop !59

.lr.ph457.prol.loopexit:                          ; preds = %.lr.ph457.prol, %.lr.ph457.preheader835
  %indvars.iv617.unr = phi i64 [ %indvars.iv617.ph, %.lr.ph457.preheader835 ], [ %indvars.iv.next618.prol, %.lr.ph457.prol ]
  %406 = icmp ult i64 %400, 3
  br i1 %406, label %.loopexit359, label %.lr.ph457

.lr.ph457:                                        ; preds = %.lr.ph457.prol.loopexit, %.lr.ph457
  %indvars.iv617 = phi i64 [ %indvars.iv.next618.3, %.lr.ph457 ], [ %indvars.iv617.unr, %.lr.ph457.prol.loopexit ]
  %407 = getelementptr inbounds double, ptr %20, i64 %indvars.iv617
  %408 = load double, ptr %407, align 8, !tbaa !9
  %409 = getelementptr inbounds double, ptr %21, i64 %indvars.iv617
  %410 = load double, ptr %409, align 8, !tbaa !9
  %411 = fdiv double %410, %408
  store double %411, ptr %409, align 8, !tbaa !9
  %412 = getelementptr double, ptr %8, i64 %indvars.iv617
  %413 = load double, ptr %412, align 8, !tbaa !9
  %414 = getelementptr double, ptr %10, i64 %indvars.iv617
  %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.next618.1 = add nuw nsw i64 %indvars.iv617, 2
  %417 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next618.1
  %418 = load double, ptr %417, align 8, !tbaa !9
  %419 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next618.1
  %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.next618.2 = add nuw nsw i64 %indvars.iv617, 3
  %422 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next618.2
  %423 = load double, ptr %422, align 8, !tbaa !9
  %424 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next618.2
  %425 = load double, ptr %424, align 8, !tbaa !9
  %426 = fdiv double %425, %423
  store double %426, ptr %424, align 8, !tbaa !9
  %indvars.iv.next618.3 = add nuw nsw i64 %indvars.iv617, 4
  %exitcond621.not.3 = icmp eq i64 %indvars.iv.next618.3, %wide.trip.count620
  br i1 %exitcond621.not.3, label %.loopexit359, label %.lr.ph457, !llvm.loop !60

427:                                              ; preds = %387
  %428 = load i32, ptr %1, align 4, !tbaa !5
  %.not345450 = icmp slt i32 %428, 1
  br i1 %.not345450, label %.loopexit359, label %.lr.ph453.preheader

.lr.ph453.preheader:                              ; preds = %427
  %429 = add nuw i32 %428, 1
  %wide.trip.count615 = zext i32 %429 to i64
  %430 = zext nneg i32 %428 to i64
  %min.iters.check746 = icmp ult i32 %428, 4
  br i1 %min.iters.check746, label %.lr.ph453.preheader836, label %vector.memcheck736

vector.memcheck736:                               ; preds = %.lr.ph453.preheader
  %431 = shl nuw nsw i64 %wide.trip.count615, 3
  %scevgep738 = getelementptr i8, ptr %scevgep737, i64 %431
  %scevgep740 = getelementptr i8, ptr %scevgep739, i64 %431
  %bound0741 = icmp ugt ptr %scevgep740, %10
  %bound1742 = icmp ugt ptr %scevgep738, %8
  %found.conflict743 = and i1 %bound0741, %bound1742
  br i1 %found.conflict743, label %.lr.ph453.preheader836, label %vector.ph747

vector.ph747:                                     ; preds = %vector.memcheck736
  %n.vec749 = and i64 %430, 2147483644
  %ind.end750 = or disjoint i64 %n.vec749, 1
  br label %vector.body752

vector.body752:                                   ; preds = %vector.body752, %vector.ph747
  %index753 = phi i64 [ 0, %vector.ph747 ], [ %index.next759, %vector.body752 ]
  %432 = getelementptr double, ptr %8, i64 %index753
  %433 = getelementptr inbounds i8, ptr %432, i64 16
  %wide.load755 = load <2 x double>, ptr %432, align 8, !tbaa !9, !alias.scope !61
  %wide.load756 = load <2 x double>, ptr %433, align 8, !tbaa !9, !alias.scope !61
  %434 = getelementptr double, ptr %10, i64 %index753
  %435 = getelementptr inbounds i8, ptr %434, i64 16
  %wide.load757 = load <2 x double>, ptr %434, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %wide.load758 = load <2 x double>, ptr %435, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %436 = fmul <2 x double> %wide.load755, %wide.load757
  %437 = fmul <2 x double> %wide.load756, %wide.load758
  store <2 x double> %436, ptr %434, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  store <2 x double> %437, ptr %435, align 8, !tbaa !9, !alias.scope !64, !noalias !61
  %index.next759 = add nuw i64 %index753, 4
  %438 = icmp eq i64 %index.next759, %n.vec749
  br i1 %438, label %middle.block744, label %vector.body752, !llvm.loop !66

middle.block744:                                  ; preds = %vector.body752
  %cmp.n760 = icmp eq i64 %n.vec749, %430
  br i1 %cmp.n760, label %.loopexit359, label %.lr.ph453.preheader836

.lr.ph453.preheader836:                           ; preds = %middle.block744, %vector.memcheck736, %.lr.ph453.preheader
  %indvars.iv612.ph = phi i64 [ 1, %vector.memcheck736 ], [ 1, %.lr.ph453.preheader ], [ %ind.end750, %middle.block744 ]
  %439 = sub nsw i64 %wide.trip.count615, %indvars.iv612.ph
  %440 = zext nneg i32 %428 to i64
  %441 = sub nsw i64 %440, %indvars.iv612.ph
  %xtraiter907 = and i64 %439, 3
  %lcmp.mod908.not = icmp eq i64 %xtraiter907, 0
  br i1 %lcmp.mod908.not, label %.lr.ph453.prol.loopexit, label %.lr.ph453.prol

.lr.ph453.prol:                                   ; preds = %.lr.ph453.preheader836, %.lr.ph453.prol
  %indvars.iv612.prol = phi i64 [ %indvars.iv.next613.prol, %.lr.ph453.prol ], [ %indvars.iv612.ph, %.lr.ph453.preheader836 ]
  %prol.iter909 = phi i64 [ %prol.iter909.next, %.lr.ph453.prol ], [ 0, %.lr.ph453.preheader836 ]
  %442 = getelementptr inbounds double, ptr %20, i64 %indvars.iv612.prol
  %443 = load double, ptr %442, align 8, !tbaa !9
  %444 = getelementptr inbounds double, ptr %21, i64 %indvars.iv612.prol
  %445 = load double, ptr %444, align 8, !tbaa !9
  %446 = fmul double %443, %445
  store double %446, ptr %444, align 8, !tbaa !9
  %indvars.iv.next613.prol = add nuw nsw i64 %indvars.iv612.prol, 1
  %prol.iter909.next = add i64 %prol.iter909, 1
  %prol.iter909.cmp.not = icmp eq i64 %prol.iter909.next, %xtraiter907
  br i1 %prol.iter909.cmp.not, label %.lr.ph453.prol.loopexit, label %.lr.ph453.prol, !llvm.loop !67

.lr.ph453.prol.loopexit:                          ; preds = %.lr.ph453.prol, %.lr.ph453.preheader836
  %indvars.iv612.unr = phi i64 [ %indvars.iv612.ph, %.lr.ph453.preheader836 ], [ %indvars.iv.next613.prol, %.lr.ph453.prol ]
  %447 = icmp ult i64 %441, 3
  br i1 %447, label %.loopexit359, label %.lr.ph453

.lr.ph453:                                        ; preds = %.lr.ph453.prol.loopexit, %.lr.ph453
  %indvars.iv612 = phi i64 [ %indvars.iv.next613.3, %.lr.ph453 ], [ %indvars.iv612.unr, %.lr.ph453.prol.loopexit ]
  %448 = getelementptr inbounds double, ptr %20, i64 %indvars.iv612
  %449 = load double, ptr %448, align 8, !tbaa !9
  %450 = getelementptr inbounds double, ptr %21, i64 %indvars.iv612
  %451 = load double, ptr %450, align 8, !tbaa !9
  %452 = fmul double %449, %451
  store double %452, ptr %450, align 8, !tbaa !9
  %453 = getelementptr double, ptr %8, i64 %indvars.iv612
  %454 = load double, ptr %453, align 8, !tbaa !9
  %455 = getelementptr double, ptr %10, i64 %indvars.iv612
  %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.next613.1 = add nuw nsw i64 %indvars.iv612, 2
  %458 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next613.1
  %459 = load double, ptr %458, align 8, !tbaa !9
  %460 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next613.1
  %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.next613.2 = add nuw nsw i64 %indvars.iv612, 3
  %463 = getelementptr inbounds double, ptr %20, i64 %indvars.iv.next613.2
  %464 = load double, ptr %463, align 8, !tbaa !9
  %465 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next613.2
  %466 = load double, ptr %465, align 8, !tbaa !9
  %467 = fmul double %464, %466
  store double %467, ptr %465, align 8, !tbaa !9
  %indvars.iv.next613.3 = add nuw nsw i64 %indvars.iv612, 4
  %exitcond616.not.3 = icmp eq i64 %indvars.iv.next613.3, %wide.trip.count615
  br i1 %exitcond616.not.3, label %.loopexit359, label %.lr.ph453, !llvm.loop !68

.loopexit359:                                     ; preds = %.lr.ph453.prol.loopexit, %.lr.ph453, %.lr.ph457.prol.loopexit, %.lr.ph457, %middle.block744, %middle.block721, %427, %389, %387
  call void @dsytrs_(ptr noundef nonnull %.str.3..str.1686, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef %10, ptr noundef nonnull %1, ptr noundef nonnull %9) #4
  %468 = load i32, ptr %1, align 4, !tbaa !5
  %.not347458 = icmp slt i32 %468, 1
  br i1 %.not347458, label %.loopexit.backedge, label %.lr.ph461

.lr.ph461:                                        ; preds = %.loopexit359
  %469 = shl nuw i32 %468, 1
  %470 = sext i32 %469 to i64
  %471 = add nuw i32 %468, 1
  %wide.trip.count625 = zext i32 %471 to i64
  %invariant.gep683 = getelementptr double, ptr %21, i64 %470
  %472 = zext nneg i32 %468 to i64
  %min.iters.check = icmp ult i32 %468, 6
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph461
  %473 = shl nuw nsw i64 %wide.trip.count625, 3
  %scevgep706 = getelementptr i8, ptr %scevgep, i64 %473
  %474 = shl nsw i64 %470, 3
  %scevgep707 = getelementptr i8, ptr %10, i64 %474
  %475 = getelementptr i8, ptr %scevgep708, i64 %474
  %scevgep709 = getelementptr i8, ptr %475, i64 %473
  %bound0 = icmp ugt ptr %scevgep709, %10
  %bound1 = icmp ult ptr %scevgep707, %scevgep706
  %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 %472, 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
  %476 = getelementptr double, ptr %invariant.gep683, i64 %offset.idx
  %477 = getelementptr i8, ptr %476, i64 16
  %wide.load = load <2 x double>, ptr %476, align 8, !tbaa !9, !alias.scope !69
  %wide.load710 = load <2 x double>, ptr %477, align 8, !tbaa !9, !alias.scope !69
  %478 = getelementptr double, ptr %10, i64 %index
  %479 = getelementptr inbounds i8, ptr %478, i64 16
  %wide.load711 = load <2 x double>, ptr %478, align 8, !tbaa !9, !alias.scope !72, !noalias !69
  %wide.load712 = load <2 x double>, ptr %479, align 8, !tbaa !9, !alias.scope !72, !noalias !69
  %480 = fmul <2 x double> %wide.load, %wide.load711
  %481 = fmul <2 x double> %wide.load710, %wide.load712
  store <2 x double> %480, ptr %478, align 8, !tbaa !9, !alias.scope !72, !noalias !69
  store <2 x double> %481, ptr %479, align 8, !tbaa !9, !alias.scope !72, !noalias !69
  %index.next = add nuw i64 %index, 4
  %482 = icmp eq i64 %index.next, %n.vec
  br i1 %482, label %middle.block, label %vector.body, !llvm.loop !74

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

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph461
  %indvars.iv622.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph461 ], [ %ind.end, %middle.block ]
  %483 = sub nsw i64 %wide.trip.count625, %indvars.iv622.ph
  %484 = zext nneg i32 %468 to i64
  %485 = sub nsw i64 %484, %indvars.iv622.ph
  %xtraiter913 = and i64 %483, 3
  %lcmp.mod914.not = icmp eq i64 %xtraiter913, 0
  br i1 %lcmp.mod914.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv622.prol = phi i64 [ %indvars.iv.next623.prol, %scalar.ph.prol ], [ %indvars.iv622.ph, %scalar.ph.preheader ]
  %prol.iter915 = phi i64 [ %prol.iter915.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep684.prol = getelementptr double, ptr %invariant.gep683, i64 %indvars.iv622.prol
  %486 = load double, ptr %gep684.prol, align 8, !tbaa !9
  %487 = getelementptr inbounds double, ptr %21, i64 %indvars.iv622.prol
  %488 = load double, ptr %487, align 8, !tbaa !9
  %489 = fmul double %486, %488
  store double %489, ptr %487, align 8, !tbaa !9
  %indvars.iv.next623.prol = add nuw nsw i64 %indvars.iv622.prol, 1
  %prol.iter915.next = add i64 %prol.iter915, 1
  %prol.iter915.cmp.not = icmp eq i64 %prol.iter915.next, %xtraiter913
  br i1 %prol.iter915.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.iv622.unr = phi i64 [ %indvars.iv622.ph, %scalar.ph.preheader ], [ %indvars.iv.next623.prol, %scalar.ph.prol ]
  %490 = icmp ult i64 %485, 3
  br i1 %490, label %.loopexit.backedge, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv622 = phi i64 [ %indvars.iv622.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next623.3, %scalar.ph ]
  %gep684 = getelementptr double, ptr %invariant.gep683, i64 %indvars.iv622
  %491 = load double, ptr %gep684, align 8, !tbaa !9
  %492 = getelementptr inbounds double, ptr %21, i64 %indvars.iv622
  %493 = load double, ptr %492, align 8, !tbaa !9
  %494 = fmul double %491, %493
  store double %494, ptr %492, align 8, !tbaa !9
  %gep937 = getelementptr double, ptr %invariant.gep936, i64 %indvars.iv622
  %495 = load double, ptr %gep937, align 8, !tbaa !9
  %496 = getelementptr double, ptr %10, i64 %indvars.iv622
  %497 = load double, ptr %496, align 8, !tbaa !9
  %498 = fmul double %495, %497
  store double %498, ptr %496, align 8, !tbaa !9
  %indvars.iv.next623.1 = add nuw nsw i64 %indvars.iv622, 2
  %gep684.2 = getelementptr double, ptr %invariant.gep683, i64 %indvars.iv.next623.1
  %499 = load double, ptr %gep684.2, align 8, !tbaa !9
  %500 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next623.1
  %501 = load double, ptr %500, align 8, !tbaa !9
  %502 = fmul double %499, %501
  store double %502, ptr %500, align 8, !tbaa !9
  %indvars.iv.next623.2 = add nuw nsw i64 %indvars.iv622, 3
  %gep684.3 = getelementptr double, ptr %invariant.gep683, i64 %indvars.iv.next623.2
  %503 = load double, ptr %gep684.3, align 8, !tbaa !9
  %504 = getelementptr inbounds double, ptr %21, i64 %indvars.iv.next623.2
  %505 = load double, ptr %504, align 8, !tbaa !9
  %506 = fmul double %503, %505
  store double %506, ptr %504, align 8, !tbaa !9
  %indvars.iv.next623.3 = add nuw nsw i64 %indvars.iv622, 4
  %exitcond626.not.3 = icmp eq i64 %indvars.iv.next623.3, %wide.trip.count625
  br i1 %exitcond626.not.3, label %.loopexit.backedge, label %scalar.ph, !llvm.loop !76

507:                                              ; preds = %.loopexit
  %508 = load double, ptr %16, align 8, !tbaa !9
  %509 = fcmp une double %508, 0.000000e+00
  %510 = fdiv double 1.000000e+00, %508
  %.0324 = select i1 %509, double %510, double 0.000000e+00
  br label %511

511:                                              ; preds = %31, %507, %.thread
  %.0302 = phi double [ 0.000000e+00, %.thread ], [ %.0324, %507 ], [ 1.000000e+00, %31 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %15) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #4
  ret double %.0302
}

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

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

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

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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #4 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = distinct !{!15, !12}
!16 = distinct !{!16, !12}
!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: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass