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

; 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"

%struct.doublecomplex = type { double, double }

@.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_true = external hidden global i64, align 8
@c_false = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @zporfsx_(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 %struct.doublecomplex, 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 %struct.doublecomplex, 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 %struct.doublecomplex, 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 %struct.doublecomplex, 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 %struct.doublecomplex, 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 double, 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 %849

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 %849

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 %struct.doublecomplex, ptr %476, i64 %477
  %479 = load ptr, ptr %30, align 8, !tbaa !5
  %480 = load ptr, ptr %46, align 8, !tbaa !5
  %481 = getelementptr inbounds double, ptr %480, i64 1
  %482 = call double @zlanhe_(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 %struct.doublecomplex, 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 %struct.doublecomplex, ptr %490, i64 1
  %492 = load ptr, ptr %46, align 8, !tbaa !5
  %493 = getelementptr inbounds double, ptr %492, i64 1
  %494 = load ptr, ptr %47, align 8, !tbaa !5
  %495 = call i32 @zpocon_(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 %543

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 %struct.doublecomplex, 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 %struct.doublecomplex, 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 %struct.doublecomplex, 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 %struct.doublecomplex, 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 = getelementptr inbounds %struct.doublecomplex, ptr %529, i64 1
  %531 = load ptr, ptr %46, align 8, !tbaa !5
  %532 = getelementptr inbounds double, ptr %531, i64 1
  %533 = load ptr, ptr %45, align 8, !tbaa !5
  %534 = load ptr, ptr %27, align 8, !tbaa !5
  %535 = load i64, ptr %534, align 8, !tbaa !9
  %536 = add nsw i64 %535, 1
  %537 = getelementptr inbounds %struct.doublecomplex, ptr %533, i64 %536
  %538 = load ptr, ptr %46, align 8, !tbaa !5
  %539 = getelementptr inbounds double, ptr %538, i64 1
  %540 = load ptr, ptr %38, align 8, !tbaa !5
  %541 = load ptr, ptr %47, align 8, !tbaa !5
  %542 = call i32 @zla_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 %530, ptr noundef %532, ptr noundef %537, ptr noundef %539, ptr noundef %540, ptr noundef %75, ptr noundef %77, ptr noundef %64, ptr noundef %72, ptr noundef %541, i64 noundef 1)
  br label %543

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

551:                                              ; preds = %543
  %552 = load double, ptr %61, align 8, !tbaa !11
  br label %555

553:                                              ; preds = %543
  %554 = load double, ptr %62, align 8, !tbaa !11
  br label %555

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

562:                                              ; preds = %555
  %563 = load i64, ptr %76, align 8, !tbaa !9
  %564 = icmp sge i64 %563, 1
  br i1 %564, label %565, label %702

565:                                              ; preds = %562
  %566 = load i64, ptr %74, align 8, !tbaa !9
  %567 = icmp ne i64 %566, 0
  br i1 %567, label %568, label %587

568:                                              ; preds = %565
  %569 = load ptr, ptr %25, align 8, !tbaa !5
  %570 = load ptr, ptr %27, align 8, !tbaa !5
  %571 = load ptr, ptr %29, align 8, !tbaa !5
  %572 = load i64, ptr %49, align 8, !tbaa !9
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %571, i64 %572
  %574 = load ptr, ptr %30, align 8, !tbaa !5
  %575 = load ptr, ptr %31, align 8, !tbaa !5
  %576 = load i64, ptr %51, align 8, !tbaa !9
  %577 = getelementptr inbounds %struct.doublecomplex, ptr %575, i64 %576
  %578 = load ptr, ptr %32, align 8, !tbaa !5
  %579 = load ptr, ptr %33, align 8, !tbaa !5
  %580 = getelementptr inbounds double, ptr %579, i64 1
  %581 = load ptr, ptr %47, align 8, !tbaa !5
  %582 = load ptr, ptr %45, align 8, !tbaa !5
  %583 = getelementptr inbounds %struct.doublecomplex, ptr %582, i64 1
  %584 = load ptr, ptr %46, align 8, !tbaa !5
  %585 = getelementptr inbounds double, ptr %584, i64 1
  %586 = call double @zla_porcond_c__(ptr noundef %569, ptr noundef %570, ptr noundef %573, ptr noundef %574, ptr noundef %577, ptr noundef %578, ptr noundef %580, ptr noundef @c_true, ptr noundef %581, ptr noundef %583, ptr noundef %585, i64 noundef 1)
  store double %586, ptr %68, align 8, !tbaa !11
  br label %606

587:                                              ; preds = %565
  %588 = load ptr, ptr %25, align 8, !tbaa !5
  %589 = load ptr, ptr %27, align 8, !tbaa !5
  %590 = load ptr, ptr %29, align 8, !tbaa !5
  %591 = load i64, ptr %49, align 8, !tbaa !9
  %592 = getelementptr inbounds %struct.doublecomplex, ptr %590, i64 %591
  %593 = load ptr, ptr %30, align 8, !tbaa !5
  %594 = load ptr, ptr %31, align 8, !tbaa !5
  %595 = load i64, ptr %51, align 8, !tbaa !9
  %596 = getelementptr inbounds %struct.doublecomplex, ptr %594, i64 %595
  %597 = load ptr, ptr %32, align 8, !tbaa !5
  %598 = load ptr, ptr %33, align 8, !tbaa !5
  %599 = getelementptr inbounds double, ptr %598, i64 1
  %600 = load ptr, ptr %47, align 8, !tbaa !5
  %601 = load ptr, ptr %45, align 8, !tbaa !5
  %602 = getelementptr inbounds %struct.doublecomplex, ptr %601, i64 1
  %603 = load ptr, ptr %46, align 8, !tbaa !5
  %604 = getelementptr inbounds double, ptr %603, i64 1
  %605 = call double @zla_porcond_c__(ptr noundef %588, ptr noundef %589, ptr noundef %592, ptr noundef %593, ptr noundef %596, ptr noundef %597, ptr noundef %599, ptr noundef @c_false, ptr noundef %600, ptr noundef %602, ptr noundef %604, i64 noundef 1)
  store double %605, ptr %68, align 8, !tbaa !11
  br label %606

606:                                              ; preds = %587, %568
  %607 = load ptr, ptr %28, align 8, !tbaa !5
  %608 = load i64, ptr %607, align 8, !tbaa !9
  store i64 %608, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %67, align 8, !tbaa !9
  br label %609

609:                                              ; preds = %698, %606
  %610 = load i64, ptr %67, align 8, !tbaa !9
  %611 = load i64, ptr %60, align 8, !tbaa !9
  %612 = icmp sle i64 %610, %611
  br i1 %612, label %613, label %701

613:                                              ; preds = %609
  %614 = load ptr, ptr %40, align 8, !tbaa !5
  %615 = load i64, ptr %614, align 8, !tbaa !9
  %616 = icmp sge i64 %615, 2
  br i1 %616, label %617, label %633

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

626:                                              ; preds = %617
  %627 = load ptr, ptr %41, align 8, !tbaa !5
  %628 = load i64, ptr %67, align 8, !tbaa !9
  %629 = load i64, ptr %56, align 8, !tbaa !9
  %630 = shl i64 %629, 1
  %631 = add nsw i64 %628, %630
  %632 = getelementptr inbounds double, ptr %627, i64 %631
  store double 1.000000e+00, ptr %632, align 8, !tbaa !11
  br label %633

633:                                              ; preds = %626, %617, %613
  %634 = load double, ptr %68, align 8, !tbaa !11
  %635 = load double, ptr %63, align 8, !tbaa !11
  %636 = fcmp olt double %634, %635
  br i1 %636, label %637, label %661

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

654:                                              ; preds = %637
  %655 = load ptr, ptr %27, align 8, !tbaa !5
  %656 = load i64, ptr %655, align 8, !tbaa !9
  %657 = load i64, ptr %67, align 8, !tbaa !9
  %658 = add nsw i64 %656, %657
  %659 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 %658, ptr %659, align 8, !tbaa !9
  br label %660

660:                                              ; preds = %654, %637
  br label %685

661:                                              ; preds = %633
  %662 = load ptr, ptr %41, align 8, !tbaa !5
  %663 = load i64, ptr %67, align 8, !tbaa !9
  %664 = load i64, ptr %56, align 8, !tbaa !9
  %665 = shl i64 %664, 1
  %666 = add nsw i64 %663, %665
  %667 = getelementptr inbounds double, ptr %662, i64 %666
  %668 = load double, ptr %667, align 8, !tbaa !11
  %669 = load double, ptr %65, align 8, !tbaa !11
  %670 = fcmp olt double %668, %669
  br i1 %670, label %671, label %684

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

684:                                              ; preds = %671, %661
  br label %685

685:                                              ; preds = %684, %660
  %686 = load ptr, ptr %40, align 8, !tbaa !5
  %687 = load i64, ptr %686, align 8, !tbaa !9
  %688 = icmp sge i64 %687, 3
  br i1 %688, label %689, label %697

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

697:                                              ; preds = %689, %685
  br label %698

698:                                              ; preds = %697
  %699 = load i64, ptr %67, align 8, !tbaa !9
  %700 = add nsw i64 %699, 1
  store i64 %700, ptr %67, align 8, !tbaa !9
  br label %609, !llvm.loop !17

701:                                              ; preds = %609
  br label %702

702:                                              ; preds = %701, %562, %555
  %703 = load ptr, ptr %40, align 8, !tbaa !5
  %704 = load i64, ptr %703, align 8, !tbaa !9
  %705 = icmp sge i64 %704, 1
  br i1 %705, label %706, label %848

706:                                              ; preds = %702
  %707 = load i64, ptr %76, align 8, !tbaa !9
  %708 = icmp sge i64 %707, 2
  br i1 %708, label %709, label %848

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

714:                                              ; preds = %844, %709
  %715 = load i64, ptr %67, align 8, !tbaa !9
  %716 = load i64, ptr %60, align 8, !tbaa !9
  %717 = icmp sle i64 %715, %716
  br i1 %717, label %718, label %847

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

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

751:                                              ; preds = %718
  store double 0.000000e+00, ptr %68, align 8, !tbaa !11
  br label %752

752:                                              ; preds = %751, %728
  %753 = load ptr, ptr %40, align 8, !tbaa !5
  %754 = load i64, ptr %753, align 8, !tbaa !9
  %755 = icmp sge i64 %754, 2
  br i1 %755, label %756, label %772

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

765:                                              ; preds = %756
  %766 = load ptr, ptr %42, align 8, !tbaa !5
  %767 = load i64, ptr %67, align 8, !tbaa !9
  %768 = load i64, ptr %58, align 8, !tbaa !9
  %769 = shl i64 %768, 1
  %770 = add nsw i64 %767, %769
  %771 = getelementptr inbounds double, ptr %766, i64 %770
  store double 1.000000e+00, ptr %771, align 8, !tbaa !11
  br label %772

772:                                              ; preds = %765, %756, %752
  %773 = load double, ptr %68, align 8, !tbaa !11
  %774 = load double, ptr %63, align 8, !tbaa !11
  %775 = fcmp olt double %773, %774
  br i1 %775, label %776, label %807

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

792:                                              ; preds = %776
  %793 = load ptr, ptr %47, align 8, !tbaa !5
  %794 = load i64, ptr %793, align 8, !tbaa !9
  %795 = load ptr, ptr %27, align 8, !tbaa !5
  %796 = load i64, ptr %795, align 8, !tbaa !9
  %797 = load i64, ptr %67, align 8, !tbaa !9
  %798 = add nsw i64 %796, %797
  %799 = icmp slt i64 %794, %798
  br i1 %799, label %800, label %806

800:                                              ; preds = %792
  %801 = load ptr, ptr %27, align 8, !tbaa !5
  %802 = load i64, ptr %801, align 8, !tbaa !9
  %803 = load i64, ptr %67, align 8, !tbaa !9
  %804 = add nsw i64 %802, %803
  %805 = load ptr, ptr %47, align 8, !tbaa !5
  store i64 %804, ptr %805, align 8, !tbaa !9
  br label %806

806:                                              ; preds = %800, %792, %776
  br label %831

807:                                              ; preds = %772
  %808 = load ptr, ptr %42, align 8, !tbaa !5
  %809 = load i64, ptr %67, align 8, !tbaa !9
  %810 = load i64, ptr %58, align 8, !tbaa !9
  %811 = shl i64 %810, 1
  %812 = add nsw i64 %809, %811
  %813 = getelementptr inbounds double, ptr %808, i64 %812
  %814 = load double, ptr %813, align 8, !tbaa !11
  %815 = load double, ptr %65, align 8, !tbaa !11
  %816 = fcmp olt double %814, %815
  br i1 %816, label %817, label %830

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

830:                                              ; preds = %817, %807
  br label %831

831:                                              ; preds = %830, %806
  %832 = load ptr, ptr %40, align 8, !tbaa !5
  %833 = load i64, ptr %832, align 8, !tbaa !9
  %834 = icmp sge i64 %833, 3
  br i1 %834, label %835, label %843

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

843:                                              ; preds = %835, %831
  br label %844

844:                                              ; preds = %843
  %845 = load i64, ptr %67, align 8, !tbaa !9
  %846 = add nsw i64 %845, 1
  store i64 %846, ptr %67, align 8, !tbaa !9
  br label %714, !llvm.loop !18

847:                                              ; preds = %714
  br label %848

848:                                              ; preds = %847, %706, %702
  store i32 0, ptr %24, align 4
  store i32 1, ptr %78, align 4
  br label %849

849:                                              ; preds = %848, %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
  %850 = load i32, ptr %24, align 4
  ret i32 %850
}

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

declare i32 @zpocon_(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 @zla_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 @zla_porcond_c__(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

declare double @zla_porcond_x__(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"

%struct.doublecomplex = type { double, double }

@.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_true = external hidden global i64, align 8
@c_false = external hidden global i64, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zporfsx_(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 %struct.doublecomplex, 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
  %.0309 = 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 %.0309, 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
  %.not323 = icmp eq i64 %79, 0
  br i1 %.not323, 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
  %.not324 = icmp eq i64 %90, 0
  br i1 %.not324, label %91, label %93

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

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

94:                                               ; preds = %93
  %95 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not327 = icmp eq i64 %95, 0
  br i1 %.not327, label %.thread344.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 %.thread344.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 %.thread344.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 %.thread344.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 %.thread344.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 %.thread344.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 %.thread344.sink.split, label %114

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

.thread344.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 %.thread344

.thread344:                                       ; preds = %.thread344.sink.split, %114
  %115 = phi i64 [ %.pr, %114 ], [ %.sink, %.thread344.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 %.thread380, label %.lr.ph

.thread380:                                       ; 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
  %.not340362 = icmp eq i64 %100, 0
  br i1 %.not340362, label %.loopexit, label %.lr.ph365

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

.lr.ph365.split.us.preheader:                     ; preds = %.lr.ph365
  %min.iters.check414 = icmp ult i64 %100, 10
  br i1 %min.iters.check414, label %.lr.ph365.split.us.preheader425, label %vector.memcheck406

.lr.ph365.split.us.preheader425:                  ; preds = %middle.block412, %vector.memcheck406, %.lr.ph365.split.us.preheader
  %.0307363.us.ph = phi i64 [ 1, %vector.memcheck406 ], [ 1, %.lr.ph365.split.us.preheader ], [ %ind.end418, %middle.block412 ]
  %xtraiter431 = and i64 %100, 1
  %lcmp.mod432.not = icmp eq i64 %xtraiter431, 0
  br i1 %lcmp.mod432.not, label %.lr.ph365.split.us.prol.loopexit, label %.lr.ph365.split.us.prol

.lr.ph365.split.us.prol:                          ; preds = %.lr.ph365.split.us.preheader425
  %125 = getelementptr inbounds double, ptr %47, i64 %.0307363.us.ph
  store double 0.000000e+00, ptr %125, align 8, !tbaa !9
  %126 = add nsw i64 %.0307363.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 %.0307363.us.ph, 1
  br label %.lr.ph365.split.us.prol.loopexit

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

vector.memcheck406:                               ; preds = %.lr.ph365.split.us.preheader
  %131 = sub i64 %26, %25
  %diff.check407 = icmp ult i64 %131, 32
  %132 = sub i64 %24, %25
  %diff.check408 = icmp ult i64 %132, 32
  %conflict.rdx409 = or i1 %diff.check407, %diff.check408
  %133 = sub i64 %24, %26
  %diff.check410 = icmp ult i64 %133, 32
  %conflict.rdx411 = or i1 %conflict.rdx409, %diff.check410
  br i1 %conflict.rdx411, label %.lr.ph365.split.us.preheader425, label %vector.ph415

vector.ph415:                                     ; preds = %vector.memcheck406
  %n.vec417 = and i64 %100, 9223372036854775804
  %ind.end418 = or disjoint i64 %n.vec417, 1
  br label %vector.body420

vector.body420:                                   ; preds = %vector.body420, %vector.ph415
  %index421 = phi i64 [ 0, %vector.ph415 ], [ %index.next423, %vector.body420 ]
  %offset.idx422 = or disjoint i64 %index421, 1
  %134 = getelementptr double, ptr %14, i64 %index421
  %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.idx422, %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.next423 = add nuw i64 %index421, 4
  %141 = icmp eq i64 %index.next423, %n.vec417
  br i1 %141, label %middle.block412, label %vector.body420, !llvm.loop !11

middle.block412:                                  ; preds = %vector.body420
  %cmp.n424 = icmp eq i64 %100, %n.vec417
  br i1 %cmp.n424, label %.loopexit, label %.lr.ph365.split.us.preheader425

.lr.ph365.split.preheader:                        ; preds = %.lr.ph365
  %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.ph365.split.us:                               ; preds = %.lr.ph365.split.us.prol.loopexit, %.lr.ph365.split.us
  %.0307363.us = phi i64 [ %151, %.lr.ph365.split.us ], [ %.0307363.us.unr, %.lr.ph365.split.us.prol.loopexit ]
  %143 = getelementptr inbounds double, ptr %47, i64 %.0307363.us
  store double 0.000000e+00, ptr %143, align 8, !tbaa !9
  %144 = add nsw i64 %.0307363.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 %.0307363.us, 1
  %148 = getelementptr double, ptr %14, i64 %.0307363.us
  store double 0.000000e+00, ptr %148, align 8, !tbaa !9
  %149 = getelementptr inbounds double, ptr %16, i64 %.0307363.us
  store double 1.000000e+00, ptr %149, align 8, !tbaa !9
  %150 = getelementptr inbounds double, ptr %17, i64 %.0307363.us
  store double 1.000000e+00, ptr %150, align 8, !tbaa !9
  %151 = add nuw i64 %.0307363.us, 2
  %exitcond373.not.1 = icmp eq i64 %147, %100
  br i1 %exitcond373.not.1, label %.loopexit, label %.lr.ph365.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.preheader429, label %vector.ph

.lr.ph.split.preheader429:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1308349.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.preheader429

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check395 = icmp ult i64 %100, 10
  br i1 %min.iters.check395, label %.lr.ph.split.us.preheader428, 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.check390 = icmp ult i64 %158, 32
  %conflict.rdx = or i1 %diff.check, %diff.check390
  %159 = sub i64 %27, %29
  %diff.check391 = icmp ult i64 %159, 32
  %conflict.rdx392 = or i1 %conflict.rdx, %diff.check391
  br i1 %conflict.rdx392, label %.lr.ph.split.us.preheader428, label %vector.ph396

vector.ph396:                                     ; preds = %vector.memcheck
  %n.vec398 = and i64 %100, 9223372036854775804
  %ind.end399 = or disjoint i64 %n.vec398, 1
  br label %vector.body401

vector.body401:                                   ; preds = %vector.body401, %vector.ph396
  %index402 = phi i64 [ 0, %vector.ph396 ], [ %index.next404, %vector.body401 ]
  %offset.idx403 = or disjoint i64 %index402, 1
  %160 = getelementptr double, ptr %14, i64 %index402
  %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.idx403, %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.next404 = add nuw i64 %index402, 4
  %167 = icmp eq i64 %index.next404, %n.vec398
  br i1 %167, label %middle.block393, label %vector.body401, !llvm.loop !17

middle.block393:                                  ; preds = %vector.body401
  %cmp.n405 = icmp eq i64 %100, %n.vec398
  br i1 %cmp.n405, label %._crit_edge, label %.lr.ph.split.us.preheader428

.lr.ph.split.us.preheader428:                     ; preds = %middle.block393, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1308349.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end399, %middle.block393 ]
  %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.preheader428
  %168 = getelementptr inbounds double, ptr %47, i64 %.1308349.us.ph
  store double 1.000000e+00, ptr %168, align 8, !tbaa !9
  %169 = add nsw i64 %.1308349.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 %.1308349.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.preheader428
  %.1308349.us.unr = phi i64 [ %.1308349.us.ph, %.lr.ph.split.us.preheader428 ], [ %172, %.lr.ph.split.us.prol ]
  %173 = icmp eq i64 %100, %.1308349.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
  %.1308349.us = phi i64 [ %182, %.lr.ph.split.us ], [ %.1308349.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %174 = getelementptr inbounds double, ptr %47, i64 %.1308349.us
  store double 1.000000e+00, ptr %174, align 8, !tbaa !9
  %175 = add nsw i64 %.1308349.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 %.1308349.us, 1
  %179 = getelementptr double, ptr %14, i64 %.1308349.us
  store double 1.000000e+00, ptr %179, align 8, !tbaa !9
  %180 = getelementptr inbounds double, ptr %16, i64 %.1308349.us
  store double 1.000000e+00, ptr %180, align 8, !tbaa !9
  %181 = getelementptr inbounds double, ptr %17, i64 %.1308349.us
  store double 1.000000e+00, ptr %181, align 8, !tbaa !9
  %182 = add nuw i64 %.1308349.us, 2
  %exitcond370.not.1 = icmp eq i64 %178, %100
  br i1 %exitcond370.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader429, %.lr.ph.split
  %.1308349 = phi i64 [ %184, %.lr.ph.split ], [ %.1308349.ph, %.lr.ph.split.preheader429 ]
  %183 = getelementptr inbounds double, ptr %47, i64 %.1308349
  store double 1.000000e+00, ptr %183, align 8, !tbaa !9
  %184 = add nuw i64 %.1308349, 1
  %exitcond.not = icmp eq i64 %.1308349, %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.block393
  store i8 73, ptr %33, align 1, !tbaa !20
  %185 = call double @zlanhe_(ptr noundef nonnull %33, ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %21) #6
  store double %185, ptr %35, align 8, !tbaa !9
  %186 = call i32 @zpocon_(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 %192, 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 %struct.doublecomplex, ptr %20, i64 %189
  %191 = call i32 @zla_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 %20, ptr noundef %21, ptr noundef %190, ptr noundef %21, 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 %192

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

204:                                              ; preds = %192
  %205 = load i64, ptr %36, align 8, !tbaa !5
  %.not331 = icmp eq i64 %205, 0
  %c_false.c_true = select i1 %.not331, ptr @c_false, ptr @c_true
  %206 = call double @zla_porcond_c__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %c_false.c_true, ptr noundef nonnull %22, ptr noundef %20, ptr noundef %21, i64 noundef 1) #6
  %207 = load i64, ptr %3, align 8, !tbaa !5
  %.not332350 = icmp slt i64 %207, 1
  br i1 %.not332350, label %..loopexit347_crit_edge, label %.lr.ph353

..loopexit347_crit_edge:                          ; preds = %204
  %.pre378 = load i64, ptr %15, align 8, !tbaa !5
  br label %.loopexit347

.lr.ph353:                                        ; preds = %204
  %.idx335 = shl i64 %40, 4
  %invariant.gep = getelementptr i8, ptr %43, i64 %.idx335
  %208 = fcmp olt double %206, %60
  %.idx339 = mul i64 %40, 24
  %invariant.gep354 = getelementptr i8, ptr %43, i64 %.idx339
  %.pre376 = load i64, ptr %15, align 8, !tbaa !5
  br i1 %208, label %.lr.ph353.split.us, label %.lr.ph353.split.preheader

.lr.ph353.split.preheader:                        ; preds = %.lr.ph353
  %209 = icmp sgt i64 %.pre376, 1
  %invariant.gep385 = getelementptr i8, ptr %43, i64 %.idx335
  %210 = icmp sgt i64 %.pre376, 2
  br label %.lr.ph353.split

.lr.ph353.split.us:                               ; preds = %.lr.ph353, %223
  %211 = phi i64 [ %220, %223 ], [ %.pre376, %.lr.ph353 ]
  %.2351.us = phi i64 [ %224, %223 ], [ 1, %.lr.ph353 ]
  %212 = getelementptr double, ptr %43, i64 %.2351.us
  %213 = getelementptr i8, ptr %212, i64 %.idx335
  store double 1.000000e+00, ptr %213, align 8, !tbaa !9
  %214 = getelementptr double, ptr %212, i64 %40
  store double 0.000000e+00, ptr %214, align 8, !tbaa !9
  %215 = load i64, ptr %22, align 8, !tbaa !5
  %216 = load i64, ptr %2, align 8, !tbaa !5
  %.not338.us = icmp sgt i64 %215, %216
  br i1 %.not338.us, label %219, label %217

217:                                              ; preds = %.lr.ph353.split.us
  %218 = add nsw i64 %216, %.2351.us
  store i64 %218, ptr %22, align 8, !tbaa !5
  %.pre377 = load i64, ptr %15, align 8, !tbaa !5
  br label %219

219:                                              ; preds = %217, %.lr.ph353.split.us
  %220 = phi i64 [ %.pre377, %217 ], [ %211, %.lr.ph353.split.us ]
  %221 = icmp sgt i64 %220, 2
  br i1 %221, label %222, label %223

222:                                              ; preds = %219
  %gep355.us = getelementptr double, ptr %invariant.gep354, i64 %.2351.us
  store double %206, ptr %gep355.us, align 8, !tbaa !9
  br label %223

223:                                              ; preds = %222, %219
  %224 = add nuw i64 %.2351.us, 1
  %exitcond372.not = icmp eq i64 %.2351.us, %207
  br i1 %exitcond372.not, label %.loopexit347, label %.lr.ph353.split.us, !llvm.loop !21

.lr.ph353.split:                                  ; preds = %.lr.ph353.split.preheader, %238
  %.2351 = phi i64 [ %239, %238 ], [ 1, %.lr.ph353.split.preheader ]
  br i1 %209, label %225, label %.lr.ph353.split._crit_edge

.lr.ph353.split._crit_edge:                       ; preds = %.lr.ph353.split
  %gep386 = getelementptr double, ptr %invariant.gep385, i64 %.2351
  %.pre375 = load double, ptr %gep386, align 8, !tbaa !9
  br label %229

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

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

229:                                              ; preds = %.lr.ph353.split._crit_edge, %228, %225
  %230 = phi double [ %.pre375, %.lr.ph353.split._crit_edge ], [ 1.000000e+00, %228 ], [ %226, %225 ]
  %231 = fcmp olt double %230, %199
  br i1 %231, label %232, label %236

232:                                              ; preds = %229
  %233 = getelementptr double, ptr %43, i64 %.2351
  %234 = getelementptr i8, ptr %233, i64 %.idx335
  store double %199, ptr %234, align 8, !tbaa !9
  %235 = getelementptr double, ptr %233, i64 %40
  store double 1.000000e+00, ptr %235, align 8, !tbaa !9
  br label %236

236:                                              ; preds = %229, %232
  br i1 %210, label %237, label %238

237:                                              ; preds = %236
  %gep355 = getelementptr double, ptr %invariant.gep354, i64 %.2351
  store double %206, ptr %gep355, align 8, !tbaa !9
  br label %238

238:                                              ; preds = %236, %237
  %239 = add nuw i64 %.2351, 1
  %exitcond371.not = icmp eq i64 %.2351, %207
  br i1 %exitcond371.not, label %.loopexit347, label %.lr.ph353.split, !llvm.loop !21

.loopexit347:                                     ; preds = %238, %223, %..loopexit347_crit_edge, %192
  %240 = phi i64 [ %.pre378, %..loopexit347_crit_edge ], [ %200, %192 ], [ %220, %223 ], [ %.pre376, %238 ]
  %241 = icmp sgt i64 %240, 0
  %242 = load i64, ptr %38, align 8
  %243 = icmp sgt i64 %242, 1
  %or.cond3 = select i1 %241, i1 %243, i1 false
  br i1 %or.cond3, label %244, label %.loopexit

244:                                              ; preds = %.loopexit347
  %245 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %246 = call double @sqrt(double noundef %245) #6
  %247 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep356 = getelementptr i8, ptr %46, i64 16
  %.not333358 = icmp slt i64 %247, 1
  br i1 %.not333358, label %.loopexit, label %.lr.ph361

.lr.ph361:                                        ; preds = %244
  %.idx = shl i64 %40, 4
  %248 = getelementptr inbounds i8, ptr %19, i64 16
  %.idx334 = mul i64 %40, 24
  br label %249

249:                                              ; preds = %.lr.ph361, %286
  %.3359 = phi i64 [ 1, %.lr.ph361 ], [ %287, %286 ]
  %250 = getelementptr double, ptr %42, i64 %.3359
  %251 = getelementptr i8, ptr %250, i64 %.idx
  %252 = load double, ptr %251, align 8, !tbaa !9
  %253 = fcmp olt double %252, %246
  br i1 %253, label %254, label %257

254:                                              ; preds = %249
  %255 = mul nsw i64 %.3359, %44
  %gep357 = getelementptr %struct.doublecomplex, ptr %invariant.gep356, i64 %255
  %256 = call double @zla_porcond_x__(ptr noundef %0, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %gep357, ptr noundef nonnull %22, ptr noundef %20, ptr noundef %21, i64 noundef 1) #6
  br label %257

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

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

263:                                              ; preds = %260
  store double 1.000000e+00, ptr %251, align 8, !tbaa !9
  br label %264

264:                                              ; preds = %263, %260, %257
  %265 = fcmp olt double %.1, %60
  br i1 %265, label %266, label %276

266:                                              ; preds = %264
  store double 1.000000e+00, ptr %251, align 8, !tbaa !9
  %267 = getelementptr double, ptr %250, i64 %40
  store double 0.000000e+00, ptr %267, align 8, !tbaa !9
  %268 = load double, ptr %248, align 8, !tbaa !9
  %269 = fcmp oeq double %268, 1.000000e+00
  br i1 %269, label %270, label %281

270:                                              ; preds = %266
  %271 = load i64, ptr %22, align 8, !tbaa !5
  %272 = load i64, ptr %2, align 8, !tbaa !5
  %273 = add nsw i64 %272, %.3359
  %274 = icmp slt i64 %271, %273
  br i1 %274, label %275, label %281

275:                                              ; preds = %270
  store i64 %273, ptr %22, align 8, !tbaa !5
  %.pre379 = load i64, ptr %15, align 8, !tbaa !5
  br label %281

276:                                              ; preds = %264
  %277 = load double, ptr %251, align 8, !tbaa !9
  %278 = fcmp olt double %277, %199
  br i1 %278, label %279, label %281

279:                                              ; preds = %276
  store double %199, ptr %251, align 8, !tbaa !9
  %280 = getelementptr double, ptr %250, i64 %40
  store double 1.000000e+00, ptr %280, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %276, %279, %266, %270, %275
  %282 = phi i64 [ %258, %276 ], [ %258, %279 ], [ %258, %266 ], [ %258, %270 ], [ %.pre379, %275 ]
  %283 = icmp sgt i64 %282, 2
  br i1 %283, label %284, label %286

284:                                              ; preds = %281
  %285 = getelementptr i8, ptr %250, i64 %.idx334
  store double %.1, ptr %285, align 8, !tbaa !9
  br label %286

286:                                              ; preds = %281, %284
  %287 = add nuw nsw i64 %.3359, 1
  %.not333.not = icmp slt i64 %.3359, %247
  br i1 %.not333.not, label %249, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %286, %.lr.ph365.split.us.prol.loopexit, %.lr.ph365.split.us, %middle.block412, %.thread380, %.lr.ph365.split.preheader, %244, %122, %.loopexit347, %.thread344
  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 @zlanhe_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare i32 @zpocon_(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 @zla_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 @zla_porcond_c__(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

declare double @zla_porcond_x__(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