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

117:                                              ; preds = %20
  %118 = load i64, ptr %61, align 8, !tbaa !9
  %119 = icmp ne i64 %118, 0
  br i1 %119, label %120, label %122

120:                                              ; preds = %117, %20
  %121 = load ptr, ptr %30, align 8, !tbaa !5
  store i8 78, ptr %121, align 1, !tbaa !11
  store i64 0, ptr %62, align 8, !tbaa !9
  br label %128

122:                                              ; preds = %117
  %123 = load ptr, ptr %30, align 8, !tbaa !5
  %124 = call i64 @lsame_(ptr noundef %123, ptr noundef @.str.2)
  store i64 %124, ptr %62, align 8, !tbaa !9
  %125 = call double @dlamch_(ptr noundef @.str.3)
  store double %125, ptr %66, align 8, !tbaa !12
  %126 = load double, ptr %66, align 8, !tbaa !12
  %127 = fdiv double 1.000000e+00, %126
  store double %127, ptr %64, align 8, !tbaa !12
  br label %128

128:                                              ; preds = %122, %120
  %129 = load i64, ptr %63, align 8, !tbaa !9
  %130 = icmp ne i64 %129, 0
  br i1 %130, label %140, label %131

131:                                              ; preds = %128
  %132 = load i64, ptr %61, align 8, !tbaa !9
  %133 = icmp ne i64 %132, 0
  br i1 %133, label %140, label %134

134:                                              ; preds = %131
  %135 = load ptr, ptr %22, align 8, !tbaa !5
  %136 = call i64 @lsame_(ptr noundef %135, ptr noundef @.str.4)
  %137 = icmp ne i64 %136, 0
  br i1 %137, label %140, label %138

138:                                              ; preds = %134
  %139 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -1, ptr %139, align 8, !tbaa !9
  br label %323

140:                                              ; preds = %134, %131, %128
  %141 = load ptr, ptr %23, align 8, !tbaa !5
  %142 = call i64 @lsame_(ptr noundef %141, ptr noundef @.str.5)
  %143 = icmp ne i64 %142, 0
  br i1 %143, label %150, label %144

144:                                              ; preds = %140
  %145 = load ptr, ptr %23, align 8, !tbaa !5
  %146 = call i64 @lsame_(ptr noundef %145, ptr noundef @.str.6)
  %147 = icmp ne i64 %146, 0
  br i1 %147, label %150, label %148

148:                                              ; preds = %144
  %149 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -2, ptr %149, align 8, !tbaa !9
  br label %322

150:                                              ; preds = %144, %140
  %151 = load ptr, ptr %24, align 8, !tbaa !5
  %152 = load i64, ptr %151, align 8, !tbaa !9
  %153 = icmp slt i64 %152, 0
  br i1 %153, label %154, label %156

154:                                              ; preds = %150
  %155 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -3, ptr %155, align 8, !tbaa !9
  br label %321

156:                                              ; preds = %150
  %157 = load ptr, ptr %25, align 8, !tbaa !5
  %158 = load i64, ptr %157, align 8, !tbaa !9
  %159 = icmp slt i64 %158, 0
  br i1 %159, label %160, label %162

160:                                              ; preds = %156
  %161 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -4, ptr %161, align 8, !tbaa !9
  br label %320

162:                                              ; preds = %156
  %163 = load ptr, ptr %27, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = load ptr, ptr %24, align 8, !tbaa !5
  %166 = load i64, ptr %165, align 8, !tbaa !9
  %167 = icmp sge i64 1, %166
  br i1 %167, label %168, label %169

168:                                              ; preds = %162
  br label %172

169:                                              ; preds = %162
  %170 = load ptr, ptr %24, align 8, !tbaa !5
  %171 = load i64, ptr %170, align 8, !tbaa !9
  br label %172

172:                                              ; preds = %169, %168
  %173 = phi i64 [ 1, %168 ], [ %171, %169 ]
  %174 = icmp slt i64 %164, %173
  br i1 %174, label %175, label %177

175:                                              ; preds = %172
  %176 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -6, ptr %176, align 8, !tbaa !9
  br label %319

177:                                              ; preds = %172
  %178 = load ptr, ptr %29, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  %180 = load ptr, ptr %24, align 8, !tbaa !5
  %181 = load i64, ptr %180, align 8, !tbaa !9
  %182 = icmp sge i64 1, %181
  br i1 %182, label %183, label %184

183:                                              ; preds = %177
  br label %187

184:                                              ; preds = %177
  %185 = load ptr, ptr %24, align 8, !tbaa !5
  %186 = load i64, ptr %185, align 8, !tbaa !9
  br label %187

187:                                              ; preds = %184, %183
  %188 = phi i64 [ 1, %183 ], [ %186, %184 ]
  %189 = icmp slt i64 %179, %188
  br i1 %189, label %190, label %192

190:                                              ; preds = %187
  %191 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -8, ptr %191, align 8, !tbaa !9
  br label %318

192:                                              ; preds = %187
  %193 = load ptr, ptr %22, align 8, !tbaa !5
  %194 = call i64 @lsame_(ptr noundef %193, ptr noundef @.str.4)
  %195 = icmp ne i64 %194, 0
  br i1 %195, label %196, label %205

196:                                              ; preds = %192
  %197 = load i64, ptr %62, align 8, !tbaa !9
  %198 = icmp ne i64 %197, 0
  br i1 %198, label %205, label %199

199:                                              ; preds = %196
  %200 = load ptr, ptr %30, align 8, !tbaa !5
  %201 = call i64 @lsame_(ptr noundef %200, ptr noundef @.str)
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %205, label %203

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

205:                                              ; preds = %199, %196, %192
  %206 = load i64, ptr %62, align 8, !tbaa !9
  %207 = icmp ne i64 %206, 0
  br i1 %207, label %208, label %280

208:                                              ; preds = %205
  %209 = load double, ptr %64, align 8, !tbaa !12
  store double %209, ptr %57, align 8, !tbaa !12
  store double 0.000000e+00, ptr %58, align 8, !tbaa !12
  %210 = load ptr, ptr %24, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  store i64 %211, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %212

212:                                              ; preds = %245, %208
  %213 = load i64, ptr %55, align 8, !tbaa !9
  %214 = load i64, ptr %50, align 8, !tbaa !9
  %215 = icmp sle i64 %213, %214
  br i1 %215, label %216, label %248

216:                                              ; preds = %212
  %217 = load double, ptr %57, align 8, !tbaa !12
  store double %217, ptr %52, align 8, !tbaa !12
  %218 = load ptr, ptr %31, align 8, !tbaa !5
  %219 = load i64, ptr %55, align 8, !tbaa !9
  %220 = getelementptr inbounds double, ptr %218, i64 %219
  %221 = load double, ptr %220, align 8, !tbaa !12
  store double %221, ptr %53, align 8, !tbaa !12
  %222 = load double, ptr %52, align 8, !tbaa !12
  %223 = load double, ptr %53, align 8, !tbaa !12
  %224 = fcmp ole double %222, %223
  br i1 %224, label %225, label %227

225:                                              ; preds = %216
  %226 = load double, ptr %52, align 8, !tbaa !12
  br label %229

227:                                              ; preds = %216
  %228 = load double, ptr %53, align 8, !tbaa !12
  br label %229

229:                                              ; preds = %227, %225
  %230 = phi double [ %226, %225 ], [ %228, %227 ]
  store double %230, ptr %57, align 8, !tbaa !12
  %231 = load double, ptr %58, align 8, !tbaa !12
  store double %231, ptr %52, align 8, !tbaa !12
  %232 = load ptr, ptr %31, align 8, !tbaa !5
  %233 = load i64, ptr %55, align 8, !tbaa !9
  %234 = getelementptr inbounds double, ptr %232, i64 %233
  %235 = load double, ptr %234, align 8, !tbaa !12
  store double %235, ptr %53, align 8, !tbaa !12
  %236 = load double, ptr %52, align 8, !tbaa !12
  %237 = load double, ptr %53, align 8, !tbaa !12
  %238 = fcmp oge double %236, %237
  br i1 %238, label %239, label %241

239:                                              ; preds = %229
  %240 = load double, ptr %52, align 8, !tbaa !12
  br label %243

241:                                              ; preds = %229
  %242 = load double, ptr %53, align 8, !tbaa !12
  br label %243

243:                                              ; preds = %241, %239
  %244 = phi double [ %240, %239 ], [ %242, %241 ]
  store double %244, ptr %58, align 8, !tbaa !12
  br label %245

245:                                              ; preds = %243
  %246 = load i64, ptr %55, align 8, !tbaa !9
  %247 = add nsw i64 %246, 1
  store i64 %247, ptr %55, align 8, !tbaa !9
  br label %212, !llvm.loop !14

248:                                              ; preds = %212
  %249 = load double, ptr %57, align 8, !tbaa !12
  %250 = fcmp ole double %249, 0.000000e+00
  br i1 %250, label %251, label %253

251:                                              ; preds = %248
  %252 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -10, ptr %252, align 8, !tbaa !9
  br label %279

253:                                              ; preds = %248
  %254 = load ptr, ptr %24, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  %256 = icmp sgt i64 %255, 0
  br i1 %256, label %257, label %277

257:                                              ; preds = %253
  %258 = load double, ptr %57, align 8, !tbaa !12
  %259 = load double, ptr %66, align 8, !tbaa !12
  %260 = fcmp oge double %258, %259
  br i1 %260, label %261, label %263

261:                                              ; preds = %257
  %262 = load double, ptr %57, align 8, !tbaa !12
  br label %265

263:                                              ; preds = %257
  %264 = load double, ptr %66, align 8, !tbaa !12
  br label %265

265:                                              ; preds = %263, %261
  %266 = phi double [ %262, %261 ], [ %264, %263 ]
  %267 = load double, ptr %58, align 8, !tbaa !12
  %268 = load double, ptr %64, align 8, !tbaa !12
  %269 = fcmp ole double %267, %268
  br i1 %269, label %270, label %272

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

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

274:                                              ; preds = %272, %270
  %275 = phi double [ %271, %270 ], [ %273, %272 ]
  %276 = fdiv double %266, %275
  store double %276, ptr %59, align 8, !tbaa !12
  br label %278

277:                                              ; preds = %253
  store double 1.000000e+00, ptr %59, align 8, !tbaa !12
  br label %278

278:                                              ; preds = %277, %274
  br label %279

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

280:                                              ; preds = %279, %205
  %281 = load ptr, ptr %41, align 8, !tbaa !5
  %282 = load i64, ptr %281, align 8, !tbaa !9
  %283 = icmp eq i64 %282, 0
  br i1 %283, label %284, label %316

284:                                              ; preds = %280
  %285 = load ptr, ptr %33, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = load ptr, ptr %24, align 8, !tbaa !5
  %288 = load i64, ptr %287, align 8, !tbaa !9
  %289 = icmp sge i64 1, %288
  br i1 %289, label %290, label %291

290:                                              ; preds = %284
  br label %294

291:                                              ; preds = %284
  %292 = load ptr, ptr %24, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %291, %290
  %295 = phi i64 [ 1, %290 ], [ %293, %291 ]
  %296 = icmp slt i64 %286, %295
  br i1 %296, label %297, label %299

297:                                              ; preds = %294
  %298 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -12, ptr %298, align 8, !tbaa !9
  br label %315

299:                                              ; preds = %294
  %300 = load ptr, ptr %35, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = load ptr, ptr %24, align 8, !tbaa !5
  %303 = load i64, ptr %302, align 8, !tbaa !9
  %304 = icmp sge i64 1, %303
  br i1 %304, label %305, label %306

305:                                              ; preds = %299
  br label %309

306:                                              ; preds = %299
  %307 = load ptr, ptr %24, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  br label %309

309:                                              ; preds = %306, %305
  %310 = phi i64 [ 1, %305 ], [ %308, %306 ]
  %311 = icmp slt i64 %301, %310
  br i1 %311, label %312, label %314

312:                                              ; preds = %309
  %313 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 -14, ptr %313, align 8, !tbaa !9
  br label %314

314:                                              ; preds = %312, %309
  br label %315

315:                                              ; preds = %314, %297
  br label %316

316:                                              ; preds = %315, %280
  br label %317

317:                                              ; preds = %316, %203
  br label %318

318:                                              ; preds = %317, %190
  br label %319

319:                                              ; preds = %318, %175
  br label %320

320:                                              ; preds = %319, %160
  br label %321

321:                                              ; preds = %320, %154
  br label %322

322:                                              ; preds = %321, %148
  br label %323

323:                                              ; preds = %322, %138
  %324 = load ptr, ptr %41, align 8, !tbaa !5
  %325 = load i64, ptr %324, align 8, !tbaa !9
  %326 = icmp ne i64 %325, 0
  br i1 %326, label %327, label %332

327:                                              ; preds = %323
  %328 = load ptr, ptr %41, align 8, !tbaa !5
  %329 = load i64, ptr %328, align 8, !tbaa !9
  %330 = sub nsw i64 0, %329
  store i64 %330, ptr %50, align 8, !tbaa !9
  %331 = call i32 @xerbla_(ptr noundef @.str.7, ptr noundef %50)
  store i32 0, ptr %21, align 4
  store i32 1, ptr %67, align 4
  br label %588

332:                                              ; preds = %323
  %333 = load i64, ptr %61, align 8, !tbaa !9
  %334 = icmp ne i64 %333, 0
  br i1 %334, label %335, label %360

335:                                              ; preds = %332
  %336 = load ptr, ptr %24, align 8, !tbaa !5
  %337 = load ptr, ptr %26, align 8, !tbaa !5
  %338 = load i64, ptr %43, align 8, !tbaa !9
  %339 = getelementptr inbounds double, ptr %337, i64 %338
  %340 = load ptr, ptr %27, align 8, !tbaa !5
  %341 = load ptr, ptr %31, align 8, !tbaa !5
  %342 = getelementptr inbounds double, ptr %341, i64 1
  %343 = call i32 @dpoequ_(ptr noundef %336, ptr noundef %339, ptr noundef %340, ptr noundef %342, ptr noundef %59, ptr noundef %56, ptr noundef %65)
  %344 = load i64, ptr %65, align 8, !tbaa !9
  %345 = icmp eq i64 %344, 0
  br i1 %345, label %346, label %359

346:                                              ; preds = %335
  %347 = load ptr, ptr %23, align 8, !tbaa !5
  %348 = load ptr, ptr %24, align 8, !tbaa !5
  %349 = load ptr, ptr %26, align 8, !tbaa !5
  %350 = load i64, ptr %43, align 8, !tbaa !9
  %351 = getelementptr inbounds double, ptr %349, i64 %350
  %352 = load ptr, ptr %27, align 8, !tbaa !5
  %353 = load ptr, ptr %31, align 8, !tbaa !5
  %354 = getelementptr inbounds double, ptr %353, i64 1
  %355 = load ptr, ptr %30, align 8, !tbaa !5
  %356 = call i32 @dlaqsy_(ptr noundef %347, ptr noundef %348, ptr noundef %351, ptr noundef %352, ptr noundef %354, ptr noundef %59, ptr noundef %56, ptr noundef %355)
  %357 = load ptr, ptr %30, align 8, !tbaa !5
  %358 = call i64 @lsame_(ptr noundef %357, ptr noundef @.str.2)
  store i64 %358, ptr %62, align 8, !tbaa !9
  br label %359

359:                                              ; preds = %346, %335
  br label %360

360:                                              ; preds = %359, %332
  %361 = load i64, ptr %62, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %363, label %406

363:                                              ; preds = %360
  %364 = load ptr, ptr %25, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  store i64 %365, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %366

366:                                              ; preds = %402, %363
  %367 = load i64, ptr %55, align 8, !tbaa !9
  %368 = load i64, ptr %50, align 8, !tbaa !9
  %369 = icmp sle i64 %367, %368
  br i1 %369, label %370, label %405

370:                                              ; preds = %366
  %371 = load ptr, ptr %24, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  store i64 %372, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %373

373:                                              ; preds = %398, %370
  %374 = load i64, ptr %54, align 8, !tbaa !9
  %375 = load i64, ptr %51, align 8, !tbaa !9
  %376 = icmp sle i64 %374, %375
  br i1 %376, label %377, label %401

377:                                              ; preds = %373
  %378 = load ptr, ptr %31, align 8, !tbaa !5
  %379 = load i64, ptr %54, align 8, !tbaa !9
  %380 = getelementptr inbounds double, ptr %378, i64 %379
  %381 = load double, ptr %380, align 8, !tbaa !12
  %382 = load ptr, ptr %32, align 8, !tbaa !5
  %383 = load i64, ptr %54, align 8, !tbaa !9
  %384 = load i64, ptr %55, align 8, !tbaa !9
  %385 = load i64, ptr %46, align 8, !tbaa !9
  %386 = mul nsw i64 %384, %385
  %387 = add nsw i64 %383, %386
  %388 = getelementptr inbounds double, ptr %382, i64 %387
  %389 = load double, ptr %388, align 8, !tbaa !12
  %390 = fmul double %381, %389
  %391 = load ptr, ptr %32, align 8, !tbaa !5
  %392 = load i64, ptr %54, align 8, !tbaa !9
  %393 = load i64, ptr %55, align 8, !tbaa !9
  %394 = load i64, ptr %46, align 8, !tbaa !9
  %395 = mul nsw i64 %393, %394
  %396 = add nsw i64 %392, %395
  %397 = getelementptr inbounds double, ptr %391, i64 %396
  store double %390, ptr %397, align 8, !tbaa !12
  br label %398

398:                                              ; preds = %377
  %399 = load i64, ptr %54, align 8, !tbaa !9
  %400 = add nsw i64 %399, 1
  store i64 %400, ptr %54, align 8, !tbaa !9
  br label %373, !llvm.loop !16

401:                                              ; preds = %373
  br label %402

402:                                              ; preds = %401
  %403 = load i64, ptr %55, align 8, !tbaa !9
  %404 = add nsw i64 %403, 1
  store i64 %404, ptr %55, align 8, !tbaa !9
  br label %366, !llvm.loop !17

405:                                              ; preds = %366
  br label %406

406:                                              ; preds = %405, %360
  %407 = load i64, ptr %63, align 8, !tbaa !9
  %408 = icmp ne i64 %407, 0
  br i1 %408, label %412, label %409

409:                                              ; preds = %406
  %410 = load i64, ptr %61, align 8, !tbaa !9
  %411 = icmp ne i64 %410, 0
  br i1 %411, label %412, label %439

412:                                              ; preds = %409, %406
  %413 = load ptr, ptr %23, align 8, !tbaa !5
  %414 = load ptr, ptr %24, align 8, !tbaa !5
  %415 = load ptr, ptr %24, align 8, !tbaa !5
  %416 = load ptr, ptr %26, align 8, !tbaa !5
  %417 = load i64, ptr %43, align 8, !tbaa !9
  %418 = getelementptr inbounds double, ptr %416, i64 %417
  %419 = load ptr, ptr %27, align 8, !tbaa !5
  %420 = load ptr, ptr %28, align 8, !tbaa !5
  %421 = load i64, ptr %45, align 8, !tbaa !9
  %422 = getelementptr inbounds double, ptr %420, i64 %421
  %423 = load ptr, ptr %29, align 8, !tbaa !5
  %424 = call i32 @dlacpy_(ptr noundef %413, ptr noundef %414, ptr noundef %415, ptr noundef %418, ptr noundef %419, ptr noundef %422, ptr noundef %423)
  %425 = load ptr, ptr %23, align 8, !tbaa !5
  %426 = load ptr, ptr %24, align 8, !tbaa !5
  %427 = load ptr, ptr %28, align 8, !tbaa !5
  %428 = load i64, ptr %45, align 8, !tbaa !9
  %429 = getelementptr inbounds double, ptr %427, i64 %428
  %430 = load ptr, ptr %29, align 8, !tbaa !5
  %431 = load ptr, ptr %41, align 8, !tbaa !5
  %432 = call i32 @dpotrf_(ptr noundef %425, ptr noundef %426, ptr noundef %429, ptr noundef %430, ptr noundef %431)
  %433 = load ptr, ptr %41, align 8, !tbaa !5
  %434 = load i64, ptr %433, align 8, !tbaa !9
  %435 = icmp sgt i64 %434, 0
  br i1 %435, label %436, label %438

436:                                              ; preds = %412
  %437 = load ptr, ptr %36, align 8, !tbaa !5
  store double 0.000000e+00, ptr %437, align 8, !tbaa !12
  store i32 0, ptr %21, align 4
  store i32 1, ptr %67, align 4
  br label %588

438:                                              ; preds = %412
  br label %439

439:                                              ; preds = %438, %409
  %440 = load ptr, ptr %23, align 8, !tbaa !5
  %441 = load ptr, ptr %24, align 8, !tbaa !5
  %442 = load ptr, ptr %26, align 8, !tbaa !5
  %443 = load i64, ptr %43, align 8, !tbaa !9
  %444 = getelementptr inbounds double, ptr %442, i64 %443
  %445 = load ptr, ptr %27, align 8, !tbaa !5
  %446 = load ptr, ptr %39, align 8, !tbaa !5
  %447 = getelementptr inbounds double, ptr %446, i64 1
  %448 = call double @dlansy_(ptr noundef @.str.8, ptr noundef %440, ptr noundef %441, ptr noundef %444, ptr noundef %445, ptr noundef %447)
  store double %448, ptr %60, align 8, !tbaa !12
  %449 = load ptr, ptr %23, align 8, !tbaa !5
  %450 = load ptr, ptr %24, align 8, !tbaa !5
  %451 = load ptr, ptr %28, align 8, !tbaa !5
  %452 = load i64, ptr %45, align 8, !tbaa !9
  %453 = getelementptr inbounds double, ptr %451, i64 %452
  %454 = load ptr, ptr %29, align 8, !tbaa !5
  %455 = load ptr, ptr %36, align 8, !tbaa !5
  %456 = load ptr, ptr %39, align 8, !tbaa !5
  %457 = getelementptr inbounds double, ptr %456, i64 1
  %458 = load ptr, ptr %40, align 8, !tbaa !5
  %459 = getelementptr inbounds i64, ptr %458, i64 1
  %460 = load ptr, ptr %41, align 8, !tbaa !5
  %461 = call i32 @dpocon_(ptr noundef %449, ptr noundef %450, ptr noundef %453, ptr noundef %454, ptr noundef %60, ptr noundef %455, ptr noundef %457, ptr noundef %459, ptr noundef %460)
  %462 = load ptr, ptr %24, align 8, !tbaa !5
  %463 = load ptr, ptr %25, align 8, !tbaa !5
  %464 = load ptr, ptr %32, align 8, !tbaa !5
  %465 = load i64, ptr %47, align 8, !tbaa !9
  %466 = getelementptr inbounds double, ptr %464, i64 %465
  %467 = load ptr, ptr %33, align 8, !tbaa !5
  %468 = load ptr, ptr %34, align 8, !tbaa !5
  %469 = load i64, ptr %49, align 8, !tbaa !9
  %470 = getelementptr inbounds double, ptr %468, i64 %469
  %471 = load ptr, ptr %35, align 8, !tbaa !5
  %472 = call i32 @dlacpy_(ptr noundef @.str.9, ptr noundef %462, ptr noundef %463, ptr noundef %466, ptr noundef %467, ptr noundef %470, ptr noundef %471)
  %473 = load ptr, ptr %23, align 8, !tbaa !5
  %474 = load ptr, ptr %24, align 8, !tbaa !5
  %475 = load ptr, ptr %25, align 8, !tbaa !5
  %476 = load ptr, ptr %28, align 8, !tbaa !5
  %477 = load i64, ptr %45, align 8, !tbaa !9
  %478 = getelementptr inbounds double, ptr %476, i64 %477
  %479 = load ptr, ptr %29, align 8, !tbaa !5
  %480 = load ptr, ptr %34, align 8, !tbaa !5
  %481 = load i64, ptr %49, align 8, !tbaa !9
  %482 = getelementptr inbounds double, ptr %480, i64 %481
  %483 = load ptr, ptr %35, align 8, !tbaa !5
  %484 = load ptr, ptr %41, align 8, !tbaa !5
  %485 = call i32 @dpotrs_(ptr noundef %473, ptr noundef %474, ptr noundef %475, ptr noundef %478, ptr noundef %479, ptr noundef %482, ptr noundef %483, ptr noundef %484)
  %486 = load ptr, ptr %23, align 8, !tbaa !5
  %487 = load ptr, ptr %24, align 8, !tbaa !5
  %488 = load ptr, ptr %25, align 8, !tbaa !5
  %489 = load ptr, ptr %26, align 8, !tbaa !5
  %490 = load i64, ptr %43, align 8, !tbaa !9
  %491 = getelementptr inbounds double, ptr %489, i64 %490
  %492 = load ptr, ptr %27, align 8, !tbaa !5
  %493 = load ptr, ptr %28, align 8, !tbaa !5
  %494 = load i64, ptr %45, align 8, !tbaa !9
  %495 = getelementptr inbounds double, ptr %493, i64 %494
  %496 = load ptr, ptr %29, align 8, !tbaa !5
  %497 = load ptr, ptr %32, align 8, !tbaa !5
  %498 = load i64, ptr %47, align 8, !tbaa !9
  %499 = getelementptr inbounds double, ptr %497, i64 %498
  %500 = load ptr, ptr %33, align 8, !tbaa !5
  %501 = load ptr, ptr %34, align 8, !tbaa !5
  %502 = load i64, ptr %49, align 8, !tbaa !9
  %503 = getelementptr inbounds double, ptr %501, i64 %502
  %504 = load ptr, ptr %35, align 8, !tbaa !5
  %505 = load ptr, ptr %37, align 8, !tbaa !5
  %506 = getelementptr inbounds double, ptr %505, i64 1
  %507 = load ptr, ptr %38, align 8, !tbaa !5
  %508 = getelementptr inbounds double, ptr %507, i64 1
  %509 = load ptr, ptr %39, align 8, !tbaa !5
  %510 = getelementptr inbounds double, ptr %509, i64 1
  %511 = load ptr, ptr %40, align 8, !tbaa !5
  %512 = getelementptr inbounds i64, ptr %511, i64 1
  %513 = load ptr, ptr %41, align 8, !tbaa !5
  %514 = call i32 @dporfs_(ptr noundef %486, ptr noundef %487, ptr noundef %488, ptr noundef %491, ptr noundef %492, ptr noundef %495, ptr noundef %496, ptr noundef %499, ptr noundef %500, ptr noundef %503, ptr noundef %504, ptr noundef %506, ptr noundef %508, ptr noundef %510, ptr noundef %512, ptr noundef %513)
  %515 = load i64, ptr %62, align 8, !tbaa !9
  %516 = icmp ne i64 %515, 0
  br i1 %516, label %517, label %577

517:                                              ; preds = %439
  %518 = load ptr, ptr %25, align 8, !tbaa !5
  %519 = load i64, ptr %518, align 8, !tbaa !9
  store i64 %519, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %520

520:                                              ; preds = %556, %517
  %521 = load i64, ptr %55, align 8, !tbaa !9
  %522 = load i64, ptr %50, align 8, !tbaa !9
  %523 = icmp sle i64 %521, %522
  br i1 %523, label %524, label %559

524:                                              ; preds = %520
  %525 = load ptr, ptr %24, align 8, !tbaa !5
  %526 = load i64, ptr %525, align 8, !tbaa !9
  store i64 %526, ptr %51, align 8, !tbaa !9
  store i64 1, ptr %54, align 8, !tbaa !9
  br label %527

527:                                              ; preds = %552, %524
  %528 = load i64, ptr %54, align 8, !tbaa !9
  %529 = load i64, ptr %51, align 8, !tbaa !9
  %530 = icmp sle i64 %528, %529
  br i1 %530, label %531, label %555

531:                                              ; preds = %527
  %532 = load ptr, ptr %31, align 8, !tbaa !5
  %533 = load i64, ptr %54, align 8, !tbaa !9
  %534 = getelementptr inbounds double, ptr %532, i64 %533
  %535 = load double, ptr %534, align 8, !tbaa !12
  %536 = load ptr, ptr %34, align 8, !tbaa !5
  %537 = load i64, ptr %54, align 8, !tbaa !9
  %538 = load i64, ptr %55, align 8, !tbaa !9
  %539 = load i64, ptr %48, align 8, !tbaa !9
  %540 = mul nsw i64 %538, %539
  %541 = add nsw i64 %537, %540
  %542 = getelementptr inbounds double, ptr %536, i64 %541
  %543 = load double, ptr %542, align 8, !tbaa !12
  %544 = fmul double %535, %543
  %545 = load ptr, ptr %34, align 8, !tbaa !5
  %546 = load i64, ptr %54, align 8, !tbaa !9
  %547 = load i64, ptr %55, align 8, !tbaa !9
  %548 = load i64, ptr %48, align 8, !tbaa !9
  %549 = mul nsw i64 %547, %548
  %550 = add nsw i64 %546, %549
  %551 = getelementptr inbounds double, ptr %545, i64 %550
  store double %544, ptr %551, align 8, !tbaa !12
  br label %552

552:                                              ; preds = %531
  %553 = load i64, ptr %54, align 8, !tbaa !9
  %554 = add nsw i64 %553, 1
  store i64 %554, ptr %54, align 8, !tbaa !9
  br label %527, !llvm.loop !18

555:                                              ; preds = %527
  br label %556

556:                                              ; preds = %555
  %557 = load i64, ptr %55, align 8, !tbaa !9
  %558 = add nsw i64 %557, 1
  store i64 %558, ptr %55, align 8, !tbaa !9
  br label %520, !llvm.loop !19

559:                                              ; preds = %520
  %560 = load ptr, ptr %25, align 8, !tbaa !5
  %561 = load i64, ptr %560, align 8, !tbaa !9
  store i64 %561, ptr %50, align 8, !tbaa !9
  store i64 1, ptr %55, align 8, !tbaa !9
  br label %562

562:                                              ; preds = %573, %559
  %563 = load i64, ptr %55, align 8, !tbaa !9
  %564 = load i64, ptr %50, align 8, !tbaa !9
  %565 = icmp sle i64 %563, %564
  br i1 %565, label %566, label %576

566:                                              ; preds = %562
  %567 = load double, ptr %59, align 8, !tbaa !12
  %568 = load ptr, ptr %37, align 8, !tbaa !5
  %569 = load i64, ptr %55, align 8, !tbaa !9
  %570 = getelementptr inbounds double, ptr %568, i64 %569
  %571 = load double, ptr %570, align 8, !tbaa !12
  %572 = fdiv double %571, %567
  store double %572, ptr %570, align 8, !tbaa !12
  br label %573

573:                                              ; preds = %566
  %574 = load i64, ptr %55, align 8, !tbaa !9
  %575 = add nsw i64 %574, 1
  store i64 %575, ptr %55, align 8, !tbaa !9
  br label %562, !llvm.loop !20

576:                                              ; preds = %562
  br label %577

577:                                              ; preds = %576, %439
  %578 = load ptr, ptr %36, align 8, !tbaa !5
  %579 = load double, ptr %578, align 8, !tbaa !12
  %580 = call double @dlamch_(ptr noundef @.str.10)
  %581 = fcmp olt double %579, %580
  br i1 %581, label %582, label %587

582:                                              ; preds = %577
  %583 = load ptr, ptr %24, align 8, !tbaa !5
  %584 = load i64, ptr %583, align 8, !tbaa !9
  %585 = add nsw i64 %584, 1
  %586 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 %585, ptr %586, align 8, !tbaa !9
  br label %587

587:                                              ; preds = %582, %577
  store i32 0, ptr %21, align 4
  store i32 1, ptr %67, align 4
  br label %588

588:                                              ; preds = %587, %436, %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  %589 = load i32, ptr %21, align 4
  ret i32 %589
}

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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 i32 @dpocon_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

declare i32 @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 = !{!"long", !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 noundef i32 @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 i64, align 8
  %22 = alloca double, align 8
  %23 = alloca double, align 8
  %24 = alloca double, align 8
  %25 = alloca i64, align 8
  call void @llvm.lifetime.start.p0(i64 8, 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 8, ptr nonnull %25) #4
  %26 = getelementptr inbounds i8, ptr %9, i64 -8
  %27 = load i64, ptr %11, align 8, !tbaa !5
  %28 = xor i64 %27, -1
  %29 = getelementptr inbounds double, ptr %10, i64 %28
  %30 = load i64, ptr %13, align 8, !tbaa !5
  %31 = xor i64 %30, -1
  %32 = getelementptr inbounds double, ptr %12, i64 %31
  %33 = getelementptr inbounds i8, ptr %15, i64 -8
  store i64 0, ptr %19, align 8, !tbaa !5
  %34 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %35 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %36 = icmp ne i64 %34, 0
  %37 = icmp ne i64 %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 i64 @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 i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.4) #4
  %.not = icmp eq i64 %42, 0
  br i1 %.not, label %.thread269.sink.split, label %43

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

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

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

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

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

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

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

63:                                               ; preds = %59
  %64 = tail call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str) #4
  %.not246 = icmp eq i64 %64, 0
  br i1 %.not246, label %.thread269.sink.split, label %.thread265

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

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

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

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0233276 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %80, %.lr.ph ]
  %.0234275 = phi double [ %.0230263, %.lr.ph.preheader.new ], [ %78, %.lr.ph ]
  %.0235274 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %81, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %69 = getelementptr inbounds double, ptr %26, i64 %.0235274
  %70 = load double, ptr %69, align 8, !tbaa !10
  %71 = fcmp ole double %.0234275, %70
  %72 = select i1 %71, double %.0234275, double %70
  %73 = fcmp oge double %.0233276, %70
  %74 = select i1 %73, double %.0233276, double %70
  %75 = getelementptr double, ptr %9, i64 %.0235274
  %76 = load double, ptr %75, align 8, !tbaa !10
  %77 = fcmp ole double %72, %76
  %78 = select i1 %77, double %72, double %76
  %79 = fcmp oge double %74, %76
  %80 = select i1 %79, double %74, double %76
  %81 = add nuw i64 %.0235274, 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
  %.lcssa357.ph = phi double [ poison, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.lcssa.ph = phi double [ poison, %.lr.ph.preheader ], [ %80, %.lr.ph ]
  %.0233276.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %80, %.lr.ph ]
  %.0234275.unr = phi double [ %.0230263, %.lr.ph.preheader ], [ %78, %.lr.ph ]
  %.0235274.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %81, %.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 %.0235274.unr
  %83 = load double, ptr %82, align 8, !tbaa !10
  %84 = fcmp ole double %.0234275.unr, %83
  %85 = select i1 %84, double %.0234275.unr, double %83
  %86 = fcmp oge double %.0233276.unr, %83
  %87 = select i1 %86, double %.0233276.unr, double %83
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %66
  %.0234.lcssa = phi double [ %.0230263, %66 ], [ %.lcssa357.ph, %._crit_edge.loopexit.unr-lcssa ], [ %85, %.lr.ph.epil ]
  %.0233.lcssa = phi double [ 0.000000e+00, %66 ], [ %.lcssa.ph, %._crit_edge.loopexit.unr-lcssa ], [ %87, %.lr.ph.epil ]
  %88 = fcmp ugt double %.0234.lcssa, 0.000000e+00
  br i1 %88, label %89, label %.thread269.sink.split

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

91:                                               ; preds = %89
  %92 = fcmp oge double %.0234.lcssa, %.0264
  %93 = select i1 %92, double %.0234.lcssa, double %.0264
  %94 = fcmp ole double %.0233.lcssa, %.0230263
  %95 = select i1 %94, double %.0233.lcssa, double %.0230263
  %96 = fdiv double %93, %95
  store double %96, ptr %23, align 8, !tbaa !10
  br label %.thread265

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

.thread265:                                       ; preds = %63, %97, %91, %65
  %.pr = load i64, ptr %19, align 8, !tbaa !5
  %98 = icmp eq i64 %.pr, 0
  br i1 %98, label %99, label %.thread269

99:                                               ; preds = %.thread265
  %100 = load i64, ptr %11, align 8, !tbaa !5
  %101 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select256 = tail call i64 @llvm.smax.i64(i64 %101, i64 1)
  %102 = icmp slt i64 %100, %spec.select256
  br i1 %102, label %.thread269.sink.split, label %103

103:                                              ; preds = %99
  %104 = load i64, ptr %13, align 8, !tbaa !5
  %105 = icmp slt i64 %104, %spec.select256
  br i1 %105, label %.thread269.sink.split, label %109

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

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

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

110:                                              ; preds = %109
  %111 = call i32 @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
  %112 = load i64, ptr %25, align 8, !tbaa !5
  %113 = icmp eq i64 %112, 0
  br i1 %113, label %114, label %117

114:                                              ; preds = %110
  %115 = call i32 @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
  %116 = call i64 @lsame_(ptr noundef %8, ptr noundef nonnull @.str.2) #4
  br label %117

117:                                              ; preds = %110, %114, %109
  %.1 = phi i64 [ %116, %114 ], [ %.0232262, %110 ], [ %.0232262, %109 ]
  %.not249 = icmp eq i64 %.1, 0
  br i1 %.not249, label %.loopexit272, label %118

118:                                              ; preds = %117
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %.not250283 = icmp slt i64 %119, 1
  br i1 %.not250283, label %.loopexit272, label %.lr.ph286

.lr.ph286:                                        ; preds = %118
  %120 = load i64, ptr %2, align 8, !tbaa !5
  %.not254278 = icmp slt i64 %120, 1
  br i1 %.not254278, label %.loopexit272, label %.lr.ph281.preheader

.lr.ph281.preheader:                              ; preds = %.lr.ph286
  %121 = add nuw i64 %119, 2305843009213693951
  %122 = mul i64 %27, %121
  %123 = shl i64 %120, 3
  %124 = add i64 %122, %120
  %125 = shl i64 %124, 3
  %scevgep = getelementptr i8, ptr %10, i64 %125
  %scevgep314 = getelementptr i8, ptr %9, i64 %123
  %126 = add nuw i64 %120, 1
  %min.iters.check = icmp ult i64 %120, 4
  %bound0 = icmp ugt ptr %scevgep314, %10
  %bound1 = icmp ugt ptr %scevgep, %9
  %found.conflict = and i1 %bound0, %bound1
  %.mask = and i64 %27, 1152921504606846976
  %stride.check = icmp ne i64 %.mask, 0
  %127 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %120, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  %cmp.n = icmp eq i64 %120, %n.vec
  br label %.lr.ph281

.lr.ph281:                                        ; preds = %.lr.ph281.preheader, %._crit_edge282
  %.1236284 = phi i64 [ %163, %._crit_edge282 ], [ 1, %.lr.ph281.preheader ]
  %128 = mul nsw i64 %.1236284, %27
  %invariant.gep = getelementptr double, ptr %29, i64 %128
  %brmerge = select i1 %min.iters.check, i1 true, i1 %127
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph281, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph281 ]
  %offset.idx = or disjoint i64 %index, 1
  %129 = getelementptr double, ptr %9, i64 %index
  %130 = getelementptr inbounds i8, ptr %129, i64 16
  %wide.load = load <2 x double>, ptr %129, align 8, !tbaa !10, !alias.scope !14
  %wide.load315 = load <2 x double>, ptr %130, align 8, !tbaa !10, !alias.scope !14
  %131 = getelementptr double, ptr %invariant.gep, i64 %offset.idx
  %132 = getelementptr i8, ptr %131, i64 16
  %wide.load316 = load <2 x double>, ptr %131, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %wide.load317 = load <2 x double>, ptr %132, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %133 = fmul <2 x double> %wide.load, %wide.load316
  %134 = fmul <2 x double> %wide.load315, %wide.load317
  store <2 x double> %133, ptr %131, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  store <2 x double> %134, ptr %132, align 8, !tbaa !10, !alias.scope !17, !noalias !14
  %index.next = add nuw i64 %index, 4
  %135 = icmp eq i64 %index.next, %n.vec
  br i1 %135, label %middle.block, label %vector.body, !llvm.loop !19

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

scalar.ph.preheader:                              ; preds = %.lr.ph281, %middle.block
  %.0237279.ph = phi i64 [ 1, %.lr.ph281 ], [ %ind.end, %middle.block ]
  %136 = sub i64 %126, %.0237279.ph
  %137 = sub i64 %120, %.0237279.ph
  %xtraiter360 = and i64 %136, 3
  %lcmp.mod361.not = icmp eq i64 %xtraiter360, 0
  br i1 %lcmp.mod361.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %.0237279.prol = phi i64 [ %142, %scalar.ph.prol ], [ %.0237279.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %138 = getelementptr inbounds double, ptr %26, i64 %.0237279.prol
  %139 = load double, ptr %138, align 8, !tbaa !10
  %gep.prol = getelementptr double, ptr %invariant.gep, i64 %.0237279.prol
  %140 = load double, ptr %gep.prol, align 8, !tbaa !10
  %141 = fmul double %139, %140
  store double %141, ptr %gep.prol, align 8, !tbaa !10
  %142 = add nuw i64 %.0237279.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter360
  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
  %.0237279.unr = phi i64 [ %.0237279.ph, %scalar.ph.preheader ], [ %142, %scalar.ph.prol ]
  %143 = icmp ult i64 %137, 3
  br i1 %143, label %._crit_edge282, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %.0237279 = phi i64 [ %.0237279.unr, %scalar.ph.preheader.new ], [ %162, %scalar.ph ]
  %144 = getelementptr inbounds double, ptr %26, i64 %.0237279
  %145 = load double, ptr %144, align 8, !tbaa !10
  %gep = getelementptr double, ptr %invariant.gep, i64 %.0237279
  %146 = load double, ptr %gep, align 8, !tbaa !10
  %147 = fmul double %145, %146
  store double %147, ptr %gep, align 8, !tbaa !10
  %148 = getelementptr double, ptr %9, i64 %.0237279
  %149 = load double, ptr %148, align 8, !tbaa !10
  %gep371 = getelementptr double, ptr %invariant.gep370, i64 %.0237279
  %150 = load double, ptr %gep371, align 8, !tbaa !10
  %151 = fmul double %149, %150
  store double %151, ptr %gep371, align 8, !tbaa !10
  %152 = add nuw i64 %.0237279, 2
  %153 = getelementptr inbounds double, ptr %26, i64 %152
  %154 = load double, ptr %153, align 8, !tbaa !10
  %gep.2 = getelementptr double, ptr %invariant.gep, i64 %152
  %155 = load double, ptr %gep.2, align 8, !tbaa !10
  %156 = fmul double %154, %155
  store double %156, ptr %gep.2, align 8, !tbaa !10
  %157 = add nuw i64 %.0237279, 3
  %158 = getelementptr inbounds double, ptr %26, i64 %157
  %159 = load double, ptr %158, align 8, !tbaa !10
  %gep.3 = getelementptr double, ptr %invariant.gep, i64 %157
  %160 = load double, ptr %gep.3, align 8, !tbaa !10
  %161 = fmul double %159, %160
  store double %161, ptr %gep.3, align 8, !tbaa !10
  %162 = add nuw i64 %.0237279, 4
  %exitcond306.not.3 = icmp eq i64 %157, %120
  br i1 %exitcond306.not.3, label %._crit_edge282, label %scalar.ph, !llvm.loop !24

._crit_edge282:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %163 = add nuw i64 %.1236284, 1
  %exitcond307.not = icmp eq i64 %.1236284, %119
  br i1 %exitcond307.not, label %.loopexit272, label %.lr.ph281, !llvm.loop !25

.loopexit272:                                     ; preds = %._crit_edge282, %.lr.ph286, %118, %117
  br i1 %or.cond, label %164, label %170

164:                                              ; preds = %.loopexit272
  %165 = call i32 @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
  %166 = call i32 @dpotrf_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %19) #4
  %167 = load i64, ptr %19, align 8, !tbaa !5
  %168 = icmp sgt i64 %167, 0
  br i1 %168, label %169, label %170

169:                                              ; preds = %164
  store double 0.000000e+00, ptr %14, align 8, !tbaa !10
  br label %236

170:                                              ; preds = %164, %.loopexit272
  %171 = 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 %171, ptr %24, align 8, !tbaa !10
  %172 = call i32 @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
  %173 = call i32 @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
  %174 = call i32 @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
  %175 = call i32 @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 %.not249, label %.loopexit, label %176

176:                                              ; preds = %170
  %177 = load i64, ptr %3, align 8, !tbaa !5
  %.not251294 = icmp slt i64 %177, 1
  br i1 %.not251294, label %.loopexit, label %.lr.ph297

.lr.ph297:                                        ; preds = %176
  %178 = load i64, ptr %2, align 8, !tbaa !5
  %.not253287 = icmp slt i64 %178, 1
  br i1 %.not253287, label %.lr.ph302, label %.lr.ph290.preheader

.lr.ph290.preheader:                              ; preds = %.lr.ph297
  %179 = add nuw i64 %177, 2305843009213693951
  %180 = mul i64 %30, %179
  %181 = shl i64 %178, 3
  %182 = add i64 %180, %178
  %183 = shl i64 %182, 3
  %scevgep319 = getelementptr i8, ptr %12, i64 %183
  %scevgep320 = getelementptr i8, ptr %9, i64 %181
  %184 = add nuw i64 %178, 1
  %min.iters.check327 = icmp ult i64 %178, 4
  %bound0321 = icmp ugt ptr %scevgep320, %12
  %bound1322 = icmp ugt ptr %scevgep319, %9
  %found.conflict323 = and i1 %bound0321, %bound1322
  %.mask356 = and i64 %30, 1152921504606846976
  %stride.check324 = icmp ne i64 %.mask356, 0
  %185 = or i1 %found.conflict323, %stride.check324
  %n.vec330 = and i64 %178, 9223372036854775804
  %ind.end331 = or disjoint i64 %n.vec330, 1
  %cmp.n341 = icmp eq i64 %178, %n.vec330
  br label %.lr.ph290

.lr.ph290:                                        ; preds = %.lr.ph290.preheader, %._crit_edge291
  %.2295 = phi i64 [ %221, %._crit_edge291 ], [ 1, %.lr.ph290.preheader ]
  %186 = mul nsw i64 %.2295, %30
  %invariant.gep292 = getelementptr double, ptr %32, i64 %186
  %brmerge374 = select i1 %min.iters.check327, i1 true, i1 %185
  br i1 %brmerge374, label %scalar.ph326.preheader, label %vector.body333

vector.body333:                                   ; preds = %.lr.ph290, %vector.body333
  %index334 = phi i64 [ %index.next340, %vector.body333 ], [ 0, %.lr.ph290 ]
  %offset.idx335 = or disjoint i64 %index334, 1
  %187 = getelementptr double, ptr %9, i64 %index334
  %188 = getelementptr inbounds i8, ptr %187, i64 16
  %wide.load336 = load <2 x double>, ptr %187, align 8, !tbaa !10, !alias.scope !26
  %wide.load337 = load <2 x double>, ptr %188, align 8, !tbaa !10, !alias.scope !26
  %189 = getelementptr double, ptr %invariant.gep292, i64 %offset.idx335
  %190 = getelementptr i8, ptr %189, i64 16
  %wide.load338 = load <2 x double>, ptr %189, align 8, !tbaa !10, !alias.scope !29, !noalias !26
  %wide.load339 = load <2 x double>, ptr %190, align 8, !tbaa !10, !alias.scope !29, !noalias !26
  %191 = fmul <2 x double> %wide.load336, %wide.load338
  %192 = fmul <2 x double> %wide.load337, %wide.load339
  store <2 x double> %191, ptr %189, align 8, !tbaa !10, !alias.scope !29, !noalias !26
  store <2 x double> %192, ptr %190, align 8, !tbaa !10, !alias.scope !29, !noalias !26
  %index.next340 = add nuw i64 %index334, 4
  %193 = icmp eq i64 %index.next340, %n.vec330
  br i1 %193, label %middle.block325, label %vector.body333, !llvm.loop !31

middle.block325:                                  ; preds = %vector.body333
  br i1 %cmp.n341, label %._crit_edge291, label %scalar.ph326.preheader

scalar.ph326.preheader:                           ; preds = %.lr.ph290, %middle.block325
  %.1238288.ph = phi i64 [ 1, %.lr.ph290 ], [ %ind.end331, %middle.block325 ]
  %194 = sub i64 %184, %.1238288.ph
  %195 = sub i64 %178, %.1238288.ph
  %xtraiter362 = and i64 %194, 3
  %lcmp.mod363.not = icmp eq i64 %xtraiter362, 0
  br i1 %lcmp.mod363.not, label %scalar.ph326.prol.loopexit, label %scalar.ph326.prol

scalar.ph326.prol:                                ; preds = %scalar.ph326.preheader, %scalar.ph326.prol
  %.1238288.prol = phi i64 [ %200, %scalar.ph326.prol ], [ %.1238288.ph, %scalar.ph326.preheader ]
  %prol.iter364 = phi i64 [ %prol.iter364.next, %scalar.ph326.prol ], [ 0, %scalar.ph326.preheader ]
  %196 = getelementptr inbounds double, ptr %26, i64 %.1238288.prol
  %197 = load double, ptr %196, align 8, !tbaa !10
  %gep293.prol = getelementptr double, ptr %invariant.gep292, i64 %.1238288.prol
  %198 = load double, ptr %gep293.prol, align 8, !tbaa !10
  %199 = fmul double %197, %198
  store double %199, ptr %gep293.prol, align 8, !tbaa !10
  %200 = add nuw i64 %.1238288.prol, 1
  %prol.iter364.next = add i64 %prol.iter364, 1
  %prol.iter364.cmp.not = icmp eq i64 %prol.iter364.next, %xtraiter362
  br i1 %prol.iter364.cmp.not, label %scalar.ph326.prol.loopexit, label %scalar.ph326.prol, !llvm.loop !32

scalar.ph326.prol.loopexit:                       ; preds = %scalar.ph326.prol, %scalar.ph326.preheader
  %.1238288.unr = phi i64 [ %.1238288.ph, %scalar.ph326.preheader ], [ %200, %scalar.ph326.prol ]
  %201 = icmp ult i64 %195, 3
  br i1 %201, label %._crit_edge291, label %scalar.ph326.preheader.new

scalar.ph326.preheader.new:                       ; preds = %scalar.ph326.prol.loopexit
  %invariant.gep372 = getelementptr i8, ptr %invariant.gep292, i64 8
  br label %scalar.ph326

scalar.ph326:                                     ; preds = %scalar.ph326, %scalar.ph326.preheader.new
  %.1238288 = phi i64 [ %.1238288.unr, %scalar.ph326.preheader.new ], [ %220, %scalar.ph326 ]
  %202 = getelementptr inbounds double, ptr %26, i64 %.1238288
  %203 = load double, ptr %202, align 8, !tbaa !10
  %gep293 = getelementptr double, ptr %invariant.gep292, i64 %.1238288
  %204 = load double, ptr %gep293, align 8, !tbaa !10
  %205 = fmul double %203, %204
  store double %205, ptr %gep293, align 8, !tbaa !10
  %206 = getelementptr double, ptr %9, i64 %.1238288
  %207 = load double, ptr %206, align 8, !tbaa !10
  %gep373 = getelementptr double, ptr %invariant.gep372, i64 %.1238288
  %208 = load double, ptr %gep373, align 8, !tbaa !10
  %209 = fmul double %207, %208
  store double %209, ptr %gep373, align 8, !tbaa !10
  %210 = add nuw i64 %.1238288, 2
  %211 = getelementptr inbounds double, ptr %26, i64 %210
  %212 = load double, ptr %211, align 8, !tbaa !10
  %gep293.2 = getelementptr double, ptr %invariant.gep292, i64 %210
  %213 = load double, ptr %gep293.2, align 8, !tbaa !10
  %214 = fmul double %212, %213
  store double %214, ptr %gep293.2, align 8, !tbaa !10
  %215 = add nuw i64 %.1238288, 3
  %216 = getelementptr inbounds double, ptr %26, i64 %215
  %217 = load double, ptr %216, align 8, !tbaa !10
  %gep293.3 = getelementptr double, ptr %invariant.gep292, i64 %215
  %218 = load double, ptr %gep293.3, align 8, !tbaa !10
  %219 = fmul double %217, %218
  store double %219, ptr %gep293.3, align 8, !tbaa !10
  %220 = add nuw i64 %.1238288, 4
  %exitcond308.not.3 = icmp eq i64 %215, %178
  br i1 %exitcond308.not.3, label %._crit_edge291, label %scalar.ph326, !llvm.loop !33

._crit_edge291:                                   ; preds = %scalar.ph326.prol.loopexit, %scalar.ph326, %middle.block325
  %221 = add nuw i64 %.2295, 1
  %exitcond309.not = icmp eq i64 %.2295, %177
  br i1 %exitcond309.not, label %._crit_edge298, label %.lr.ph290, !llvm.loop !34

._crit_edge298:                                   ; preds = %._crit_edge291
  br i1 %.not251294, label %.loopexit, label %.lr.ph302

.lr.ph302:                                        ; preds = %.lr.ph297, %._crit_edge298
  %222 = load double, ptr %23, align 8, !tbaa !10
  %min.iters.check344 = icmp eq i64 %177, 1
  br i1 %min.iters.check344, label %scalar.ph343.preheader, label %vector.ph345

vector.ph345:                                     ; preds = %.lr.ph302
  %n.vec347 = and i64 %177, 9223372036854775806
  %ind.end348 = or i64 %177, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %222, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body350

vector.body350:                                   ; preds = %vector.body350, %vector.ph345
  %index351 = phi i64 [ 0, %vector.ph345 ], [ %index.next354, %vector.body350 ]
  %223 = getelementptr double, ptr %15, i64 %index351
  %wide.load353 = load <2 x double>, ptr %223, align 8, !tbaa !10
  %224 = fdiv <2 x double> %wide.load353, %broadcast.splat
  store <2 x double> %224, ptr %223, align 8, !tbaa !10
  %index.next354 = add nuw i64 %index351, 2
  %225 = icmp eq i64 %index.next354, %n.vec347
  br i1 %225, label %middle.block342, label %vector.body350, !llvm.loop !35

middle.block342:                                  ; preds = %vector.body350
  %cmp.n355 = icmp eq i64 %177, %n.vec347
  br i1 %cmp.n355, label %.loopexit, label %scalar.ph343.preheader

scalar.ph343.preheader:                           ; preds = %middle.block342, %.lr.ph302
  %.3300.ph = phi i64 [ 1, %.lr.ph302 ], [ %ind.end348, %middle.block342 ]
  br label %scalar.ph343

scalar.ph343:                                     ; preds = %scalar.ph343.preheader, %scalar.ph343
  %.3300 = phi i64 [ %229, %scalar.ph343 ], [ %.3300.ph, %scalar.ph343.preheader ]
  %226 = getelementptr inbounds double, ptr %33, i64 %.3300
  %227 = load double, ptr %226, align 8, !tbaa !10
  %228 = fdiv double %227, %222
  store double %228, ptr %226, align 8, !tbaa !10
  %229 = add nuw i64 %.3300, 1
  %exitcond310.not = icmp eq i64 %.3300, %177
  br i1 %exitcond310.not, label %.loopexit, label %scalar.ph343, !llvm.loop !36

.loopexit:                                        ; preds = %scalar.ph343, %middle.block342, %176, %._crit_edge298, %170
  %230 = load double, ptr %14, align 8, !tbaa !10
  %231 = call double @dlamch_(ptr noundef nonnull @.str.10) #4
  %232 = fcmp olt double %230, %231
  br i1 %232, label %233, label %236

233:                                              ; preds = %.loopexit
  %234 = load i64, ptr %2, align 8, !tbaa !5
  %235 = add nsw i64 %234, 1
  store i64 %235, ptr %19, align 8, !tbaa !5
  br label %236

236:                                              ; preds = %.loopexit, %233, %169, %.thread269
  call void @llvm.lifetime.end.p0(i64 8, 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 8, ptr nonnull %21) #4
  ret i32 0
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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 i32 @dpocon_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

declare i32 @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 i64 @llvm.umax.i64(i64, i64) #3

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.smax.i64(i64, i64) #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 = !{!"long", !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,PostOrderFunctionAttrsPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass