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

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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1

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

124:                                              ; preds = %20
  %125 = load i32, ptr %60, align 4, !tbaa !9
  %126 = icmp ne i32 %125, 0
  br i1 %126, label %127, label %129

127:                                              ; preds = %124, %20
  %128 = load ptr, ptr %29, align 8, !tbaa !5
  store i8 78, ptr %128, align 1, !tbaa !11
  store i32 0, ptr %61, align 4, !tbaa !9
  br label %135

129:                                              ; preds = %124
  %130 = load ptr, ptr %29, align 8, !tbaa !5
  %131 = call i32 @lsame_(ptr noundef %130, ptr noundef @.str.2)
  store i32 %131, ptr %61, align 4, !tbaa !9
  %132 = call double @dlamch_(ptr noundef @.str.3)
  store double %132, ptr %65, align 8, !tbaa !12
  %133 = load double, ptr %65, align 8, !tbaa !12
  %134 = fdiv double 1.000000e+00, %133
  store double %134, ptr %63, align 8, !tbaa !12
  br label %135

135:                                              ; preds = %129, %127
  %136 = load i32, ptr %62, align 4, !tbaa !9
  %137 = icmp ne i32 %136, 0
  br i1 %137, label %147, label %138

138:                                              ; preds = %135
  %139 = load i32, ptr %60, align 4, !tbaa !9
  %140 = icmp ne i32 %139, 0
  br i1 %140, label %147, label %141

141:                                              ; preds = %138
  %142 = load ptr, ptr %21, align 8, !tbaa !5
  %143 = call i32 @lsame_(ptr noundef %142, ptr noundef @.str.4)
  %144 = icmp ne i32 %143, 0
  br i1 %144, label %147, label %145

145:                                              ; preds = %141
  %146 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -1, ptr %146, align 4, !tbaa !9
  br label %332

147:                                              ; preds = %141, %138, %135
  %148 = load ptr, ptr %22, align 8, !tbaa !5
  %149 = call i32 @lsame_(ptr noundef %148, ptr noundef @.str.5)
  %150 = icmp ne i32 %149, 0
  br i1 %150, label %157, label %151

151:                                              ; preds = %147
  %152 = load ptr, ptr %22, align 8, !tbaa !5
  %153 = call i32 @lsame_(ptr noundef %152, ptr noundef @.str.6)
  %154 = icmp ne i32 %153, 0
  br i1 %154, label %157, label %155

155:                                              ; preds = %151
  %156 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -2, ptr %156, align 4, !tbaa !9
  br label %331

157:                                              ; preds = %151, %147
  %158 = load ptr, ptr %23, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = icmp slt i32 %159, 0
  br i1 %160, label %161, label %163

161:                                              ; preds = %157
  %162 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -3, ptr %162, align 4, !tbaa !9
  br label %330

163:                                              ; preds = %157
  %164 = load ptr, ptr %24, align 8, !tbaa !5
  %165 = load i32, ptr %164, align 4, !tbaa !9
  %166 = icmp slt i32 %165, 0
  br i1 %166, label %167, label %169

167:                                              ; preds = %163
  %168 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -4, ptr %168, align 4, !tbaa !9
  br label %329

169:                                              ; preds = %163
  %170 = load ptr, ptr %26, align 8, !tbaa !5
  %171 = load i32, ptr %170, align 4, !tbaa !9
  %172 = load ptr, ptr %23, align 8, !tbaa !5
  %173 = load i32, ptr %172, align 4, !tbaa !9
  %174 = icmp sge i32 1, %173
  br i1 %174, label %175, label %176

175:                                              ; preds = %169
  br label %179

176:                                              ; preds = %169
  %177 = load ptr, ptr %23, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  br label %179

179:                                              ; preds = %176, %175
  %180 = phi i32 [ 1, %175 ], [ %178, %176 ]
  %181 = icmp slt i32 %171, %180
  br i1 %181, label %182, label %184

182:                                              ; preds = %179
  %183 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -6, ptr %183, align 4, !tbaa !9
  br label %328

184:                                              ; preds = %179
  %185 = load ptr, ptr %28, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = load ptr, ptr %23, align 8, !tbaa !5
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = icmp sge i32 1, %188
  br i1 %189, label %190, label %191

190:                                              ; preds = %184
  br label %194

191:                                              ; preds = %184
  %192 = load ptr, ptr %23, align 8, !tbaa !5
  %193 = load i32, ptr %192, align 4, !tbaa !9
  br label %194

194:                                              ; preds = %191, %190
  %195 = phi i32 [ 1, %190 ], [ %193, %191 ]
  %196 = icmp slt i32 %186, %195
  br i1 %196, label %197, label %199

197:                                              ; preds = %194
  %198 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -8, ptr %198, align 4, !tbaa !9
  br label %327

199:                                              ; preds = %194
  %200 = load ptr, ptr %21, align 8, !tbaa !5
  %201 = call i32 @lsame_(ptr noundef %200, ptr noundef @.str.4)
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %203, label %212

203:                                              ; preds = %199
  %204 = load i32, ptr %61, align 4, !tbaa !9
  %205 = icmp ne i32 %204, 0
  br i1 %205, label %212, label %206

206:                                              ; preds = %203
  %207 = load ptr, ptr %29, align 8, !tbaa !5
  %208 = call i32 @lsame_(ptr noundef %207, ptr noundef @.str)
  %209 = icmp ne i32 %208, 0
  br i1 %209, label %212, label %210

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

212:                                              ; preds = %206, %203, %199
  %213 = load i32, ptr %61, align 4, !tbaa !9
  %214 = icmp ne i32 %213, 0
  br i1 %214, label %215, label %289

215:                                              ; preds = %212
  %216 = load double, ptr %63, align 8, !tbaa !12
  store double %216, ptr %54, align 8, !tbaa !12
  store double 0.000000e+00, ptr %55, align 8, !tbaa !12
  %217 = load ptr, ptr %23, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  store i32 %218, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %254, %215
  %220 = load i32, ptr %57, align 4, !tbaa !9
  %221 = load i32, ptr %49, align 4, !tbaa !9
  %222 = icmp sle i32 %220, %221
  br i1 %222, label %223, label %257

223:                                              ; preds = %219
  %224 = load double, ptr %54, align 8, !tbaa !12
  store double %224, ptr %51, align 8, !tbaa !12
  %225 = load ptr, ptr %30, align 8, !tbaa !5
  %226 = load i32, ptr %57, align 4, !tbaa !9
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds double, ptr %225, i64 %227
  %229 = load double, ptr %228, align 8, !tbaa !12
  store double %229, ptr %52, align 8, !tbaa !12
  %230 = load double, ptr %51, align 8, !tbaa !12
  %231 = load double, ptr %52, align 8, !tbaa !12
  %232 = fcmp ole double %230, %231
  br i1 %232, label %233, label %235

233:                                              ; preds = %223
  %234 = load double, ptr %51, align 8, !tbaa !12
  br label %237

235:                                              ; preds = %223
  %236 = load double, ptr %52, align 8, !tbaa !12
  br label %237

237:                                              ; preds = %235, %233
  %238 = phi double [ %234, %233 ], [ %236, %235 ]
  store double %238, ptr %54, align 8, !tbaa !12
  %239 = load double, ptr %55, align 8, !tbaa !12
  store double %239, ptr %51, align 8, !tbaa !12
  %240 = load ptr, ptr %30, align 8, !tbaa !5
  %241 = load i32, ptr %57, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds double, ptr %240, i64 %242
  %244 = load double, ptr %243, align 8, !tbaa !12
  store double %244, ptr %52, align 8, !tbaa !12
  %245 = load double, ptr %51, align 8, !tbaa !12
  %246 = load double, ptr %52, align 8, !tbaa !12
  %247 = fcmp oge double %245, %246
  br i1 %247, label %248, label %250

248:                                              ; preds = %237
  %249 = load double, ptr %51, align 8, !tbaa !12
  br label %252

250:                                              ; preds = %237
  %251 = load double, ptr %52, align 8, !tbaa !12
  br label %252

252:                                              ; preds = %250, %248
  %253 = phi double [ %249, %248 ], [ %251, %250 ]
  store double %253, ptr %55, align 8, !tbaa !12
  br label %254

254:                                              ; preds = %252
  %255 = load i32, ptr %57, align 4, !tbaa !9
  %256 = add nsw i32 %255, 1
  store i32 %256, ptr %57, align 4, !tbaa !9
  br label %219, !llvm.loop !14

257:                                              ; preds = %219
  %258 = load double, ptr %54, align 8, !tbaa !12
  %259 = fcmp ole double %258, 0.000000e+00
  br i1 %259, label %260, label %262

260:                                              ; preds = %257
  %261 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -10, ptr %261, align 4, !tbaa !9
  br label %288

262:                                              ; preds = %257
  %263 = load ptr, ptr %23, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp sgt i32 %264, 0
  br i1 %265, label %266, label %286

266:                                              ; preds = %262
  %267 = load double, ptr %54, align 8, !tbaa !12
  %268 = load double, ptr %65, align 8, !tbaa !12
  %269 = fcmp oge double %267, %268
  br i1 %269, label %270, label %272

270:                                              ; preds = %266
  %271 = load double, ptr %54, align 8, !tbaa !12
  br label %274

272:                                              ; preds = %266
  %273 = load double, ptr %65, align 8, !tbaa !12
  br label %274

274:                                              ; preds = %272, %270
  %275 = phi double [ %271, %270 ], [ %273, %272 ]
  %276 = load double, ptr %55, align 8, !tbaa !12
  %277 = load double, ptr %63, align 8, !tbaa !12
  %278 = fcmp ole double %276, %277
  br i1 %278, label %279, label %281

279:                                              ; preds = %274
  %280 = load double, ptr %55, align 8, !tbaa !12
  br label %283

281:                                              ; preds = %274
  %282 = load double, ptr %63, align 8, !tbaa !12
  br label %283

283:                                              ; preds = %281, %279
  %284 = phi double [ %280, %279 ], [ %282, %281 ]
  %285 = fdiv double %275, %284
  store double %285, ptr %58, align 8, !tbaa !12
  br label %287

286:                                              ; preds = %262
  store double 1.000000e+00, ptr %58, align 8, !tbaa !12
  br label %287

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

288:                                              ; preds = %287, %260
  br label %289

289:                                              ; preds = %288, %212
  %290 = load ptr, ptr %40, align 8, !tbaa !5
  %291 = load i32, ptr %290, align 4, !tbaa !9
  %292 = icmp eq i32 %291, 0
  br i1 %292, label %293, label %325

293:                                              ; preds = %289
  %294 = load ptr, ptr %32, align 8, !tbaa !5
  %295 = load i32, ptr %294, align 4, !tbaa !9
  %296 = load ptr, ptr %23, align 8, !tbaa !5
  %297 = load i32, ptr %296, align 4, !tbaa !9
  %298 = icmp sge i32 1, %297
  br i1 %298, label %299, label %300

299:                                              ; preds = %293
  br label %303

300:                                              ; preds = %293
  %301 = load ptr, ptr %23, align 8, !tbaa !5
  %302 = load i32, ptr %301, align 4, !tbaa !9
  br label %303

303:                                              ; preds = %300, %299
  %304 = phi i32 [ 1, %299 ], [ %302, %300 ]
  %305 = icmp slt i32 %295, %304
  br i1 %305, label %306, label %308

306:                                              ; preds = %303
  %307 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -12, ptr %307, align 4, !tbaa !9
  br label %324

308:                                              ; preds = %303
  %309 = load ptr, ptr %34, align 8, !tbaa !5
  %310 = load i32, ptr %309, align 4, !tbaa !9
  %311 = load ptr, ptr %23, align 8, !tbaa !5
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = icmp sge i32 1, %312
  br i1 %313, label %314, label %315

314:                                              ; preds = %308
  br label %318

315:                                              ; preds = %308
  %316 = load ptr, ptr %23, align 8, !tbaa !5
  %317 = load i32, ptr %316, align 4, !tbaa !9
  br label %318

318:                                              ; preds = %315, %314
  %319 = phi i32 [ 1, %314 ], [ %317, %315 ]
  %320 = icmp slt i32 %310, %319
  br i1 %320, label %321, label %323

321:                                              ; preds = %318
  %322 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 -14, ptr %322, align 4, !tbaa !9
  br label %323

323:                                              ; preds = %321, %318
  br label %324

324:                                              ; preds = %323, %306
  br label %325

325:                                              ; preds = %324, %289
  br label %326

326:                                              ; preds = %325, %210
  br label %327

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

328:                                              ; preds = %327, %182
  br label %329

329:                                              ; preds = %328, %167
  br label %330

330:                                              ; preds = %329, %161
  br label %331

331:                                              ; preds = %330, %155
  br label %332

332:                                              ; preds = %331, %145
  %333 = load ptr, ptr %40, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = icmp ne i32 %334, 0
  br i1 %335, label %336, label %341

336:                                              ; preds = %332
  %337 = load ptr, ptr %40, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = sub nsw i32 0, %338
  store i32 %339, ptr %49, align 4, !tbaa !9
  %340 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %49, i32 noundef 6)
  store i32 1, ptr %66, align 4
  br label %612

341:                                              ; preds = %332
  %342 = load i32, ptr %60, align 4, !tbaa !9
  %343 = icmp ne i32 %342, 0
  br i1 %343, label %344, label %369

344:                                              ; preds = %341
  %345 = load ptr, ptr %23, align 8, !tbaa !5
  %346 = load ptr, ptr %25, align 8, !tbaa !5
  %347 = load i32, ptr %42, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds double, ptr %346, i64 %348
  %350 = load ptr, ptr %26, align 8, !tbaa !5
  %351 = load ptr, ptr %30, align 8, !tbaa !5
  %352 = getelementptr inbounds double, ptr %351, i64 1
  call void @dpoequ_(ptr noundef %345, ptr noundef %349, ptr noundef %350, ptr noundef %352, ptr noundef %58, ptr noundef %53, ptr noundef %64)
  %353 = load i32, ptr %64, align 4, !tbaa !9
  %354 = icmp eq i32 %353, 0
  br i1 %354, label %355, label %368

355:                                              ; preds = %344
  %356 = load ptr, ptr %22, align 8, !tbaa !5
  %357 = load ptr, ptr %23, align 8, !tbaa !5
  %358 = load ptr, ptr %25, align 8, !tbaa !5
  %359 = load i32, ptr %42, align 4, !tbaa !9
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds double, ptr %358, i64 %360
  %362 = load ptr, ptr %26, align 8, !tbaa !5
  %363 = load ptr, ptr %30, align 8, !tbaa !5
  %364 = getelementptr inbounds double, ptr %363, i64 1
  %365 = load ptr, ptr %29, align 8, !tbaa !5
  call void @dlaqsy_(ptr noundef %356, ptr noundef %357, ptr noundef %361, ptr noundef %362, ptr noundef %364, ptr noundef %58, ptr noundef %53, ptr noundef %365)
  %366 = load ptr, ptr %29, align 8, !tbaa !5
  %367 = call i32 @lsame_(ptr noundef %366, ptr noundef @.str.2)
  store i32 %367, ptr %61, align 4, !tbaa !9
  br label %368

368:                                              ; preds = %355, %344
  br label %369

369:                                              ; preds = %368, %341
  %370 = load i32, ptr %61, align 4, !tbaa !9
  %371 = icmp ne i32 %370, 0
  br i1 %371, label %372, label %418

372:                                              ; preds = %369
  %373 = load ptr, ptr %24, align 8, !tbaa !5
  %374 = load i32, ptr %373, align 4, !tbaa !9
  store i32 %374, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %375

375:                                              ; preds = %414, %372
  %376 = load i32, ptr %57, align 4, !tbaa !9
  %377 = load i32, ptr %49, align 4, !tbaa !9
  %378 = icmp sle i32 %376, %377
  br i1 %378, label %379, label %417

379:                                              ; preds = %375
  %380 = load ptr, ptr %23, align 8, !tbaa !5
  %381 = load i32, ptr %380, align 4, !tbaa !9
  store i32 %381, ptr %50, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %382

382:                                              ; preds = %410, %379
  %383 = load i32, ptr %56, align 4, !tbaa !9
  %384 = load i32, ptr %50, align 4, !tbaa !9
  %385 = icmp sle i32 %383, %384
  br i1 %385, label %386, label %413

386:                                              ; preds = %382
  %387 = load ptr, ptr %30, align 8, !tbaa !5
  %388 = load i32, ptr %56, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds double, ptr %387, i64 %389
  %391 = load double, ptr %390, align 8, !tbaa !12
  %392 = load ptr, ptr %31, align 8, !tbaa !5
  %393 = load i32, ptr %56, align 4, !tbaa !9
  %394 = load i32, ptr %57, align 4, !tbaa !9
  %395 = load i32, ptr %45, align 4, !tbaa !9
  %396 = mul nsw i32 %394, %395
  %397 = add nsw i32 %393, %396
  %398 = sext i32 %397 to i64
  %399 = getelementptr inbounds double, ptr %392, i64 %398
  %400 = load double, ptr %399, align 8, !tbaa !12
  %401 = fmul double %391, %400
  %402 = load ptr, ptr %31, align 8, !tbaa !5
  %403 = load i32, ptr %56, align 4, !tbaa !9
  %404 = load i32, ptr %57, align 4, !tbaa !9
  %405 = load i32, ptr %45, align 4, !tbaa !9
  %406 = mul nsw i32 %404, %405
  %407 = add nsw i32 %403, %406
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds double, ptr %402, i64 %408
  store double %401, ptr %409, align 8, !tbaa !12
  br label %410

410:                                              ; preds = %386
  %411 = load i32, ptr %56, align 4, !tbaa !9
  %412 = add nsw i32 %411, 1
  store i32 %412, ptr %56, align 4, !tbaa !9
  br label %382, !llvm.loop !16

413:                                              ; preds = %382
  br label %414

414:                                              ; preds = %413
  %415 = load i32, ptr %57, align 4, !tbaa !9
  %416 = add nsw i32 %415, 1
  store i32 %416, ptr %57, align 4, !tbaa !9
  br label %375, !llvm.loop !17

417:                                              ; preds = %375
  br label %418

418:                                              ; preds = %417, %369
  %419 = load i32, ptr %62, align 4, !tbaa !9
  %420 = icmp ne i32 %419, 0
  br i1 %420, label %424, label %421

421:                                              ; preds = %418
  %422 = load i32, ptr %60, align 4, !tbaa !9
  %423 = icmp ne i32 %422, 0
  br i1 %423, label %424, label %453

424:                                              ; preds = %421, %418
  %425 = load ptr, ptr %22, align 8, !tbaa !5
  %426 = load ptr, ptr %23, align 8, !tbaa !5
  %427 = load ptr, ptr %23, align 8, !tbaa !5
  %428 = load ptr, ptr %25, align 8, !tbaa !5
  %429 = load i32, ptr %42, align 4, !tbaa !9
  %430 = sext i32 %429 to i64
  %431 = getelementptr inbounds double, ptr %428, i64 %430
  %432 = load ptr, ptr %26, align 8, !tbaa !5
  %433 = load ptr, ptr %27, align 8, !tbaa !5
  %434 = load i32, ptr %44, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds double, ptr %433, i64 %435
  %437 = load ptr, ptr %28, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef %425, ptr noundef %426, ptr noundef %427, ptr noundef %431, ptr noundef %432, ptr noundef %436, ptr noundef %437)
  %438 = load ptr, ptr %22, align 8, !tbaa !5
  %439 = load ptr, ptr %23, align 8, !tbaa !5
  %440 = load ptr, ptr %27, align 8, !tbaa !5
  %441 = load i32, ptr %44, align 4, !tbaa !9
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds double, ptr %440, i64 %442
  %444 = load ptr, ptr %28, align 8, !tbaa !5
  %445 = load ptr, ptr %40, align 8, !tbaa !5
  %446 = call i32 @dpotrf_(ptr noundef %438, ptr noundef %439, ptr noundef %443, ptr noundef %444, ptr noundef %445)
  %447 = load ptr, ptr %40, align 8, !tbaa !5
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = icmp sgt i32 %448, 0
  br i1 %449, label %450, label %452

450:                                              ; preds = %424
  %451 = load ptr, ptr %35, align 8, !tbaa !5
  store double 0.000000e+00, ptr %451, align 8, !tbaa !12
  store i32 1, ptr %66, align 4
  br label %612

452:                                              ; preds = %424
  br label %453

453:                                              ; preds = %452, %421
  %454 = load ptr, ptr %22, align 8, !tbaa !5
  %455 = load ptr, ptr %23, align 8, !tbaa !5
  %456 = load ptr, ptr %25, align 8, !tbaa !5
  %457 = load i32, ptr %42, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds double, ptr %456, i64 %458
  %460 = load ptr, ptr %26, align 8, !tbaa !5
  %461 = load ptr, ptr %38, align 8, !tbaa !5
  %462 = getelementptr inbounds double, ptr %461, i64 1
  %463 = call double @dlansy_(ptr noundef @.str.8, ptr noundef %454, ptr noundef %455, ptr noundef %459, ptr noundef %460, ptr noundef %462)
  store double %463, ptr %59, align 8, !tbaa !12
  %464 = load ptr, ptr %22, align 8, !tbaa !5
  %465 = load ptr, ptr %23, align 8, !tbaa !5
  %466 = load ptr, ptr %27, align 8, !tbaa !5
  %467 = load i32, ptr %44, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds double, ptr %466, i64 %468
  %470 = load ptr, ptr %28, align 8, !tbaa !5
  %471 = load ptr, ptr %35, align 8, !tbaa !5
  %472 = load ptr, ptr %38, align 8, !tbaa !5
  %473 = getelementptr inbounds double, ptr %472, i64 1
  %474 = load ptr, ptr %39, align 8, !tbaa !5
  %475 = getelementptr inbounds i32, ptr %474, i64 1
  %476 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dpocon_(ptr noundef %464, ptr noundef %465, ptr noundef %469, ptr noundef %470, ptr noundef %59, ptr noundef %471, ptr noundef %473, ptr noundef %475, ptr noundef %476)
  %477 = load ptr, ptr %23, align 8, !tbaa !5
  %478 = load ptr, ptr %24, align 8, !tbaa !5
  %479 = load ptr, ptr %31, align 8, !tbaa !5
  %480 = load i32, ptr %46, align 4, !tbaa !9
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds double, ptr %479, i64 %481
  %483 = load ptr, ptr %32, align 8, !tbaa !5
  %484 = load ptr, ptr %33, align 8, !tbaa !5
  %485 = load i32, ptr %48, align 4, !tbaa !9
  %486 = sext i32 %485 to i64
  %487 = getelementptr inbounds double, ptr %484, i64 %486
  %488 = load ptr, ptr %34, align 8, !tbaa !5
  call void @dlacpy_(ptr noundef @.str.9, ptr noundef %477, ptr noundef %478, ptr noundef %482, ptr noundef %483, ptr noundef %487, ptr noundef %488)
  %489 = load ptr, ptr %22, align 8, !tbaa !5
  %490 = load ptr, ptr %23, align 8, !tbaa !5
  %491 = load ptr, ptr %24, align 8, !tbaa !5
  %492 = load ptr, ptr %27, align 8, !tbaa !5
  %493 = load i32, ptr %44, align 4, !tbaa !9
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds double, ptr %492, i64 %494
  %496 = load ptr, ptr %28, align 8, !tbaa !5
  %497 = load ptr, ptr %33, align 8, !tbaa !5
  %498 = load i32, ptr %48, align 4, !tbaa !9
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds double, ptr %497, i64 %499
  %501 = load ptr, ptr %34, align 8, !tbaa !5
  %502 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dpotrs_(ptr noundef %489, ptr noundef %490, ptr noundef %491, ptr noundef %495, ptr noundef %496, ptr noundef %500, ptr noundef %501, ptr noundef %502)
  %503 = load ptr, ptr %22, align 8, !tbaa !5
  %504 = load ptr, ptr %23, align 8, !tbaa !5
  %505 = load ptr, ptr %24, align 8, !tbaa !5
  %506 = load ptr, ptr %25, align 8, !tbaa !5
  %507 = load i32, ptr %42, align 4, !tbaa !9
  %508 = sext i32 %507 to i64
  %509 = getelementptr inbounds double, ptr %506, i64 %508
  %510 = load ptr, ptr %26, align 8, !tbaa !5
  %511 = load ptr, ptr %27, align 8, !tbaa !5
  %512 = load i32, ptr %44, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds double, ptr %511, i64 %513
  %515 = load ptr, ptr %28, align 8, !tbaa !5
  %516 = load ptr, ptr %31, align 8, !tbaa !5
  %517 = load i32, ptr %46, align 4, !tbaa !9
  %518 = sext i32 %517 to i64
  %519 = getelementptr inbounds double, ptr %516, i64 %518
  %520 = load ptr, ptr %32, align 8, !tbaa !5
  %521 = load ptr, ptr %33, align 8, !tbaa !5
  %522 = load i32, ptr %48, align 4, !tbaa !9
  %523 = sext i32 %522 to i64
  %524 = getelementptr inbounds double, ptr %521, i64 %523
  %525 = load ptr, ptr %34, align 8, !tbaa !5
  %526 = load ptr, ptr %36, align 8, !tbaa !5
  %527 = getelementptr inbounds double, ptr %526, i64 1
  %528 = load ptr, ptr %37, align 8, !tbaa !5
  %529 = getelementptr inbounds double, ptr %528, i64 1
  %530 = load ptr, ptr %38, align 8, !tbaa !5
  %531 = getelementptr inbounds double, ptr %530, i64 1
  %532 = load ptr, ptr %39, align 8, !tbaa !5
  %533 = getelementptr inbounds i32, ptr %532, i64 1
  %534 = load ptr, ptr %40, align 8, !tbaa !5
  call void @dporfs_(ptr noundef %503, ptr noundef %504, ptr noundef %505, ptr noundef %509, ptr noundef %510, ptr noundef %514, ptr noundef %515, ptr noundef %519, ptr noundef %520, ptr noundef %524, ptr noundef %525, ptr noundef %527, ptr noundef %529, ptr noundef %531, ptr noundef %533, ptr noundef %534)
  %535 = load i32, ptr %61, align 4, !tbaa !9
  %536 = icmp ne i32 %535, 0
  br i1 %536, label %537, label %601

537:                                              ; preds = %453
  %538 = load ptr, ptr %24, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !9
  store i32 %539, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %579, %537
  %541 = load i32, ptr %57, align 4, !tbaa !9
  %542 = load i32, ptr %49, align 4, !tbaa !9
  %543 = icmp sle i32 %541, %542
  br i1 %543, label %544, label %582

544:                                              ; preds = %540
  %545 = load ptr, ptr %23, align 8, !tbaa !5
  %546 = load i32, ptr %545, align 4, !tbaa !9
  store i32 %546, ptr %50, align 4, !tbaa !9
  store i32 1, ptr %56, align 4, !tbaa !9
  br label %547

547:                                              ; preds = %575, %544
  %548 = load i32, ptr %56, align 4, !tbaa !9
  %549 = load i32, ptr %50, align 4, !tbaa !9
  %550 = icmp sle i32 %548, %549
  br i1 %550, label %551, label %578

551:                                              ; preds = %547
  %552 = load ptr, ptr %30, align 8, !tbaa !5
  %553 = load i32, ptr %56, align 4, !tbaa !9
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds double, ptr %552, i64 %554
  %556 = load double, ptr %555, align 8, !tbaa !12
  %557 = load ptr, ptr %33, align 8, !tbaa !5
  %558 = load i32, ptr %56, align 4, !tbaa !9
  %559 = load i32, ptr %57, align 4, !tbaa !9
  %560 = load i32, ptr %47, align 4, !tbaa !9
  %561 = mul nsw i32 %559, %560
  %562 = add nsw i32 %558, %561
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds double, ptr %557, i64 %563
  %565 = load double, ptr %564, align 8, !tbaa !12
  %566 = fmul double %556, %565
  %567 = load ptr, ptr %33, align 8, !tbaa !5
  %568 = load i32, ptr %56, align 4, !tbaa !9
  %569 = load i32, ptr %57, align 4, !tbaa !9
  %570 = load i32, ptr %47, align 4, !tbaa !9
  %571 = mul nsw i32 %569, %570
  %572 = add nsw i32 %568, %571
  %573 = sext i32 %572 to i64
  %574 = getelementptr inbounds double, ptr %567, i64 %573
  store double %566, ptr %574, align 8, !tbaa !12
  br label %575

575:                                              ; preds = %551
  %576 = load i32, ptr %56, align 4, !tbaa !9
  %577 = add nsw i32 %576, 1
  store i32 %577, ptr %56, align 4, !tbaa !9
  br label %547, !llvm.loop !18

578:                                              ; preds = %547
  br label %579

579:                                              ; preds = %578
  %580 = load i32, ptr %57, align 4, !tbaa !9
  %581 = add nsw i32 %580, 1
  store i32 %581, ptr %57, align 4, !tbaa !9
  br label %540, !llvm.loop !19

582:                                              ; preds = %540
  %583 = load ptr, ptr %24, align 8, !tbaa !5
  %584 = load i32, ptr %583, align 4, !tbaa !9
  store i32 %584, ptr %49, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  br label %585

585:                                              ; preds = %597, %582
  %586 = load i32, ptr %57, align 4, !tbaa !9
  %587 = load i32, ptr %49, align 4, !tbaa !9
  %588 = icmp sle i32 %586, %587
  br i1 %588, label %589, label %600

589:                                              ; preds = %585
  %590 = load double, ptr %58, align 8, !tbaa !12
  %591 = load ptr, ptr %36, align 8, !tbaa !5
  %592 = load i32, ptr %57, align 4, !tbaa !9
  %593 = sext i32 %592 to i64
  %594 = getelementptr inbounds double, ptr %591, i64 %593
  %595 = load double, ptr %594, align 8, !tbaa !12
  %596 = fdiv double %595, %590
  store double %596, ptr %594, align 8, !tbaa !12
  br label %597

597:                                              ; preds = %589
  %598 = load i32, ptr %57, align 4, !tbaa !9
  %599 = add nsw i32 %598, 1
  store i32 %599, ptr %57, align 4, !tbaa !9
  br label %585, !llvm.loop !20

600:                                              ; preds = %585
  br label %601

601:                                              ; preds = %600, %453
  %602 = load ptr, ptr %35, align 8, !tbaa !5
  %603 = load double, ptr %602, align 8, !tbaa !12
  %604 = call double @dlamch_(ptr noundef @.str.10)
  %605 = fcmp olt double %603, %604
  br i1 %605, label %606, label %611

606:                                              ; preds = %601
  %607 = load ptr, ptr %23, align 8, !tbaa !5
  %608 = load i32, ptr %607, align 4, !tbaa !9
  %609 = add nsw i32 %608, 1
  %610 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 %609, ptr %610, align 4, !tbaa !9
  br label %611

611:                                              ; preds = %606, %601
  store i32 1, ptr %66, align 4
  br label %612

612:                                              ; preds = %611, %450, %336
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #3
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

declare double @dlansy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

; 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 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}


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

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @dposvx_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef %19) local_unnamed_addr #0 {
  %21 = alloca i32, align 4
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #4
  %26 = getelementptr inbounds i8, ptr %9, i64 -8
  %27 = load i32, ptr %11, align 4, !tbaa !5
  %narrow = xor i32 %27, -1
  %28 = sext i32 %narrow to i64
  %29 = getelementptr inbounds double, ptr %10, i64 %28
  %30 = load i32, ptr %13, align 4, !tbaa !5
  %narrow249 = xor i32 %30, -1
  %31 = sext i32 %narrow249 to i64
  %32 = getelementptr inbounds double, ptr %12, i64 %31
  %33 = getelementptr inbounds i8, ptr %15, i64 -8
  store i32 0, ptr %19, align 4, !tbaa !5
  %34 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %35 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %36 = icmp ne i32 %34, 0
  %37 = icmp ne i32 %35, 0
  %or.cond = select i1 %36, i1 true, i1 %37
  br i1 %or.cond, label %.thread, label %38

.thread:                                          ; preds = %20
  store i8 78, ptr %8, align 1, !tbaa !9
  br label %43

38:                                               ; preds = %20
  %39 = tail call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  %40 = tail call double @dlamch_(ptr noundef nonnull @.str.3) #4
  %41 = fdiv double 1.000000e+00, %40
  %42 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not = icmp eq i32 %42, 0
  br i1 %.not, label %.thread268.sink.split, label %43

43:                                               ; preds = %.thread, %38
  %.0263 = phi double [ undef, %.thread ], [ %40, %38 ]
  %.0229262 = phi double [ undef, %.thread ], [ %41, %38 ]
  %.0230261 = phi i32 [ 0, %.thread ], [ %39, %38 ]
  %44 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not242 = icmp eq i32 %44, 0
  br i1 %.not242, label %45, label %47

45:                                               ; preds = %43
  %46 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.6) #4
  %.not243 = icmp eq i32 %46, 0
  br i1 %.not243, label %.thread268.sink.split, label %47

47:                                               ; preds = %45, %43
  %48 = load i32, ptr %2, align 4, !tbaa !5
  %49 = icmp slt i32 %48, 0
  br i1 %49, label %.thread268.sink.split, label %50

50:                                               ; preds = %47
  %51 = load i32, ptr %3, align 4, !tbaa !5
  %52 = icmp slt i32 %51, 0
  br i1 %52, label %.thread268.sink.split, label %53

53:                                               ; preds = %50
  %54 = load i32, ptr %5, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %48, i32 1)
  %55 = icmp slt i32 %54, %spec.select
  br i1 %55, label %.thread268.sink.split, label %56

56:                                               ; preds = %53
  %57 = load i32, ptr %7, align 4, !tbaa !5
  %58 = icmp slt i32 %57, %spec.select
  br i1 %58, label %.thread268.sink.split, label %59

59:                                               ; preds = %56
  %60 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %61 = icmp eq i32 %60, 0
  %62 = icmp ne i32 %.0230261, 0
  %or.cond5 = select i1 %61, i1 true, i1 %62
  br i1 %or.cond5, label %65, label %63

63:                                               ; preds = %59
  %64 = tail call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str) #4
  %.not244 = icmp eq i32 %64, 0
  br i1 %.not244, label %.thread268.sink.split, label %.thread264

65:                                               ; preds = %59
  br i1 %62, label %66, label %.thread264

66:                                               ; preds = %65
  %67 = load i32, ptr %2, align 4, !tbaa !5
  %.not245272 = icmp slt i32 %67, 1
  br i1 %.not245272, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %66
  %68 = zext nneg i32 %67 to i64
  %xtraiter = and i64 %68, 1
  %69 = icmp eq i32 %67, 1
  br i1 %69, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

.lr.ph.preheader.new:                             ; preds = %.lr.ph.preheader
  %unroll_iter = and i64 %68, 2147483646
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0235274 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %81, %.lr.ph ]
  %.0236273 = phi double [ %.0229262, %.lr.ph.preheader.new ], [ %79, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %70 = getelementptr inbounds double, ptr %26, i64 %indvars.iv
  %71 = load double, ptr %70, align 8, !tbaa !10
  %72 = fcmp ole double %.0236273, %71
  %73 = select i1 %72, double %.0236273, double %71
  %74 = fcmp oge double %.0235274, %71
  %75 = select i1 %74, double %.0235274, double %71
  %76 = getelementptr double, ptr %9, i64 %indvars.iv
  %77 = load double, ptr %76, align 8, !tbaa !10
  %78 = fcmp ole double %73, %77
  %79 = select i1 %78, double %73, double %77
  %80 = fcmp oge double %75, %77
  %81 = select i1 %80, double %75, double %77
  %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 %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa378.ph = phi double [ poison, %.lr.ph.preheader ], [ %79, %.lr.ph ]
  %.lcssa.ph = phi double [ poison, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0235274.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %81, %.lr.ph ]
  %.0236273.unr = phi double [ %.0229262, %.lr.ph.preheader ], [ %79, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %82 = getelementptr inbounds double, ptr %26, i64 %indvars.iv.unr
  %83 = load double, ptr %82, align 8, !tbaa !10
  %84 = fcmp ole double %.0236273.unr, %83
  %85 = select i1 %84, double %.0236273.unr, double %83
  %86 = fcmp oge double %.0235274.unr, %83
  %87 = select i1 %86, double %.0235274.unr, double %83
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %66
  %.0236.lcssa = phi double [ %.0229262, %66 ], [ %.lcssa378.ph, %._crit_edge.loopexit.unr-lcssa ], [ %85, %.lr.ph.epil ]
  %.0235.lcssa = phi double [ 0.000000e+00, %66 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %87, %.lr.ph.epil ]
  %88 = fcmp ugt double %.0236.lcssa, 0.000000e+00
  br i1 %88, label %89, label %.thread268.sink.split

89:                                               ; preds = %._crit_edge
  %90 = icmp sgt i32 %67, 0
  br i1 %90, label %91, label %97

91:                                               ; preds = %89
  %92 = fcmp oge double %.0236.lcssa, %.0263
  %93 = select i1 %92, double %.0236.lcssa, double %.0263
  %94 = fcmp ole double %.0235.lcssa, %.0229262
  %95 = select i1 %94, double %.0235.lcssa, double %.0229262
  %96 = fdiv double %93, %95
  store double %96, ptr %23, align 8, !tbaa !10
  br label %.thread264

97:                                               ; preds = %89
  store double 1.000000e+00, ptr %23, align 8, !tbaa !10
  br label %.thread264

.thread264:                                       ; preds = %63, %97, %91, %65
  %.pr = load i32, ptr %19, align 4, !tbaa !5
  %98 = icmp eq i32 %.pr, 0
  br i1 %98, label %99, label %.thread268

99:                                               ; preds = %.thread264
  %100 = load i32, ptr %11, align 4, !tbaa !5
  %101 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select255 = tail call i32 @llvm.smax.i32(i32 %101, i32 1)
  %102 = icmp slt i32 %100, %spec.select255
  br i1 %102, label %.thread268.sink.split, label %103

103:                                              ; preds = %99
  %104 = load i32, ptr %13, align 4, !tbaa !5
  %105 = icmp slt i32 %104, %spec.select255
  br i1 %105, label %.thread268.sink.split, label %109

.thread268.sink.split:                            ; preds = %103, %99, %._crit_edge, %63, %56, %53, %50, %47, %45, %38
  %.sink = phi i32 [ -1, %38 ], [ -2, %45 ], [ -3, %47 ], [ -4, %50 ], [ -6, %53 ], [ -8, %56 ], [ -9, %63 ], [ -10, %._crit_edge ], [ -12, %99 ], [ -14, %103 ]
  store i32 %.sink, ptr %19, align 4, !tbaa !5
  br label %.thread268

.thread268:                                       ; preds = %.thread268.sink.split, %.thread264
  %106 = phi i32 [ %.pr, %.thread264 ], [ %.sink, %.thread268.sink.split ]
  %107 = sub nsw i32 0, %106
  store i32 %107, ptr %21, align 4, !tbaa !5
  %108 = call i32 @xerbla_(ptr noundef nonnull @.str.7, ptr noundef nonnull %21, i32 noundef 6) #4
  br label %240

109:                                              ; preds = %103
  br i1 %37, label %110, label %115

110:                                              ; preds = %109
  call void @dpoequ_(ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef nonnull %25) #4
  %111 = load i32, ptr %25, align 4, !tbaa !5
  %112 = icmp eq i32 %111, 0
  br i1 %112, label %113, label %115

113:                                              ; preds = %110
  call void @dlaqsy_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull %23, ptr noundef nonnull %22, ptr noundef %8) #4
  %114 = call i32 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  br label %115

115:                                              ; preds = %110, %113, %109
  %.1 = phi i32 [ %114, %113 ], [ %.0230261, %110 ], [ %.0230261, %109 ]
  %.not247 = icmp eq i32 %.1, 0
  br i1 %.not247, label %.loopexit271, label %116

116:                                              ; preds = %115
  %117 = load i32, ptr %3, align 4, !tbaa !5
  %.not248282 = icmp slt i32 %117, 1
  br i1 %.not248282, label %.loopexit271, label %.lr.ph285

.lr.ph285:                                        ; preds = %116
  %118 = load i32, ptr %2, align 4, !tbaa !5
  %.not253277 = icmp slt i32 %118, 1
  br i1 %.not253277, label %.loopexit271, label %.lr.ph280.preheader

.lr.ph280.preheader:                              ; preds = %.lr.ph285
  %119 = add nuw i32 %118, 1
  %120 = sext i32 %27 to i64
  %121 = add nuw i32 %117, 1
  %wide.trip.count312 = zext i32 %121 to i64
  %wide.trip.count307 = zext i32 %119 to i64
  %122 = shl nsw i64 %120, 3
  %123 = shl nsw i64 %28, 3
  %124 = getelementptr i8, ptr %10, i64 %122
  %125 = getelementptr i8, ptr %124, i64 %123
  %scevgep = getelementptr i8, ptr %125, i64 8
  %126 = shl nuw nsw i64 %wide.trip.count312, 3
  %127 = add nsw i64 %126, -8
  %128 = mul i64 %127, %120
  %129 = shl nuw nsw i64 %wide.trip.count307, 3
  %130 = getelementptr i8, ptr %10, i64 %128
  %131 = getelementptr i8, ptr %130, i64 %123
  %scevgep334 = getelementptr i8, ptr %131, i64 %129
  %132 = getelementptr i8, ptr %9, i64 %129
  %scevgep335 = getelementptr i8, ptr %132, i64 -8
  %133 = zext nneg i32 %118 to i64
  %134 = zext nneg i32 %118 to i64
  %min.iters.check = icmp ult i32 %118, 4
  %bound0 = icmp ult ptr %scevgep, %scevgep335
  %bound1 = icmp ugt ptr %scevgep334, %9
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %27, 0
  %135 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %133, 2147483644
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %n.vec, %133
  br label %.lr.ph280

.lr.ph280:                                        ; preds = %.lr.ph280.preheader, %._crit_edge281
  %indvars.iv309 = phi i64 [ 1, %.lr.ph280.preheader ], [ %indvars.iv.next310, %._crit_edge281 ]
  %136 = mul nsw i64 %indvars.iv309, %120
  %invariant.gep = getelementptr double, ptr %29, i64 %136
  %brmerge = select i1 %min.iters.check, i1 true, i1 %135
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph280, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph280 ]
  %offset.idx = or disjoint i64 %index, 1
  %137 = getelementptr double, ptr %9, i64 %index
  %138 = getelementptr inbounds i8, ptr %137, i64 16
  %wide.load = load <2 x double>, ptr %137, align 8, !tbaa !10, !alias.scope !14
  %wide.load336 = load <2 x double>, ptr %138, align 8, !tbaa !10, !alias.scope !14
  %139 = getelementptr double, ptr %invariant.gep, i64 %offset.idx
  %140 = getelementptr i8, ptr %139, i64 16
  %wide.load337 = load <2 x double>, ptr %139, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %wide.load338 = load <2 x double>, ptr %140, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %141 = fmul <2 x double> %wide.load, %wide.load337
  %142 = fmul <2 x double> %wide.load336, %wide.load338
  store <2 x double> %141, ptr %139, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  store <2 x double> %142, ptr %140, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %index.next = add nuw i64 %index, 4
  %143 = icmp eq i64 %index.next, %n.vec
  br i1 %143, label %middle.block, label %vector.body, !llvm.loop !19

middle.block:                                     ; preds = %vector.body
  br i1 %cmp.n, label %._crit_edge281, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %.lr.ph280, %middle.block
  %indvars.iv304.ph = phi i64 [ 1, %.lr.ph280 ], [ %ind.end, %middle.block ]
  %144 = sub nsw i64 %wide.trip.count307, %indvars.iv304.ph
  %145 = sub nsw i64 %134, %indvars.iv304.ph
  %xtraiter381 = and i64 %144, 3
  %lcmp.mod382.not = icmp eq i64 %xtraiter381, 0
  br i1 %lcmp.mod382.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv304.prol = phi i64 [ %indvars.iv.next305.prol, %scalar.ph.prol ], [ %indvars.iv304.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %146 = getelementptr inbounds double, ptr %26, i64 %indvars.iv304.prol
  %147 = load double, ptr %146, align 8, !tbaa !10
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %indvars.iv304.prol
  %148 = load double, ptr %gep.prol, align 8, !tbaa !10
  %149 = fmul double %147, %148
  store double %149, ptr %gep.prol, align 8, !tbaa !10
  %indvars.iv.next305.prol = add nuw nsw i64 %indvars.iv304.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter381
  br i1 %prol.iter.cmp.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !22

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv304.unr = phi i64 [ %indvars.iv304.ph, %scalar.ph.preheader ], [ %indvars.iv.next305.prol, %scalar.ph.prol ]
  %150 = icmp ult i64 %145, 3
  br i1 %150, label %._crit_edge281, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv304 = phi i64 [ %indvars.iv304.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next305.3, %scalar.ph ]
  %151 = getelementptr inbounds double, ptr %26, i64 %indvars.iv304
  %152 = load double, ptr %151, align 8, !tbaa !10
  %gep = getelementptr double, ptr %invariant.gep, i64 %indvars.iv304
  %153 = load double, ptr %gep, align 8, !tbaa !10
  %154 = fmul double %152, %153
  store double %154, ptr %gep, align 8, !tbaa !10
  %155 = getelementptr double, ptr %9, i64 %indvars.iv304
  %156 = load double, ptr %155, align 8, !tbaa !10
  %gep389 = getelementptr double, ptr %invariant.gep388, i64 %indvars.iv304
  %157 = load double, ptr %gep389, align 8, !tbaa !10
  %158 = fmul double %156, %157
  store double %158, ptr %gep389, align 8, !tbaa !10
  %indvars.iv.next305.1 = add nuw nsw i64 %indvars.iv304, 2
  %159 = getelementptr inbounds double, ptr %26, i64 %indvars.iv.next305.1
  %160 = load double, ptr %159, align 8, !tbaa !10
  %gep.2 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next305.1
  %161 = load double, ptr %gep.2, align 8, !tbaa !10
  %162 = fmul double %160, %161
  store double %162, ptr %gep.2, align 8, !tbaa !10
  %indvars.iv.next305.2 = add nuw nsw i64 %indvars.iv304, 3
  %163 = getelementptr inbounds double, ptr %26, i64 %indvars.iv.next305.2
  %164 = load double, ptr %163, align 8, !tbaa !10
  %gep.3 = getelementptr double, ptr %invariant.gep, i64 %indvars.iv.next305.2
  %165 = load double, ptr %gep.3, align 8, !tbaa !10
  %166 = fmul double %164, %165
  store double %166, ptr %gep.3, align 8, !tbaa !10
  %indvars.iv.next305.3 = add nuw nsw i64 %indvars.iv304, 4
  %exitcond308.not.3 = icmp eq i64 %indvars.iv.next305.3, %wide.trip.count307
  br i1 %exitcond308.not.3, label %._crit_edge281, label %scalar.ph, !llvm.loop !24

._crit_edge281:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next310 = add nuw nsw i64 %indvars.iv309, 1
  %exitcond313.not = icmp eq i64 %indvars.iv.next310, %wide.trip.count312
  br i1 %exitcond313.not, label %.loopexit271, label %.lr.ph280, !llvm.loop !25

.loopexit271:                                     ; preds = %._crit_edge281, %.lr.ph285, %116, %115
  br i1 %or.cond, label %167, label %172

167:                                              ; preds = %.loopexit271
  call void @dlacpy_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7) #4
  %168 = call i32 @dpotrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %19) #4
  %169 = load i32, ptr %19, align 4, !tbaa !5
  %170 = icmp sgt i32 %169, 0
  br i1 %170, label %171, label %172

171:                                              ; preds = %167
  store double 0.000000e+00, ptr %14, align 8, !tbaa !10
  br label %240

172:                                              ; preds = %167, %.loopexit271
  %173 = call double @dlansy_(ptr noundef nonnull @.str.8, ptr noundef %1, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %17) #4
  store double %173, ptr %24, align 8, !tbaa !10
  call void @dpocon_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %24, ptr noundef %14, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %19) #4
  call void @dlacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13) #4
  call void @dpotrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef nonnull %13, ptr noundef nonnull %19) #4
  call void @dporfs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %15, ptr noundef %16, ptr noundef %17, ptr noundef %18, ptr noundef nonnull %19) #4
  br i1 %.not247, label %.loopexit, label %174

174:                                              ; preds = %172
  %175 = load i32, ptr %3, align 4, !tbaa !5
  %.not250291 = icmp slt i32 %175, 1
  br i1 %.not250291, label %.loopexit, label %.lr.ph294

.lr.ph294:                                        ; preds = %174
  %176 = load i32, ptr %2, align 4, !tbaa !5
  %.not252286 = icmp slt i32 %176, 1
  br i1 %.not252286, label %.lr.ph299, label %.lr.ph289.preheader

.lr.ph289.preheader:                              ; preds = %.lr.ph294
  %177 = add nuw i32 %176, 1
  %178 = sext i32 %30 to i64
  %179 = add nuw i32 %175, 1
  %wide.trip.count322 = zext i32 %179 to i64
  %wide.trip.count317 = zext i32 %177 to i64
  %180 = shl nsw i64 %178, 3
  %181 = shl nsw i64 %31, 3
  %182 = getelementptr i8, ptr %12, i64 %180
  %183 = getelementptr i8, ptr %182, i64 %181
  %scevgep340 = getelementptr i8, ptr %183, i64 8
  %184 = shl nuw nsw i64 %wide.trip.count322, 3
  %185 = add nsw i64 %184, -8
  %186 = mul i64 %185, %178
  %187 = shl nuw nsw i64 %wide.trip.count317, 3
  %188 = getelementptr i8, ptr %12, i64 %186
  %189 = getelementptr i8, ptr %188, i64 %181
  %scevgep341 = getelementptr i8, ptr %189, i64 %187
  %190 = getelementptr i8, ptr %9, i64 %187
  %scevgep342 = getelementptr i8, ptr %190, i64 -8
  %191 = zext nneg i32 %176 to i64
  %192 = zext nneg i32 %176 to i64
  %min.iters.check349 = icmp ult i32 %176, 4
  %bound0343 = icmp ult ptr %scevgep340, %scevgep342
  %bound1344 = icmp ugt ptr %scevgep341, %9
  %found.conflict345 = and i1 %bound0343, %bound1344
  %stride.check346 = icmp slt i32 %30, 0
  %193 = or i1 %found.conflict345, %stride.check346
  %n.vec352 = and i64 %191, 2147483644
  %ind.end353 = or disjoint i64 %n.vec352, 1
  %cmp.n363 = icmp eq i64 %n.vec352, %191
  br label %.lr.ph289

.lr.ph289:                                        ; preds = %.lr.ph289.preheader, %._crit_edge290
  %indvars.iv319 = phi i64 [ 1, %.lr.ph289.preheader ], [ %indvars.iv.next320, %._crit_edge290 ]
  %194 = mul nsw i64 %indvars.iv319, %178
  %invariant.gep331 = getelementptr double, ptr %32, i64 %194
  %brmerge392 = select i1 %min.iters.check349, i1 true, i1 %193
  br i1 %brmerge392, label %scalar.ph348.preheader, label %vector.body355

vector.body355:                                   ; preds = %.lr.ph289, %vector.body355
  %index356 = phi i64 [ %index.next362, %vector.body355 ], [ 0, %.lr.ph289 ]
  %offset.idx357 = or disjoint i64 %index356, 1
  %195 = getelementptr double, ptr %9, i64 %index356
  %196 = getelementptr inbounds i8, ptr %195, i64 16
  %wide.load358 = load <2 x double>, ptr %195, align 8, !tbaa !10, !alias.scope !26
  %wide.load359 = load <2 x double>, ptr %196, align 8, !tbaa !10, !alias.scope !26
  %197 = getelementptr double, ptr %invariant.gep331, i64 %offset.idx357
  %198 = getelementptr i8, ptr %197, i64 16
  %wide.load360 = load <2 x double>, ptr %197, align 8, !tbaa !10, !alias.scope !29, !noalias !26
  %wide.load361 = load <2 x double>, ptr %198, align 8, !tbaa !10, !alias.scope !29, !noalias !26
  %199 = fmul <2 x double> %wide.load358, %wide.load360
  %200 = fmul <2 x double> %wide.load359, %wide.load361
  store <2 x double> %199, ptr %197, align 8, !tbaa !10, !alias.scope !29, !noalias !26
  store <2 x double> %200, ptr %198, align 8, !tbaa !10, !alias.scope !29, !noalias !26
  %index.next362 = add nuw i64 %index356, 4
  %201 = icmp eq i64 %index.next362, %n.vec352
  br i1 %201, label %middle.block347, label %vector.body355, !llvm.loop !31

middle.block347:                                  ; preds = %vector.body355
  br i1 %cmp.n363, label %._crit_edge290, label %scalar.ph348.preheader

scalar.ph348.preheader:                           ; preds = %.lr.ph289, %middle.block347
  %indvars.iv314.ph = phi i64 [ 1, %.lr.ph289 ], [ %ind.end353, %middle.block347 ]
  %202 = sub nsw i64 %wide.trip.count317, %indvars.iv314.ph
  %203 = sub nsw i64 %192, %indvars.iv314.ph
  %xtraiter383 = and i64 %202, 3
  %lcmp.mod384.not = icmp eq i64 %xtraiter383, 0
  br i1 %lcmp.mod384.not, label %scalar.ph348.prol.loopexit, label %scalar.ph348.prol

scalar.ph348.prol:                                ; preds = %scalar.ph348.preheader, %scalar.ph348.prol
  %indvars.iv314.prol = phi i64 [ %indvars.iv.next315.prol, %scalar.ph348.prol ], [ %indvars.iv314.ph, %scalar.ph348.preheader ]
  %prol.iter385 = phi i64 [ %prol.iter385.next, %scalar.ph348.prol ], [ 0, %scalar.ph348.preheader ]
  %204 = getelementptr inbounds double, ptr %26, i64 %indvars.iv314.prol
  %205 = load double, ptr %204, align 8, !tbaa !10
  %gep332.prol = getelementptr double, ptr %invariant.gep331, i64 %indvars.iv314.prol
  %206 = load double, ptr %gep332.prol, align 8, !tbaa !10
  %207 = fmul double %205, %206
  store double %207, ptr %gep332.prol, align 8, !tbaa !10
  %indvars.iv.next315.prol = add nuw nsw i64 %indvars.iv314.prol, 1
  %prol.iter385.next = add i64 %prol.iter385, 1
  %prol.iter385.cmp.not = icmp eq i64 %prol.iter385.next, %xtraiter383
  br i1 %prol.iter385.cmp.not, label %scalar.ph348.prol.loopexit, label %scalar.ph348.prol, !llvm.loop !32

scalar.ph348.prol.loopexit:                       ; preds = %scalar.ph348.prol, %scalar.ph348.preheader
  %indvars.iv314.unr = phi i64 [ %indvars.iv314.ph, %scalar.ph348.preheader ], [ %indvars.iv.next315.prol, %scalar.ph348.prol ]
  %208 = icmp ult i64 %203, 3
  br i1 %208, label %._crit_edge290, label %scalar.ph348.preheader.new

scalar.ph348.preheader.new:                       ; preds = %scalar.ph348.prol.loopexit
  %invariant.gep390 = getelementptr i8, ptr %invariant.gep331, i64 8
  br label %scalar.ph348

scalar.ph348:                                     ; preds = %scalar.ph348, %scalar.ph348.preheader.new
  %indvars.iv314 = phi i64 [ %indvars.iv314.unr, %scalar.ph348.preheader.new ], [ %indvars.iv.next315.3, %scalar.ph348 ]
  %209 = getelementptr inbounds double, ptr %26, i64 %indvars.iv314
  %210 = load double, ptr %209, align 8, !tbaa !10
  %gep332 = getelementptr double, ptr %invariant.gep331, i64 %indvars.iv314
  %211 = load double, ptr %gep332, align 8, !tbaa !10
  %212 = fmul double %210, %211
  store double %212, ptr %gep332, align 8, !tbaa !10
  %213 = getelementptr double, ptr %9, i64 %indvars.iv314
  %214 = load double, ptr %213, align 8, !tbaa !10
  %gep391 = getelementptr double, ptr %invariant.gep390, i64 %indvars.iv314
  %215 = load double, ptr %gep391, align 8, !tbaa !10
  %216 = fmul double %214, %215
  store double %216, ptr %gep391, align 8, !tbaa !10
  %indvars.iv.next315.1 = add nuw nsw i64 %indvars.iv314, 2
  %217 = getelementptr inbounds double, ptr %26, i64 %indvars.iv.next315.1
  %218 = load double, ptr %217, align 8, !tbaa !10
  %gep332.2 = getelementptr double, ptr %invariant.gep331, i64 %indvars.iv.next315.1
  %219 = load double, ptr %gep332.2, align 8, !tbaa !10
  %220 = fmul double %218, %219
  store double %220, ptr %gep332.2, align 8, !tbaa !10
  %indvars.iv.next315.2 = add nuw nsw i64 %indvars.iv314, 3
  %221 = getelementptr inbounds double, ptr %26, i64 %indvars.iv.next315.2
  %222 = load double, ptr %221, align 8, !tbaa !10
  %gep332.3 = getelementptr double, ptr %invariant.gep331, i64 %indvars.iv.next315.2
  %223 = load double, ptr %gep332.3, align 8, !tbaa !10
  %224 = fmul double %222, %223
  store double %224, ptr %gep332.3, align 8, !tbaa !10
  %indvars.iv.next315.3 = add nuw nsw i64 %indvars.iv314, 4
  %exitcond318.not.3 = icmp eq i64 %indvars.iv.next315.3, %wide.trip.count317
  br i1 %exitcond318.not.3, label %._crit_edge290, label %scalar.ph348, !llvm.loop !33

._crit_edge290:                                   ; preds = %scalar.ph348.prol.loopexit, %scalar.ph348, %middle.block347
  %indvars.iv.next320 = add nuw nsw i64 %indvars.iv319, 1
  %exitcond323.not = icmp eq i64 %indvars.iv.next320, %wide.trip.count322
  br i1 %exitcond323.not, label %._crit_edge295, label %.lr.ph289, !llvm.loop !34

._crit_edge295:                                   ; preds = %._crit_edge290
  br i1 %.not250291, label %.loopexit, label %.lr.ph299

.lr.ph299:                                        ; preds = %.lr.ph294, %._crit_edge295
  %225 = load double, ptr %23, align 8, !tbaa !10
  %226 = add nuw i32 %175, 1
  %wide.trip.count327 = zext i32 %226 to i64
  %227 = zext nneg i32 %175 to i64
  %min.iters.check366 = icmp eq i32 %175, 1
  br i1 %min.iters.check366, label %scalar.ph365.preheader, label %vector.ph367

vector.ph367:                                     ; preds = %.lr.ph299
  %n.vec369 = and i64 %227, 2147483646
  %ind.end370 = or i64 %227, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %225, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body372

vector.body372:                                   ; preds = %vector.body372, %vector.ph367
  %index373 = phi i64 [ 0, %vector.ph367 ], [ %index.next376, %vector.body372 ]
  %228 = getelementptr double, ptr %15, i64 %index373
  %wide.load375 = load <2 x double>, ptr %228, align 8, !tbaa !10
  %229 = fdiv <2 x double> %wide.load375, %broadcast.splat
  store <2 x double> %229, ptr %228, align 8, !tbaa !10
  %index.next376 = add nuw i64 %index373, 2
  %230 = icmp eq i64 %index.next376, %n.vec369
  br i1 %230, label %middle.block364, label %vector.body372, !llvm.loop !35

middle.block364:                                  ; preds = %vector.body372
  %cmp.n377 = icmp eq i64 %n.vec369, %227
  br i1 %cmp.n377, label %.loopexit, label %scalar.ph365.preheader

scalar.ph365.preheader:                           ; preds = %middle.block364, %.lr.ph299
  %indvars.iv324.ph = phi i64 [ 1, %.lr.ph299 ], [ %ind.end370, %middle.block364 ]
  br label %scalar.ph365

scalar.ph365:                                     ; preds = %scalar.ph365.preheader, %scalar.ph365
  %indvars.iv324 = phi i64 [ %indvars.iv.next325, %scalar.ph365 ], [ %indvars.iv324.ph, %scalar.ph365.preheader ]
  %231 = getelementptr inbounds double, ptr %33, i64 %indvars.iv324
  %232 = load double, ptr %231, align 8, !tbaa !10
  %233 = fdiv double %232, %225
  store double %233, ptr %231, align 8, !tbaa !10
  %indvars.iv.next325 = add nuw nsw i64 %indvars.iv324, 1
  %exitcond328.not = icmp eq i64 %indvars.iv.next325, %wide.trip.count327
  br i1 %exitcond328.not, label %.loopexit, label %scalar.ph365, !llvm.loop !36

.loopexit:                                        ; preds = %scalar.ph365, %middle.block364, %174, %._crit_edge295, %172
  %234 = load double, ptr %14, align 8, !tbaa !10
  %235 = call double @dlamch_(ptr noundef nonnull @.str.10) #4
  %236 = fcmp olt double %234, %235
  br i1 %236, label %237, label %240

237:                                              ; preds = %.loopexit
  %238 = load i32, ptr %2, align 4, !tbaa !5
  %239 = add nsw i32 %238, 1
  store i32 %239, ptr %19, align 4, !tbaa !5
  br label %240

240:                                              ; preds = %.loopexit, %237, %171, %.thread268
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #4
  ret void
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare double @dlansy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

; 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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.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 = !{!7, !7, i64 0}
!10 = !{!11, !11, i64 0}
!11 = !{!"double", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15}
!15 = distinct !{!15, !16}
!16 = distinct !{!16, !"LVerDomain"}
!17 = !{!18}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !13, !20, !21}
!20 = !{!"llvm.loop.isvectorized", i32 1}
!21 = !{!"llvm.loop.unroll.runtime.disable"}
!22 = distinct !{!22, !23}
!23 = !{!"llvm.loop.unroll.disable"}
!24 = distinct !{!24, !13, !20}
!25 = distinct !{!25, !13}
!26 = !{!27}
!27 = distinct !{!27, !28}
!28 = distinct !{!28, !"LVerDomain"}
!29 = !{!30}
!30 = distinct !{!30, !28}
!31 = distinct !{!31, !13, !20, !21}
!32 = distinct !{!32, !23}
!33 = distinct !{!33, !13, !20}
!34 = distinct !{!34, !13}
!35 = distinct !{!35, !13, !20, !21}
!36 = distinct !{!36, !13, !21, !20}


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