; LLVM IR from niuyishuai/PDCABB :: LAPACK_BLAS/LAPACK (dporfsx)

; 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 [8 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 [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__0 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8

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

141:                                              ; preds = %23
  %142 = load ptr, ptr %44, align 8, !tbaa !5
  %143 = getelementptr inbounds double, ptr %142, i64 1
  %144 = load double, ptr %143, align 8, !tbaa !11
  %145 = fcmp olt double %144, 0.000000e+00
  br i1 %145, label %146, label %149

146:                                              ; preds = %141
  %147 = load ptr, ptr %44, align 8, !tbaa !5
  %148 = getelementptr inbounds double, ptr %147, i64 1
  store double 1.000000e+00, ptr %148, align 8, !tbaa !11
  br label %154

149:                                              ; preds = %141
  %150 = load ptr, ptr %44, align 8, !tbaa !5
  %151 = getelementptr inbounds double, ptr %150, i64 1
  %152 = load double, ptr %151, align 8, !tbaa !11
  %153 = fptosi double %152 to i64
  store i64 %153, ptr %66, align 8, !tbaa !9
  br label %154

154:                                              ; preds = %149, %146
  br label %155

155:                                              ; preds = %154, %23
  %156 = load ptr, ptr %27, align 8, !tbaa !5
  %157 = load i64, ptr %156, align 8, !tbaa !9
  %158 = sitofp i64 %157 to double
  %159 = call double @dlamch_(ptr noundef @.str)
  %160 = fmul double %158, %159
  store double %160, ptr %63, align 8, !tbaa !11
  store i64 10, ptr %75, align 8, !tbaa !9
  store double 5.000000e-01, ptr %77, align 8, !tbaa !11
  store double 2.500000e-01, ptr %64, align 8, !tbaa !11
  store i64 0, ptr %72, align 8, !tbaa !9
  %161 = load ptr, ptr %43, align 8, !tbaa !5
  %162 = load i64, ptr %161, align 8, !tbaa !9
  %163 = icmp sge i64 %162, 2
  br i1 %163, label %164, label %180

164:                                              ; preds = %155
  %165 = load ptr, ptr %44, align 8, !tbaa !5
  %166 = getelementptr inbounds double, ptr %165, i64 2
  %167 = load double, ptr %166, align 8, !tbaa !11
  %168 = fcmp olt double %167, 0.000000e+00
  br i1 %168, label %169, label %174

169:                                              ; preds = %164
  %170 = load i64, ptr %75, align 8, !tbaa !9
  %171 = sitofp i64 %170 to double
  %172 = load ptr, ptr %44, align 8, !tbaa !5
  %173 = getelementptr inbounds double, ptr %172, i64 2
  store double %171, ptr %173, align 8, !tbaa !11
  br label %179

174:                                              ; preds = %164
  %175 = load ptr, ptr %44, align 8, !tbaa !5
  %176 = getelementptr inbounds double, ptr %175, i64 2
  %177 = load double, ptr %176, align 8, !tbaa !11
  %178 = fptosi double %177 to i64
  store i64 %178, ptr %75, align 8, !tbaa !9
  br label %179

179:                                              ; preds = %174, %169
  br label %180

180:                                              ; preds = %179, %155
  %181 = load ptr, ptr %43, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp sge i64 %182, 3
  br i1 %183, label %184, label %207

184:                                              ; preds = %180
  %185 = load ptr, ptr %44, align 8, !tbaa !5
  %186 = getelementptr inbounds double, ptr %185, i64 3
  %187 = load double, ptr %186, align 8, !tbaa !11
  %188 = fcmp olt double %187, 0.000000e+00
  br i1 %188, label %189, label %199

189:                                              ; preds = %184
  %190 = load i64, ptr %72, align 8, !tbaa !9
  %191 = icmp ne i64 %190, 0
  br i1 %191, label %192, label %195

192:                                              ; preds = %189
  %193 = load ptr, ptr %44, align 8, !tbaa !5
  %194 = getelementptr inbounds double, ptr %193, i64 3
  store double 0.000000e+00, ptr %194, align 8, !tbaa !11
  br label %198

195:                                              ; preds = %189
  %196 = load ptr, ptr %44, align 8, !tbaa !5
  %197 = getelementptr inbounds double, ptr %196, i64 3
  store double 1.000000e+00, ptr %197, align 8, !tbaa !11
  br label %198

198:                                              ; preds = %195, %192
  br label %206

199:                                              ; preds = %184
  %200 = load ptr, ptr %44, align 8, !tbaa !5
  %201 = getelementptr inbounds double, ptr %200, i64 3
  %202 = load double, ptr %201, align 8, !tbaa !11
  %203 = fcmp oeq double %202, 0.000000e+00
  %204 = zext i1 %203 to i32
  %205 = sext i32 %204 to i64
  store i64 %205, ptr %72, align 8, !tbaa !9
  br label %206

206:                                              ; preds = %199, %198
  br label %207

207:                                              ; preds = %206, %180
  %208 = load i64, ptr %66, align 8, !tbaa !9
  %209 = icmp eq i64 %208, 0
  br i1 %209, label %214, label %210

210:                                              ; preds = %207
  %211 = load ptr, ptr %40, align 8, !tbaa !5
  %212 = load i64, ptr %211, align 8, !tbaa !9
  %213 = icmp eq i64 %212, 0
  br i1 %213, label %214, label %215

214:                                              ; preds = %210, %207
  store i64 0, ptr %76, align 8, !tbaa !9
  br label %221

215:                                              ; preds = %210
  %216 = load i64, ptr %72, align 8, !tbaa !9
  %217 = icmp ne i64 %216, 0
  br i1 %217, label %218, label %219

218:                                              ; preds = %215
  store i64 1, ptr %76, align 8, !tbaa !9
  br label %220

219:                                              ; preds = %215
  store i64 2, ptr %76, align 8, !tbaa !9
  br label %220

220:                                              ; preds = %219, %218
  br label %221

221:                                              ; preds = %220, %214
  %222 = load ptr, ptr %26, align 8, !tbaa !5
  %223 = call i64 @lsame_(ptr noundef %222, ptr noundef @.str.1)
  store i64 %223, ptr %74, align 8, !tbaa !9
  %224 = load ptr, ptr %25, align 8, !tbaa !5
  %225 = call i64 @lsame_(ptr noundef %224, ptr noundef @.str.2)
  %226 = icmp ne i64 %225, 0
  br i1 %226, label %233, label %227

227:                                              ; preds = %221
  %228 = load ptr, ptr %25, align 8, !tbaa !5
  %229 = call i64 @lsame_(ptr noundef %228, ptr noundef @.str.3)
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %233, label %231

231:                                              ; preds = %227
  %232 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -1, ptr %232, align 8, !tbaa !9
  br label %321

233:                                              ; preds = %227, %221
  %234 = load i64, ptr %74, align 8, !tbaa !9
  %235 = icmp ne i64 %234, 0
  br i1 %235, label %242, label %236

236:                                              ; preds = %233
  %237 = load ptr, ptr %26, align 8, !tbaa !5
  %238 = call i64 @lsame_(ptr noundef %237, ptr noundef @.str.4)
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %242, label %240

240:                                              ; preds = %236
  %241 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -2, ptr %241, align 8, !tbaa !9
  br label %320

242:                                              ; preds = %236, %233
  %243 = load ptr, ptr %27, align 8, !tbaa !5
  %244 = load i64, ptr %243, align 8, !tbaa !9
  %245 = icmp slt i64 %244, 0
  br i1 %245, label %246, label %248

246:                                              ; preds = %242
  %247 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -3, ptr %247, align 8, !tbaa !9
  br label %319

248:                                              ; preds = %242
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = icmp slt i64 %250, 0
  br i1 %251, label %252, label %254

252:                                              ; preds = %248
  %253 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -4, ptr %253, align 8, !tbaa !9
  br label %318

254:                                              ; preds = %248
  %255 = load ptr, ptr %30, align 8, !tbaa !5
  %256 = load i64, ptr %255, align 8, !tbaa !9
  %257 = load ptr, ptr %27, align 8, !tbaa !5
  %258 = load i64, ptr %257, align 8, !tbaa !9
  %259 = icmp sge i64 1, %258
  br i1 %259, label %260, label %261

260:                                              ; preds = %254
  br label %264

261:                                              ; preds = %254
  %262 = load ptr, ptr %27, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %261, %260
  %265 = phi i64 [ 1, %260 ], [ %263, %261 ]
  %266 = icmp slt i64 %256, %265
  br i1 %266, label %267, label %269

267:                                              ; preds = %264
  %268 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -6, ptr %268, align 8, !tbaa !9
  br label %317

269:                                              ; preds = %264
  %270 = load ptr, ptr %32, align 8, !tbaa !5
  %271 = load i64, ptr %270, align 8, !tbaa !9
  %272 = load ptr, ptr %27, align 8, !tbaa !5
  %273 = load i64, ptr %272, align 8, !tbaa !9
  %274 = icmp sge i64 1, %273
  br i1 %274, label %275, label %276

275:                                              ; preds = %269
  br label %279

276:                                              ; preds = %269
  %277 = load ptr, ptr %27, align 8, !tbaa !5
  %278 = load i64, ptr %277, align 8, !tbaa !9
  br label %279

279:                                              ; preds = %276, %275
  %280 = phi i64 [ 1, %275 ], [ %278, %276 ]
  %281 = icmp slt i64 %271, %280
  br i1 %281, label %282, label %284

282:                                              ; preds = %279
  %283 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 -8, ptr %283, align 8, !tbaa !9
  br label %316

284:                                              ; preds = %279
  %285 = load ptr, ptr %35, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = load ptr, ptr %27, 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 %27, 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 %47, align 8, !tbaa !5
  store i64 -11, ptr %298, align 8, !tbaa !9
  br label %315

299:                                              ; preds = %294
  %300 = load ptr, ptr %37, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = load ptr, ptr %27, 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 %27, 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 %47, align 8, !tbaa !5
  store i64 -13, 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, %282
  br label %317

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

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

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

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

321:                                              ; preds = %320, %231
  %322 = load ptr, ptr %47, align 8, !tbaa !5
  %323 = load i64, ptr %322, align 8, !tbaa !9
  %324 = icmp ne i64 %323, 0
  br i1 %324, label %325, label %330

325:                                              ; preds = %321
  %326 = load ptr, ptr %47, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = sub nsw i64 0, %327
  store i64 %328, ptr %60, align 8, !tbaa !9
  %329 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %60)
  store i32 0, ptr %24, align 4
  store i32 1, ptr %78, align 4
  br label %853

330:                                              ; preds = %321
  %331 = load ptr, ptr %27, align 8, !tbaa !5
  %332 = load i64, ptr %331, align 8, !tbaa !9
  %333 = icmp eq i64 %332, 0
  br i1 %333, label %338, label %334

334:                                              ; preds = %330
  %335 = load ptr, ptr %28, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp eq i64 %336, 0
  br i1 %337, label %338, label %405

338:                                              ; preds = %334, %330
  %339 = load ptr, ptr %38, align 8, !tbaa !5
  store double 1.000000e+00, ptr %339, align 8, !tbaa !11
  %340 = load ptr, ptr %28, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  store i64 %341, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %342

342:                                              ; preds = %401, %338
  %343 = load i64, ptr %67, align 8, !tbaa !9
  %344 = load i64, ptr %60, align 8, !tbaa !9
  %345 = icmp sle i64 %343, %344
  br i1 %345, label %346, label %404

346:                                              ; preds = %342
  %347 = load ptr, ptr %39, align 8, !tbaa !5
  %348 = load i64, ptr %67, align 8, !tbaa !9
  %349 = getelementptr inbounds double, ptr %347, i64 %348
  store double 0.000000e+00, ptr %349, align 8, !tbaa !11
  %350 = load ptr, ptr %40, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  %352 = icmp sge i64 %351, 1
  br i1 %352, label %353, label %364

353:                                              ; preds = %346
  %354 = load ptr, ptr %41, align 8, !tbaa !5
  %355 = load i64, ptr %67, align 8, !tbaa !9
  %356 = load i64, ptr %56, align 8, !tbaa !9
  %357 = add nsw i64 %355, %356
  %358 = getelementptr inbounds double, ptr %354, i64 %357
  store double 1.000000e+00, ptr %358, align 8, !tbaa !11
  %359 = load ptr, ptr %42, align 8, !tbaa !5
  %360 = load i64, ptr %67, align 8, !tbaa !9
  %361 = load i64, ptr %58, align 8, !tbaa !9
  %362 = add nsw i64 %360, %361
  %363 = getelementptr inbounds double, ptr %359, i64 %362
  store double 1.000000e+00, ptr %363, align 8, !tbaa !11
  br label %400

364:                                              ; preds = %346
  %365 = load ptr, ptr %40, align 8, !tbaa !5
  %366 = load i64, ptr %365, align 8, !tbaa !9
  %367 = icmp sge i64 %366, 2
  br i1 %367, label %368, label %381

368:                                              ; preds = %364
  %369 = load ptr, ptr %41, align 8, !tbaa !5
  %370 = load i64, ptr %67, align 8, !tbaa !9
  %371 = load i64, ptr %56, align 8, !tbaa !9
  %372 = shl i64 %371, 1
  %373 = add nsw i64 %370, %372
  %374 = getelementptr inbounds double, ptr %369, i64 %373
  store double 0.000000e+00, ptr %374, align 8, !tbaa !11
  %375 = load ptr, ptr %42, align 8, !tbaa !5
  %376 = load i64, ptr %67, align 8, !tbaa !9
  %377 = load i64, ptr %58, align 8, !tbaa !9
  %378 = shl i64 %377, 1
  %379 = add nsw i64 %376, %378
  %380 = getelementptr inbounds double, ptr %375, i64 %379
  store double 0.000000e+00, ptr %380, align 8, !tbaa !11
  br label %399

381:                                              ; preds = %364
  %382 = load ptr, ptr %40, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = icmp sge i64 %383, 3
  br i1 %384, label %385, label %398

385:                                              ; preds = %381
  %386 = load ptr, ptr %41, align 8, !tbaa !5
  %387 = load i64, ptr %67, align 8, !tbaa !9
  %388 = load i64, ptr %56, align 8, !tbaa !9
  %389 = mul nsw i64 %388, 3
  %390 = add nsw i64 %387, %389
  %391 = getelementptr inbounds double, ptr %386, i64 %390
  store double 1.000000e+00, ptr %391, align 8, !tbaa !11
  %392 = load ptr, ptr %42, align 8, !tbaa !5
  %393 = load i64, ptr %67, align 8, !tbaa !9
  %394 = load i64, ptr %58, align 8, !tbaa !9
  %395 = mul nsw i64 %394, 3
  %396 = add nsw i64 %393, %395
  %397 = getelementptr inbounds double, ptr %392, i64 %396
  store double 1.000000e+00, ptr %397, align 8, !tbaa !11
  br label %398

398:                                              ; preds = %385, %381
  br label %399

399:                                              ; preds = %398, %368
  br label %400

400:                                              ; preds = %399, %353
  br label %401

401:                                              ; preds = %400
  %402 = load i64, ptr %67, align 8, !tbaa !9
  %403 = add nsw i64 %402, 1
  store i64 %403, ptr %67, align 8, !tbaa !9
  br label %342, !llvm.loop !13

404:                                              ; preds = %342
  store i32 0, ptr %24, align 4
  store i32 1, ptr %78, align 4
  br label %853

405:                                              ; preds = %334
  %406 = load ptr, ptr %38, align 8, !tbaa !5
  store double 0.000000e+00, ptr %406, align 8, !tbaa !11
  %407 = load ptr, ptr %28, align 8, !tbaa !5
  %408 = load i64, ptr %407, align 8, !tbaa !9
  store i64 %408, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %409

409:                                              ; preds = %468, %405
  %410 = load i64, ptr %67, align 8, !tbaa !9
  %411 = load i64, ptr %60, align 8, !tbaa !9
  %412 = icmp sle i64 %410, %411
  br i1 %412, label %413, label %471

413:                                              ; preds = %409
  %414 = load ptr, ptr %39, align 8, !tbaa !5
  %415 = load i64, ptr %67, align 8, !tbaa !9
  %416 = getelementptr inbounds double, ptr %414, i64 %415
  store double 1.000000e+00, ptr %416, align 8, !tbaa !11
  %417 = load ptr, ptr %40, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = icmp sge i64 %418, 1
  br i1 %419, label %420, label %431

420:                                              ; preds = %413
  %421 = load ptr, ptr %41, align 8, !tbaa !5
  %422 = load i64, ptr %67, align 8, !tbaa !9
  %423 = load i64, ptr %56, align 8, !tbaa !9
  %424 = add nsw i64 %422, %423
  %425 = getelementptr inbounds double, ptr %421, i64 %424
  store double 1.000000e+00, ptr %425, align 8, !tbaa !11
  %426 = load ptr, ptr %42, align 8, !tbaa !5
  %427 = load i64, ptr %67, align 8, !tbaa !9
  %428 = load i64, ptr %58, align 8, !tbaa !9
  %429 = add nsw i64 %427, %428
  %430 = getelementptr inbounds double, ptr %426, i64 %429
  store double 1.000000e+00, ptr %430, align 8, !tbaa !11
  br label %467

431:                                              ; preds = %413
  %432 = load ptr, ptr %40, align 8, !tbaa !5
  %433 = load i64, ptr %432, align 8, !tbaa !9
  %434 = icmp sge i64 %433, 2
  br i1 %434, label %435, label %448

435:                                              ; preds = %431
  %436 = load ptr, ptr %41, align 8, !tbaa !5
  %437 = load i64, ptr %67, align 8, !tbaa !9
  %438 = load i64, ptr %56, align 8, !tbaa !9
  %439 = shl i64 %438, 1
  %440 = add nsw i64 %437, %439
  %441 = getelementptr inbounds double, ptr %436, i64 %440
  store double 1.000000e+00, ptr %441, align 8, !tbaa !11
  %442 = load ptr, ptr %42, align 8, !tbaa !5
  %443 = load i64, ptr %67, align 8, !tbaa !9
  %444 = load i64, ptr %58, align 8, !tbaa !9
  %445 = shl i64 %444, 1
  %446 = add nsw i64 %443, %445
  %447 = getelementptr inbounds double, ptr %442, i64 %446
  store double 1.000000e+00, ptr %447, align 8, !tbaa !11
  br label %466

448:                                              ; preds = %431
  %449 = load ptr, ptr %40, align 8, !tbaa !5
  %450 = load i64, ptr %449, align 8, !tbaa !9
  %451 = icmp sge i64 %450, 3
  br i1 %451, label %452, label %465

452:                                              ; preds = %448
  %453 = load ptr, ptr %41, align 8, !tbaa !5
  %454 = load i64, ptr %67, align 8, !tbaa !9
  %455 = load i64, ptr %56, align 8, !tbaa !9
  %456 = mul nsw i64 %455, 3
  %457 = add nsw i64 %454, %456
  %458 = getelementptr inbounds double, ptr %453, i64 %457
  store double 0.000000e+00, ptr %458, align 8, !tbaa !11
  %459 = load ptr, ptr %42, align 8, !tbaa !5
  %460 = load i64, ptr %67, align 8, !tbaa !9
  %461 = load i64, ptr %58, align 8, !tbaa !9
  %462 = mul nsw i64 %461, 3
  %463 = add nsw i64 %460, %462
  %464 = getelementptr inbounds double, ptr %459, i64 %463
  store double 0.000000e+00, ptr %464, align 8, !tbaa !11
  br label %465

465:                                              ; preds = %452, %448
  br label %466

466:                                              ; preds = %465, %435
  br label %467

467:                                              ; preds = %466, %420
  br label %468

468:                                              ; preds = %467
  %469 = load i64, ptr %67, align 8, !tbaa !9
  %470 = add nsw i64 %469, 1
  store i64 %470, ptr %67, align 8, !tbaa !9
  br label %409, !llvm.loop !15

471:                                              ; preds = %409
  %472 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  store i8 73, ptr %472, align 1, !tbaa !16
  %473 = getelementptr inbounds [1 x i8], ptr %71, i64 0, i64 0
  %474 = load ptr, ptr %25, align 8, !tbaa !5
  %475 = load ptr, ptr %27, align 8, !tbaa !5
  %476 = load ptr, ptr %29, align 8, !tbaa !5
  %477 = load i64, ptr %49, align 8, !tbaa !9
  %478 = getelementptr inbounds double, ptr %476, i64 %477
  %479 = load ptr, ptr %30, align 8, !tbaa !5
  %480 = load ptr, ptr %45, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = call double @dlansy_(ptr noundef %473, ptr noundef %474, ptr noundef %475, ptr noundef %478, ptr noundef %479, ptr noundef %481)
  store double %482, ptr %73, align 8, !tbaa !11
  %483 = load ptr, ptr %25, align 8, !tbaa !5
  %484 = load ptr, ptr %27, align 8, !tbaa !5
  %485 = load ptr, ptr %31, align 8, !tbaa !5
  %486 = load i64, ptr %51, align 8, !tbaa !9
  %487 = getelementptr inbounds double, ptr %485, i64 %486
  %488 = load ptr, ptr %32, align 8, !tbaa !5
  %489 = load ptr, ptr %38, align 8, !tbaa !5
  %490 = load ptr, ptr %45, align 8, !tbaa !5
  %491 = getelementptr inbounds double, ptr %490, i64 1
  %492 = load ptr, ptr %46, align 8, !tbaa !5
  %493 = getelementptr inbounds i64, ptr %492, i64 1
  %494 = load ptr, ptr %47, align 8, !tbaa !5
  %495 = call i32 @dpocon_(ptr noundef %483, ptr noundef %484, ptr noundef %487, ptr noundef %488, ptr noundef %73, ptr noundef %489, ptr noundef %491, ptr noundef %493, ptr noundef %494)
  %496 = load i64, ptr %66, align 8, !tbaa !9
  %497 = icmp ne i64 %496, 0
  br i1 %497, label %498, label %547

498:                                              ; preds = %471
  %499 = call i64 @ilaprec_(ptr noundef @.str.6)
  store i64 %499, ptr %69, align 8, !tbaa !9
  %500 = load ptr, ptr %25, align 8, !tbaa !5
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = load ptr, ptr %28, align 8, !tbaa !5
  %503 = load ptr, ptr %29, align 8, !tbaa !5
  %504 = load i64, ptr %49, align 8, !tbaa !9
  %505 = getelementptr inbounds double, ptr %503, i64 %504
  %506 = load ptr, ptr %30, align 8, !tbaa !5
  %507 = load ptr, ptr %31, align 8, !tbaa !5
  %508 = load i64, ptr %51, align 8, !tbaa !9
  %509 = getelementptr inbounds double, ptr %507, i64 %508
  %510 = load ptr, ptr %32, align 8, !tbaa !5
  %511 = load ptr, ptr %33, align 8, !tbaa !5
  %512 = getelementptr inbounds double, ptr %511, i64 1
  %513 = load ptr, ptr %34, align 8, !tbaa !5
  %514 = load i64, ptr %53, align 8, !tbaa !9
  %515 = getelementptr inbounds double, ptr %513, i64 %514
  %516 = load ptr, ptr %35, align 8, !tbaa !5
  %517 = load ptr, ptr %36, align 8, !tbaa !5
  %518 = load i64, ptr %55, align 8, !tbaa !9
  %519 = getelementptr inbounds double, ptr %517, i64 %518
  %520 = load ptr, ptr %37, align 8, !tbaa !5
  %521 = load ptr, ptr %39, align 8, !tbaa !5
  %522 = getelementptr inbounds double, ptr %521, i64 1
  %523 = load ptr, ptr %41, align 8, !tbaa !5
  %524 = load i64, ptr %57, align 8, !tbaa !9
  %525 = getelementptr inbounds double, ptr %523, i64 %524
  %526 = load ptr, ptr %42, align 8, !tbaa !5
  %527 = load i64, ptr %59, align 8, !tbaa !9
  %528 = getelementptr inbounds double, ptr %526, i64 %527
  %529 = load ptr, ptr %45, align 8, !tbaa !5
  %530 = load ptr, ptr %27, align 8, !tbaa !5
  %531 = load i64, ptr %530, align 8, !tbaa !9
  %532 = add nsw i64 %531, 1
  %533 = getelementptr inbounds double, ptr %529, i64 %532
  %534 = load ptr, ptr %45, align 8, !tbaa !5
  %535 = getelementptr inbounds double, ptr %534, i64 1
  %536 = load ptr, ptr %45, align 8, !tbaa !5
  %537 = load ptr, ptr %27, align 8, !tbaa !5
  %538 = load i64, ptr %537, align 8, !tbaa !9
  %539 = shl i64 %538, 1
  %540 = add nsw i64 %539, 1
  %541 = getelementptr inbounds double, ptr %536, i64 %540
  %542 = load ptr, ptr %45, align 8, !tbaa !5
  %543 = getelementptr inbounds double, ptr %542, i64 1
  %544 = load ptr, ptr %38, align 8, !tbaa !5
  %545 = load ptr, ptr %47, align 8, !tbaa !5
  %546 = call i32 @dla_porfsx_extended__(ptr noundef %69, ptr noundef %500, ptr noundef %501, ptr noundef %502, ptr noundef %505, ptr noundef %506, ptr noundef %509, ptr noundef %510, ptr noundef %74, ptr noundef %512, ptr noundef %515, ptr noundef %516, ptr noundef %519, ptr noundef %520, ptr noundef %522, ptr noundef %76, ptr noundef %525, ptr noundef %528, ptr noundef %533, ptr noundef %535, ptr noundef %541, ptr noundef %543, ptr noundef %544, ptr noundef %75, ptr noundef %77, ptr noundef %64, ptr noundef %72, ptr noundef %545, i64 noundef 1)
  br label %547

547:                                              ; preds = %498, %471
  store double 1.000000e+01, ptr %61, align 8, !tbaa !11
  %548 = load ptr, ptr %27, align 8, !tbaa !5
  %549 = load i64, ptr %548, align 8, !tbaa !9
  %550 = sitofp i64 %549 to double
  %551 = call double @sqrt(double noundef %550) #4
  store double %551, ptr %62, align 8, !tbaa !11
  %552 = load double, ptr %61, align 8, !tbaa !11
  %553 = load double, ptr %62, align 8, !tbaa !11
  %554 = fcmp oge double %552, %553
  br i1 %554, label %555, label %557

555:                                              ; preds = %547
  %556 = load double, ptr %61, align 8, !tbaa !11
  br label %559

557:                                              ; preds = %547
  %558 = load double, ptr %62, align 8, !tbaa !11
  br label %559

559:                                              ; preds = %557, %555
  %560 = phi double [ %556, %555 ], [ %558, %557 ]
  %561 = call double @dlamch_(ptr noundef @.str)
  %562 = fmul double %560, %561
  store double %562, ptr %65, align 8, !tbaa !11
  %563 = load ptr, ptr %40, align 8, !tbaa !5
  %564 = load i64, ptr %563, align 8, !tbaa !9
  %565 = icmp sge i64 %564, 1
  br i1 %565, label %566, label %706

566:                                              ; preds = %559
  %567 = load i64, ptr %76, align 8, !tbaa !9
  %568 = icmp sge i64 %567, 1
  br i1 %568, label %569, label %706

569:                                              ; preds = %566
  %570 = load i64, ptr %74, align 8, !tbaa !9
  %571 = icmp ne i64 %570, 0
  br i1 %571, label %572, label %591

572:                                              ; preds = %569
  %573 = load ptr, ptr %25, align 8, !tbaa !5
  %574 = load ptr, ptr %27, align 8, !tbaa !5
  %575 = load ptr, ptr %29, align 8, !tbaa !5
  %576 = load i64, ptr %49, align 8, !tbaa !9
  %577 = getelementptr inbounds double, ptr %575, i64 %576
  %578 = load ptr, ptr %30, align 8, !tbaa !5
  %579 = load ptr, ptr %31, align 8, !tbaa !5
  %580 = load i64, ptr %51, align 8, !tbaa !9
  %581 = getelementptr inbounds double, ptr %579, i64 %580
  %582 = load ptr, ptr %32, align 8, !tbaa !5
  %583 = load ptr, ptr %33, align 8, !tbaa !5
  %584 = getelementptr inbounds double, ptr %583, i64 1
  %585 = load ptr, ptr %47, align 8, !tbaa !5
  %586 = load ptr, ptr %45, align 8, !tbaa !5
  %587 = getelementptr inbounds double, ptr %586, i64 1
  %588 = load ptr, ptr %46, align 8, !tbaa !5
  %589 = getelementptr inbounds i64, ptr %588, i64 1
  %590 = call double @dla_porcond__(ptr noundef %573, ptr noundef %574, ptr noundef %577, ptr noundef %578, ptr noundef %581, ptr noundef %582, ptr noundef @c_n1, ptr noundef %584, ptr noundef %585, ptr noundef %587, ptr noundef %589, i64 noundef 1)
  store double %590, ptr %68, align 8, !tbaa !11
  br label %610

591:                                              ; preds = %569
  %592 = load ptr, ptr %25, align 8, !tbaa !5
  %593 = load ptr, ptr %27, align 8, !tbaa !5
  %594 = load ptr, ptr %29, align 8, !tbaa !5
  %595 = load i64, ptr %49, align 8, !tbaa !9
  %596 = getelementptr inbounds double, ptr %594, i64 %595
  %597 = load ptr, ptr %30, align 8, !tbaa !5
  %598 = load ptr, ptr %31, align 8, !tbaa !5
  %599 = load i64, ptr %51, align 8, !tbaa !9
  %600 = getelementptr inbounds double, ptr %598, i64 %599
  %601 = load ptr, ptr %32, align 8, !tbaa !5
  %602 = load ptr, ptr %33, align 8, !tbaa !5
  %603 = getelementptr inbounds double, ptr %602, i64 1
  %604 = load ptr, ptr %47, align 8, !tbaa !5
  %605 = load ptr, ptr %45, align 8, !tbaa !5
  %606 = getelementptr inbounds double, ptr %605, i64 1
  %607 = load ptr, ptr %46, align 8, !tbaa !5
  %608 = getelementptr inbounds i64, ptr %607, i64 1
  %609 = call double @dla_porcond__(ptr noundef %592, ptr noundef %593, ptr noundef %596, ptr noundef %597, ptr noundef %600, ptr noundef %601, ptr noundef @c__0, ptr noundef %603, ptr noundef %604, ptr noundef %606, ptr noundef %608, i64 noundef 1)
  store double %609, ptr %68, align 8, !tbaa !11
  br label %610

610:                                              ; preds = %591, %572
  %611 = load ptr, ptr %28, align 8, !tbaa !5
  %612 = load i64, ptr %611, align 8, !tbaa !9
  store i64 %612, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %613

613:                                              ; preds = %702, %610
  %614 = load i64, ptr %67, align 8, !tbaa !9
  %615 = load i64, ptr %60, align 8, !tbaa !9
  %616 = icmp sle i64 %614, %615
  br i1 %616, label %617, label %705

617:                                              ; preds = %613
  %618 = load ptr, ptr %40, align 8, !tbaa !5
  %619 = load i64, ptr %618, align 8, !tbaa !9
  %620 = icmp sge i64 %619, 2
  br i1 %620, label %621, label %637

621:                                              ; preds = %617
  %622 = load ptr, ptr %41, align 8, !tbaa !5
  %623 = load i64, ptr %67, align 8, !tbaa !9
  %624 = load i64, ptr %56, align 8, !tbaa !9
  %625 = shl i64 %624, 1
  %626 = add nsw i64 %623, %625
  %627 = getelementptr inbounds double, ptr %622, i64 %626
  %628 = load double, ptr %627, align 8, !tbaa !11
  %629 = fcmp ogt double %628, 1.000000e+00
  br i1 %629, label %630, label %637

630:                                              ; preds = %621
  %631 = load ptr, ptr %41, align 8, !tbaa !5
  %632 = load i64, ptr %67, align 8, !tbaa !9
  %633 = load i64, ptr %56, align 8, !tbaa !9
  %634 = shl i64 %633, 1
  %635 = add nsw i64 %632, %634
  %636 = getelementptr inbounds double, ptr %631, i64 %635
  store double 1.000000e+00, ptr %636, align 8, !tbaa !11
  br label %637

637:                                              ; preds = %630, %621, %617
  %638 = load double, ptr %68, align 8, !tbaa !11
  %639 = load double, ptr %63, align 8, !tbaa !11
  %640 = fcmp olt double %638, %639
  br i1 %640, label %641, label %665

641:                                              ; preds = %637
  %642 = load ptr, ptr %41, align 8, !tbaa !5
  %643 = load i64, ptr %67, align 8, !tbaa !9
  %644 = load i64, ptr %56, align 8, !tbaa !9
  %645 = shl i64 %644, 1
  %646 = add nsw i64 %643, %645
  %647 = getelementptr inbounds double, ptr %642, i64 %646
  store double 1.000000e+00, ptr %647, align 8, !tbaa !11
  %648 = load ptr, ptr %41, align 8, !tbaa !5
  %649 = load i64, ptr %67, align 8, !tbaa !9
  %650 = load i64, ptr %56, align 8, !tbaa !9
  %651 = add nsw i64 %649, %650
  %652 = getelementptr inbounds double, ptr %648, i64 %651
  store double 0.000000e+00, ptr %652, align 8, !tbaa !11
  %653 = load ptr, ptr %47, align 8, !tbaa !5
  %654 = load i64, ptr %653, align 8, !tbaa !9
  %655 = load ptr, ptr %27, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  %657 = icmp sle i64 %654, %656
  br i1 %657, label %658, label %664

658:                                              ; preds = %641
  %659 = load ptr, ptr %27, align 8, !tbaa !5
  %660 = load i64, ptr %659, align 8, !tbaa !9
  %661 = load i64, ptr %67, align 8, !tbaa !9
  %662 = add nsw i64 %660, %661
  %663 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 %662, ptr %663, align 8, !tbaa !9
  br label %664

664:                                              ; preds = %658, %641
  br label %689

665:                                              ; preds = %637
  %666 = load ptr, ptr %41, align 8, !tbaa !5
  %667 = load i64, ptr %67, align 8, !tbaa !9
  %668 = load i64, ptr %56, align 8, !tbaa !9
  %669 = shl i64 %668, 1
  %670 = add nsw i64 %667, %669
  %671 = getelementptr inbounds double, ptr %666, i64 %670
  %672 = load double, ptr %671, align 8, !tbaa !11
  %673 = load double, ptr %65, align 8, !tbaa !11
  %674 = fcmp olt double %672, %673
  br i1 %674, label %675, label %688

675:                                              ; preds = %665
  %676 = load double, ptr %65, align 8, !tbaa !11
  %677 = load ptr, ptr %41, align 8, !tbaa !5
  %678 = load i64, ptr %67, align 8, !tbaa !9
  %679 = load i64, ptr %56, align 8, !tbaa !9
  %680 = shl i64 %679, 1
  %681 = add nsw i64 %678, %680
  %682 = getelementptr inbounds double, ptr %677, i64 %681
  store double %676, ptr %682, align 8, !tbaa !11
  %683 = load ptr, ptr %41, align 8, !tbaa !5
  %684 = load i64, ptr %67, align 8, !tbaa !9
  %685 = load i64, ptr %56, align 8, !tbaa !9
  %686 = add nsw i64 %684, %685
  %687 = getelementptr inbounds double, ptr %683, i64 %686
  store double 1.000000e+00, ptr %687, align 8, !tbaa !11
  br label %688

688:                                              ; preds = %675, %665
  br label %689

689:                                              ; preds = %688, %664
  %690 = load ptr, ptr %40, align 8, !tbaa !5
  %691 = load i64, ptr %690, align 8, !tbaa !9
  %692 = icmp sge i64 %691, 3
  br i1 %692, label %693, label %701

693:                                              ; preds = %689
  %694 = load double, ptr %68, align 8, !tbaa !11
  %695 = load ptr, ptr %41, align 8, !tbaa !5
  %696 = load i64, ptr %67, align 8, !tbaa !9
  %697 = load i64, ptr %56, align 8, !tbaa !9
  %698 = mul nsw i64 %697, 3
  %699 = add nsw i64 %696, %698
  %700 = getelementptr inbounds double, ptr %695, i64 %699
  store double %694, ptr %700, align 8, !tbaa !11
  br label %701

701:                                              ; preds = %693, %689
  br label %702

702:                                              ; preds = %701
  %703 = load i64, ptr %67, align 8, !tbaa !9
  %704 = add nsw i64 %703, 1
  store i64 %704, ptr %67, align 8, !tbaa !9
  br label %613, !llvm.loop !17

705:                                              ; preds = %613
  br label %706

706:                                              ; preds = %705, %566, %559
  %707 = load ptr, ptr %40, align 8, !tbaa !5
  %708 = load i64, ptr %707, align 8, !tbaa !9
  %709 = icmp sge i64 %708, 1
  br i1 %709, label %710, label %852

710:                                              ; preds = %706
  %711 = load i64, ptr %76, align 8, !tbaa !9
  %712 = icmp sge i64 %711, 2
  br i1 %712, label %713, label %852

713:                                              ; preds = %710
  %714 = call double @dlamch_(ptr noundef @.str)
  %715 = call double @sqrt(double noundef %714) #4
  store double %715, ptr %70, align 8, !tbaa !11
  %716 = load ptr, ptr %28, align 8, !tbaa !5
  %717 = load i64, ptr %716, align 8, !tbaa !9
  store i64 %717, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %718

718:                                              ; preds = %848, %713
  %719 = load i64, ptr %67, align 8, !tbaa !9
  %720 = load i64, ptr %60, align 8, !tbaa !9
  %721 = icmp sle i64 %719, %720
  br i1 %721, label %722, label %851

722:                                              ; preds = %718
  %723 = load ptr, ptr %42, align 8, !tbaa !5
  %724 = load i64, ptr %67, align 8, !tbaa !9
  %725 = load i64, ptr %58, align 8, !tbaa !9
  %726 = shl i64 %725, 1
  %727 = add nsw i64 %724, %726
  %728 = getelementptr inbounds double, ptr %723, i64 %727
  %729 = load double, ptr %728, align 8, !tbaa !11
  %730 = load double, ptr %70, align 8, !tbaa !11
  %731 = fcmp olt double %729, %730
  br i1 %731, label %732, label %755

732:                                              ; preds = %722
  %733 = load ptr, ptr %25, align 8, !tbaa !5
  %734 = load ptr, ptr %27, align 8, !tbaa !5
  %735 = load ptr, ptr %29, align 8, !tbaa !5
  %736 = load i64, ptr %49, align 8, !tbaa !9
  %737 = getelementptr inbounds double, ptr %735, i64 %736
  %738 = load ptr, ptr %30, align 8, !tbaa !5
  %739 = load ptr, ptr %31, align 8, !tbaa !5
  %740 = load i64, ptr %51, align 8, !tbaa !9
  %741 = getelementptr inbounds double, ptr %739, i64 %740
  %742 = load ptr, ptr %32, align 8, !tbaa !5
  %743 = load ptr, ptr %36, align 8, !tbaa !5
  %744 = load i64, ptr %67, align 8, !tbaa !9
  %745 = load i64, ptr %54, align 8, !tbaa !9
  %746 = mul nsw i64 %744, %745
  %747 = add nsw i64 %746, 1
  %748 = getelementptr inbounds double, ptr %743, i64 %747
  %749 = load ptr, ptr %47, align 8, !tbaa !5
  %750 = load ptr, ptr %45, align 8, !tbaa !5
  %751 = getelementptr inbounds double, ptr %750, i64 1
  %752 = load ptr, ptr %46, align 8, !tbaa !5
  %753 = getelementptr inbounds i64, ptr %752, i64 1
  %754 = call double @dla_porcond__(ptr noundef %733, ptr noundef %734, ptr noundef %737, ptr noundef %738, ptr noundef %741, ptr noundef %742, ptr noundef @c__1, ptr noundef %748, ptr noundef %749, ptr noundef %751, ptr noundef %753, i64 noundef 1)
  store double %754, ptr %68, align 8, !tbaa !11
  br label %756

755:                                              ; preds = %722
  store double 0.000000e+00, ptr %68, align 8, !tbaa !11
  br label %756

756:                                              ; preds = %755, %732
  %757 = load ptr, ptr %40, align 8, !tbaa !5
  %758 = load i64, ptr %757, align 8, !tbaa !9
  %759 = icmp sge i64 %758, 2
  br i1 %759, label %760, label %776

760:                                              ; preds = %756
  %761 = load ptr, ptr %42, align 8, !tbaa !5
  %762 = load i64, ptr %67, align 8, !tbaa !9
  %763 = load i64, ptr %58, align 8, !tbaa !9
  %764 = shl i64 %763, 1
  %765 = add nsw i64 %762, %764
  %766 = getelementptr inbounds double, ptr %761, i64 %765
  %767 = load double, ptr %766, align 8, !tbaa !11
  %768 = fcmp ogt double %767, 1.000000e+00
  br i1 %768, label %769, label %776

769:                                              ; preds = %760
  %770 = load ptr, ptr %42, align 8, !tbaa !5
  %771 = load i64, ptr %67, align 8, !tbaa !9
  %772 = load i64, ptr %58, align 8, !tbaa !9
  %773 = shl i64 %772, 1
  %774 = add nsw i64 %771, %773
  %775 = getelementptr inbounds double, ptr %770, i64 %774
  store double 1.000000e+00, ptr %775, align 8, !tbaa !11
  br label %776

776:                                              ; preds = %769, %760, %756
  %777 = load double, ptr %68, align 8, !tbaa !11
  %778 = load double, ptr %63, align 8, !tbaa !11
  %779 = fcmp olt double %777, %778
  br i1 %779, label %780, label %811

780:                                              ; preds = %776
  %781 = load ptr, ptr %42, align 8, !tbaa !5
  %782 = load i64, ptr %67, align 8, !tbaa !9
  %783 = load i64, ptr %58, align 8, !tbaa !9
  %784 = shl i64 %783, 1
  %785 = add nsw i64 %782, %784
  %786 = getelementptr inbounds double, ptr %781, i64 %785
  store double 1.000000e+00, ptr %786, align 8, !tbaa !11
  %787 = load ptr, ptr %42, align 8, !tbaa !5
  %788 = load i64, ptr %67, align 8, !tbaa !9
  %789 = load i64, ptr %58, align 8, !tbaa !9
  %790 = add nsw i64 %788, %789
  %791 = getelementptr inbounds double, ptr %787, i64 %790
  store double 0.000000e+00, ptr %791, align 8, !tbaa !11
  %792 = load ptr, ptr %44, align 8, !tbaa !5
  %793 = getelementptr inbounds double, ptr %792, i64 3
  %794 = load double, ptr %793, align 8, !tbaa !11
  %795 = fcmp oeq double %794, 1.000000e+00
  br i1 %795, label %796, label %810

796:                                              ; preds = %780
  %797 = load ptr, ptr %47, align 8, !tbaa !5
  %798 = load i64, ptr %797, align 8, !tbaa !9
  %799 = load ptr, ptr %27, align 8, !tbaa !5
  %800 = load i64, ptr %799, align 8, !tbaa !9
  %801 = load i64, ptr %67, align 8, !tbaa !9
  %802 = add nsw i64 %800, %801
  %803 = icmp slt i64 %798, %802
  br i1 %803, label %804, label %810

804:                                              ; preds = %796
  %805 = load ptr, ptr %27, align 8, !tbaa !5
  %806 = load i64, ptr %805, align 8, !tbaa !9
  %807 = load i64, ptr %67, align 8, !tbaa !9
  %808 = add nsw i64 %806, %807
  %809 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 %808, ptr %809, align 8, !tbaa !9
  br label %810

810:                                              ; preds = %804, %796, %780
  br label %835

811:                                              ; preds = %776
  %812 = load ptr, ptr %42, align 8, !tbaa !5
  %813 = load i64, ptr %67, align 8, !tbaa !9
  %814 = load i64, ptr %58, align 8, !tbaa !9
  %815 = shl i64 %814, 1
  %816 = add nsw i64 %813, %815
  %817 = getelementptr inbounds double, ptr %812, i64 %816
  %818 = load double, ptr %817, align 8, !tbaa !11
  %819 = load double, ptr %65, align 8, !tbaa !11
  %820 = fcmp olt double %818, %819
  br i1 %820, label %821, label %834

821:                                              ; preds = %811
  %822 = load double, ptr %65, align 8, !tbaa !11
  %823 = load ptr, ptr %42, align 8, !tbaa !5
  %824 = load i64, ptr %67, align 8, !tbaa !9
  %825 = load i64, ptr %58, align 8, !tbaa !9
  %826 = shl i64 %825, 1
  %827 = add nsw i64 %824, %826
  %828 = getelementptr inbounds double, ptr %823, i64 %827
  store double %822, ptr %828, align 8, !tbaa !11
  %829 = load ptr, ptr %42, align 8, !tbaa !5
  %830 = load i64, ptr %67, align 8, !tbaa !9
  %831 = load i64, ptr %58, align 8, !tbaa !9
  %832 = add nsw i64 %830, %831
  %833 = getelementptr inbounds double, ptr %829, i64 %832
  store double 1.000000e+00, ptr %833, align 8, !tbaa !11
  br label %834

834:                                              ; preds = %821, %811
  br label %835

835:                                              ; preds = %834, %810
  %836 = load ptr, ptr %40, align 8, !tbaa !5
  %837 = load i64, ptr %836, align 8, !tbaa !9
  %838 = icmp sge i64 %837, 3
  br i1 %838, label %839, label %847

839:                                              ; preds = %835
  %840 = load double, ptr %68, align 8, !tbaa !11
  %841 = load ptr, ptr %42, align 8, !tbaa !5
  %842 = load i64, ptr %67, align 8, !tbaa !9
  %843 = load i64, ptr %58, align 8, !tbaa !9
  %844 = mul nsw i64 %843, 3
  %845 = add nsw i64 %842, %844
  %846 = getelementptr inbounds double, ptr %841, i64 %845
  store double %840, ptr %846, align 8, !tbaa !11
  br label %847

847:                                              ; preds = %839, %835
  br label %848

848:                                              ; preds = %847
  %849 = load i64, ptr %67, align 8, !tbaa !9
  %850 = add nsw i64 %849, 1
  store i64 %850, ptr %67, align 8, !tbaa !9
  br label %718, !llvm.loop !18

851:                                              ; preds = %718
  br label %852

852:                                              ; preds = %851, %710, %706
  store i32 0, ptr %24, align 4
  store i32 1, ptr %78, align 4
  br label %853

853:                                              ; preds = %852, %404, %325
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  %854 = load i32, ptr %24, align 4
  ret i32 %854
}

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

declare double @dlamch_(ptr noundef) #2

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

declare i32 @xerbla_(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 i64 @ilaprec_(ptr noundef) #2

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

; Function Attrs: nounwind
declare double @sqrt(double noundef) #3

declare double @dla_porcond__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 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 "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 #4 = { nounwind }

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

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


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

@.str = external hidden unnamed_addr constant [8 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 [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__0 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @dporfsx_(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 nocapture noundef readonly %15, ptr noundef %16, ptr noundef %17, ptr nocapture noundef readonly %18, ptr nocapture noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22) local_unnamed_addr #0 {
  %24 = ptrtoint ptr %17 to i64
  %25 = ptrtoint ptr %14 to i64
  %26 = ptrtoint ptr %16 to i64
  %27 = ptrtoint ptr %17 to i64
  %28 = ptrtoint ptr %14 to i64
  %29 = ptrtoint ptr %16 to i64
  %30 = alloca i64, align 8
  %31 = alloca double, align 8
  %32 = alloca i64, align 8
  %33 = alloca [1 x i8], align 1
  %34 = alloca i64, align 8
  %35 = alloca double, align 8
  %36 = alloca i64, align 8
  %37 = alloca i64, align 8
  %38 = alloca i64, align 8
  %39 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #6
  %40 = load i64, ptr %3, align 8, !tbaa !5
  %41 = xor i64 %40, -1
  %42 = getelementptr inbounds double, ptr %17, i64 %41
  %43 = getelementptr inbounds double, ptr %16, i64 %41
  %44 = load i64, ptr %12, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds double, ptr %11, i64 %45
  %47 = getelementptr inbounds i8, ptr %14, i64 -8
  store i64 0, ptr %22, align 8, !tbaa !5
  %48 = load i64, ptr %18, align 8, !tbaa !5
  %49 = icmp sgt i64 %48, 0
  br i1 %49, label %50, label %56

50:                                               ; preds = %23
  %51 = load double, ptr %19, align 8, !tbaa !9
  %52 = fcmp olt double %51, 0.000000e+00
  br i1 %52, label %53, label %54

53:                                               ; preds = %50
  store double 1.000000e+00, ptr %19, align 8, !tbaa !9
  br label %56

54:                                               ; preds = %50
  %55 = fptosi double %51 to i64
  br label %56

56:                                               ; preds = %53, %54, %23
  %.0310 = phi i64 [ 1, %53 ], [ %55, %54 ], [ 1, %23 ]
  %57 = load i64, ptr %2, align 8, !tbaa !5
  %58 = sitofp i64 %57 to double
  %59 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %60 = fmul double %59, %58
  store i64 10, ptr %37, align 8, !tbaa !5
  store double 5.000000e-01, ptr %39, align 8, !tbaa !9
  store double 2.500000e-01, ptr %31, align 8, !tbaa !9
  store i64 0, ptr %34, align 8, !tbaa !5
  %61 = load i64, ptr %18, align 8, !tbaa !5
  %62 = icmp sgt i64 %61, 1
  br i1 %62, label %63, label %.thread

63:                                               ; preds = %56
  %64 = getelementptr inbounds i8, ptr %19, i64 8
  %65 = load double, ptr %64, align 8, !tbaa !9
  %66 = fcmp olt double %65, 0.000000e+00
  br i1 %66, label %67, label %68

67:                                               ; preds = %63
  store double 1.000000e+01, ptr %64, align 8, !tbaa !9
  br label %70

68:                                               ; preds = %63
  %69 = fptosi double %65 to i64
  store i64 %69, ptr %37, align 8, !tbaa !5
  br label %70

70:                                               ; preds = %67, %68
  %.not = icmp eq i64 %61, 2
  br i1 %.not, label %.thread, label %71

71:                                               ; preds = %70
  %72 = getelementptr inbounds i8, ptr %19, i64 16
  %73 = load double, ptr %72, align 8, !tbaa !9
  %74 = fcmp olt double %73, 0.000000e+00
  br i1 %74, label %75, label %76

75:                                               ; preds = %71
  store double 1.000000e+00, ptr %72, align 8, !tbaa !9
  br label %.thread

76:                                               ; preds = %71
  %77 = fcmp oeq double %73, 0.000000e+00
  %78 = zext i1 %77 to i64
  store i64 %78, ptr %34, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %56, %76, %75, %70
  %79 = phi i64 [ 0, %56 ], [ %78, %76 ], [ 0, %75 ], [ 0, %70 ]
  %80 = icmp eq i64 %.0310, 0
  br i1 %80, label %84, label %81

81:                                               ; preds = %.thread
  %82 = load i64, ptr %15, align 8, !tbaa !5
  %83 = icmp eq i64 %82, 0
  br i1 %83, label %84, label %85

84:                                               ; preds = %81, %.thread
  store i64 0, ptr %38, align 8, !tbaa !5
  br label %88

85:                                               ; preds = %81
  %.not324 = icmp eq i64 %79, 0
  br i1 %.not324, label %87, label %86

86:                                               ; preds = %85
  store i64 1, ptr %38, align 8, !tbaa !5
  br label %88

87:                                               ; preds = %85
  store i64 2, ptr %38, align 8, !tbaa !5
  br label %88

88:                                               ; preds = %86, %87, %84
  %89 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  store i64 %89, ptr %36, align 8, !tbaa !5
  %90 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not325 = icmp eq i64 %90, 0
  br i1 %.not325, label %91, label %93

91:                                               ; preds = %88
  %92 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.3) #6
  %.not326 = icmp eq i64 %92, 0
  br i1 %.not326, label %.thread346.sink.split, label %93

93:                                               ; preds = %91, %88
  %.not327 = icmp eq i64 %89, 0
  br i1 %.not327, label %94, label %96

94:                                               ; preds = %93
  %95 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not328 = icmp eq i64 %95, 0
  br i1 %.not328, label %.thread346.sink.split, label %96

96:                                               ; preds = %94, %93
  %97 = load i64, ptr %2, align 8, !tbaa !5
  %98 = icmp slt i64 %97, 0
  br i1 %98, label %.thread346.sink.split, label %99

99:                                               ; preds = %96
  %100 = load i64, ptr %3, align 8, !tbaa !5
  %101 = icmp slt i64 %100, 0
  br i1 %101, label %.thread346.sink.split, label %102

102:                                              ; preds = %99
  %103 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %97, i64 1)
  %104 = icmp slt i64 %103, %spec.select
  br i1 %104, label %.thread346.sink.split, label %105

105:                                              ; preds = %102
  %106 = load i64, ptr %7, align 8, !tbaa !5
  %107 = icmp slt i64 %106, %spec.select
  br i1 %107, label %.thread346.sink.split, label %108

108:                                              ; preds = %105
  %109 = load i64, ptr %10, align 8, !tbaa !5
  %110 = icmp slt i64 %109, %spec.select
  br i1 %110, label %.thread346.sink.split, label %111

111:                                              ; preds = %108
  %112 = load i64, ptr %12, align 8, !tbaa !5
  %113 = icmp slt i64 %112, %spec.select
  br i1 %113, label %.thread346.sink.split, label %114

114:                                              ; preds = %111
  %.pr = load i64, ptr %22, align 8, !tbaa !5
  %.not329 = icmp eq i64 %.pr, 0
  br i1 %.not329, label %118, label %.thread346

.thread346.sink.split:                            ; preds = %111, %108, %105, %102, %99, %96, %94, %91
  %.sink = phi i64 [ -1, %91 ], [ -2, %94 ], [ -3, %96 ], [ -4, %99 ], [ -6, %102 ], [ -8, %105 ], [ -11, %108 ], [ -13, %111 ]
  store i64 %.sink, ptr %22, align 8, !tbaa !5
  br label %.thread346

.thread346:                                       ; preds = %.thread346.sink.split, %114
  %115 = phi i64 [ %.pr, %114 ], [ %.sink, %.thread346.sink.split ]
  %116 = sub nsw i64 0, %115
  store i64 %116, ptr %30, align 8, !tbaa !5
  %117 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %30) #6
  br label %.loopexit

118:                                              ; preds = %114
  %119 = icmp eq i64 %97, 0
  br i1 %119, label %122, label %120

120:                                              ; preds = %118
  %121 = icmp eq i64 %100, 0
  br i1 %121, label %.thread382, label %.lr.ph

.thread382:                                       ; preds = %120
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  br label %.loopexit

122:                                              ; preds = %118
  store double 1.000000e+00, ptr %13, align 8, !tbaa !9
  %.not342364 = icmp eq i64 %100, 0
  br i1 %.not342364, label %.loopexit, label %.lr.ph367

.lr.ph367:                                        ; preds = %122
  %123 = load i64, ptr %15, align 8, !tbaa !5
  %124 = icmp sgt i64 %123, 0
  br i1 %124, label %.lr.ph367.split.us.preheader, label %.lr.ph367.split.preheader

.lr.ph367.split.us.preheader:                     ; preds = %.lr.ph367
  %min.iters.check416 = icmp ult i64 %100, 10
  br i1 %min.iters.check416, label %.lr.ph367.split.us.preheader427, label %vector.memcheck408

.lr.ph367.split.us.preheader427:                  ; preds = %middle.block414, %vector.memcheck408, %.lr.ph367.split.us.preheader
  %.0308365.us.ph = phi i64 [ 1, %vector.memcheck408 ], [ 1, %.lr.ph367.split.us.preheader ], [ %ind.end420, %middle.block414 ]
  %xtraiter433 = and i64 %100, 1
  %lcmp.mod434.not = icmp eq i64 %xtraiter433, 0
  br i1 %lcmp.mod434.not, label %.lr.ph367.split.us.prol.loopexit, label %.lr.ph367.split.us.prol

.lr.ph367.split.us.prol:                          ; preds = %.lr.ph367.split.us.preheader427
  %125 = getelementptr inbounds double, ptr %47, i64 %.0308365.us.ph
  store double 0.000000e+00, ptr %125, align 8, !tbaa !9
  %126 = add nsw i64 %.0308365.us.ph, %40
  %127 = getelementptr inbounds double, ptr %43, i64 %126
  store double 1.000000e+00, ptr %127, align 8, !tbaa !9
  %128 = getelementptr inbounds double, ptr %42, i64 %126
  store double 1.000000e+00, ptr %128, align 8, !tbaa !9
  %129 = add nuw i64 %.0308365.us.ph, 1
  br label %.lr.ph367.split.us.prol.loopexit

.lr.ph367.split.us.prol.loopexit:                 ; preds = %.lr.ph367.split.us.prol, %.lr.ph367.split.us.preheader427
  %.0308365.us.unr = phi i64 [ %.0308365.us.ph, %.lr.ph367.split.us.preheader427 ], [ %129, %.lr.ph367.split.us.prol ]
  %130 = icmp eq i64 %100, %.0308365.us.ph
  br i1 %130, label %.loopexit, label %.lr.ph367.split.us

vector.memcheck408:                               ; preds = %.lr.ph367.split.us.preheader
  %131 = sub i64 %26, %25
  %diff.check409 = icmp ult i64 %131, 32
  %132 = sub i64 %24, %25
  %diff.check410 = icmp ult i64 %132, 32
  %conflict.rdx411 = or i1 %diff.check409, %diff.check410
  %133 = sub i64 %24, %26
  %diff.check412 = icmp ult i64 %133, 32
  %conflict.rdx413 = or i1 %conflict.rdx411, %diff.check412
  br i1 %conflict.rdx413, label %.lr.ph367.split.us.preheader427, label %vector.ph417

vector.ph417:                                     ; preds = %vector.memcheck408
  %n.vec419 = and i64 %100, 9223372036854775804
  %ind.end420 = or disjoint i64 %n.vec419, 1
  br label %vector.body422

vector.body422:                                   ; preds = %vector.body422, %vector.ph417
  %index423 = phi i64 [ 0, %vector.ph417 ], [ %index.next425, %vector.body422 ]
  %offset.idx424 = or disjoint i64 %index423, 1
  %134 = getelementptr double, ptr %14, i64 %index423
  %135 = getelementptr inbounds i8, ptr %134, i64 16
  store <2 x double> zeroinitializer, ptr %134, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %135, align 8, !tbaa !9
  %136 = add nsw i64 %offset.idx424, %40
  %137 = getelementptr inbounds double, ptr %43, i64 %136
  %138 = getelementptr inbounds i8, ptr %137, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %137, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %138, align 8, !tbaa !9
  %139 = getelementptr inbounds double, ptr %42, i64 %136
  %140 = getelementptr inbounds i8, ptr %139, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %139, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %140, align 8, !tbaa !9
  %index.next425 = add nuw i64 %index423, 4
  %141 = icmp eq i64 %index.next425, %n.vec419
  br i1 %141, label %middle.block414, label %vector.body422, !llvm.loop !11

middle.block414:                                  ; preds = %vector.body422
  %cmp.n426 = icmp eq i64 %100, %n.vec419
  br i1 %cmp.n426, label %.loopexit, label %.lr.ph367.split.us.preheader427

.lr.ph367.split.preheader:                        ; preds = %.lr.ph367
  %142 = shl nuw i64 %100, 3
  tail call void @llvm.memset.p0.i64(ptr align 8 %14, i8 0, i64 %142, i1 false), !tbaa !9
  br label %.loopexit

.lr.ph367.split.us:                               ; preds = %.lr.ph367.split.us.prol.loopexit, %.lr.ph367.split.us
  %.0308365.us = phi i64 [ %151, %.lr.ph367.split.us ], [ %.0308365.us.unr, %.lr.ph367.split.us.prol.loopexit ]
  %143 = getelementptr inbounds double, ptr %47, i64 %.0308365.us
  store double 0.000000e+00, ptr %143, align 8, !tbaa !9
  %144 = add nsw i64 %.0308365.us, %40
  %145 = getelementptr inbounds double, ptr %43, i64 %144
  store double 1.000000e+00, ptr %145, align 8, !tbaa !9
  %146 = getelementptr inbounds double, ptr %42, i64 %144
  store double 1.000000e+00, ptr %146, align 8, !tbaa !9
  %147 = add nuw i64 %.0308365.us, 1
  %148 = getelementptr double, ptr %14, i64 %.0308365.us
  store double 0.000000e+00, ptr %148, align 8, !tbaa !9
  %149 = getelementptr inbounds double, ptr %16, i64 %.0308365.us
  store double 1.000000e+00, ptr %149, align 8, !tbaa !9
  %150 = getelementptr inbounds double, ptr %17, i64 %.0308365.us
  store double 1.000000e+00, ptr %150, align 8, !tbaa !9
  %151 = add nuw i64 %.0308365.us, 2
  %exitcond375.not.1 = icmp eq i64 %147, %100
  br i1 %exitcond375.not.1, label %.loopexit, label %.lr.ph367.split.us, !llvm.loop !15

.lr.ph:                                           ; preds = %120
  store double 0.000000e+00, ptr %13, align 8, !tbaa !9
  %152 = load i64, ptr %15, align 8, !tbaa !5
  %153 = icmp sgt i64 %152, 0
  br i1 %153, label %.lr.ph.split.us.preheader, label %.lr.ph.split.preheader

.lr.ph.split.preheader:                           ; preds = %.lr.ph
  %min.iters.check = icmp ult i64 %100, 4
  br i1 %min.iters.check, label %.lr.ph.split.preheader431, label %vector.ph

.lr.ph.split.preheader431:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1309351.ph = phi i64 [ 1, %.lr.ph.split.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph.split

vector.ph:                                        ; preds = %.lr.ph.split.preheader
  %n.vec = and i64 %100, 9223372036854775804
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %154 = getelementptr double, ptr %14, i64 %index
  %155 = getelementptr inbounds i8, ptr %154, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %154, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %155, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %156 = icmp eq i64 %index.next, %n.vec
  br i1 %156, label %middle.block, label %vector.body, !llvm.loop !16

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %100, %n.vec
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.split.preheader431

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check397 = icmp ult i64 %100, 10
  br i1 %min.iters.check397, label %.lr.ph.split.us.preheader430, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.split.us.preheader
  %157 = sub i64 %29, %28
  %diff.check = icmp ult i64 %157, 32
  %158 = sub i64 %27, %28
  %diff.check392 = icmp ult i64 %158, 32
  %conflict.rdx = or i1 %diff.check, %diff.check392
  %159 = sub i64 %27, %29
  %diff.check393 = icmp ult i64 %159, 32
  %conflict.rdx394 = or i1 %conflict.rdx, %diff.check393
  br i1 %conflict.rdx394, label %.lr.ph.split.us.preheader430, label %vector.ph398

vector.ph398:                                     ; preds = %vector.memcheck
  %n.vec400 = and i64 %100, 9223372036854775804
  %ind.end401 = or disjoint i64 %n.vec400, 1
  br label %vector.body403

vector.body403:                                   ; preds = %vector.body403, %vector.ph398
  %index404 = phi i64 [ 0, %vector.ph398 ], [ %index.next406, %vector.body403 ]
  %offset.idx405 = or disjoint i64 %index404, 1
  %160 = getelementptr double, ptr %14, i64 %index404
  %161 = getelementptr inbounds i8, ptr %160, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %160, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %161, align 8, !tbaa !9
  %162 = add nsw i64 %offset.idx405, %40
  %163 = getelementptr inbounds double, ptr %43, i64 %162
  %164 = getelementptr inbounds i8, ptr %163, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %163, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %164, align 8, !tbaa !9
  %165 = getelementptr inbounds double, ptr %42, i64 %162
  %166 = getelementptr inbounds i8, ptr %165, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %165, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %166, align 8, !tbaa !9
  %index.next406 = add nuw i64 %index404, 4
  %167 = icmp eq i64 %index.next406, %n.vec400
  br i1 %167, label %middle.block395, label %vector.body403, !llvm.loop !17

middle.block395:                                  ; preds = %vector.body403
  %cmp.n407 = icmp eq i64 %100, %n.vec400
  br i1 %cmp.n407, label %._crit_edge, label %.lr.ph.split.us.preheader430

.lr.ph.split.us.preheader430:                     ; preds = %middle.block395, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1309351.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end401, %middle.block395 ]
  %xtraiter = and i64 %100, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.split.us.prol.loopexit, label %.lr.ph.split.us.prol

.lr.ph.split.us.prol:                             ; preds = %.lr.ph.split.us.preheader430
  %168 = getelementptr inbounds double, ptr %47, i64 %.1309351.us.ph
  store double 1.000000e+00, ptr %168, align 8, !tbaa !9
  %169 = add nsw i64 %.1309351.us.ph, %40
  %170 = getelementptr inbounds double, ptr %43, i64 %169
  store double 1.000000e+00, ptr %170, align 8, !tbaa !9
  %171 = getelementptr inbounds double, ptr %42, i64 %169
  store double 1.000000e+00, ptr %171, align 8, !tbaa !9
  %172 = add nuw i64 %.1309351.us.ph, 1
  br label %.lr.ph.split.us.prol.loopexit

.lr.ph.split.us.prol.loopexit:                    ; preds = %.lr.ph.split.us.prol, %.lr.ph.split.us.preheader430
  %.1309351.us.unr = phi i64 [ %.1309351.us.ph, %.lr.ph.split.us.preheader430 ], [ %172, %.lr.ph.split.us.prol ]
  %173 = icmp eq i64 %100, %.1309351.us.ph
  br i1 %173, label %._crit_edge, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %.1309351.us = phi i64 [ %182, %.lr.ph.split.us ], [ %.1309351.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %174 = getelementptr inbounds double, ptr %47, i64 %.1309351.us
  store double 1.000000e+00, ptr %174, align 8, !tbaa !9
  %175 = add nsw i64 %.1309351.us, %40
  %176 = getelementptr inbounds double, ptr %43, i64 %175
  store double 1.000000e+00, ptr %176, align 8, !tbaa !9
  %177 = getelementptr inbounds double, ptr %42, i64 %175
  store double 1.000000e+00, ptr %177, align 8, !tbaa !9
  %178 = add nuw i64 %.1309351.us, 1
  %179 = getelementptr double, ptr %14, i64 %.1309351.us
  store double 1.000000e+00, ptr %179, align 8, !tbaa !9
  %180 = getelementptr inbounds double, ptr %16, i64 %.1309351.us
  store double 1.000000e+00, ptr %180, align 8, !tbaa !9
  %181 = getelementptr inbounds double, ptr %17, i64 %.1309351.us
  store double 1.000000e+00, ptr %181, align 8, !tbaa !9
  %182 = add nuw i64 %.1309351.us, 2
  %exitcond372.not.1 = icmp eq i64 %178, %100
  br i1 %exitcond372.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader431, %.lr.ph.split
  %.1309351 = phi i64 [ %184, %.lr.ph.split ], [ %.1309351.ph, %.lr.ph.split.preheader431 ]
  %183 = getelementptr inbounds double, ptr %47, i64 %.1309351
  store double 1.000000e+00, ptr %183, align 8, !tbaa !9
  %184 = add nuw i64 %.1309351, 1
  %exitcond.not = icmp eq i64 %.1309351, %100
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph.split, !llvm.loop !19

._crit_edge:                                      ; preds = %.lr.ph.split, %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us, %middle.block, %middle.block395
  store i8 73, ptr %33, align 1, !tbaa !20
  %185 = call double @dlansy_(ptr noundef nonnull %33, ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %20) #6
  store double %185, ptr %35, align 8, !tbaa !9
  %186 = call i32 @dpocon_(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %35, ptr noundef nonnull %13, ptr noundef %20, ptr noundef %21, ptr noundef nonnull %22) #6
  br i1 %80, label %193, label %187

187:                                              ; preds = %._crit_edge
  %188 = call i64 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i64 %188, ptr %32, align 8, !tbaa !5
  %189 = load i64, ptr %2, align 8, !tbaa !5
  %190 = getelementptr double, ptr %20, i64 %189
  %.idx = shl i64 %189, 4
  %191 = getelementptr i8, ptr %20, i64 %.idx
  %192 = call i32 @dla_porfsx_extended__(ptr noundef nonnull %32, ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %36, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef nonnull %38, ptr noundef %16, ptr noundef %17, ptr noundef %190, ptr noundef %20, ptr noundef %191, ptr noundef %20, ptr noundef nonnull %13, ptr noundef nonnull %37, ptr noundef nonnull %39, ptr noundef nonnull %31, ptr noundef nonnull %34, ptr noundef nonnull %22, i64 noundef 1) #6
  br label %193

193:                                              ; preds = %187, %._crit_edge
  %194 = load i64, ptr %2, align 8, !tbaa !5
  %195 = sitofp i64 %194 to double
  %196 = call double @sqrt(double noundef %195) #6
  %197 = fcmp ole double %196, 1.000000e+01
  %198 = select i1 %197, double 1.000000e+01, double %196
  %199 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %200 = fmul double %199, %198
  %201 = load i64, ptr %15, align 8, !tbaa !5
  %202 = icmp sgt i64 %201, 0
  %203 = load i64, ptr %38, align 8
  %204 = icmp sgt i64 %203, 0
  %or.cond = select i1 %202, i1 %204, i1 false
  br i1 %or.cond, label %205, label %.loopexit349

205:                                              ; preds = %193
  %206 = load i64, ptr %36, align 8, !tbaa !5
  %.not332 = icmp eq i64 %206, 0
  %c__0.c_n1 = select i1 %.not332, ptr @c__0, ptr @c_n1
  %207 = call double @dla_porcond__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %c__0.c_n1, ptr noundef %8, ptr noundef nonnull %22, ptr noundef %20, ptr noundef %21, i64 noundef 1) #6
  %208 = load i64, ptr %3, align 8, !tbaa !5
  %.not333352 = icmp slt i64 %208, 1
  br i1 %.not333352, label %..loopexit349_crit_edge, label %.lr.ph355

..loopexit349_crit_edge:                          ; preds = %205
  %.pre380 = load i64, ptr %15, align 8, !tbaa !5
  br label %.loopexit349

.lr.ph355:                                        ; preds = %205
  %.idx337 = shl i64 %40, 4
  %invariant.gep = getelementptr i8, ptr %43, i64 %.idx337
  %209 = fcmp olt double %207, %60
  %.idx341 = mul i64 %40, 24
  %invariant.gep356 = getelementptr i8, ptr %43, i64 %.idx341
  %.pre378 = load i64, ptr %15, align 8, !tbaa !5
  br i1 %209, label %.lr.ph355.split.us, label %.lr.ph355.split.preheader

.lr.ph355.split.preheader:                        ; preds = %.lr.ph355
  %210 = icmp sgt i64 %.pre378, 1
  %invariant.gep387 = getelementptr i8, ptr %43, i64 %.idx337
  %211 = icmp sgt i64 %.pre378, 2
  br label %.lr.ph355.split

.lr.ph355.split.us:                               ; preds = %.lr.ph355, %224
  %212 = phi i64 [ %221, %224 ], [ %.pre378, %.lr.ph355 ]
  %.2353.us = phi i64 [ %225, %224 ], [ 1, %.lr.ph355 ]
  %213 = getelementptr double, ptr %43, i64 %.2353.us
  %214 = getelementptr i8, ptr %213, i64 %.idx337
  store double 1.000000e+00, ptr %214, align 8, !tbaa !9
  %215 = getelementptr double, ptr %213, i64 %40
  store double 0.000000e+00, ptr %215, align 8, !tbaa !9
  %216 = load i64, ptr %22, align 8, !tbaa !5
  %217 = load i64, ptr %2, align 8, !tbaa !5
  %.not340.us = icmp sgt i64 %216, %217
  br i1 %.not340.us, label %220, label %218

218:                                              ; preds = %.lr.ph355.split.us
  %219 = add nsw i64 %217, %.2353.us
  store i64 %219, ptr %22, align 8, !tbaa !5
  %.pre379 = load i64, ptr %15, align 8, !tbaa !5
  br label %220

220:                                              ; preds = %218, %.lr.ph355.split.us
  %221 = phi i64 [ %.pre379, %218 ], [ %212, %.lr.ph355.split.us ]
  %222 = icmp sgt i64 %221, 2
  br i1 %222, label %223, label %224

223:                                              ; preds = %220
  %gep357.us = getelementptr double, ptr %invariant.gep356, i64 %.2353.us
  store double %207, ptr %gep357.us, align 8, !tbaa !9
  br label %224

224:                                              ; preds = %223, %220
  %225 = add nuw i64 %.2353.us, 1
  %exitcond374.not = icmp eq i64 %.2353.us, %208
  br i1 %exitcond374.not, label %.loopexit349, label %.lr.ph355.split.us, !llvm.loop !21

.lr.ph355.split:                                  ; preds = %.lr.ph355.split.preheader, %239
  %.2353 = phi i64 [ %240, %239 ], [ 1, %.lr.ph355.split.preheader ]
  br i1 %210, label %226, label %.lr.ph355.split._crit_edge

.lr.ph355.split._crit_edge:                       ; preds = %.lr.ph355.split
  %gep388 = getelementptr double, ptr %invariant.gep387, i64 %.2353
  %.pre377 = load double, ptr %gep388, align 8, !tbaa !9
  br label %230

226:                                              ; preds = %.lr.ph355.split
  %gep = getelementptr double, ptr %invariant.gep, i64 %.2353
  %227 = load double, ptr %gep, align 8, !tbaa !9
  %228 = fcmp ogt double %227, 1.000000e+00
  br i1 %228, label %229, label %230

229:                                              ; preds = %226
  store double 1.000000e+00, ptr %gep, align 8, !tbaa !9
  br label %230

230:                                              ; preds = %.lr.ph355.split._crit_edge, %229, %226
  %231 = phi double [ %.pre377, %.lr.ph355.split._crit_edge ], [ 1.000000e+00, %229 ], [ %227, %226 ]
  %232 = fcmp olt double %231, %200
  br i1 %232, label %233, label %237

233:                                              ; preds = %230
  %234 = getelementptr double, ptr %43, i64 %.2353
  %235 = getelementptr i8, ptr %234, i64 %.idx337
  store double %200, ptr %235, align 8, !tbaa !9
  %236 = getelementptr double, ptr %234, i64 %40
  store double 1.000000e+00, ptr %236, align 8, !tbaa !9
  br label %237

237:                                              ; preds = %230, %233
  br i1 %211, label %238, label %239

238:                                              ; preds = %237
  %gep357 = getelementptr double, ptr %invariant.gep356, i64 %.2353
  store double %207, ptr %gep357, align 8, !tbaa !9
  br label %239

239:                                              ; preds = %237, %238
  %240 = add nuw i64 %.2353, 1
  %exitcond373.not = icmp eq i64 %.2353, %208
  br i1 %exitcond373.not, label %.loopexit349, label %.lr.ph355.split, !llvm.loop !21

.loopexit349:                                     ; preds = %239, %224, %..loopexit349_crit_edge, %193
  %241 = phi i64 [ %.pre380, %..loopexit349_crit_edge ], [ %201, %193 ], [ %221, %224 ], [ %.pre378, %239 ]
  %242 = icmp sgt i64 %241, 0
  %243 = load i64, ptr %38, align 8
  %244 = icmp sgt i64 %243, 1
  %or.cond3 = select i1 %242, i1 %244, i1 false
  br i1 %or.cond3, label %245, label %.loopexit

245:                                              ; preds = %.loopexit349
  %246 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %247 = call double @sqrt(double noundef %246) #6
  %248 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep358 = getelementptr i8, ptr %46, i64 8
  %.not334360 = icmp slt i64 %248, 1
  br i1 %.not334360, label %.loopexit, label %.lr.ph363

.lr.ph363:                                        ; preds = %245
  %.idx335 = shl i64 %40, 4
  %249 = getelementptr inbounds i8, ptr %19, i64 16
  %.idx336 = mul i64 %40, 24
  br label %250

250:                                              ; preds = %.lr.ph363, %287
  %.3361 = phi i64 [ 1, %.lr.ph363 ], [ %288, %287 ]
  %251 = getelementptr double, ptr %42, i64 %.3361
  %252 = getelementptr i8, ptr %251, i64 %.idx335
  %253 = load double, ptr %252, align 8, !tbaa !9
  %254 = fcmp olt double %253, %247
  br i1 %254, label %255, label %258

255:                                              ; preds = %250
  %256 = mul nsw i64 %.3361, %44
  %gep359 = getelementptr double, ptr %invariant.gep358, i64 %256
  %257 = call double @dla_porcond__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull @c__1, ptr noundef %gep359, ptr noundef nonnull %22, ptr noundef %20, ptr noundef %21, i64 noundef 1) #6
  br label %258

258:                                              ; preds = %250, %255
  %.1 = phi double [ %257, %255 ], [ 0.000000e+00, %250 ]
  %259 = load i64, ptr %15, align 8, !tbaa !5
  %260 = icmp sgt i64 %259, 1
  br i1 %260, label %261, label %265

261:                                              ; preds = %258
  %262 = load double, ptr %252, align 8, !tbaa !9
  %263 = fcmp ogt double %262, 1.000000e+00
  br i1 %263, label %264, label %265

264:                                              ; preds = %261
  store double 1.000000e+00, ptr %252, align 8, !tbaa !9
  br label %265

265:                                              ; preds = %264, %261, %258
  %266 = fcmp olt double %.1, %60
  br i1 %266, label %267, label %277

267:                                              ; preds = %265
  store double 1.000000e+00, ptr %252, align 8, !tbaa !9
  %268 = getelementptr double, ptr %251, i64 %40
  store double 0.000000e+00, ptr %268, align 8, !tbaa !9
  %269 = load double, ptr %249, align 8, !tbaa !9
  %270 = fcmp oeq double %269, 1.000000e+00
  br i1 %270, label %271, label %282

271:                                              ; preds = %267
  %272 = load i64, ptr %22, align 8, !tbaa !5
  %273 = load i64, ptr %2, align 8, !tbaa !5
  %274 = add nsw i64 %273, %.3361
  %275 = icmp slt i64 %272, %274
  br i1 %275, label %276, label %282

276:                                              ; preds = %271
  store i64 %274, ptr %22, align 8, !tbaa !5
  %.pre381 = load i64, ptr %15, align 8, !tbaa !5
  br label %282

277:                                              ; preds = %265
  %278 = load double, ptr %252, align 8, !tbaa !9
  %279 = fcmp olt double %278, %200
  br i1 %279, label %280, label %282

280:                                              ; preds = %277
  store double %200, ptr %252, align 8, !tbaa !9
  %281 = getelementptr double, ptr %251, i64 %40
  store double 1.000000e+00, ptr %281, align 8, !tbaa !9
  br label %282

282:                                              ; preds = %277, %280, %267, %271, %276
  %283 = phi i64 [ %259, %277 ], [ %259, %280 ], [ %259, %267 ], [ %259, %271 ], [ %.pre381, %276 ]
  %284 = icmp sgt i64 %283, 2
  br i1 %284, label %285, label %287

285:                                              ; preds = %282
  %286 = getelementptr i8, ptr %251, i64 %.idx336
  store double %.1, ptr %286, align 8, !tbaa !9
  br label %287

287:                                              ; preds = %282, %285
  %288 = add nuw nsw i64 %.3361, 1
  %.not334.not = icmp slt i64 %.3361, %248
  br i1 %.not334.not, label %250, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %287, %.lr.ph367.split.us.prol.loopexit, %.lr.ph367.split.us, %middle.block414, %.thread382, %.lr.ph367.split.preheader, %245, %122, %.loopexit349, %.thread346
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  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 double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare i32 @xerbla_(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 i64 @ilaprec_(ptr noundef) local_unnamed_addr #2

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

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

declare double @dla_porcond__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 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) #4

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { 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 = !{!10, !10, i64 0}
!10 = !{!"double", !7, i64 0}
!11 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !12, !13}
!16 = distinct !{!16, !12, !13, !14}
!17 = distinct !{!17, !12, !13, !14}
!18 = distinct !{!18, !12, !13}
!19 = distinct !{!19, !12, !14, !13}
!20 = !{!7, !7, i64 0}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}


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