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

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

154:                                              ; preds = %25
  %155 = load ptr, ptr %48, align 8, !tbaa !5
  %156 = getelementptr inbounds double, ptr %155, i64 1
  %157 = load double, ptr %156, align 8, !tbaa !11
  %158 = fcmp olt double %157, 0.000000e+00
  br i1 %158, label %159, label %162

159:                                              ; preds = %154
  %160 = load ptr, ptr %48, align 8, !tbaa !5
  %161 = getelementptr inbounds double, ptr %160, i64 1
  store double 1.000000e+00, ptr %161, align 8, !tbaa !11
  br label %167

162:                                              ; preds = %154
  %163 = load ptr, ptr %48, align 8, !tbaa !5
  %164 = getelementptr inbounds double, ptr %163, i64 1
  %165 = load double, ptr %164, align 8, !tbaa !11
  %166 = fptosi double %165 to i64
  store i64 %166, ptr %70, align 8, !tbaa !9
  br label %167

167:                                              ; preds = %162, %159
  br label %168

168:                                              ; preds = %167, %25
  %169 = load ptr, ptr %29, align 8, !tbaa !5
  %170 = load i64, ptr %169, align 8, !tbaa !9
  %171 = sitofp i64 %170 to double
  %172 = call double @dlamch_(ptr noundef @.str)
  %173 = fmul double %171, %172
  store double %173, ptr %67, align 8, !tbaa !11
  store i64 10, ptr %82, align 8, !tbaa !9
  store double 5.000000e-01, ptr %84, align 8, !tbaa !11
  store double 2.500000e-01, ptr %68, align 8, !tbaa !11
  store i64 0, ptr %77, align 8, !tbaa !9
  %174 = load ptr, ptr %47, align 8, !tbaa !5
  %175 = load i64, ptr %174, align 8, !tbaa !9
  %176 = icmp sge i64 %175, 2
  br i1 %176, label %177, label %193

177:                                              ; preds = %168
  %178 = load ptr, ptr %48, align 8, !tbaa !5
  %179 = getelementptr inbounds double, ptr %178, i64 2
  %180 = load double, ptr %179, align 8, !tbaa !11
  %181 = fcmp olt double %180, 0.000000e+00
  br i1 %181, label %182, label %187

182:                                              ; preds = %177
  %183 = load i64, ptr %82, align 8, !tbaa !9
  %184 = sitofp i64 %183 to double
  %185 = load ptr, ptr %48, align 8, !tbaa !5
  %186 = getelementptr inbounds double, ptr %185, i64 2
  store double %184, ptr %186, align 8, !tbaa !11
  br label %192

187:                                              ; preds = %177
  %188 = load ptr, ptr %48, align 8, !tbaa !5
  %189 = getelementptr inbounds double, ptr %188, i64 2
  %190 = load double, ptr %189, align 8, !tbaa !11
  %191 = fptosi double %190 to i64
  store i64 %191, ptr %82, align 8, !tbaa !9
  br label %192

192:                                              ; preds = %187, %182
  br label %193

193:                                              ; preds = %192, %168
  %194 = load ptr, ptr %47, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp sge i64 %195, 3
  br i1 %196, label %197, label %220

197:                                              ; preds = %193
  %198 = load ptr, ptr %48, align 8, !tbaa !5
  %199 = getelementptr inbounds double, ptr %198, i64 3
  %200 = load double, ptr %199, align 8, !tbaa !11
  %201 = fcmp olt double %200, 0.000000e+00
  br i1 %201, label %202, label %212

202:                                              ; preds = %197
  %203 = load i64, ptr %77, align 8, !tbaa !9
  %204 = icmp ne i64 %203, 0
  br i1 %204, label %205, label %208

205:                                              ; preds = %202
  %206 = load ptr, ptr %48, align 8, !tbaa !5
  %207 = getelementptr inbounds double, ptr %206, i64 3
  store double 0.000000e+00, ptr %207, align 8, !tbaa !11
  br label %211

208:                                              ; preds = %202
  %209 = load ptr, ptr %48, align 8, !tbaa !5
  %210 = getelementptr inbounds double, ptr %209, i64 3
  store double 1.000000e+00, ptr %210, align 8, !tbaa !11
  br label %211

211:                                              ; preds = %208, %205
  br label %219

212:                                              ; preds = %197
  %213 = load ptr, ptr %48, align 8, !tbaa !5
  %214 = getelementptr inbounds double, ptr %213, i64 3
  %215 = load double, ptr %214, align 8, !tbaa !11
  %216 = fcmp oeq double %215, 0.000000e+00
  %217 = zext i1 %216 to i32
  %218 = sext i32 %217 to i64
  store i64 %218, ptr %77, align 8, !tbaa !9
  br label %219

219:                                              ; preds = %212, %211
  br label %220

220:                                              ; preds = %219, %193
  %221 = load i64, ptr %70, align 8, !tbaa !9
  %222 = icmp eq i64 %221, 0
  br i1 %222, label %227, label %223

223:                                              ; preds = %220
  %224 = load ptr, ptr %44, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  %226 = icmp eq i64 %225, 0
  br i1 %226, label %227, label %228

227:                                              ; preds = %223, %220
  store i64 0, ptr %83, align 8, !tbaa !9
  br label %234

228:                                              ; preds = %223
  %229 = load i64, ptr %77, align 8, !tbaa !9
  %230 = icmp ne i64 %229, 0
  br i1 %230, label %231, label %232

231:                                              ; preds = %228
  store i64 1, ptr %83, align 8, !tbaa !9
  br label %233

232:                                              ; preds = %228
  store i64 2, ptr %83, align 8, !tbaa !9
  br label %233

233:                                              ; preds = %232, %231
  br label %234

234:                                              ; preds = %233, %227
  %235 = load ptr, ptr %27, align 8, !tbaa !5
  %236 = call i64 @lsame_(ptr noundef %235, ptr noundef @.str.1)
  store i64 %236, ptr %80, align 8, !tbaa !9
  %237 = load ptr, ptr %28, align 8, !tbaa !5
  %238 = call i64 @lsame_(ptr noundef %237, ptr noundef @.str.2)
  %239 = icmp ne i64 %238, 0
  br i1 %239, label %244, label %240

240:                                              ; preds = %234
  %241 = load ptr, ptr %28, align 8, !tbaa !5
  %242 = call i64 @lsame_(ptr noundef %241, ptr noundef @.str.3)
  %243 = icmp ne i64 %242, 0
  br label %244

244:                                              ; preds = %240, %234
  %245 = phi i1 [ true, %234 ], [ %243, %240 ]
  %246 = zext i1 %245 to i32
  %247 = sext i32 %246 to i64
  store i64 %247, ptr %81, align 8, !tbaa !9
  %248 = load ptr, ptr %28, align 8, !tbaa !5
  %249 = call i64 @lsame_(ptr noundef %248, ptr noundef @.str.4)
  %250 = icmp ne i64 %249, 0
  br i1 %250, label %255, label %251

251:                                              ; preds = %244
  %252 = load ptr, ptr %28, align 8, !tbaa !5
  %253 = call i64 @lsame_(ptr noundef %252, ptr noundef @.str.3)
  %254 = icmp ne i64 %253, 0
  br label %255

255:                                              ; preds = %251, %244
  %256 = phi i1 [ true, %244 ], [ %254, %251 ]
  %257 = zext i1 %256 to i32
  %258 = sext i32 %257 to i64
  store i64 %258, ptr %79, align 8, !tbaa !9
  %259 = load i64, ptr %74, align 8, !tbaa !9
  %260 = icmp eq i64 %259, -1
  br i1 %260, label %261, label %263

261:                                              ; preds = %255
  %262 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -1, ptr %262, align 8, !tbaa !9
  br label %354

263:                                              ; preds = %255
  %264 = load i64, ptr %81, align 8, !tbaa !9
  %265 = icmp ne i64 %264, 0
  br i1 %265, label %275, label %266

266:                                              ; preds = %263
  %267 = load i64, ptr %79, align 8, !tbaa !9
  %268 = icmp ne i64 %267, 0
  br i1 %268, label %275, label %269

269:                                              ; preds = %266
  %270 = load ptr, ptr %28, align 8, !tbaa !5
  %271 = call i64 @lsame_(ptr noundef %270, ptr noundef @.str.1)
  %272 = icmp ne i64 %271, 0
  br i1 %272, label %275, label %273

273:                                              ; preds = %269
  %274 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -2, ptr %274, align 8, !tbaa !9
  br label %353

275:                                              ; preds = %269, %266, %263
  %276 = load ptr, ptr %29, align 8, !tbaa !5
  %277 = load i64, ptr %276, align 8, !tbaa !9
  %278 = icmp slt i64 %277, 0
  br i1 %278, label %279, label %281

279:                                              ; preds = %275
  %280 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -3, ptr %280, align 8, !tbaa !9
  br label %352

281:                                              ; preds = %275
  %282 = load ptr, ptr %30, align 8, !tbaa !5
  %283 = load i64, ptr %282, align 8, !tbaa !9
  %284 = icmp slt i64 %283, 0
  br i1 %284, label %285, label %287

285:                                              ; preds = %281
  %286 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -4, ptr %286, align 8, !tbaa !9
  br label %351

287:                                              ; preds = %281
  %288 = load ptr, ptr %32, align 8, !tbaa !5
  %289 = load i64, ptr %288, align 8, !tbaa !9
  %290 = load ptr, ptr %29, align 8, !tbaa !5
  %291 = load i64, ptr %290, align 8, !tbaa !9
  %292 = icmp sge i64 1, %291
  br i1 %292, label %293, label %294

293:                                              ; preds = %287
  br label %297

294:                                              ; preds = %287
  %295 = load ptr, ptr %29, align 8, !tbaa !5
  %296 = load i64, ptr %295, align 8, !tbaa !9
  br label %297

297:                                              ; preds = %294, %293
  %298 = phi i64 [ 1, %293 ], [ %296, %294 ]
  %299 = icmp slt i64 %289, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %297
  %301 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -6, ptr %301, align 8, !tbaa !9
  br label %350

302:                                              ; preds = %297
  %303 = load ptr, ptr %34, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = load ptr, ptr %29, align 8, !tbaa !5
  %306 = load i64, ptr %305, align 8, !tbaa !9
  %307 = icmp sge i64 1, %306
  br i1 %307, label %308, label %309

308:                                              ; preds = %302
  br label %312

309:                                              ; preds = %302
  %310 = load ptr, ptr %29, align 8, !tbaa !5
  %311 = load i64, ptr %310, align 8, !tbaa !9
  br label %312

312:                                              ; preds = %309, %308
  %313 = phi i64 [ 1, %308 ], [ %311, %309 ]
  %314 = icmp slt i64 %304, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %312
  %316 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -8, ptr %316, align 8, !tbaa !9
  br label %349

317:                                              ; preds = %312
  %318 = load ptr, ptr %39, align 8, !tbaa !5
  %319 = load i64, ptr %318, align 8, !tbaa !9
  %320 = load ptr, ptr %29, align 8, !tbaa !5
  %321 = load i64, ptr %320, align 8, !tbaa !9
  %322 = icmp sge i64 1, %321
  br i1 %322, label %323, label %324

323:                                              ; preds = %317
  br label %327

324:                                              ; preds = %317
  %325 = load ptr, ptr %29, align 8, !tbaa !5
  %326 = load i64, ptr %325, align 8, !tbaa !9
  br label %327

327:                                              ; preds = %324, %323
  %328 = phi i64 [ 1, %323 ], [ %326, %324 ]
  %329 = icmp slt i64 %319, %328
  br i1 %329, label %330, label %332

330:                                              ; preds = %327
  %331 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -13, ptr %331, align 8, !tbaa !9
  br label %348

332:                                              ; preds = %327
  %333 = load ptr, ptr %41, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  %335 = load ptr, ptr %29, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp sge i64 1, %336
  br i1 %337, label %338, label %339

338:                                              ; preds = %332
  br label %342

339:                                              ; preds = %332
  %340 = load ptr, ptr %29, align 8, !tbaa !5
  %341 = load i64, ptr %340, align 8, !tbaa !9
  br label %342

342:                                              ; preds = %339, %338
  %343 = phi i64 [ 1, %338 ], [ %341, %339 ]
  %344 = icmp slt i64 %334, %343
  br i1 %344, label %345, label %347

345:                                              ; preds = %342
  %346 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 -15, ptr %346, align 8, !tbaa !9
  br label %347

347:                                              ; preds = %345, %342
  br label %348

348:                                              ; preds = %347, %330
  br label %349

349:                                              ; preds = %348, %315
  br label %350

350:                                              ; preds = %349, %300
  br label %351

351:                                              ; preds = %350, %285
  br label %352

352:                                              ; preds = %351, %279
  br label %353

353:                                              ; preds = %352, %273
  br label %354

354:                                              ; preds = %353, %261
  %355 = load ptr, ptr %51, align 8, !tbaa !5
  %356 = load i64, ptr %355, align 8, !tbaa !9
  %357 = icmp ne i64 %356, 0
  br i1 %357, label %358, label %363

358:                                              ; preds = %354
  %359 = load ptr, ptr %51, align 8, !tbaa !5
  %360 = load i64, ptr %359, align 8, !tbaa !9
  %361 = sub nsw i64 0, %360
  store i64 %361, ptr %64, align 8, !tbaa !9
  %362 = call i32 @xerbla_(ptr noundef @.str.5, ptr noundef %64)
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %975

363:                                              ; preds = %354
  %364 = load ptr, ptr %29, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = icmp eq i64 %365, 0
  br i1 %366, label %371, label %367

367:                                              ; preds = %363
  %368 = load ptr, ptr %30, align 8, !tbaa !5
  %369 = load i64, ptr %368, align 8, !tbaa !9
  %370 = icmp eq i64 %369, 0
  br i1 %370, label %371, label %438

371:                                              ; preds = %367, %363
  %372 = load ptr, ptr %42, align 8, !tbaa !5
  store double 1.000000e+00, ptr %372, align 8, !tbaa !11
  %373 = load ptr, ptr %30, align 8, !tbaa !5
  %374 = load i64, ptr %373, align 8, !tbaa !9
  store i64 %374, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %375

375:                                              ; preds = %434, %371
  %376 = load i64, ptr %71, align 8, !tbaa !9
  %377 = load i64, ptr %64, align 8, !tbaa !9
  %378 = icmp sle i64 %376, %377
  br i1 %378, label %379, label %437

379:                                              ; preds = %375
  %380 = load ptr, ptr %43, align 8, !tbaa !5
  %381 = load i64, ptr %71, align 8, !tbaa !9
  %382 = getelementptr inbounds double, ptr %380, i64 %381
  store double 0.000000e+00, ptr %382, align 8, !tbaa !11
  %383 = load ptr, ptr %44, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = icmp sge i64 %384, 1
  br i1 %385, label %386, label %397

386:                                              ; preds = %379
  %387 = load ptr, ptr %45, align 8, !tbaa !5
  %388 = load i64, ptr %71, align 8, !tbaa !9
  %389 = load i64, ptr %60, align 8, !tbaa !9
  %390 = add nsw i64 %388, %389
  %391 = getelementptr inbounds double, ptr %387, i64 %390
  store double 1.000000e+00, ptr %391, align 8, !tbaa !11
  %392 = load ptr, ptr %46, align 8, !tbaa !5
  %393 = load i64, ptr %71, align 8, !tbaa !9
  %394 = load i64, ptr %62, align 8, !tbaa !9
  %395 = add nsw i64 %393, %394
  %396 = getelementptr inbounds double, ptr %392, i64 %395
  store double 1.000000e+00, ptr %396, align 8, !tbaa !11
  br label %433

397:                                              ; preds = %379
  %398 = load ptr, ptr %44, align 8, !tbaa !5
  %399 = load i64, ptr %398, align 8, !tbaa !9
  %400 = icmp sge i64 %399, 2
  br i1 %400, label %401, label %414

401:                                              ; preds = %397
  %402 = load ptr, ptr %45, align 8, !tbaa !5
  %403 = load i64, ptr %71, align 8, !tbaa !9
  %404 = load i64, ptr %60, align 8, !tbaa !9
  %405 = shl i64 %404, 1
  %406 = add nsw i64 %403, %405
  %407 = getelementptr inbounds double, ptr %402, i64 %406
  store double 0.000000e+00, ptr %407, align 8, !tbaa !11
  %408 = load ptr, ptr %46, align 8, !tbaa !5
  %409 = load i64, ptr %71, align 8, !tbaa !9
  %410 = load i64, ptr %62, align 8, !tbaa !9
  %411 = shl i64 %410, 1
  %412 = add nsw i64 %409, %411
  %413 = getelementptr inbounds double, ptr %408, i64 %412
  store double 0.000000e+00, ptr %413, align 8, !tbaa !11
  br label %432

414:                                              ; preds = %397
  %415 = load ptr, ptr %44, align 8, !tbaa !5
  %416 = load i64, ptr %415, align 8, !tbaa !9
  %417 = icmp sge i64 %416, 3
  br i1 %417, label %418, label %431

418:                                              ; preds = %414
  %419 = load ptr, ptr %45, align 8, !tbaa !5
  %420 = load i64, ptr %71, align 8, !tbaa !9
  %421 = load i64, ptr %60, align 8, !tbaa !9
  %422 = mul nsw i64 %421, 3
  %423 = add nsw i64 %420, %422
  %424 = getelementptr inbounds double, ptr %419, i64 %423
  store double 1.000000e+00, ptr %424, align 8, !tbaa !11
  %425 = load ptr, ptr %46, align 8, !tbaa !5
  %426 = load i64, ptr %71, align 8, !tbaa !9
  %427 = load i64, ptr %62, align 8, !tbaa !9
  %428 = mul nsw i64 %427, 3
  %429 = add nsw i64 %426, %428
  %430 = getelementptr inbounds double, ptr %425, i64 %429
  store double 1.000000e+00, ptr %430, align 8, !tbaa !11
  br label %431

431:                                              ; preds = %418, %414
  br label %432

432:                                              ; preds = %431, %401
  br label %433

433:                                              ; preds = %432, %386
  br label %434

434:                                              ; preds = %433
  %435 = load i64, ptr %71, align 8, !tbaa !9
  %436 = add nsw i64 %435, 1
  store i64 %436, ptr %71, align 8, !tbaa !9
  br label %375, !llvm.loop !13

437:                                              ; preds = %375
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %975

438:                                              ; preds = %367
  %439 = load ptr, ptr %42, align 8, !tbaa !5
  store double 0.000000e+00, ptr %439, align 8, !tbaa !11
  %440 = load ptr, ptr %30, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  store i64 %441, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %442

442:                                              ; preds = %501, %438
  %443 = load i64, ptr %71, align 8, !tbaa !9
  %444 = load i64, ptr %64, align 8, !tbaa !9
  %445 = icmp sle i64 %443, %444
  br i1 %445, label %446, label %504

446:                                              ; preds = %442
  %447 = load ptr, ptr %43, align 8, !tbaa !5
  %448 = load i64, ptr %71, align 8, !tbaa !9
  %449 = getelementptr inbounds double, ptr %447, i64 %448
  store double 1.000000e+00, ptr %449, align 8, !tbaa !11
  %450 = load ptr, ptr %44, align 8, !tbaa !5
  %451 = load i64, ptr %450, align 8, !tbaa !9
  %452 = icmp sge i64 %451, 1
  br i1 %452, label %453, label %464

453:                                              ; preds = %446
  %454 = load ptr, ptr %45, align 8, !tbaa !5
  %455 = load i64, ptr %71, align 8, !tbaa !9
  %456 = load i64, ptr %60, align 8, !tbaa !9
  %457 = add nsw i64 %455, %456
  %458 = getelementptr inbounds double, ptr %454, i64 %457
  store double 1.000000e+00, ptr %458, align 8, !tbaa !11
  %459 = load ptr, ptr %46, align 8, !tbaa !5
  %460 = load i64, ptr %71, align 8, !tbaa !9
  %461 = load i64, ptr %62, align 8, !tbaa !9
  %462 = add nsw i64 %460, %461
  %463 = getelementptr inbounds double, ptr %459, i64 %462
  store double 1.000000e+00, ptr %463, align 8, !tbaa !11
  br label %500

464:                                              ; preds = %446
  %465 = load ptr, ptr %44, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = icmp sge i64 %466, 2
  br i1 %467, label %468, label %481

468:                                              ; preds = %464
  %469 = load ptr, ptr %45, align 8, !tbaa !5
  %470 = load i64, ptr %71, align 8, !tbaa !9
  %471 = load i64, ptr %60, align 8, !tbaa !9
  %472 = shl i64 %471, 1
  %473 = add nsw i64 %470, %472
  %474 = getelementptr inbounds double, ptr %469, i64 %473
  store double 1.000000e+00, ptr %474, align 8, !tbaa !11
  %475 = load ptr, ptr %46, align 8, !tbaa !5
  %476 = load i64, ptr %71, align 8, !tbaa !9
  %477 = load i64, ptr %62, align 8, !tbaa !9
  %478 = shl i64 %477, 1
  %479 = add nsw i64 %476, %478
  %480 = getelementptr inbounds double, ptr %475, i64 %479
  store double 1.000000e+00, ptr %480, align 8, !tbaa !11
  br label %499

481:                                              ; preds = %464
  %482 = load ptr, ptr %44, align 8, !tbaa !5
  %483 = load i64, ptr %482, align 8, !tbaa !9
  %484 = icmp sge i64 %483, 3
  br i1 %484, label %485, label %498

485:                                              ; preds = %481
  %486 = load ptr, ptr %45, align 8, !tbaa !5
  %487 = load i64, ptr %71, align 8, !tbaa !9
  %488 = load i64, ptr %60, align 8, !tbaa !9
  %489 = mul nsw i64 %488, 3
  %490 = add nsw i64 %487, %489
  %491 = getelementptr inbounds double, ptr %486, i64 %490
  store double 0.000000e+00, ptr %491, align 8, !tbaa !11
  %492 = load ptr, ptr %46, align 8, !tbaa !5
  %493 = load i64, ptr %71, align 8, !tbaa !9
  %494 = load i64, ptr %62, align 8, !tbaa !9
  %495 = mul nsw i64 %494, 3
  %496 = add nsw i64 %493, %495
  %497 = getelementptr inbounds double, ptr %492, i64 %496
  store double 0.000000e+00, ptr %497, align 8, !tbaa !11
  br label %498

498:                                              ; preds = %485, %481
  br label %499

499:                                              ; preds = %498, %468
  br label %500

500:                                              ; preds = %499, %453
  br label %501

501:                                              ; preds = %500
  %502 = load i64, ptr %71, align 8, !tbaa !9
  %503 = add nsw i64 %502, 1
  store i64 %503, ptr %71, align 8, !tbaa !9
  br label %442, !llvm.loop !15

504:                                              ; preds = %442
  %505 = load i64, ptr %80, align 8, !tbaa !9
  %506 = icmp ne i64 %505, 0
  br i1 %506, label %507, label %509

507:                                              ; preds = %504
  %508 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  store i8 73, ptr %508, align 1, !tbaa !16
  br label %511

509:                                              ; preds = %504
  %510 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  store i8 49, ptr %510, align 1, !tbaa !16
  br label %511

511:                                              ; preds = %509, %507
  %512 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  %513 = load ptr, ptr %29, align 8, !tbaa !5
  %514 = load ptr, ptr %29, align 8, !tbaa !5
  %515 = load ptr, ptr %31, align 8, !tbaa !5
  %516 = load i64, ptr %53, align 8, !tbaa !9
  %517 = getelementptr inbounds %struct.doublecomplex, ptr %515, i64 %516
  %518 = load ptr, ptr %32, align 8, !tbaa !5
  %519 = load ptr, ptr %50, align 8, !tbaa !5
  %520 = getelementptr inbounds double, ptr %519, i64 1
  %521 = call double @zlange_(ptr noundef %512, ptr noundef %513, ptr noundef %514, ptr noundef %517, ptr noundef %518, ptr noundef %520)
  store double %521, ptr %78, align 8, !tbaa !11
  %522 = getelementptr inbounds [1 x i8], ptr %76, i64 0, i64 0
  %523 = load ptr, ptr %29, align 8, !tbaa !5
  %524 = load ptr, ptr %33, align 8, !tbaa !5
  %525 = load i64, ptr %55, align 8, !tbaa !9
  %526 = getelementptr inbounds %struct.doublecomplex, ptr %524, i64 %525
  %527 = load ptr, ptr %34, align 8, !tbaa !5
  %528 = load ptr, ptr %42, align 8, !tbaa !5
  %529 = load ptr, ptr %49, align 8, !tbaa !5
  %530 = getelementptr inbounds %struct.doublecomplex, ptr %529, i64 1
  %531 = load ptr, ptr %50, align 8, !tbaa !5
  %532 = getelementptr inbounds double, ptr %531, i64 1
  %533 = load ptr, ptr %51, align 8, !tbaa !5
  %534 = call i32 @zgecon_(ptr noundef %522, ptr noundef %523, ptr noundef %526, ptr noundef %527, ptr noundef %78, ptr noundef %528, ptr noundef %530, ptr noundef %532, ptr noundef %533)
  %535 = load i64, ptr %70, align 8, !tbaa !9
  %536 = icmp ne i64 %535, 0
  br i1 %536, label %537, label %632

537:                                              ; preds = %511
  %538 = call i64 @ilaprec_(ptr noundef @.str.6)
  store i64 %538, ptr %73, align 8, !tbaa !9
  %539 = load i64, ptr %80, align 8, !tbaa !9
  %540 = icmp ne i64 %539, 0
  br i1 %540, label %541, label %586

541:                                              ; preds = %537
  %542 = load ptr, ptr %29, align 8, !tbaa !5
  %543 = load ptr, ptr %30, align 8, !tbaa !5
  %544 = load ptr, ptr %31, align 8, !tbaa !5
  %545 = load i64, ptr %53, align 8, !tbaa !9
  %546 = getelementptr inbounds %struct.doublecomplex, ptr %544, i64 %545
  %547 = load ptr, ptr %32, align 8, !tbaa !5
  %548 = load ptr, ptr %33, align 8, !tbaa !5
  %549 = load i64, ptr %55, align 8, !tbaa !9
  %550 = getelementptr inbounds %struct.doublecomplex, ptr %548, i64 %549
  %551 = load ptr, ptr %34, align 8, !tbaa !5
  %552 = load ptr, ptr %35, align 8, !tbaa !5
  %553 = getelementptr inbounds i64, ptr %552, i64 1
  %554 = load ptr, ptr %37, align 8, !tbaa !5
  %555 = getelementptr inbounds double, ptr %554, i64 1
  %556 = load ptr, ptr %38, align 8, !tbaa !5
  %557 = load i64, ptr %57, align 8, !tbaa !9
  %558 = getelementptr inbounds %struct.doublecomplex, ptr %556, i64 %557
  %559 = load ptr, ptr %39, align 8, !tbaa !5
  %560 = load ptr, ptr %40, align 8, !tbaa !5
  %561 = load i64, ptr %59, align 8, !tbaa !9
  %562 = getelementptr inbounds %struct.doublecomplex, ptr %560, i64 %561
  %563 = load ptr, ptr %41, align 8, !tbaa !5
  %564 = load ptr, ptr %43, align 8, !tbaa !5
  %565 = getelementptr inbounds double, ptr %564, i64 1
  %566 = load ptr, ptr %45, align 8, !tbaa !5
  %567 = load i64, ptr %61, align 8, !tbaa !9
  %568 = getelementptr inbounds double, ptr %566, i64 %567
  %569 = load ptr, ptr %46, align 8, !tbaa !5
  %570 = load i64, ptr %63, align 8, !tbaa !9
  %571 = getelementptr inbounds double, ptr %569, i64 %570
  %572 = load ptr, ptr %49, align 8, !tbaa !5
  %573 = getelementptr inbounds %struct.doublecomplex, ptr %572, i64 1
  %574 = load ptr, ptr %50, align 8, !tbaa !5
  %575 = getelementptr inbounds double, ptr %574, i64 1
  %576 = load ptr, ptr %49, align 8, !tbaa !5
  %577 = load ptr, ptr %29, align 8, !tbaa !5
  %578 = load i64, ptr %577, align 8, !tbaa !9
  %579 = add nsw i64 %578, 1
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %576, i64 %579
  %581 = load ptr, ptr %50, align 8, !tbaa !5
  %582 = getelementptr inbounds double, ptr %581, i64 1
  %583 = load ptr, ptr %42, align 8, !tbaa !5
  %584 = load ptr, ptr %51, align 8, !tbaa !5
  %585 = call i32 @zla_gerfsx_extended__(ptr noundef %73, ptr noundef %74, ptr noundef %542, ptr noundef %543, ptr noundef %546, ptr noundef %547, ptr noundef %550, ptr noundef %551, ptr noundef %553, ptr noundef %79, ptr noundef %555, ptr noundef %558, ptr noundef %559, ptr noundef %562, ptr noundef %563, ptr noundef %565, ptr noundef %83, ptr noundef %568, ptr noundef %571, ptr noundef %573, ptr noundef %575, ptr noundef %580, ptr noundef %582, ptr noundef %583, ptr noundef %82, ptr noundef %84, ptr noundef %68, ptr noundef %77, ptr noundef %584)
  br label %631

586:                                              ; preds = %537
  %587 = load ptr, ptr %29, align 8, !tbaa !5
  %588 = load ptr, ptr %30, align 8, !tbaa !5
  %589 = load ptr, ptr %31, align 8, !tbaa !5
  %590 = load i64, ptr %53, align 8, !tbaa !9
  %591 = getelementptr inbounds %struct.doublecomplex, ptr %589, i64 %590
  %592 = load ptr, ptr %32, align 8, !tbaa !5
  %593 = load ptr, ptr %33, align 8, !tbaa !5
  %594 = load i64, ptr %55, align 8, !tbaa !9
  %595 = getelementptr inbounds %struct.doublecomplex, ptr %593, i64 %594
  %596 = load ptr, ptr %34, align 8, !tbaa !5
  %597 = load ptr, ptr %35, align 8, !tbaa !5
  %598 = getelementptr inbounds i64, ptr %597, i64 1
  %599 = load ptr, ptr %36, align 8, !tbaa !5
  %600 = getelementptr inbounds double, ptr %599, i64 1
  %601 = load ptr, ptr %38, align 8, !tbaa !5
  %602 = load i64, ptr %57, align 8, !tbaa !9
  %603 = getelementptr inbounds %struct.doublecomplex, ptr %601, i64 %602
  %604 = load ptr, ptr %39, align 8, !tbaa !5
  %605 = load ptr, ptr %40, align 8, !tbaa !5
  %606 = load i64, ptr %59, align 8, !tbaa !9
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %605, i64 %606
  %608 = load ptr, ptr %41, align 8, !tbaa !5
  %609 = load ptr, ptr %43, align 8, !tbaa !5
  %610 = getelementptr inbounds double, ptr %609, i64 1
  %611 = load ptr, ptr %45, align 8, !tbaa !5
  %612 = load i64, ptr %61, align 8, !tbaa !9
  %613 = getelementptr inbounds double, ptr %611, i64 %612
  %614 = load ptr, ptr %46, align 8, !tbaa !5
  %615 = load i64, ptr %63, align 8, !tbaa !9
  %616 = getelementptr inbounds double, ptr %614, i64 %615
  %617 = load ptr, ptr %49, align 8, !tbaa !5
  %618 = getelementptr inbounds %struct.doublecomplex, ptr %617, i64 1
  %619 = load ptr, ptr %50, align 8, !tbaa !5
  %620 = getelementptr inbounds double, ptr %619, i64 1
  %621 = load ptr, ptr %49, align 8, !tbaa !5
  %622 = load ptr, ptr %29, align 8, !tbaa !5
  %623 = load i64, ptr %622, align 8, !tbaa !9
  %624 = add nsw i64 %623, 1
  %625 = getelementptr inbounds %struct.doublecomplex, ptr %621, i64 %624
  %626 = load ptr, ptr %50, align 8, !tbaa !5
  %627 = getelementptr inbounds double, ptr %626, i64 1
  %628 = load ptr, ptr %42, align 8, !tbaa !5
  %629 = load ptr, ptr %51, align 8, !tbaa !5
  %630 = call i32 @zla_gerfsx_extended__(ptr noundef %73, ptr noundef %74, ptr noundef %587, ptr noundef %588, ptr noundef %591, ptr noundef %592, ptr noundef %595, ptr noundef %596, ptr noundef %598, ptr noundef %81, ptr noundef %600, ptr noundef %603, ptr noundef %604, ptr noundef %607, ptr noundef %608, ptr noundef %610, ptr noundef %83, ptr noundef %613, ptr noundef %616, ptr noundef %618, ptr noundef %620, ptr noundef %625, ptr noundef %627, ptr noundef %628, ptr noundef %82, ptr noundef %84, ptr noundef %68, ptr noundef %77, ptr noundef %629)
  br label %631

631:                                              ; preds = %586, %541
  br label %632

632:                                              ; preds = %631, %511
  store double 1.000000e+01, ptr %65, align 8, !tbaa !11
  %633 = load ptr, ptr %29, align 8, !tbaa !5
  %634 = load i64, ptr %633, align 8, !tbaa !9
  %635 = sitofp i64 %634 to double
  %636 = call double @sqrt(double noundef %635) #4
  store double %636, ptr %66, align 8, !tbaa !11
  %637 = load double, ptr %65, align 8, !tbaa !11
  %638 = load double, ptr %66, align 8, !tbaa !11
  %639 = fcmp oge double %637, %638
  br i1 %639, label %640, label %642

640:                                              ; preds = %632
  %641 = load double, ptr %65, align 8, !tbaa !11
  br label %644

642:                                              ; preds = %632
  %643 = load double, ptr %66, align 8, !tbaa !11
  br label %644

644:                                              ; preds = %642, %640
  %645 = phi double [ %641, %640 ], [ %643, %642 ]
  %646 = call double @dlamch_(ptr noundef @.str)
  %647 = fmul double %645, %646
  store double %647, ptr %69, align 8, !tbaa !11
  %648 = load ptr, ptr %44, align 8, !tbaa !5
  %649 = load i64, ptr %648, align 8, !tbaa !9
  %650 = icmp sge i64 %649, 1
  br i1 %650, label %651, label %826

651:                                              ; preds = %644
  %652 = load i64, ptr %83, align 8, !tbaa !9
  %653 = icmp sge i64 %652, 1
  br i1 %653, label %654, label %826

654:                                              ; preds = %651
  %655 = load i64, ptr %79, align 8, !tbaa !9
  %656 = icmp ne i64 %655, 0
  br i1 %656, label %657, label %681

657:                                              ; preds = %654
  %658 = load i64, ptr %80, align 8, !tbaa !9
  %659 = icmp ne i64 %658, 0
  br i1 %659, label %660, label %681

660:                                              ; preds = %657
  %661 = load ptr, ptr %27, align 8, !tbaa !5
  %662 = load ptr, ptr %29, align 8, !tbaa !5
  %663 = load ptr, ptr %31, align 8, !tbaa !5
  %664 = load i64, ptr %53, align 8, !tbaa !9
  %665 = getelementptr inbounds %struct.doublecomplex, ptr %663, i64 %664
  %666 = load ptr, ptr %32, align 8, !tbaa !5
  %667 = load ptr, ptr %33, align 8, !tbaa !5
  %668 = load i64, ptr %55, align 8, !tbaa !9
  %669 = getelementptr inbounds %struct.doublecomplex, ptr %667, i64 %668
  %670 = load ptr, ptr %34, align 8, !tbaa !5
  %671 = load ptr, ptr %35, align 8, !tbaa !5
  %672 = getelementptr inbounds i64, ptr %671, i64 1
  %673 = load ptr, ptr %37, align 8, !tbaa !5
  %674 = getelementptr inbounds double, ptr %673, i64 1
  %675 = load ptr, ptr %51, align 8, !tbaa !5
  %676 = load ptr, ptr %49, align 8, !tbaa !5
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %676, i64 1
  %678 = load ptr, ptr %50, align 8, !tbaa !5
  %679 = getelementptr inbounds double, ptr %678, i64 1
  %680 = call double @zla_gercond_c__(ptr noundef %661, ptr noundef %662, ptr noundef %665, ptr noundef %666, ptr noundef %669, ptr noundef %670, ptr noundef %672, ptr noundef %674, ptr noundef @c_true, ptr noundef %675, ptr noundef %677, ptr noundef %679, i64 noundef 1)
  store double %680, ptr %72, align 8, !tbaa !11
  br label %730

681:                                              ; preds = %657, %654
  %682 = load i64, ptr %81, align 8, !tbaa !9
  %683 = icmp ne i64 %682, 0
  br i1 %683, label %684, label %708

684:                                              ; preds = %681
  %685 = load i64, ptr %80, align 8, !tbaa !9
  %686 = icmp ne i64 %685, 0
  br i1 %686, label %708, label %687

687:                                              ; preds = %684
  %688 = load ptr, ptr %27, align 8, !tbaa !5
  %689 = load ptr, ptr %29, align 8, !tbaa !5
  %690 = load ptr, ptr %31, align 8, !tbaa !5
  %691 = load i64, ptr %53, align 8, !tbaa !9
  %692 = getelementptr inbounds %struct.doublecomplex, ptr %690, i64 %691
  %693 = load ptr, ptr %32, align 8, !tbaa !5
  %694 = load ptr, ptr %33, align 8, !tbaa !5
  %695 = load i64, ptr %55, align 8, !tbaa !9
  %696 = getelementptr inbounds %struct.doublecomplex, ptr %694, i64 %695
  %697 = load ptr, ptr %34, align 8, !tbaa !5
  %698 = load ptr, ptr %35, align 8, !tbaa !5
  %699 = getelementptr inbounds i64, ptr %698, i64 1
  %700 = load ptr, ptr %36, align 8, !tbaa !5
  %701 = getelementptr inbounds double, ptr %700, i64 1
  %702 = load ptr, ptr %51, align 8, !tbaa !5
  %703 = load ptr, ptr %49, align 8, !tbaa !5
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %703, i64 1
  %705 = load ptr, ptr %50, align 8, !tbaa !5
  %706 = getelementptr inbounds double, ptr %705, i64 1
  %707 = call double @zla_gercond_c__(ptr noundef %688, ptr noundef %689, ptr noundef %692, ptr noundef %693, ptr noundef %696, ptr noundef %697, ptr noundef %699, ptr noundef %701, ptr noundef @c_true, ptr noundef %702, ptr noundef %704, ptr noundef %706, i64 noundef 1)
  store double %707, ptr %72, align 8, !tbaa !11
  br label %729

708:                                              ; preds = %684, %681
  %709 = load ptr, ptr %27, align 8, !tbaa !5
  %710 = load ptr, ptr %29, align 8, !tbaa !5
  %711 = load ptr, ptr %31, align 8, !tbaa !5
  %712 = load i64, ptr %53, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.doublecomplex, ptr %711, i64 %712
  %714 = load ptr, ptr %32, align 8, !tbaa !5
  %715 = load ptr, ptr %33, align 8, !tbaa !5
  %716 = load i64, ptr %55, align 8, !tbaa !9
  %717 = getelementptr inbounds %struct.doublecomplex, ptr %715, i64 %716
  %718 = load ptr, ptr %34, align 8, !tbaa !5
  %719 = load ptr, ptr %35, align 8, !tbaa !5
  %720 = getelementptr inbounds i64, ptr %719, i64 1
  %721 = load ptr, ptr %37, align 8, !tbaa !5
  %722 = getelementptr inbounds double, ptr %721, i64 1
  %723 = load ptr, ptr %51, align 8, !tbaa !5
  %724 = load ptr, ptr %49, align 8, !tbaa !5
  %725 = getelementptr inbounds %struct.doublecomplex, ptr %724, i64 1
  %726 = load ptr, ptr %50, align 8, !tbaa !5
  %727 = getelementptr inbounds double, ptr %726, i64 1
  %728 = call double @zla_gercond_c__(ptr noundef %709, ptr noundef %710, ptr noundef %713, ptr noundef %714, ptr noundef %717, ptr noundef %718, ptr noundef %720, ptr noundef %722, ptr noundef @c_false, ptr noundef %723, ptr noundef %725, ptr noundef %727, i64 noundef 1)
  store double %728, ptr %72, align 8, !tbaa !11
  br label %729

729:                                              ; preds = %708, %687
  br label %730

730:                                              ; preds = %729, %660
  %731 = load ptr, ptr %30, align 8, !tbaa !5
  %732 = load i64, ptr %731, align 8, !tbaa !9
  store i64 %732, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %733

733:                                              ; preds = %822, %730
  %734 = load i64, ptr %71, align 8, !tbaa !9
  %735 = load i64, ptr %64, align 8, !tbaa !9
  %736 = icmp sle i64 %734, %735
  br i1 %736, label %737, label %825

737:                                              ; preds = %733
  %738 = load ptr, ptr %44, align 8, !tbaa !5
  %739 = load i64, ptr %738, align 8, !tbaa !9
  %740 = icmp sge i64 %739, 2
  br i1 %740, label %741, label %757

741:                                              ; preds = %737
  %742 = load ptr, ptr %45, align 8, !tbaa !5
  %743 = load i64, ptr %71, align 8, !tbaa !9
  %744 = load i64, ptr %60, align 8, !tbaa !9
  %745 = shl i64 %744, 1
  %746 = add nsw i64 %743, %745
  %747 = getelementptr inbounds double, ptr %742, i64 %746
  %748 = load double, ptr %747, align 8, !tbaa !11
  %749 = fcmp ogt double %748, 1.000000e+00
  br i1 %749, label %750, label %757

750:                                              ; preds = %741
  %751 = load ptr, ptr %45, align 8, !tbaa !5
  %752 = load i64, ptr %71, align 8, !tbaa !9
  %753 = load i64, ptr %60, align 8, !tbaa !9
  %754 = shl i64 %753, 1
  %755 = add nsw i64 %752, %754
  %756 = getelementptr inbounds double, ptr %751, i64 %755
  store double 1.000000e+00, ptr %756, align 8, !tbaa !11
  br label %757

757:                                              ; preds = %750, %741, %737
  %758 = load double, ptr %72, align 8, !tbaa !11
  %759 = load double, ptr %67, align 8, !tbaa !11
  %760 = fcmp olt double %758, %759
  br i1 %760, label %761, label %785

761:                                              ; preds = %757
  %762 = load ptr, ptr %45, align 8, !tbaa !5
  %763 = load i64, ptr %71, align 8, !tbaa !9
  %764 = load i64, ptr %60, align 8, !tbaa !9
  %765 = shl i64 %764, 1
  %766 = add nsw i64 %763, %765
  %767 = getelementptr inbounds double, ptr %762, i64 %766
  store double 1.000000e+00, ptr %767, align 8, !tbaa !11
  %768 = load ptr, ptr %45, align 8, !tbaa !5
  %769 = load i64, ptr %71, align 8, !tbaa !9
  %770 = load i64, ptr %60, align 8, !tbaa !9
  %771 = add nsw i64 %769, %770
  %772 = getelementptr inbounds double, ptr %768, i64 %771
  store double 0.000000e+00, ptr %772, align 8, !tbaa !11
  %773 = load ptr, ptr %51, align 8, !tbaa !5
  %774 = load i64, ptr %773, align 8, !tbaa !9
  %775 = load ptr, ptr %29, align 8, !tbaa !5
  %776 = load i64, ptr %775, align 8, !tbaa !9
  %777 = icmp sle i64 %774, %776
  br i1 %777, label %778, label %784

778:                                              ; preds = %761
  %779 = load ptr, ptr %29, align 8, !tbaa !5
  %780 = load i64, ptr %779, align 8, !tbaa !9
  %781 = load i64, ptr %71, align 8, !tbaa !9
  %782 = add nsw i64 %780, %781
  %783 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %782, ptr %783, align 8, !tbaa !9
  br label %784

784:                                              ; preds = %778, %761
  br label %809

785:                                              ; preds = %757
  %786 = load ptr, ptr %45, align 8, !tbaa !5
  %787 = load i64, ptr %71, align 8, !tbaa !9
  %788 = load i64, ptr %60, align 8, !tbaa !9
  %789 = shl i64 %788, 1
  %790 = add nsw i64 %787, %789
  %791 = getelementptr inbounds double, ptr %786, i64 %790
  %792 = load double, ptr %791, align 8, !tbaa !11
  %793 = load double, ptr %69, align 8, !tbaa !11
  %794 = fcmp olt double %792, %793
  br i1 %794, label %795, label %808

795:                                              ; preds = %785
  %796 = load double, ptr %69, align 8, !tbaa !11
  %797 = load ptr, ptr %45, align 8, !tbaa !5
  %798 = load i64, ptr %71, align 8, !tbaa !9
  %799 = load i64, ptr %60, align 8, !tbaa !9
  %800 = shl i64 %799, 1
  %801 = add nsw i64 %798, %800
  %802 = getelementptr inbounds double, ptr %797, i64 %801
  store double %796, ptr %802, align 8, !tbaa !11
  %803 = load ptr, ptr %45, align 8, !tbaa !5
  %804 = load i64, ptr %71, align 8, !tbaa !9
  %805 = load i64, ptr %60, align 8, !tbaa !9
  %806 = add nsw i64 %804, %805
  %807 = getelementptr inbounds double, ptr %803, i64 %806
  store double 1.000000e+00, ptr %807, align 8, !tbaa !11
  br label %808

808:                                              ; preds = %795, %785
  br label %809

809:                                              ; preds = %808, %784
  %810 = load ptr, ptr %44, align 8, !tbaa !5
  %811 = load i64, ptr %810, align 8, !tbaa !9
  %812 = icmp sge i64 %811, 3
  br i1 %812, label %813, label %821

813:                                              ; preds = %809
  %814 = load double, ptr %72, align 8, !tbaa !11
  %815 = load ptr, ptr %45, align 8, !tbaa !5
  %816 = load i64, ptr %71, align 8, !tbaa !9
  %817 = load i64, ptr %60, align 8, !tbaa !9
  %818 = mul nsw i64 %817, 3
  %819 = add nsw i64 %816, %818
  %820 = getelementptr inbounds double, ptr %815, i64 %819
  store double %814, ptr %820, align 8, !tbaa !11
  br label %821

821:                                              ; preds = %813, %809
  br label %822

822:                                              ; preds = %821
  %823 = load i64, ptr %71, align 8, !tbaa !9
  %824 = add nsw i64 %823, 1
  store i64 %824, ptr %71, align 8, !tbaa !9
  br label %733, !llvm.loop !17

825:                                              ; preds = %733
  br label %826

826:                                              ; preds = %825, %651, %644
  %827 = load ptr, ptr %44, align 8, !tbaa !5
  %828 = load i64, ptr %827, align 8, !tbaa !9
  %829 = icmp sge i64 %828, 1
  br i1 %829, label %830, label %974

830:                                              ; preds = %826
  %831 = load i64, ptr %83, align 8, !tbaa !9
  %832 = icmp sge i64 %831, 2
  br i1 %832, label %833, label %974

833:                                              ; preds = %830
  %834 = call double @dlamch_(ptr noundef @.str)
  %835 = call double @sqrt(double noundef %834) #4
  store double %835, ptr %75, align 8, !tbaa !11
  %836 = load ptr, ptr %30, align 8, !tbaa !5
  %837 = load i64, ptr %836, align 8, !tbaa !9
  store i64 %837, ptr %64, align 8, !tbaa !9
  store i64 1, ptr %71, align 8, !tbaa !9
  br label %838

838:                                              ; preds = %970, %833
  %839 = load i64, ptr %71, align 8, !tbaa !9
  %840 = load i64, ptr %64, align 8, !tbaa !9
  %841 = icmp sle i64 %839, %840
  br i1 %841, label %842, label %973

842:                                              ; preds = %838
  %843 = load ptr, ptr %46, align 8, !tbaa !5
  %844 = load i64, ptr %71, align 8, !tbaa !9
  %845 = load i64, ptr %62, align 8, !tbaa !9
  %846 = shl i64 %845, 1
  %847 = add nsw i64 %844, %846
  %848 = getelementptr inbounds double, ptr %843, i64 %847
  %849 = load double, ptr %848, align 8, !tbaa !11
  %850 = load double, ptr %75, align 8, !tbaa !11
  %851 = fcmp olt double %849, %850
  br i1 %851, label %852, label %877

852:                                              ; preds = %842
  %853 = load ptr, ptr %27, align 8, !tbaa !5
  %854 = load ptr, ptr %29, align 8, !tbaa !5
  %855 = load ptr, ptr %31, align 8, !tbaa !5
  %856 = load i64, ptr %53, align 8, !tbaa !9
  %857 = getelementptr inbounds %struct.doublecomplex, ptr %855, i64 %856
  %858 = load ptr, ptr %32, align 8, !tbaa !5
  %859 = load ptr, ptr %33, align 8, !tbaa !5
  %860 = load i64, ptr %55, align 8, !tbaa !9
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %859, i64 %860
  %862 = load ptr, ptr %34, align 8, !tbaa !5
  %863 = load ptr, ptr %35, align 8, !tbaa !5
  %864 = getelementptr inbounds i64, ptr %863, i64 1
  %865 = load ptr, ptr %40, align 8, !tbaa !5
  %866 = load i64, ptr %71, align 8, !tbaa !9
  %867 = load i64, ptr %58, align 8, !tbaa !9
  %868 = mul nsw i64 %866, %867
  %869 = add nsw i64 %868, 1
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %865, i64 %869
  %871 = load ptr, ptr %51, align 8, !tbaa !5
  %872 = load ptr, ptr %49, align 8, !tbaa !5
  %873 = getelementptr inbounds %struct.doublecomplex, ptr %872, i64 1
  %874 = load ptr, ptr %50, align 8, !tbaa !5
  %875 = getelementptr inbounds double, ptr %874, i64 1
  %876 = call double @zla_gercond_x__(ptr noundef %853, ptr noundef %854, ptr noundef %857, ptr noundef %858, ptr noundef %861, ptr noundef %862, ptr noundef %864, ptr noundef %870, ptr noundef %871, ptr noundef %873, ptr noundef %875, i64 noundef 1)
  store double %876, ptr %72, align 8, !tbaa !11
  br label %878

877:                                              ; preds = %842
  store double 0.000000e+00, ptr %72, align 8, !tbaa !11
  br label %878

878:                                              ; preds = %877, %852
  %879 = load ptr, ptr %44, align 8, !tbaa !5
  %880 = load i64, ptr %879, align 8, !tbaa !9
  %881 = icmp sge i64 %880, 2
  br i1 %881, label %882, label %898

882:                                              ; preds = %878
  %883 = load ptr, ptr %46, align 8, !tbaa !5
  %884 = load i64, ptr %71, align 8, !tbaa !9
  %885 = load i64, ptr %62, align 8, !tbaa !9
  %886 = shl i64 %885, 1
  %887 = add nsw i64 %884, %886
  %888 = getelementptr inbounds double, ptr %883, i64 %887
  %889 = load double, ptr %888, align 8, !tbaa !11
  %890 = fcmp ogt double %889, 1.000000e+00
  br i1 %890, label %891, label %898

891:                                              ; preds = %882
  %892 = load ptr, ptr %46, align 8, !tbaa !5
  %893 = load i64, ptr %71, align 8, !tbaa !9
  %894 = load i64, ptr %62, align 8, !tbaa !9
  %895 = shl i64 %894, 1
  %896 = add nsw i64 %893, %895
  %897 = getelementptr inbounds double, ptr %892, i64 %896
  store double 1.000000e+00, ptr %897, align 8, !tbaa !11
  br label %898

898:                                              ; preds = %891, %882, %878
  %899 = load double, ptr %72, align 8, !tbaa !11
  %900 = load double, ptr %67, align 8, !tbaa !11
  %901 = fcmp olt double %899, %900
  br i1 %901, label %902, label %933

902:                                              ; preds = %898
  %903 = load ptr, ptr %46, align 8, !tbaa !5
  %904 = load i64, ptr %71, align 8, !tbaa !9
  %905 = load i64, ptr %62, align 8, !tbaa !9
  %906 = shl i64 %905, 1
  %907 = add nsw i64 %904, %906
  %908 = getelementptr inbounds double, ptr %903, i64 %907
  store double 1.000000e+00, ptr %908, align 8, !tbaa !11
  %909 = load ptr, ptr %46, align 8, !tbaa !5
  %910 = load i64, ptr %71, align 8, !tbaa !9
  %911 = load i64, ptr %62, align 8, !tbaa !9
  %912 = add nsw i64 %910, %911
  %913 = getelementptr inbounds double, ptr %909, i64 %912
  store double 0.000000e+00, ptr %913, align 8, !tbaa !11
  %914 = load ptr, ptr %48, align 8, !tbaa !5
  %915 = getelementptr inbounds double, ptr %914, i64 3
  %916 = load double, ptr %915, align 8, !tbaa !11
  %917 = fcmp oeq double %916, 1.000000e+00
  br i1 %917, label %918, label %932

918:                                              ; preds = %902
  %919 = load ptr, ptr %51, align 8, !tbaa !5
  %920 = load i64, ptr %919, align 8, !tbaa !9
  %921 = load ptr, ptr %29, align 8, !tbaa !5
  %922 = load i64, ptr %921, align 8, !tbaa !9
  %923 = load i64, ptr %71, align 8, !tbaa !9
  %924 = add nsw i64 %922, %923
  %925 = icmp slt i64 %920, %924
  br i1 %925, label %926, label %932

926:                                              ; preds = %918
  %927 = load ptr, ptr %29, align 8, !tbaa !5
  %928 = load i64, ptr %927, align 8, !tbaa !9
  %929 = load i64, ptr %71, align 8, !tbaa !9
  %930 = add nsw i64 %928, %929
  %931 = load ptr, ptr %51, align 8, !tbaa !5
  store i64 %930, ptr %931, align 8, !tbaa !9
  br label %932

932:                                              ; preds = %926, %918, %902
  br label %957

933:                                              ; preds = %898
  %934 = load ptr, ptr %46, align 8, !tbaa !5
  %935 = load i64, ptr %71, align 8, !tbaa !9
  %936 = load i64, ptr %62, align 8, !tbaa !9
  %937 = shl i64 %936, 1
  %938 = add nsw i64 %935, %937
  %939 = getelementptr inbounds double, ptr %934, i64 %938
  %940 = load double, ptr %939, align 8, !tbaa !11
  %941 = load double, ptr %69, align 8, !tbaa !11
  %942 = fcmp olt double %940, %941
  br i1 %942, label %943, label %956

943:                                              ; preds = %933
  %944 = load double, ptr %69, align 8, !tbaa !11
  %945 = load ptr, ptr %46, align 8, !tbaa !5
  %946 = load i64, ptr %71, align 8, !tbaa !9
  %947 = load i64, ptr %62, align 8, !tbaa !9
  %948 = shl i64 %947, 1
  %949 = add nsw i64 %946, %948
  %950 = getelementptr inbounds double, ptr %945, i64 %949
  store double %944, ptr %950, align 8, !tbaa !11
  %951 = load ptr, ptr %46, align 8, !tbaa !5
  %952 = load i64, ptr %71, align 8, !tbaa !9
  %953 = load i64, ptr %62, align 8, !tbaa !9
  %954 = add nsw i64 %952, %953
  %955 = getelementptr inbounds double, ptr %951, i64 %954
  store double 1.000000e+00, ptr %955, align 8, !tbaa !11
  br label %956

956:                                              ; preds = %943, %933
  br label %957

957:                                              ; preds = %956, %932
  %958 = load ptr, ptr %44, align 8, !tbaa !5
  %959 = load i64, ptr %958, align 8, !tbaa !9
  %960 = icmp sge i64 %959, 3
  br i1 %960, label %961, label %969

961:                                              ; preds = %957
  %962 = load double, ptr %72, align 8, !tbaa !11
  %963 = load ptr, ptr %46, align 8, !tbaa !5
  %964 = load i64, ptr %71, align 8, !tbaa !9
  %965 = load i64, ptr %62, align 8, !tbaa !9
  %966 = mul nsw i64 %965, 3
  %967 = add nsw i64 %964, %966
  %968 = getelementptr inbounds double, ptr %963, i64 %967
  store double %962, ptr %968, align 8, !tbaa !11
  br label %969

969:                                              ; preds = %961, %957
  br label %970

970:                                              ; preds = %969
  %971 = load i64, ptr %71, align 8, !tbaa !9
  %972 = add nsw i64 %971, 1
  store i64 %972, ptr %71, align 8, !tbaa !9
  br label %838, !llvm.loop !18

973:                                              ; preds = %838
  br label %974

974:                                              ; preds = %973, %830, %826
  store i32 0, ptr %26, align 4
  store i32 1, ptr %85, align 4
  br label %975

975:                                              ; preds = %974, %437, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 1, 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 8, 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
  %976 = load i32, ptr %26, align 4
  ret i32 %976
}

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

declare i64 @ilatrans_(ptr noundef) #2

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

declare double @zla_gercond_x__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) #2

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind }

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

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


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

%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 @zgerfsx_(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 nocapture noundef readonly %17, ptr noundef %18, ptr noundef %19, ptr nocapture noundef readonly %20, ptr nocapture noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24) local_unnamed_addr #0 {
  %26 = ptrtoint ptr %19 to i64
  %27 = ptrtoint ptr %16 to i64
  %28 = ptrtoint ptr %18 to i64
  %29 = ptrtoint ptr %19 to i64
  %30 = ptrtoint ptr %16 to i64
  %31 = ptrtoint ptr %18 to i64
  %32 = alloca i64, align 8
  %33 = alloca double, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca [1 x i8], align 1
  %37 = alloca i64, align 8
  %38 = alloca double, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.start.p0(i64 8, 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 1, 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
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #6
  %44 = load i64, ptr %3, align 8, !tbaa !5
  %45 = xor i64 %44, -1
  %46 = getelementptr inbounds double, ptr %19, i64 %45
  %47 = getelementptr inbounds double, ptr %18, i64 %45
  %48 = load i64, ptr %14, align 8, !tbaa !5
  %49 = xor i64 %48, -1
  %50 = getelementptr inbounds %struct.doublecomplex, ptr %13, i64 %49
  %51 = getelementptr inbounds i8, ptr %16, i64 -8
  store i64 0, ptr %24, align 8, !tbaa !5
  %52 = tail call i64 @ilatrans_(ptr noundef %0) #6
  store i64 %52, ptr %35, align 8, !tbaa !5
  %53 = load i64, ptr %20, align 8, !tbaa !5
  %54 = icmp sgt i64 %53, 0
  br i1 %54, label %55, label %61

55:                                               ; preds = %25
  %56 = load double, ptr %21, align 8, !tbaa !9
  %57 = fcmp olt double %56, 0.000000e+00
  br i1 %57, label %58, label %59

58:                                               ; preds = %55
  store double 1.000000e+00, ptr %21, align 8, !tbaa !9
  br label %61

59:                                               ; preds = %55
  %60 = fptosi double %56 to i64
  br label %61

61:                                               ; preds = %58, %59, %25
  %.0367 = phi i64 [ 1, %58 ], [ %60, %59 ], [ 1, %25 ]
  %62 = load i64, ptr %2, align 8, !tbaa !5
  %63 = sitofp i64 %62 to double
  %64 = tail call double @dlamch_(ptr noundef nonnull @.str) #6
  %65 = fmul double %64, %63
  store i64 10, ptr %41, align 8, !tbaa !5
  store double 5.000000e-01, ptr %43, align 8, !tbaa !9
  store double 2.500000e-01, ptr %33, align 8, !tbaa !9
  store i64 0, ptr %37, align 8, !tbaa !5
  %66 = load i64, ptr %20, align 8, !tbaa !5
  %67 = icmp sgt i64 %66, 1
  br i1 %67, label %68, label %.thread

68:                                               ; preds = %61
  %69 = getelementptr inbounds i8, ptr %21, i64 8
  %70 = load double, ptr %69, align 8, !tbaa !9
  %71 = fcmp olt double %70, 0.000000e+00
  br i1 %71, label %72, label %73

72:                                               ; preds = %68
  store double 1.000000e+01, ptr %69, align 8, !tbaa !9
  br label %75

73:                                               ; preds = %68
  %74 = fptosi double %70 to i64
  store i64 %74, ptr %41, align 8, !tbaa !5
  br label %75

75:                                               ; preds = %72, %73
  %.not = icmp eq i64 %66, 2
  br i1 %.not, label %.thread, label %76

76:                                               ; preds = %75
  %77 = getelementptr inbounds i8, ptr %21, i64 16
  %78 = load double, ptr %77, align 8, !tbaa !9
  %79 = fcmp olt double %78, 0.000000e+00
  br i1 %79, label %80, label %81

80:                                               ; preds = %76
  store double 1.000000e+00, ptr %77, align 8, !tbaa !9
  br label %.thread

81:                                               ; preds = %76
  %82 = fcmp oeq double %78, 0.000000e+00
  %83 = zext i1 %82 to i64
  store i64 %83, ptr %37, align 8, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %61, %81, %80, %75
  %84 = phi i64 [ 0, %61 ], [ %83, %81 ], [ 0, %80 ], [ 0, %75 ]
  %85 = icmp eq i64 %.0367, 0
  br i1 %85, label %89, label %86

86:                                               ; preds = %.thread
  %87 = load i64, ptr %17, align 8, !tbaa !5
  %88 = icmp eq i64 %87, 0
  br i1 %88, label %89, label %90

89:                                               ; preds = %86, %.thread
  store i64 0, ptr %42, align 8, !tbaa !5
  br label %93

90:                                               ; preds = %86
  %.not381 = icmp eq i64 %84, 0
  br i1 %.not381, label %92, label %91

91:                                               ; preds = %90
  store i64 1, ptr %42, align 8, !tbaa !5
  br label %93

92:                                               ; preds = %90
  store i64 2, ptr %42, align 8, !tbaa !5
  br label %93

93:                                               ; preds = %91, %92, %89
  %94 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %95 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.2) #6
  %.not382 = icmp eq i64 %95, 0
  br i1 %.not382, label %96, label %99

96:                                               ; preds = %93
  %97 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %98 = icmp ne i64 %97, 0
  br label %99

99:                                               ; preds = %96, %93
  %100 = phi i1 [ true, %93 ], [ %98, %96 ]
  %101 = zext i1 %100 to i64
  store i64 %101, ptr %40, align 8, !tbaa !5
  %102 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not383 = icmp eq i64 %102, 0
  br i1 %.not383, label %103, label %106

103:                                              ; preds = %99
  %104 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %105 = icmp ne i64 %104, 0
  br label %106

106:                                              ; preds = %103, %99
  %107 = phi i1 [ true, %99 ], [ %105, %103 ]
  %108 = zext i1 %107 to i64
  store i64 %108, ptr %39, align 8, !tbaa !5
  %109 = icmp eq i64 %52, -1
  br i1 %109, label %.thread400.sink.split, label %110

110:                                              ; preds = %106
  %or.cond = select i1 %100, i1 true, i1 %107
  br i1 %or.cond, label %113, label %111

111:                                              ; preds = %110
  %112 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not384 = icmp eq i64 %112, 0
  br i1 %.not384, label %.thread400.sink.split, label %113

113:                                              ; preds = %111, %110
  %114 = load i64, ptr %2, align 8, !tbaa !5
  %115 = icmp slt i64 %114, 0
  br i1 %115, label %.thread400.sink.split, label %116

116:                                              ; preds = %113
  %117 = load i64, ptr %3, align 8, !tbaa !5
  %118 = icmp slt i64 %117, 0
  br i1 %118, label %.thread400.sink.split, label %119

119:                                              ; preds = %116
  %120 = load i64, ptr %5, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %114, i64 1)
  %121 = icmp slt i64 %120, %spec.select
  br i1 %121, label %.thread400.sink.split, label %122

122:                                              ; preds = %119
  %123 = load i64, ptr %7, align 8, !tbaa !5
  %124 = icmp slt i64 %123, %spec.select
  br i1 %124, label %.thread400.sink.split, label %125

125:                                              ; preds = %122
  %126 = load i64, ptr %12, align 8, !tbaa !5
  %127 = icmp slt i64 %126, %spec.select
  br i1 %127, label %.thread400.sink.split, label %128

128:                                              ; preds = %125
  %129 = load i64, ptr %14, align 8, !tbaa !5
  %130 = icmp slt i64 %129, %spec.select
  br i1 %130, label %.thread400.sink.split, label %131

131:                                              ; preds = %128
  %.pr = load i64, ptr %24, align 8, !tbaa !5
  %.not385 = icmp eq i64 %.pr, 0
  br i1 %.not385, label %135, label %.thread400

.thread400.sink.split:                            ; preds = %128, %125, %122, %119, %116, %113, %111, %106
  %.sink = phi i64 [ -1, %106 ], [ -2, %111 ], [ -3, %113 ], [ -4, %116 ], [ -6, %119 ], [ -8, %122 ], [ -13, %125 ], [ -15, %128 ]
  store i64 %.sink, ptr %24, align 8, !tbaa !5
  br label %.thread400

.thread400:                                       ; preds = %.thread400.sink.split, %131
  %132 = phi i64 [ %.pr, %131 ], [ %.sink, %.thread400.sink.split ]
  %133 = sub nsw i64 0, %132
  store i64 %133, ptr %32, align 8, !tbaa !5
  %134 = call i32 @xerbla_(ptr noundef nonnull @.str.5, ptr noundef nonnull %32) #6
  br label %.loopexit

135:                                              ; preds = %131
  %136 = icmp eq i64 %114, 0
  br i1 %136, label %139, label %137

137:                                              ; preds = %135
  %138 = icmp eq i64 %117, 0
  br i1 %138, label %.thread436, label %.lr.ph

.thread436:                                       ; preds = %137
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  br label %.loopexit

139:                                              ; preds = %135
  store double 1.000000e+00, ptr %15, align 8, !tbaa !9
  %.not396418 = icmp eq i64 %117, 0
  br i1 %.not396418, label %.loopexit, label %.lr.ph421

.lr.ph421:                                        ; preds = %139
  %140 = load i64, ptr %17, align 8, !tbaa !5
  %141 = icmp sgt i64 %140, 0
  br i1 %141, label %.lr.ph421.split.us.preheader, label %.lr.ph421.split.preheader

.lr.ph421.split.us.preheader:                     ; preds = %.lr.ph421
  %min.iters.check470 = icmp ult i64 %117, 10
  br i1 %min.iters.check470, label %.lr.ph421.split.us.preheader481, label %vector.memcheck462

.lr.ph421.split.us.preheader481:                  ; preds = %middle.block468, %vector.memcheck462, %.lr.ph421.split.us.preheader
  %.0365419.us.ph = phi i64 [ 1, %vector.memcheck462 ], [ 1, %.lr.ph421.split.us.preheader ], [ %ind.end474, %middle.block468 ]
  %xtraiter487 = and i64 %117, 1
  %lcmp.mod488.not = icmp eq i64 %xtraiter487, 0
  br i1 %lcmp.mod488.not, label %.lr.ph421.split.us.prol.loopexit, label %.lr.ph421.split.us.prol

.lr.ph421.split.us.prol:                          ; preds = %.lr.ph421.split.us.preheader481
  %142 = getelementptr inbounds double, ptr %51, i64 %.0365419.us.ph
  store double 0.000000e+00, ptr %142, align 8, !tbaa !9
  %143 = add nsw i64 %.0365419.us.ph, %44
  %144 = getelementptr inbounds double, ptr %47, i64 %143
  store double 1.000000e+00, ptr %144, align 8, !tbaa !9
  %145 = getelementptr inbounds double, ptr %46, i64 %143
  store double 1.000000e+00, ptr %145, align 8, !tbaa !9
  %146 = add nuw i64 %.0365419.us.ph, 1
  br label %.lr.ph421.split.us.prol.loopexit

.lr.ph421.split.us.prol.loopexit:                 ; preds = %.lr.ph421.split.us.prol, %.lr.ph421.split.us.preheader481
  %.0365419.us.unr = phi i64 [ %.0365419.us.ph, %.lr.ph421.split.us.preheader481 ], [ %146, %.lr.ph421.split.us.prol ]
  %147 = icmp eq i64 %117, %.0365419.us.ph
  br i1 %147, label %.loopexit, label %.lr.ph421.split.us

vector.memcheck462:                               ; preds = %.lr.ph421.split.us.preheader
  %148 = sub i64 %28, %27
  %diff.check463 = icmp ult i64 %148, 32
  %149 = sub i64 %26, %27
  %diff.check464 = icmp ult i64 %149, 32
  %conflict.rdx465 = or i1 %diff.check463, %diff.check464
  %150 = sub i64 %26, %28
  %diff.check466 = icmp ult i64 %150, 32
  %conflict.rdx467 = or i1 %conflict.rdx465, %diff.check466
  br i1 %conflict.rdx467, label %.lr.ph421.split.us.preheader481, label %vector.ph471

vector.ph471:                                     ; preds = %vector.memcheck462
  %n.vec473 = and i64 %117, 9223372036854775804
  %ind.end474 = or disjoint i64 %n.vec473, 1
  br label %vector.body476

vector.body476:                                   ; preds = %vector.body476, %vector.ph471
  %index477 = phi i64 [ 0, %vector.ph471 ], [ %index.next479, %vector.body476 ]
  %offset.idx478 = or disjoint i64 %index477, 1
  %151 = getelementptr double, ptr %16, i64 %index477
  %152 = getelementptr inbounds i8, ptr %151, i64 16
  store <2 x double> zeroinitializer, ptr %151, align 8, !tbaa !9
  store <2 x double> zeroinitializer, ptr %152, align 8, !tbaa !9
  %153 = add nsw i64 %offset.idx478, %44
  %154 = getelementptr inbounds double, ptr %47, i64 %153
  %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
  %156 = getelementptr inbounds double, ptr %46, i64 %153
  %157 = getelementptr inbounds i8, ptr %156, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %156, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %157, align 8, !tbaa !9
  %index.next479 = add nuw i64 %index477, 4
  %158 = icmp eq i64 %index.next479, %n.vec473
  br i1 %158, label %middle.block468, label %vector.body476, !llvm.loop !11

middle.block468:                                  ; preds = %vector.body476
  %cmp.n480 = icmp eq i64 %117, %n.vec473
  br i1 %cmp.n480, label %.loopexit, label %.lr.ph421.split.us.preheader481

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

.lr.ph421.split.us:                               ; preds = %.lr.ph421.split.us.prol.loopexit, %.lr.ph421.split.us
  %.0365419.us = phi i64 [ %168, %.lr.ph421.split.us ], [ %.0365419.us.unr, %.lr.ph421.split.us.prol.loopexit ]
  %160 = getelementptr inbounds double, ptr %51, i64 %.0365419.us
  store double 0.000000e+00, ptr %160, align 8, !tbaa !9
  %161 = add nsw i64 %.0365419.us, %44
  %162 = getelementptr inbounds double, ptr %47, i64 %161
  store double 1.000000e+00, ptr %162, align 8, !tbaa !9
  %163 = getelementptr inbounds double, ptr %46, i64 %161
  store double 1.000000e+00, ptr %163, align 8, !tbaa !9
  %164 = add nuw i64 %.0365419.us, 1
  %165 = getelementptr double, ptr %16, i64 %.0365419.us
  store double 0.000000e+00, ptr %165, align 8, !tbaa !9
  %166 = getelementptr inbounds double, ptr %18, i64 %.0365419.us
  store double 1.000000e+00, ptr %166, align 8, !tbaa !9
  %167 = getelementptr inbounds double, ptr %19, i64 %.0365419.us
  store double 1.000000e+00, ptr %167, align 8, !tbaa !9
  %168 = add nuw i64 %.0365419.us, 2
  %exitcond429.not.1 = icmp eq i64 %164, %117
  br i1 %exitcond429.not.1, label %.loopexit, label %.lr.ph421.split.us, !llvm.loop !15

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

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

.lr.ph.split.preheader485:                        ; preds = %middle.block, %.lr.ph.split.preheader
  %.1366405.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 %117, 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 ]
  %171 = getelementptr double, ptr %16, i64 %index
  %172 = getelementptr inbounds i8, ptr %171, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %171, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %172, align 8, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %173 = icmp eq i64 %index.next, %n.vec
  br i1 %173, label %middle.block, label %vector.body, !llvm.loop !16

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

.lr.ph.split.us.preheader:                        ; preds = %.lr.ph
  %min.iters.check451 = icmp ult i64 %117, 10
  br i1 %min.iters.check451, label %.lr.ph.split.us.preheader484, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.split.us.preheader
  %174 = sub i64 %31, %30
  %diff.check = icmp ult i64 %174, 32
  %175 = sub i64 %29, %30
  %diff.check446 = icmp ult i64 %175, 32
  %conflict.rdx = or i1 %diff.check, %diff.check446
  %176 = sub i64 %29, %31
  %diff.check447 = icmp ult i64 %176, 32
  %conflict.rdx448 = or i1 %conflict.rdx, %diff.check447
  br i1 %conflict.rdx448, label %.lr.ph.split.us.preheader484, label %vector.ph452

vector.ph452:                                     ; preds = %vector.memcheck
  %n.vec454 = and i64 %117, 9223372036854775804
  %ind.end455 = or disjoint i64 %n.vec454, 1
  br label %vector.body457

vector.body457:                                   ; preds = %vector.body457, %vector.ph452
  %index458 = phi i64 [ 0, %vector.ph452 ], [ %index.next460, %vector.body457 ]
  %offset.idx459 = or disjoint i64 %index458, 1
  %177 = getelementptr double, ptr %16, i64 %index458
  %178 = getelementptr inbounds i8, ptr %177, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %177, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %178, align 8, !tbaa !9
  %179 = add nsw i64 %offset.idx459, %44
  %180 = getelementptr inbounds double, ptr %47, i64 %179
  %181 = getelementptr inbounds i8, ptr %180, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %180, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %181, align 8, !tbaa !9
  %182 = getelementptr inbounds double, ptr %46, i64 %179
  %183 = getelementptr inbounds i8, ptr %182, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %182, align 8, !tbaa !9
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %183, align 8, !tbaa !9
  %index.next460 = add nuw i64 %index458, 4
  %184 = icmp eq i64 %index.next460, %n.vec454
  br i1 %184, label %middle.block449, label %vector.body457, !llvm.loop !17

middle.block449:                                  ; preds = %vector.body457
  %cmp.n461 = icmp eq i64 %117, %n.vec454
  br i1 %cmp.n461, label %._crit_edge, label %.lr.ph.split.us.preheader484

.lr.ph.split.us.preheader484:                     ; preds = %middle.block449, %vector.memcheck, %.lr.ph.split.us.preheader
  %.1366405.us.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph.split.us.preheader ], [ %ind.end455, %middle.block449 ]
  %xtraiter = and i64 %117, 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.preheader484
  %185 = getelementptr inbounds double, ptr %51, i64 %.1366405.us.ph
  store double 1.000000e+00, ptr %185, align 8, !tbaa !9
  %186 = add nsw i64 %.1366405.us.ph, %44
  %187 = getelementptr inbounds double, ptr %47, i64 %186
  store double 1.000000e+00, ptr %187, align 8, !tbaa !9
  %188 = getelementptr inbounds double, ptr %46, i64 %186
  store double 1.000000e+00, ptr %188, align 8, !tbaa !9
  %189 = add nuw i64 %.1366405.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.preheader484
  %.1366405.us.unr = phi i64 [ %.1366405.us.ph, %.lr.ph.split.us.preheader484 ], [ %189, %.lr.ph.split.us.prol ]
  %190 = icmp eq i64 %117, %.1366405.us.ph
  br i1 %190, label %._crit_edge, label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %.lr.ph.split.us.prol.loopexit, %.lr.ph.split.us
  %.1366405.us = phi i64 [ %199, %.lr.ph.split.us ], [ %.1366405.us.unr, %.lr.ph.split.us.prol.loopexit ]
  %191 = getelementptr inbounds double, ptr %51, i64 %.1366405.us
  store double 1.000000e+00, ptr %191, align 8, !tbaa !9
  %192 = add nsw i64 %.1366405.us, %44
  %193 = getelementptr inbounds double, ptr %47, i64 %192
  store double 1.000000e+00, ptr %193, align 8, !tbaa !9
  %194 = getelementptr inbounds double, ptr %46, i64 %192
  store double 1.000000e+00, ptr %194, align 8, !tbaa !9
  %195 = add nuw i64 %.1366405.us, 1
  %196 = getelementptr double, ptr %16, i64 %.1366405.us
  store double 1.000000e+00, ptr %196, align 8, !tbaa !9
  %197 = getelementptr inbounds double, ptr %18, i64 %.1366405.us
  store double 1.000000e+00, ptr %197, align 8, !tbaa !9
  %198 = getelementptr inbounds double, ptr %19, i64 %.1366405.us
  store double 1.000000e+00, ptr %198, align 8, !tbaa !9
  %199 = add nuw i64 %.1366405.us, 2
  %exitcond426.not.1 = icmp eq i64 %195, %117
  br i1 %exitcond426.not.1, label %._crit_edge, label %.lr.ph.split.us, !llvm.loop !18

.lr.ph.split:                                     ; preds = %.lr.ph.split.preheader485, %.lr.ph.split
  %.1366405 = phi i64 [ %201, %.lr.ph.split ], [ %.1366405.ph, %.lr.ph.split.preheader485 ]
  %200 = getelementptr inbounds double, ptr %51, i64 %.1366405
  store double 1.000000e+00, ptr %200, align 8, !tbaa !9
  %201 = add nuw i64 %.1366405, 1
  %exitcond.not = icmp eq i64 %.1366405, %117
  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.block449
  %202 = icmp ne i64 %94, 0
  %. = select i1 %202, i8 73, i8 49
  store i8 %., ptr %36, align 1, !tbaa !20
  %203 = call double @zlange_(ptr noundef nonnull %36, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %23) #6
  store double %203, ptr %38, align 8, !tbaa !9
  %204 = call i32 @zgecon_(ptr noundef nonnull %36, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef nonnull %38, ptr noundef nonnull %15, ptr noundef %22, ptr noundef %23, ptr noundef nonnull %24) #6
  br i1 %85, label %213, label %205

205:                                              ; preds = %._crit_edge
  %206 = call i64 @ilaprec_(ptr noundef nonnull @.str.6) #6
  store i64 %206, ptr %34, align 8, !tbaa !5
  %207 = load i64, ptr %2, align 8, !tbaa !5
  %208 = getelementptr %struct.doublecomplex, ptr %22, i64 %207
  br i1 %202, label %209, label %211

209:                                              ; preds = %205
  %210 = call i32 @zla_gerfsx_extended__(ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %39, ptr noundef %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull %42, ptr noundef %18, ptr noundef %19, ptr noundef %22, ptr noundef %23, ptr noundef %208, ptr noundef %23, ptr noundef nonnull %15, ptr noundef nonnull %41, ptr noundef nonnull %43, ptr noundef nonnull %33, ptr noundef nonnull %37, ptr noundef nonnull %24) #6
  br label %213

211:                                              ; preds = %205
  %212 = call i32 @zla_gerfsx_extended__(ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %40, ptr noundef %9, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %16, ptr noundef nonnull %42, ptr noundef %18, ptr noundef %19, ptr noundef %22, ptr noundef %23, ptr noundef %208, ptr noundef %23, ptr noundef nonnull %15, ptr noundef nonnull %41, ptr noundef nonnull %43, ptr noundef nonnull %33, ptr noundef nonnull %37, ptr noundef nonnull %24) #6
  br label %213

213:                                              ; preds = %209, %211, %._crit_edge
  %214 = load i64, ptr %2, align 8, !tbaa !5
  %215 = sitofp i64 %214 to double
  %216 = call double @sqrt(double noundef %215) #6
  %217 = fcmp ole double %216, 1.000000e+01
  %218 = select i1 %217, double 1.000000e+01, double %216
  %219 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %220 = fmul double %219, %218
  %221 = load i64, ptr %17, align 8, !tbaa !5
  %222 = icmp sgt i64 %221, 0
  %223 = load i64, ptr %42, align 8
  %224 = icmp sgt i64 %223, 0
  %or.cond3 = select i1 %222, i1 %224, i1 false
  br i1 %or.cond3, label %225, label %.loopexit403

225:                                              ; preds = %213
  %226 = load i64, ptr %39, align 8, !tbaa !5
  %227 = icmp ne i64 %226, 0
  %or.cond5 = and i1 %202, %227
  br i1 %or.cond5, label %228, label %230

228:                                              ; preds = %225
  %229 = call double @zla_gercond_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 %10, ptr noundef nonnull @c_true, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %237

230:                                              ; preds = %225
  %231 = load i64, ptr %40, align 8, !tbaa !5
  %232 = icmp eq i64 %231, 0
  %or.cond7 = or i1 %202, %232
  br i1 %or.cond7, label %235, label %233

233:                                              ; preds = %230
  %234 = call double @zla_gercond_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 %9, ptr noundef nonnull @c_true, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %237

235:                                              ; preds = %230
  %236 = call double @zla_gercond_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 %10, ptr noundef nonnull @c_false, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %237

237:                                              ; preds = %233, %235, %228
  %.0364 = phi double [ %229, %228 ], [ %236, %235 ], [ %234, %233 ]
  %238 = load i64, ptr %3, align 8, !tbaa !5
  %.not388406 = icmp slt i64 %238, 1
  br i1 %.not388406, label %..loopexit403_crit_edge, label %.lr.ph409

..loopexit403_crit_edge:                          ; preds = %237
  %.pre434 = load i64, ptr %17, align 8, !tbaa !5
  br label %.loopexit403

.lr.ph409:                                        ; preds = %237
  %.idx391 = shl i64 %44, 4
  %invariant.gep = getelementptr i8, ptr %47, i64 %.idx391
  %239 = fcmp olt double %.0364, %65
  %.idx395 = mul i64 %44, 24
  %invariant.gep410 = getelementptr i8, ptr %47, i64 %.idx395
  %.pre432 = load i64, ptr %17, align 8, !tbaa !5
  br i1 %239, label %.lr.ph409.split.us, label %.lr.ph409.split.preheader

.lr.ph409.split.preheader:                        ; preds = %.lr.ph409
  %240 = icmp sgt i64 %.pre432, 1
  %invariant.gep441 = getelementptr i8, ptr %47, i64 %.idx391
  %241 = icmp sgt i64 %.pre432, 2
  br label %.lr.ph409.split

.lr.ph409.split.us:                               ; preds = %.lr.ph409, %254
  %242 = phi i64 [ %251, %254 ], [ %.pre432, %.lr.ph409 ]
  %.2407.us = phi i64 [ %255, %254 ], [ 1, %.lr.ph409 ]
  %243 = getelementptr double, ptr %47, i64 %.2407.us
  %244 = getelementptr i8, ptr %243, i64 %.idx391
  store double 1.000000e+00, ptr %244, align 8, !tbaa !9
  %245 = getelementptr double, ptr %243, i64 %44
  store double 0.000000e+00, ptr %245, align 8, !tbaa !9
  %246 = load i64, ptr %24, align 8, !tbaa !5
  %247 = load i64, ptr %2, align 8, !tbaa !5
  %.not394.us = icmp sgt i64 %246, %247
  br i1 %.not394.us, label %250, label %248

248:                                              ; preds = %.lr.ph409.split.us
  %249 = add nsw i64 %247, %.2407.us
  store i64 %249, ptr %24, align 8, !tbaa !5
  %.pre433 = load i64, ptr %17, align 8, !tbaa !5
  br label %250

250:                                              ; preds = %248, %.lr.ph409.split.us
  %251 = phi i64 [ %.pre433, %248 ], [ %242, %.lr.ph409.split.us ]
  %252 = icmp sgt i64 %251, 2
  br i1 %252, label %253, label %254

253:                                              ; preds = %250
  %gep411.us = getelementptr double, ptr %invariant.gep410, i64 %.2407.us
  store double %.0364, ptr %gep411.us, align 8, !tbaa !9
  br label %254

254:                                              ; preds = %253, %250
  %255 = add nuw i64 %.2407.us, 1
  %exitcond428.not = icmp eq i64 %.2407.us, %238
  br i1 %exitcond428.not, label %.loopexit403, label %.lr.ph409.split.us, !llvm.loop !21

.lr.ph409.split:                                  ; preds = %.lr.ph409.split.preheader, %269
  %.2407 = phi i64 [ %270, %269 ], [ 1, %.lr.ph409.split.preheader ]
  br i1 %240, label %256, label %.lr.ph409.split._crit_edge

.lr.ph409.split._crit_edge:                       ; preds = %.lr.ph409.split
  %gep442 = getelementptr double, ptr %invariant.gep441, i64 %.2407
  %.pre431 = load double, ptr %gep442, align 8, !tbaa !9
  br label %260

256:                                              ; preds = %.lr.ph409.split
  %gep = getelementptr double, ptr %invariant.gep, i64 %.2407
  %257 = load double, ptr %gep, align 8, !tbaa !9
  %258 = fcmp ogt double %257, 1.000000e+00
  br i1 %258, label %259, label %260

259:                                              ; preds = %256
  store double 1.000000e+00, ptr %gep, align 8, !tbaa !9
  br label %260

260:                                              ; preds = %.lr.ph409.split._crit_edge, %259, %256
  %261 = phi double [ %.pre431, %.lr.ph409.split._crit_edge ], [ 1.000000e+00, %259 ], [ %257, %256 ]
  %262 = fcmp olt double %261, %220
  br i1 %262, label %263, label %267

263:                                              ; preds = %260
  %264 = getelementptr double, ptr %47, i64 %.2407
  %265 = getelementptr i8, ptr %264, i64 %.idx391
  store double %220, ptr %265, align 8, !tbaa !9
  %266 = getelementptr double, ptr %264, i64 %44
  store double 1.000000e+00, ptr %266, align 8, !tbaa !9
  br label %267

267:                                              ; preds = %260, %263
  br i1 %241, label %268, label %269

268:                                              ; preds = %267
  %gep411 = getelementptr double, ptr %invariant.gep410, i64 %.2407
  store double %.0364, ptr %gep411, align 8, !tbaa !9
  br label %269

269:                                              ; preds = %267, %268
  %270 = add nuw i64 %.2407, 1
  %exitcond427.not = icmp eq i64 %.2407, %238
  br i1 %exitcond427.not, label %.loopexit403, label %.lr.ph409.split, !llvm.loop !21

.loopexit403:                                     ; preds = %269, %254, %..loopexit403_crit_edge, %213
  %271 = phi i64 [ %.pre434, %..loopexit403_crit_edge ], [ %221, %213 ], [ %251, %254 ], [ %.pre432, %269 ]
  %272 = icmp sgt i64 %271, 0
  %273 = load i64, ptr %42, align 8
  %274 = icmp sgt i64 %273, 1
  %or.cond9 = select i1 %272, i1 %274, i1 false
  br i1 %or.cond9, label %275, label %.loopexit

275:                                              ; preds = %.loopexit403
  %276 = call double @dlamch_(ptr noundef nonnull @.str) #6
  %277 = call double @sqrt(double noundef %276) #6
  %278 = load i64, ptr %3, align 8, !tbaa !5
  %invariant.gep412 = getelementptr i8, ptr %50, i64 16
  %.not389414 = icmp slt i64 %278, 1
  br i1 %.not389414, label %.loopexit, label %.lr.ph417

.lr.ph417:                                        ; preds = %275
  %.idx = shl i64 %44, 4
  %279 = getelementptr inbounds i8, ptr %21, i64 16
  %.idx390 = mul i64 %44, 24
  br label %280

280:                                              ; preds = %.lr.ph417, %317
  %.3415 = phi i64 [ 1, %.lr.ph417 ], [ %318, %317 ]
  %281 = getelementptr double, ptr %46, i64 %.3415
  %282 = getelementptr i8, ptr %281, i64 %.idx
  %283 = load double, ptr %282, align 8, !tbaa !9
  %284 = fcmp olt double %283, %277
  br i1 %284, label %285, label %288

285:                                              ; preds = %280
  %286 = mul nsw i64 %.3415, %48
  %gep413 = getelementptr %struct.doublecomplex, ptr %invariant.gep412, i64 %286
  %287 = call double @zla_gercond_x__(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 %gep413, ptr noundef nonnull %24, ptr noundef %22, ptr noundef %23, i64 noundef 1) #6
  br label %288

288:                                              ; preds = %280, %285
  %.1 = phi double [ %287, %285 ], [ 0.000000e+00, %280 ]
  %289 = load i64, ptr %17, align 8, !tbaa !5
  %290 = icmp sgt i64 %289, 1
  br i1 %290, label %291, label %295

291:                                              ; preds = %288
  %292 = load double, ptr %282, align 8, !tbaa !9
  %293 = fcmp ogt double %292, 1.000000e+00
  br i1 %293, label %294, label %295

294:                                              ; preds = %291
  store double 1.000000e+00, ptr %282, align 8, !tbaa !9
  br label %295

295:                                              ; preds = %294, %291, %288
  %296 = fcmp olt double %.1, %65
  br i1 %296, label %297, label %307

297:                                              ; preds = %295
  store double 1.000000e+00, ptr %282, align 8, !tbaa !9
  %298 = getelementptr double, ptr %281, i64 %44
  store double 0.000000e+00, ptr %298, align 8, !tbaa !9
  %299 = load double, ptr %279, align 8, !tbaa !9
  %300 = fcmp oeq double %299, 1.000000e+00
  br i1 %300, label %301, label %312

301:                                              ; preds = %297
  %302 = load i64, ptr %24, align 8, !tbaa !5
  %303 = load i64, ptr %2, align 8, !tbaa !5
  %304 = add nsw i64 %303, %.3415
  %305 = icmp slt i64 %302, %304
  br i1 %305, label %306, label %312

306:                                              ; preds = %301
  store i64 %304, ptr %24, align 8, !tbaa !5
  %.pre435 = load i64, ptr %17, align 8, !tbaa !5
  br label %312

307:                                              ; preds = %295
  %308 = load double, ptr %282, align 8, !tbaa !9
  %309 = fcmp olt double %308, %220
  br i1 %309, label %310, label %312

310:                                              ; preds = %307
  store double %220, ptr %282, align 8, !tbaa !9
  %311 = getelementptr double, ptr %281, i64 %44
  store double 1.000000e+00, ptr %311, align 8, !tbaa !9
  br label %312

312:                                              ; preds = %307, %310, %297, %301, %306
  %313 = phi i64 [ %289, %307 ], [ %289, %310 ], [ %289, %297 ], [ %289, %301 ], [ %.pre435, %306 ]
  %314 = icmp sgt i64 %313, 2
  br i1 %314, label %315, label %317

315:                                              ; preds = %312
  %316 = getelementptr i8, ptr %281, i64 %.idx390
  store double %.1, ptr %316, align 8, !tbaa !9
  br label %317

317:                                              ; preds = %312, %315
  %318 = add nuw nsw i64 %.3415, 1
  %.not389.not = icmp slt i64 %.3415, %278
  br i1 %.not389.not, label %280, label %.loopexit, !llvm.loop !22

.loopexit:                                        ; preds = %317, %.lr.ph421.split.us.prol.loopexit, %.lr.ph421.split.us, %middle.block468, %.thread436, %.lr.ph421.split.preheader, %275, %139, %.loopexit403, %.thread400
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #6
  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 1, 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 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #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 i64 @ilatrans_(ptr noundef) local_unnamed_addr #2

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

declare i32 @zgecon_(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_gerfsx_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, ptr 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_gercond_c__(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

declare double @zla_gercond_x__(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i64 noundef) local_unnamed_addr #2

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nofree nounwind willreturn memory(write) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #6 = { nounwind }

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

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


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