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

; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 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 [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1

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

168:                                              ; preds = %29
  %169 = load i64, ptr %83, align 8, !tbaa !9
  %170 = icmp ne i64 %169, 0
  br i1 %170, label %171, label %173

171:                                              ; preds = %168, %29
  %172 = load ptr, ptr %42, align 8, !tbaa !5
  store i8 78, ptr %172, align 1, !tbaa !13
  store i64 0, ptr %92, align 8, !tbaa !9
  store i64 0, ptr %88, align 8, !tbaa !9
  br label %196

173:                                              ; preds = %168
  %174 = load ptr, ptr %42, align 8, !tbaa !5
  %175 = call i64 @lsame_(ptr noundef %174, ptr noundef @.str.3)
  %176 = icmp ne i64 %175, 0
  br i1 %176, label %181, label %177

177:                                              ; preds = %173
  %178 = load ptr, ptr %42, align 8, !tbaa !5
  %179 = call i64 @lsame_(ptr noundef %178, ptr noundef @.str.4)
  %180 = icmp ne i64 %179, 0
  br label %181

181:                                              ; preds = %177, %173
  %182 = phi i1 [ true, %173 ], [ %180, %177 ]
  %183 = zext i1 %182 to i32
  %184 = sext i32 %183 to i64
  store i64 %184, ptr %92, align 8, !tbaa !9
  %185 = load ptr, ptr %42, align 8, !tbaa !5
  %186 = call i64 @lsame_(ptr noundef %185, ptr noundef @.str.5)
  %187 = icmp ne i64 %186, 0
  br i1 %187, label %192, label %188

188:                                              ; preds = %181
  %189 = load ptr, ptr %42, align 8, !tbaa !5
  %190 = call i64 @lsame_(ptr noundef %189, ptr noundef @.str.4)
  %191 = icmp ne i64 %190, 0
  br label %192

192:                                              ; preds = %188, %181
  %193 = phi i1 [ true, %181 ], [ %191, %188 ]
  %194 = zext i1 %193 to i32
  %195 = sext i32 %194 to i64
  store i64 %195, ptr %88, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %192, %171
  %197 = load ptr, ptr %50, align 8, !tbaa !5
  store double 0.000000e+00, ptr %197, align 8, !tbaa !11
  %198 = load i64, ptr %85, align 8, !tbaa !9
  %199 = icmp ne i64 %198, 0
  br i1 %199, label %209, label %200

200:                                              ; preds = %196
  %201 = load i64, ptr %83, align 8, !tbaa !9
  %202 = icmp ne i64 %201, 0
  br i1 %202, label %209, label %203

203:                                              ; preds = %200
  %204 = load ptr, ptr %31, align 8, !tbaa !5
  %205 = call i64 @lsame_(ptr noundef %204, ptr noundef @.str.6)
  %206 = icmp ne i64 %205, 0
  br i1 %206, label %209, label %207

207:                                              ; preds = %203
  %208 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -1, ptr %208, align 8, !tbaa !9
  br label %486

209:                                              ; preds = %203, %200, %196
  %210 = load i64, ptr %90, align 8, !tbaa !9
  %211 = icmp ne i64 %210, 0
  br i1 %211, label %222, label %212

212:                                              ; preds = %209
  %213 = load ptr, ptr %32, align 8, !tbaa !5
  %214 = call i64 @lsame_(ptr noundef %213, ptr noundef @.str.7)
  %215 = icmp ne i64 %214, 0
  br i1 %215, label %222, label %216

216:                                              ; preds = %212
  %217 = load ptr, ptr %32, align 8, !tbaa !5
  %218 = call i64 @lsame_(ptr noundef %217, ptr noundef @.str.5)
  %219 = icmp ne i64 %218, 0
  br i1 %219, label %222, label %220

220:                                              ; preds = %216
  %221 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -2, ptr %221, align 8, !tbaa !9
  br label %485

222:                                              ; preds = %216, %212, %209
  %223 = load ptr, ptr %33, align 8, !tbaa !5
  %224 = load i64, ptr %223, align 8, !tbaa !9
  %225 = icmp slt i64 %224, 0
  br i1 %225, label %226, label %228

226:                                              ; preds = %222
  %227 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -3, ptr %227, align 8, !tbaa !9
  br label %484

228:                                              ; preds = %222
  %229 = load ptr, ptr %34, align 8, !tbaa !5
  %230 = load i64, ptr %229, align 8, !tbaa !9
  %231 = icmp slt i64 %230, 0
  br i1 %231, label %232, label %234

232:                                              ; preds = %228
  %233 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -4, ptr %233, align 8, !tbaa !9
  br label %483

234:                                              ; preds = %228
  %235 = load ptr, ptr %35, align 8, !tbaa !5
  %236 = load i64, ptr %235, align 8, !tbaa !9
  %237 = icmp slt i64 %236, 0
  br i1 %237, label %238, label %240

238:                                              ; preds = %234
  %239 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -5, ptr %239, align 8, !tbaa !9
  br label %482

240:                                              ; preds = %234
  %241 = load ptr, ptr %36, align 8, !tbaa !5
  %242 = load i64, ptr %241, align 8, !tbaa !9
  %243 = icmp slt i64 %242, 0
  br i1 %243, label %244, label %246

244:                                              ; preds = %240
  %245 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -6, ptr %245, align 8, !tbaa !9
  br label %481

246:                                              ; preds = %240
  %247 = load ptr, ptr %38, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = load ptr, ptr %34, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = load ptr, ptr %35, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  %253 = add nsw i64 %250, %252
  %254 = add nsw i64 %253, 1
  %255 = icmp slt i64 %248, %254
  br i1 %255, label %256, label %258

256:                                              ; preds = %246
  %257 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -8, ptr %257, align 8, !tbaa !9
  br label %480

258:                                              ; preds = %246
  %259 = load ptr, ptr %40, align 8, !tbaa !5
  %260 = load i64, ptr %259, align 8, !tbaa !9
  %261 = load ptr, ptr %34, align 8, !tbaa !5
  %262 = load i64, ptr %261, align 8, !tbaa !9
  %263 = shl i64 %262, 1
  %264 = load ptr, ptr %35, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = add nsw i64 %263, %265
  %267 = add nsw i64 %266, 1
  %268 = icmp slt i64 %260, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %258
  %270 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -10, ptr %270, align 8, !tbaa !9
  br label %479

271:                                              ; preds = %258
  %272 = load ptr, ptr %31, align 8, !tbaa !5
  %273 = call i64 @lsame_(ptr noundef %272, ptr noundef @.str.6)
  %274 = icmp ne i64 %273, 0
  br i1 %274, label %275, label %287

275:                                              ; preds = %271
  %276 = load i64, ptr %92, align 8, !tbaa !9
  %277 = icmp ne i64 %276, 0
  br i1 %277, label %287, label %278

278:                                              ; preds = %275
  %279 = load i64, ptr %88, align 8, !tbaa !9
  %280 = icmp ne i64 %279, 0
  br i1 %280, label %287, label %281

281:                                              ; preds = %278
  %282 = load ptr, ptr %42, align 8, !tbaa !5
  %283 = call i64 @lsame_(ptr noundef %282, ptr noundef @.str)
  %284 = icmp ne i64 %283, 0
  br i1 %284, label %287, label %285

285:                                              ; preds = %281
  %286 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -12, ptr %286, align 8, !tbaa !9
  br label %478

287:                                              ; preds = %281, %278, %275, %271
  %288 = load i64, ptr %92, align 8, !tbaa !9
  %289 = icmp ne i64 %288, 0
  br i1 %289, label %290, label %362

290:                                              ; preds = %287
  %291 = load double, ptr %86, align 8, !tbaa !11
  store double %291, ptr %81, align 8, !tbaa !11
  store double 0.000000e+00, ptr %82, align 8, !tbaa !11
  %292 = load ptr, ptr %33, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  store i64 %293, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %79, align 8, !tbaa !9
  br label %294

294:                                              ; preds = %327, %290
  %295 = load i64, ptr %79, align 8, !tbaa !9
  %296 = load i64, ptr %72, align 8, !tbaa !9
  %297 = icmp sle i64 %295, %296
  br i1 %297, label %298, label %330

298:                                              ; preds = %294
  %299 = load double, ptr %81, align 8, !tbaa !11
  store double %299, ptr %76, align 8, !tbaa !11
  %300 = load ptr, ptr %43, align 8, !tbaa !5
  %301 = load i64, ptr %79, align 8, !tbaa !9
  %302 = getelementptr inbounds double, ptr %300, i64 %301
  %303 = load double, ptr %302, align 8, !tbaa !11
  store double %303, ptr %77, align 8, !tbaa !11
  %304 = load double, ptr %76, align 8, !tbaa !11
  %305 = load double, ptr %77, align 8, !tbaa !11
  %306 = fcmp ole double %304, %305
  br i1 %306, label %307, label %309

307:                                              ; preds = %298
  %308 = load double, ptr %76, align 8, !tbaa !11
  br label %311

309:                                              ; preds = %298
  %310 = load double, ptr %77, align 8, !tbaa !11
  br label %311

311:                                              ; preds = %309, %307
  %312 = phi double [ %308, %307 ], [ %310, %309 ]
  store double %312, ptr %81, align 8, !tbaa !11
  %313 = load double, ptr %82, align 8, !tbaa !11
  store double %313, ptr %76, align 8, !tbaa !11
  %314 = load ptr, ptr %43, align 8, !tbaa !5
  %315 = load i64, ptr %79, align 8, !tbaa !9
  %316 = getelementptr inbounds double, ptr %314, i64 %315
  %317 = load double, ptr %316, align 8, !tbaa !11
  store double %317, ptr %77, align 8, !tbaa !11
  %318 = load double, ptr %76, align 8, !tbaa !11
  %319 = load double, ptr %77, align 8, !tbaa !11
  %320 = fcmp oge double %318, %319
  br i1 %320, label %321, label %323

321:                                              ; preds = %311
  %322 = load double, ptr %76, align 8, !tbaa !11
  br label %325

323:                                              ; preds = %311
  %324 = load double, ptr %77, align 8, !tbaa !11
  br label %325

325:                                              ; preds = %323, %321
  %326 = phi double [ %322, %321 ], [ %324, %323 ]
  store double %326, ptr %82, align 8, !tbaa !11
  br label %327

327:                                              ; preds = %325
  %328 = load i64, ptr %79, align 8, !tbaa !9
  %329 = add nsw i64 %328, 1
  store i64 %329, ptr %79, align 8, !tbaa !9
  br label %294, !llvm.loop !14

330:                                              ; preds = %294
  %331 = load double, ptr %81, align 8, !tbaa !11
  %332 = fcmp ole double %331, 0.000000e+00
  br i1 %332, label %333, label %335

333:                                              ; preds = %330
  %334 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -13, ptr %334, align 8, !tbaa !9
  br label %361

335:                                              ; preds = %330
  %336 = load ptr, ptr %33, align 8, !tbaa !5
  %337 = load i64, ptr %336, align 8, !tbaa !9
  %338 = icmp sgt i64 %337, 0
  br i1 %338, label %339, label %359

339:                                              ; preds = %335
  %340 = load double, ptr %81, align 8, !tbaa !11
  %341 = load double, ptr %91, align 8, !tbaa !11
  %342 = fcmp oge double %340, %341
  br i1 %342, label %343, label %345

343:                                              ; preds = %339
  %344 = load double, ptr %81, align 8, !tbaa !11
  br label %347

345:                                              ; preds = %339
  %346 = load double, ptr %91, align 8, !tbaa !11
  br label %347

347:                                              ; preds = %345, %343
  %348 = phi double [ %344, %343 ], [ %346, %345 ]
  %349 = load double, ptr %82, align 8, !tbaa !11
  %350 = load double, ptr %86, align 8, !tbaa !11
  %351 = fcmp ole double %349, %350
  br i1 %351, label %352, label %354

352:                                              ; preds = %347
  %353 = load double, ptr %82, align 8, !tbaa !11
  br label %356

354:                                              ; preds = %347
  %355 = load double, ptr %86, align 8, !tbaa !11
  br label %356

356:                                              ; preds = %354, %352
  %357 = phi double [ %353, %352 ], [ %355, %354 ]
  %358 = fdiv double %348, %357
  store double %358, ptr %89, align 8, !tbaa !11
  br label %360

359:                                              ; preds = %335
  store double 1.000000e+00, ptr %89, align 8, !tbaa !11
  br label %360

360:                                              ; preds = %359, %356
  br label %361

361:                                              ; preds = %360, %333
  br label %362

362:                                              ; preds = %361, %287
  %363 = load i64, ptr %88, align 8, !tbaa !9
  %364 = icmp ne i64 %363, 0
  br i1 %364, label %365, label %441

365:                                              ; preds = %362
  %366 = load ptr, ptr %59, align 8, !tbaa !5
  %367 = load i64, ptr %366, align 8, !tbaa !9
  %368 = icmp eq i64 %367, 0
  br i1 %368, label %369, label %441

369:                                              ; preds = %365
  %370 = load double, ptr %86, align 8, !tbaa !11
  store double %370, ptr %81, align 8, !tbaa !11
  store double 0.000000e+00, ptr %82, align 8, !tbaa !11
  %371 = load ptr, ptr %33, align 8, !tbaa !5
  %372 = load i64, ptr %371, align 8, !tbaa !9
  store i64 %372, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %79, align 8, !tbaa !9
  br label %373

373:                                              ; preds = %406, %369
  %374 = load i64, ptr %79, align 8, !tbaa !9
  %375 = load i64, ptr %72, align 8, !tbaa !9
  %376 = icmp sle i64 %374, %375
  br i1 %376, label %377, label %409

377:                                              ; preds = %373
  %378 = load double, ptr %81, align 8, !tbaa !11
  store double %378, ptr %76, align 8, !tbaa !11
  %379 = load ptr, ptr %44, align 8, !tbaa !5
  %380 = load i64, ptr %79, align 8, !tbaa !9
  %381 = getelementptr inbounds double, ptr %379, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !11
  store double %382, ptr %77, align 8, !tbaa !11
  %383 = load double, ptr %76, align 8, !tbaa !11
  %384 = load double, ptr %77, align 8, !tbaa !11
  %385 = fcmp ole double %383, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %377
  %387 = load double, ptr %76, align 8, !tbaa !11
  br label %390

388:                                              ; preds = %377
  %389 = load double, ptr %77, align 8, !tbaa !11
  br label %390

390:                                              ; preds = %388, %386
  %391 = phi double [ %387, %386 ], [ %389, %388 ]
  store double %391, ptr %81, align 8, !tbaa !11
  %392 = load double, ptr %82, align 8, !tbaa !11
  store double %392, ptr %76, align 8, !tbaa !11
  %393 = load ptr, ptr %44, align 8, !tbaa !5
  %394 = load i64, ptr %79, align 8, !tbaa !9
  %395 = getelementptr inbounds double, ptr %393, i64 %394
  %396 = load double, ptr %395, align 8, !tbaa !11
  store double %396, ptr %77, align 8, !tbaa !11
  %397 = load double, ptr %76, align 8, !tbaa !11
  %398 = load double, ptr %77, align 8, !tbaa !11
  %399 = fcmp oge double %397, %398
  br i1 %399, label %400, label %402

400:                                              ; preds = %390
  %401 = load double, ptr %76, align 8, !tbaa !11
  br label %404

402:                                              ; preds = %390
  %403 = load double, ptr %77, align 8, !tbaa !11
  br label %404

404:                                              ; preds = %402, %400
  %405 = phi double [ %401, %400 ], [ %403, %402 ]
  store double %405, ptr %82, align 8, !tbaa !11
  br label %406

406:                                              ; preds = %404
  %407 = load i64, ptr %79, align 8, !tbaa !9
  %408 = add nsw i64 %407, 1
  store i64 %408, ptr %79, align 8, !tbaa !9
  br label %373, !llvm.loop !16

409:                                              ; preds = %373
  %410 = load double, ptr %81, align 8, !tbaa !11
  %411 = fcmp ole double %410, 0.000000e+00
  br i1 %411, label %412, label %414

412:                                              ; preds = %409
  %413 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -14, ptr %413, align 8, !tbaa !9
  br label %440

414:                                              ; preds = %409
  %415 = load ptr, ptr %33, align 8, !tbaa !5
  %416 = load i64, ptr %415, align 8, !tbaa !9
  %417 = icmp sgt i64 %416, 0
  br i1 %417, label %418, label %438

418:                                              ; preds = %414
  %419 = load double, ptr %81, align 8, !tbaa !11
  %420 = load double, ptr %91, align 8, !tbaa !11
  %421 = fcmp oge double %419, %420
  br i1 %421, label %422, label %424

422:                                              ; preds = %418
  %423 = load double, ptr %81, align 8, !tbaa !11
  br label %426

424:                                              ; preds = %418
  %425 = load double, ptr %91, align 8, !tbaa !11
  br label %426

426:                                              ; preds = %424, %422
  %427 = phi double [ %423, %422 ], [ %425, %424 ]
  %428 = load double, ptr %82, align 8, !tbaa !11
  %429 = load double, ptr %86, align 8, !tbaa !11
  %430 = fcmp ole double %428, %429
  br i1 %430, label %431, label %433

431:                                              ; preds = %426
  %432 = load double, ptr %82, align 8, !tbaa !11
  br label %435

433:                                              ; preds = %426
  %434 = load double, ptr %86, align 8, !tbaa !11
  br label %435

435:                                              ; preds = %433, %431
  %436 = phi double [ %432, %431 ], [ %434, %433 ]
  %437 = fdiv double %427, %436
  store double %437, ptr %84, align 8, !tbaa !11
  br label %439

438:                                              ; preds = %414
  store double 1.000000e+00, ptr %84, align 8, !tbaa !11
  br label %439

439:                                              ; preds = %438, %435
  br label %440

440:                                              ; preds = %439, %412
  br label %441

441:                                              ; preds = %440, %365, %362
  %442 = load ptr, ptr %59, align 8, !tbaa !5
  %443 = load i64, ptr %442, align 8, !tbaa !9
  %444 = icmp eq i64 %443, 0
  br i1 %444, label %445, label %477

445:                                              ; preds = %441
  %446 = load ptr, ptr %46, align 8, !tbaa !5
  %447 = load i64, ptr %446, align 8, !tbaa !9
  %448 = load ptr, ptr %33, align 8, !tbaa !5
  %449 = load i64, ptr %448, align 8, !tbaa !9
  %450 = icmp sge i64 1, %449
  br i1 %450, label %451, label %452

451:                                              ; preds = %445
  br label %455

452:                                              ; preds = %445
  %453 = load ptr, ptr %33, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  br label %455

455:                                              ; preds = %452, %451
  %456 = phi i64 [ 1, %451 ], [ %454, %452 ]
  %457 = icmp slt i64 %447, %456
  br i1 %457, label %458, label %460

458:                                              ; preds = %455
  %459 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -15, ptr %459, align 8, !tbaa !9
  br label %476

460:                                              ; preds = %455
  %461 = load ptr, ptr %48, align 8, !tbaa !5
  %462 = load i64, ptr %461, align 8, !tbaa !9
  %463 = load ptr, ptr %33, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = icmp sge i64 1, %464
  br i1 %465, label %466, label %467

466:                                              ; preds = %460
  br label %470

467:                                              ; preds = %460
  %468 = load ptr, ptr %33, align 8, !tbaa !5
  %469 = load i64, ptr %468, align 8, !tbaa !9
  br label %470

470:                                              ; preds = %467, %466
  %471 = phi i64 [ 1, %466 ], [ %469, %467 ]
  %472 = icmp slt i64 %462, %471
  br i1 %472, label %473, label %475

473:                                              ; preds = %470
  %474 = load ptr, ptr %59, align 8, !tbaa !5
  store i64 -16, ptr %474, align 8, !tbaa !9
  br label %475

475:                                              ; preds = %473, %470
  br label %476

476:                                              ; preds = %475, %458
  br label %477

477:                                              ; preds = %476, %441
  br label %478

478:                                              ; preds = %477, %285
  br label %479

479:                                              ; preds = %478, %269
  br label %480

480:                                              ; preds = %479, %256
  br label %481

481:                                              ; preds = %480, %244
  br label %482

482:                                              ; preds = %481, %238
  br label %483

483:                                              ; preds = %482, %232
  br label %484

484:                                              ; preds = %483, %226
  br label %485

485:                                              ; preds = %484, %220
  br label %486

486:                                              ; preds = %485, %207
  %487 = load ptr, ptr %59, align 8, !tbaa !5
  %488 = load i64, ptr %487, align 8, !tbaa !9
  %489 = icmp ne i64 %488, 0
  br i1 %489, label %490, label %495

490:                                              ; preds = %486
  %491 = load ptr, ptr %59, align 8, !tbaa !5
  %492 = load i64, ptr %491, align 8, !tbaa !9
  %493 = sub nsw i64 0, %492
  store i64 %493, ptr %72, align 8, !tbaa !9
  %494 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %72)
  store i32 0, ptr %30, align 4
  store i32 1, ptr %93, align 4
  br label %841

495:                                              ; preds = %486
  %496 = load i64, ptr %83, align 8, !tbaa !9
  %497 = icmp ne i64 %496, 0
  br i1 %497, label %498, label %588

498:                                              ; preds = %495
  %499 = load ptr, ptr %33, align 8, !tbaa !5
  %500 = load ptr, ptr %33, align 8, !tbaa !5
  %501 = load ptr, ptr %34, align 8, !tbaa !5
  %502 = load ptr, ptr %35, align 8, !tbaa !5
  %503 = load ptr, ptr %37, align 8, !tbaa !5
  %504 = load i64, ptr %61, align 8, !tbaa !9
  %505 = getelementptr inbounds %struct.doublecomplex, ptr %503, i64 %504
  %506 = load ptr, ptr %38, align 8, !tbaa !5
  %507 = load ptr, ptr %43, align 8, !tbaa !5
  %508 = getelementptr inbounds double, ptr %507, i64 1
  %509 = load ptr, ptr %44, align 8, !tbaa !5
  %510 = getelementptr inbounds double, ptr %509, i64 1
  %511 = call i32 @zgbequb_(ptr noundef %499, ptr noundef %500, ptr noundef %501, ptr noundef %502, ptr noundef %505, ptr noundef %506, ptr noundef %508, ptr noundef %510, ptr noundef %89, ptr noundef %84, ptr noundef %80, ptr noundef %87)
  %512 = load i64, ptr %87, align 8, !tbaa !9
  %513 = icmp eq i64 %512, 0
  br i1 %513, label %514, label %551

514:                                              ; preds = %498
  %515 = load ptr, ptr %33, align 8, !tbaa !5
  %516 = load ptr, ptr %33, align 8, !tbaa !5
  %517 = load ptr, ptr %34, align 8, !tbaa !5
  %518 = load ptr, ptr %35, align 8, !tbaa !5
  %519 = load ptr, ptr %37, align 8, !tbaa !5
  %520 = load i64, ptr %61, align 8, !tbaa !9
  %521 = getelementptr inbounds %struct.doublecomplex, ptr %519, i64 %520
  %522 = load ptr, ptr %38, align 8, !tbaa !5
  %523 = load ptr, ptr %43, align 8, !tbaa !5
  %524 = getelementptr inbounds double, ptr %523, i64 1
  %525 = load ptr, ptr %44, align 8, !tbaa !5
  %526 = getelementptr inbounds double, ptr %525, i64 1
  %527 = load ptr, ptr %42, align 8, !tbaa !5
  %528 = call i32 @zlaqgb_(ptr noundef %515, ptr noundef %516, ptr noundef %517, ptr noundef %518, ptr noundef %521, ptr noundef %522, ptr noundef %524, ptr noundef %526, ptr noundef %89, ptr noundef %84, ptr noundef %80, ptr noundef %527)
  %529 = load ptr, ptr %42, align 8, !tbaa !5
  %530 = call i64 @lsame_(ptr noundef %529, ptr noundef @.str.3)
  %531 = icmp ne i64 %530, 0
  br i1 %531, label %536, label %532

532:                                              ; preds = %514
  %533 = load ptr, ptr %42, align 8, !tbaa !5
  %534 = call i64 @lsame_(ptr noundef %533, ptr noundef @.str.4)
  %535 = icmp ne i64 %534, 0
  br label %536

536:                                              ; preds = %532, %514
  %537 = phi i1 [ true, %514 ], [ %535, %532 ]
  %538 = zext i1 %537 to i32
  %539 = sext i32 %538 to i64
  store i64 %539, ptr %92, align 8, !tbaa !9
  %540 = load ptr, ptr %42, align 8, !tbaa !5
  %541 = call i64 @lsame_(ptr noundef %540, ptr noundef @.str.5)
  %542 = icmp ne i64 %541, 0
  br i1 %542, label %547, label %543

543:                                              ; preds = %536
  %544 = load ptr, ptr %42, align 8, !tbaa !5
  %545 = call i64 @lsame_(ptr noundef %544, ptr noundef @.str.4)
  %546 = icmp ne i64 %545, 0
  br label %547

547:                                              ; preds = %543, %536
  %548 = phi i1 [ true, %536 ], [ %546, %543 ]
  %549 = zext i1 %548 to i32
  %550 = sext i32 %549 to i64
  store i64 %550, ptr %88, align 8, !tbaa !9
  br label %551

551:                                              ; preds = %547, %498
  %552 = load i64, ptr %92, align 8, !tbaa !9
  %553 = icmp ne i64 %552, 0
  br i1 %553, label %569, label %554

554:                                              ; preds = %551
  %555 = load ptr, ptr %33, align 8, !tbaa !5
  %556 = load i64, ptr %555, align 8, !tbaa !9
  store i64 %556, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %79, align 8, !tbaa !9
  br label %557

557:                                              ; preds = %565, %554
  %558 = load i64, ptr %79, align 8, !tbaa !9
  %559 = load i64, ptr %72, align 8, !tbaa !9
  %560 = icmp sle i64 %558, %559
  br i1 %560, label %561, label %568

561:                                              ; preds = %557
  %562 = load ptr, ptr %43, align 8, !tbaa !5
  %563 = load i64, ptr %79, align 8, !tbaa !9
  %564 = getelementptr inbounds double, ptr %562, i64 %563
  store double 1.000000e+00, ptr %564, align 8, !tbaa !11
  br label %565

565:                                              ; preds = %561
  %566 = load i64, ptr %79, align 8, !tbaa !9
  %567 = add nsw i64 %566, 1
  store i64 %567, ptr %79, align 8, !tbaa !9
  br label %557, !llvm.loop !17

568:                                              ; preds = %557
  br label %569

569:                                              ; preds = %568, %551
  %570 = load i64, ptr %88, align 8, !tbaa !9
  %571 = icmp ne i64 %570, 0
  br i1 %571, label %587, label %572

572:                                              ; preds = %569
  %573 = load ptr, ptr %33, align 8, !tbaa !5
  %574 = load i64, ptr %573, align 8, !tbaa !9
  store i64 %574, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %79, align 8, !tbaa !9
  br label %575

575:                                              ; preds = %583, %572
  %576 = load i64, ptr %79, align 8, !tbaa !9
  %577 = load i64, ptr %72, align 8, !tbaa !9
  %578 = icmp sle i64 %576, %577
  br i1 %578, label %579, label %586

579:                                              ; preds = %575
  %580 = load ptr, ptr %44, align 8, !tbaa !5
  %581 = load i64, ptr %79, align 8, !tbaa !9
  %582 = getelementptr inbounds double, ptr %580, i64 %581
  store double 1.000000e+00, ptr %582, align 8, !tbaa !11
  br label %583

583:                                              ; preds = %579
  %584 = load i64, ptr %79, align 8, !tbaa !9
  %585 = add nsw i64 %584, 1
  store i64 %585, ptr %79, align 8, !tbaa !9
  br label %575, !llvm.loop !18

586:                                              ; preds = %575
  br label %587

587:                                              ; preds = %586, %569
  br label %588

588:                                              ; preds = %587, %495
  %589 = load i64, ptr %90, align 8, !tbaa !9
  %590 = icmp ne i64 %589, 0
  br i1 %590, label %591, label %605

591:                                              ; preds = %588
  %592 = load i64, ptr %92, align 8, !tbaa !9
  %593 = icmp ne i64 %592, 0
  br i1 %593, label %594, label %604

594:                                              ; preds = %591
  %595 = load ptr, ptr %33, align 8, !tbaa !5
  %596 = load ptr, ptr %36, align 8, !tbaa !5
  %597 = load ptr, ptr %43, align 8, !tbaa !5
  %598 = getelementptr inbounds double, ptr %597, i64 1
  %599 = load ptr, ptr %45, align 8, !tbaa !5
  %600 = load i64, ptr %65, align 8, !tbaa !9
  %601 = getelementptr inbounds %struct.doublecomplex, ptr %599, i64 %600
  %602 = load ptr, ptr %46, align 8, !tbaa !5
  %603 = call i32 @zlascl2_(ptr noundef %595, ptr noundef %596, ptr noundef %598, ptr noundef %601, ptr noundef %602)
  br label %604

604:                                              ; preds = %594, %591
  br label %619

605:                                              ; preds = %588
  %606 = load i64, ptr %88, align 8, !tbaa !9
  %607 = icmp ne i64 %606, 0
  br i1 %607, label %608, label %618

608:                                              ; preds = %605
  %609 = load ptr, ptr %33, align 8, !tbaa !5
  %610 = load ptr, ptr %36, align 8, !tbaa !5
  %611 = load ptr, ptr %44, align 8, !tbaa !5
  %612 = getelementptr inbounds double, ptr %611, i64 1
  %613 = load ptr, ptr %45, align 8, !tbaa !5
  %614 = load i64, ptr %65, align 8, !tbaa !9
  %615 = getelementptr inbounds %struct.doublecomplex, ptr %613, i64 %614
  %616 = load ptr, ptr %46, align 8, !tbaa !5
  %617 = call i32 @zlascl2_(ptr noundef %609, ptr noundef %610, ptr noundef %612, ptr noundef %615, ptr noundef %616)
  br label %618

618:                                              ; preds = %608, %605
  br label %619

619:                                              ; preds = %618, %604
  %620 = load i64, ptr %85, align 8, !tbaa !9
  %621 = icmp ne i64 %620, 0
  br i1 %621, label %625, label %622

622:                                              ; preds = %619
  %623 = load i64, ptr %83, align 8, !tbaa !9
  %624 = icmp ne i64 %623, 0
  br i1 %624, label %625, label %718

625:                                              ; preds = %622, %619
  %626 = load ptr, ptr %33, align 8, !tbaa !5
  %627 = load i64, ptr %626, align 8, !tbaa !9
  store i64 %627, ptr %72, align 8, !tbaa !9
  store i64 1, ptr %79, align 8, !tbaa !9
  br label %628

628:                                              ; preds = %683, %625
  %629 = load i64, ptr %79, align 8, !tbaa !9
  %630 = load i64, ptr %72, align 8, !tbaa !9
  %631 = icmp sle i64 %629, %630
  br i1 %631, label %632, label %686

632:                                              ; preds = %628
  %633 = load ptr, ptr %34, align 8, !tbaa !5
  %634 = load i64, ptr %633, align 8, !tbaa !9
  %635 = shl i64 %634, 1
  %636 = load ptr, ptr %35, align 8, !tbaa !5
  %637 = load i64, ptr %636, align 8, !tbaa !9
  %638 = add nsw i64 %635, %637
  %639 = add nsw i64 %638, 1
  store i64 %639, ptr %73, align 8, !tbaa !9
  %640 = load ptr, ptr %34, align 8, !tbaa !5
  %641 = load i64, ptr %640, align 8, !tbaa !9
  %642 = add nsw i64 %641, 1
  store i64 %642, ptr %78, align 8, !tbaa !9
  br label %643

643:                                              ; preds = %679, %632
  %644 = load i64, ptr %78, align 8, !tbaa !9
  %645 = load i64, ptr %73, align 8, !tbaa !9
  %646 = icmp sle i64 %644, %645
  br i1 %646, label %647, label %682

647:                                              ; preds = %643
  %648 = load i64, ptr %78, align 8, !tbaa !9
  %649 = load i64, ptr %79, align 8, !tbaa !9
  %650 = load i64, ptr %62, align 8, !tbaa !9
  %651 = mul nsw i64 %649, %650
  %652 = add nsw i64 %648, %651
  store i64 %652, ptr %74, align 8, !tbaa !9
  %653 = load i64, ptr %78, align 8, !tbaa !9
  %654 = load ptr, ptr %34, align 8, !tbaa !5
  %655 = load i64, ptr %654, align 8, !tbaa !9
  %656 = sub nsw i64 %653, %655
  %657 = load i64, ptr %79, align 8, !tbaa !9
  %658 = load i64, ptr %60, align 8, !tbaa !9
  %659 = mul nsw i64 %657, %658
  %660 = add nsw i64 %656, %659
  store i64 %660, ptr %75, align 8, !tbaa !9
  %661 = load ptr, ptr %37, align 8, !tbaa !5
  %662 = load i64, ptr %75, align 8, !tbaa !9
  %663 = getelementptr inbounds %struct.doublecomplex, ptr %661, i64 %662
  %664 = getelementptr inbounds %struct.doublecomplex, ptr %663, i32 0, i32 0
  %665 = load double, ptr %664, align 8, !tbaa !19
  %666 = load ptr, ptr %39, align 8, !tbaa !5
  %667 = load i64, ptr %74, align 8, !tbaa !9
  %668 = getelementptr inbounds %struct.doublecomplex, ptr %666, i64 %667
  %669 = getelementptr inbounds %struct.doublecomplex, ptr %668, i32 0, i32 0
  store double %665, ptr %669, align 8, !tbaa !19
  %670 = load ptr, ptr %37, align 8, !tbaa !5
  %671 = load i64, ptr %75, align 8, !tbaa !9
  %672 = getelementptr inbounds %struct.doublecomplex, ptr %670, i64 %671
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %672, i32 0, i32 1
  %674 = load double, ptr %673, align 8, !tbaa !21
  %675 = load ptr, ptr %39, align 8, !tbaa !5
  %676 = load i64, ptr %74, align 8, !tbaa !9
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %675, i64 %676
  %678 = getelementptr inbounds %struct.doublecomplex, ptr %677, i32 0, i32 1
  store double %674, ptr %678, align 8, !tbaa !21
  br label %679

679:                                              ; preds = %647
  %680 = load i64, ptr %78, align 8, !tbaa !9
  %681 = add nsw i64 %680, 1
  store i64 %681, ptr %78, align 8, !tbaa !9
  br label %643, !llvm.loop !22

682:                                              ; preds = %643
  br label %683

683:                                              ; preds = %682
  %684 = load i64, ptr %79, align 8, !tbaa !9
  %685 = add nsw i64 %684, 1
  store i64 %685, ptr %79, align 8, !tbaa !9
  br label %628, !llvm.loop !23

686:                                              ; preds = %628
  %687 = load ptr, ptr %33, align 8, !tbaa !5
  %688 = load ptr, ptr %33, align 8, !tbaa !5
  %689 = load ptr, ptr %34, align 8, !tbaa !5
  %690 = load ptr, ptr %35, align 8, !tbaa !5
  %691 = load ptr, ptr %39, align 8, !tbaa !5
  %692 = load i64, ptr %63, align 8, !tbaa !9
  %693 = getelementptr inbounds %struct.doublecomplex, ptr %691, i64 %692
  %694 = load ptr, ptr %40, align 8, !tbaa !5
  %695 = load ptr, ptr %41, align 8, !tbaa !5
  %696 = getelementptr inbounds i64, ptr %695, i64 1
  %697 = load ptr, ptr %59, align 8, !tbaa !5
  %698 = call i32 @zgbtrf_(ptr noundef %687, ptr noundef %688, ptr noundef %689, ptr noundef %690, ptr noundef %693, ptr noundef %694, ptr noundef %696, ptr noundef %697)
  %699 = load ptr, ptr %59, align 8, !tbaa !5
  %700 = load i64, ptr %699, align 8, !tbaa !9
  %701 = icmp sgt i64 %700, 0
  br i1 %701, label %702, label %717

702:                                              ; preds = %686
  %703 = load ptr, ptr %33, align 8, !tbaa !5
  %704 = load ptr, ptr %34, align 8, !tbaa !5
  %705 = load ptr, ptr %35, align 8, !tbaa !5
  %706 = load ptr, ptr %59, align 8, !tbaa !5
  %707 = load ptr, ptr %37, align 8, !tbaa !5
  %708 = load i64, ptr %61, align 8, !tbaa !9
  %709 = getelementptr inbounds %struct.doublecomplex, ptr %707, i64 %708
  %710 = load ptr, ptr %38, align 8, !tbaa !5
  %711 = load ptr, ptr %39, align 8, !tbaa !5
  %712 = load i64, ptr %63, align 8, !tbaa !9
  %713 = getelementptr inbounds %struct.doublecomplex, ptr %711, i64 %712
  %714 = load ptr, ptr %40, align 8, !tbaa !5
  %715 = call double @zla_gbrpvgrw__(ptr noundef %703, ptr noundef %704, ptr noundef %705, ptr noundef %706, ptr noundef %709, ptr noundef %710, ptr noundef %713, ptr noundef %714)
  %716 = load ptr, ptr %50, align 8, !tbaa !5
  store double %715, ptr %716, align 8, !tbaa !11
  store i32 0, ptr %30, align 4
  store i32 1, ptr %93, align 4
  br label %841

717:                                              ; preds = %686
  br label %718

718:                                              ; preds = %717, %622
  %719 = load ptr, ptr %33, align 8, !tbaa !5
  %720 = load ptr, ptr %34, align 8, !tbaa !5
  %721 = load ptr, ptr %35, align 8, !tbaa !5
  %722 = load ptr, ptr %33, align 8, !tbaa !5
  %723 = load ptr, ptr %37, align 8, !tbaa !5
  %724 = load i64, ptr %61, align 8, !tbaa !9
  %725 = getelementptr inbounds %struct.doublecomplex, ptr %723, i64 %724
  %726 = load ptr, ptr %38, align 8, !tbaa !5
  %727 = load ptr, ptr %39, align 8, !tbaa !5
  %728 = load i64, ptr %63, align 8, !tbaa !9
  %729 = getelementptr inbounds %struct.doublecomplex, ptr %727, i64 %728
  %730 = load ptr, ptr %40, align 8, !tbaa !5
  %731 = call double @zla_gbrpvgrw__(ptr noundef %719, ptr noundef %720, ptr noundef %721, ptr noundef %722, ptr noundef %725, ptr noundef %726, ptr noundef %729, ptr noundef %730)
  %732 = load ptr, ptr %50, align 8, !tbaa !5
  store double %731, ptr %732, align 8, !tbaa !11
  %733 = load ptr, ptr %33, align 8, !tbaa !5
  %734 = load ptr, ptr %36, align 8, !tbaa !5
  %735 = load ptr, ptr %45, align 8, !tbaa !5
  %736 = load i64, ptr %65, align 8, !tbaa !9
  %737 = getelementptr inbounds %struct.doublecomplex, ptr %735, i64 %736
  %738 = load ptr, ptr %46, align 8, !tbaa !5
  %739 = load ptr, ptr %47, align 8, !tbaa !5
  %740 = load i64, ptr %67, align 8, !tbaa !9
  %741 = getelementptr inbounds %struct.doublecomplex, ptr %739, i64 %740
  %742 = load ptr, ptr %48, align 8, !tbaa !5
  %743 = call i32 @zlacpy_(ptr noundef @.str.9, ptr noundef %733, ptr noundef %734, ptr noundef %737, ptr noundef %738, ptr noundef %741, ptr noundef %742)
  %744 = load ptr, ptr %32, align 8, !tbaa !5
  %745 = load ptr, ptr %33, align 8, !tbaa !5
  %746 = load ptr, ptr %34, align 8, !tbaa !5
  %747 = load ptr, ptr %35, align 8, !tbaa !5
  %748 = load ptr, ptr %36, align 8, !tbaa !5
  %749 = load ptr, ptr %39, align 8, !tbaa !5
  %750 = load i64, ptr %63, align 8, !tbaa !9
  %751 = getelementptr inbounds %struct.doublecomplex, ptr %749, i64 %750
  %752 = load ptr, ptr %40, align 8, !tbaa !5
  %753 = load ptr, ptr %41, align 8, !tbaa !5
  %754 = getelementptr inbounds i64, ptr %753, i64 1
  %755 = load ptr, ptr %47, align 8, !tbaa !5
  %756 = load i64, ptr %67, align 8, !tbaa !9
  %757 = getelementptr inbounds %struct.doublecomplex, ptr %755, i64 %756
  %758 = load ptr, ptr %48, align 8, !tbaa !5
  %759 = load ptr, ptr %59, align 8, !tbaa !5
  %760 = call i32 @zgbtrs_(ptr noundef %744, ptr noundef %745, ptr noundef %746, ptr noundef %747, ptr noundef %748, ptr noundef %751, ptr noundef %752, ptr noundef %754, ptr noundef %757, ptr noundef %758, ptr noundef %759)
  %761 = load ptr, ptr %32, align 8, !tbaa !5
  %762 = load ptr, ptr %42, align 8, !tbaa !5
  %763 = load ptr, ptr %33, align 8, !tbaa !5
  %764 = load ptr, ptr %34, align 8, !tbaa !5
  %765 = load ptr, ptr %35, align 8, !tbaa !5
  %766 = load ptr, ptr %36, align 8, !tbaa !5
  %767 = load ptr, ptr %37, align 8, !tbaa !5
  %768 = load i64, ptr %61, align 8, !tbaa !9
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %767, i64 %768
  %770 = load ptr, ptr %38, align 8, !tbaa !5
  %771 = load ptr, ptr %39, align 8, !tbaa !5
  %772 = load i64, ptr %63, align 8, !tbaa !9
  %773 = getelementptr inbounds %struct.doublecomplex, ptr %771, i64 %772
  %774 = load ptr, ptr %40, align 8, !tbaa !5
  %775 = load ptr, ptr %41, align 8, !tbaa !5
  %776 = getelementptr inbounds i64, ptr %775, i64 1
  %777 = load ptr, ptr %43, align 8, !tbaa !5
  %778 = getelementptr inbounds double, ptr %777, i64 1
  %779 = load ptr, ptr %44, align 8, !tbaa !5
  %780 = getelementptr inbounds double, ptr %779, i64 1
  %781 = load ptr, ptr %45, align 8, !tbaa !5
  %782 = load i64, ptr %65, align 8, !tbaa !9
  %783 = getelementptr inbounds %struct.doublecomplex, ptr %781, i64 %782
  %784 = load ptr, ptr %46, align 8, !tbaa !5
  %785 = load ptr, ptr %47, align 8, !tbaa !5
  %786 = load i64, ptr %67, align 8, !tbaa !9
  %787 = getelementptr inbounds %struct.doublecomplex, ptr %785, i64 %786
  %788 = load ptr, ptr %48, align 8, !tbaa !5
  %789 = load ptr, ptr %49, align 8, !tbaa !5
  %790 = load ptr, ptr %51, align 8, !tbaa !5
  %791 = getelementptr inbounds double, ptr %790, i64 1
  %792 = load ptr, ptr %52, align 8, !tbaa !5
  %793 = load ptr, ptr %53, align 8, !tbaa !5
  %794 = load i64, ptr %69, align 8, !tbaa !9
  %795 = getelementptr inbounds double, ptr %793, i64 %794
  %796 = load ptr, ptr %54, align 8, !tbaa !5
  %797 = load i64, ptr %71, align 8, !tbaa !9
  %798 = getelementptr inbounds double, ptr %796, i64 %797
  %799 = load ptr, ptr %55, align 8, !tbaa !5
  %800 = load ptr, ptr %56, align 8, !tbaa !5
  %801 = getelementptr inbounds double, ptr %800, i64 1
  %802 = load ptr, ptr %57, align 8, !tbaa !5
  %803 = getelementptr inbounds %struct.doublecomplex, ptr %802, i64 1
  %804 = load ptr, ptr %58, align 8, !tbaa !5
  %805 = getelementptr inbounds double, ptr %804, i64 1
  %806 = load ptr, ptr %59, align 8, !tbaa !5
  %807 = call i32 @zgbrfsx_(ptr noundef %761, ptr noundef %762, ptr noundef %763, ptr noundef %764, ptr noundef %765, ptr noundef %766, ptr noundef %769, ptr noundef %770, ptr noundef %773, ptr noundef %774, ptr noundef %776, ptr noundef %778, ptr noundef %780, ptr noundef %783, ptr noundef %784, ptr noundef %787, ptr noundef %788, ptr noundef %789, ptr noundef %791, ptr noundef %792, ptr noundef %795, ptr noundef %798, ptr noundef %799, ptr noundef %801, ptr noundef %803, ptr noundef %805, ptr noundef %806)
  %808 = load i64, ptr %88, align 8, !tbaa !9
  %809 = icmp ne i64 %808, 0
  br i1 %809, label %810, label %823

810:                                              ; preds = %718
  %811 = load i64, ptr %90, align 8, !tbaa !9
  %812 = icmp ne i64 %811, 0
  br i1 %812, label %813, label %823

813:                                              ; preds = %810
  %814 = load ptr, ptr %33, align 8, !tbaa !5
  %815 = load ptr, ptr %36, align 8, !tbaa !5
  %816 = load ptr, ptr %44, align 8, !tbaa !5
  %817 = getelementptr inbounds double, ptr %816, i64 1
  %818 = load ptr, ptr %47, align 8, !tbaa !5
  %819 = load i64, ptr %67, align 8, !tbaa !9
  %820 = getelementptr inbounds %struct.doublecomplex, ptr %818, i64 %819
  %821 = load ptr, ptr %48, align 8, !tbaa !5
  %822 = call i32 @zlascl2_(ptr noundef %814, ptr noundef %815, ptr noundef %817, ptr noundef %820, ptr noundef %821)
  br label %840

823:                                              ; preds = %810, %718
  %824 = load i64, ptr %92, align 8, !tbaa !9
  %825 = icmp ne i64 %824, 0
  br i1 %825, label %826, label %839

826:                                              ; preds = %823
  %827 = load i64, ptr %90, align 8, !tbaa !9
  %828 = icmp ne i64 %827, 0
  br i1 %828, label %839, label %829

829:                                              ; preds = %826
  %830 = load ptr, ptr %33, align 8, !tbaa !5
  %831 = load ptr, ptr %36, align 8, !tbaa !5
  %832 = load ptr, ptr %43, align 8, !tbaa !5
  %833 = getelementptr inbounds double, ptr %832, i64 1
  %834 = load ptr, ptr %47, align 8, !tbaa !5
  %835 = load i64, ptr %67, align 8, !tbaa !9
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %834, i64 %835
  %837 = load ptr, ptr %48, align 8, !tbaa !5
  %838 = call i32 @zlascl2_(ptr noundef %830, ptr noundef %831, ptr noundef %833, ptr noundef %836, ptr noundef %837)
  br label %839

839:                                              ; preds = %829, %826, %823
  br label %840

840:                                              ; preds = %839, %813
  store i32 0, ptr %30, align 4
  store i32 1, ptr %93, align 4
  br label %841

841:                                              ; preds = %840, %702, %490
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  %842 = load i32, ptr %30, align 4
  ret i32 %842
}

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

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

declare double @dlamch_(ptr noundef) #2

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

declare i32 @zgbequb_(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

declare i32 @zlaqgb_(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

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

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

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

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

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

declare i32 @zgbrfsx_(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: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite)
declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1

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

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

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


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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [13 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 [2 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [5 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zgbsvxx_(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 nocapture noundef writeonly %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef %28) local_unnamed_addr #0 {
  %30 = alloca i64, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca i64, align 8
  %34 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #4
  %35 = load i64, ptr %7, align 8, !tbaa !5
  %36 = xor i64 %35, -1
  %37 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %36
  %38 = load i64, ptr %9, align 8, !tbaa !5
  %39 = xor i64 %38, -1
  %40 = getelementptr inbounds %struct.doublecomplex, ptr %8, i64 %39
  %41 = getelementptr inbounds i8, ptr %12, i64 -8
  %42 = getelementptr inbounds i8, ptr %13, i64 -8
  store i64 0, ptr %28, align 8, !tbaa !5
  %43 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #4
  %44 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #4
  %45 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #4
  %46 = tail call double @dlamch_(ptr noundef nonnull @.str.2) #4
  %47 = fdiv double 1.000000e+00, %46
  %48 = icmp ne i64 %43, 0
  %49 = icmp ne i64 %44, 0
  %or.cond = select i1 %48, i1 true, i1 %49
  br i1 %or.cond, label %.thread, label %50

.thread:                                          ; preds = %29
  store i8 78, ptr %11, align 1, !tbaa !9
  store double 0.000000e+00, ptr %19, align 8, !tbaa !10
  br label %66

50:                                               ; preds = %29
  %51 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %.not = icmp eq i64 %51, 0
  br i1 %.not, label %52, label %55

52:                                               ; preds = %50
  %53 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %54 = icmp ne i64 %53, 0
  br label %55

55:                                               ; preds = %52, %50
  %56 = phi i1 [ true, %50 ], [ %54, %52 ]
  %57 = zext i1 %56 to i64
  %58 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.5) #4
  %.not354 = icmp eq i64 %58, 0
  br i1 %.not354, label %59, label %62

59:                                               ; preds = %55
  %60 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %61 = icmp ne i64 %60, 0
  br label %62

62:                                               ; preds = %59, %55
  %63 = phi i1 [ true, %55 ], [ %61, %59 ]
  %64 = zext i1 %63 to i64
  store double 0.000000e+00, ptr %19, align 8, !tbaa !10
  %65 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %.not355 = icmp eq i64 %65, 0
  br i1 %.not355, label %.thread388.sink.split, label %66

66:                                               ; preds = %.thread, %62
  %.0381 = phi i64 [ 0, %.thread ], [ %57, %62 ]
  %.0338379 = phi i64 [ 0, %.thread ], [ %64, %62 ]
  %.not356 = icmp eq i64 %45, 0
  br i1 %.not356, label %67, label %71

67:                                               ; preds = %66
  %68 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #4
  %.not357 = icmp eq i64 %68, 0
  br i1 %.not357, label %69, label %71

69:                                               ; preds = %67
  %70 = tail call i64 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.5) #4
  %.not358 = icmp eq i64 %70, 0
  br i1 %.not358, label %.thread388.sink.split, label %71

71:                                               ; preds = %69, %67, %66
  %72 = load i64, ptr %2, align 8, !tbaa !5
  %73 = icmp slt i64 %72, 0
  br i1 %73, label %.thread388.sink.split, label %74

74:                                               ; preds = %71
  %75 = load i64, ptr %3, align 8, !tbaa !5
  %76 = icmp slt i64 %75, 0
  br i1 %76, label %.thread388.sink.split, label %77

77:                                               ; preds = %74
  %78 = load i64, ptr %4, align 8, !tbaa !5
  %79 = icmp slt i64 %78, 0
  br i1 %79, label %.thread388.sink.split, label %80

80:                                               ; preds = %77
  %81 = load i64, ptr %5, align 8, !tbaa !5
  %82 = icmp slt i64 %81, 0
  br i1 %82, label %.thread388.sink.split, label %83

83:                                               ; preds = %80
  %84 = load i64, ptr %7, align 8, !tbaa !5
  %85 = add nuw nsw i64 %78, %75
  %.not359 = icmp sgt i64 %84, %85
  br i1 %.not359, label %86, label %.thread388.sink.split

86:                                               ; preds = %83
  %87 = load i64, ptr %9, align 8, !tbaa !5
  %88 = shl nuw i64 %75, 1
  %89 = add nsw i64 %78, %88
  %.not360 = icmp sgt i64 %87, %89
  br i1 %.not360, label %90, label %.thread388.sink.split

90:                                               ; preds = %86
  %91 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #4
  %92 = icmp eq i64 %91, 0
  %93 = icmp ne i64 %.0381, 0
  %or.cond5 = select i1 %92, i1 true, i1 %93
  %94 = icmp ne i64 %.0338379, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %94
  br i1 %or.cond7, label %97, label %95

95:                                               ; preds = %90
  %96 = tail call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #4
  %.not361 = icmp eq i64 %96, 0
  br i1 %.not361, label %.thread388.sink.split, label %..thread383_crit_edge

..thread383_crit_edge:                            ; preds = %95
  %.pr.pre = load i64, ptr %28, align 8, !tbaa !5
  br label %.thread383

97:                                               ; preds = %90
  br i1 %93, label %98, label %130

98:                                               ; preds = %97
  %99 = load i64, ptr %2, align 8, !tbaa !5
  %.not362412 = icmp slt i64 %99, 1
  br i1 %.not362412, label %._crit_edge, label %.lr.ph.preheader

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

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %.0341415 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %112, %.lr.ph ]
  %.0343414 = phi double [ %47, %.lr.ph.preheader.new ], [ %110, %.lr.ph ]
  %.0345413 = phi i64 [ 1, %.lr.ph.preheader.new ], [ %113, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %101 = getelementptr inbounds double, ptr %41, i64 %.0345413
  %102 = load double, ptr %101, align 8, !tbaa !10
  %103 = fcmp ole double %.0343414, %102
  %104 = select i1 %103, double %.0343414, double %102
  %105 = fcmp oge double %.0341415, %102
  %106 = select i1 %105, double %.0341415, double %102
  %107 = getelementptr double, ptr %12, i64 %.0345413
  %108 = load double, ptr %107, align 8, !tbaa !10
  %109 = fcmp ole double %104, %108
  %110 = select i1 %109, double %104, double %108
  %111 = fcmp oge double %106, %108
  %112 = select i1 %111, double %106, double %108
  %113 = add nuw i64 %.0345413, 2
  %niter.next.1 = add i64 %niter, 2
  %niter.ncmp.1 = icmp eq i64 %niter.next.1, %unroll_iter
  br i1 %niter.ncmp.1, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph, !llvm.loop !12

._crit_edge.loopexit.unr-lcssa:                   ; preds = %.lr.ph, %.lr.ph.preheader
  %.lcssa516.ph = phi double [ poison, %.lr.ph.preheader ], [ %110, %.lr.ph ]
  %.lcssa515.ph = phi double [ poison, %.lr.ph.preheader ], [ %112, %.lr.ph ]
  %.0341415.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %112, %.lr.ph ]
  %.0343414.unr = phi double [ %47, %.lr.ph.preheader ], [ %110, %.lr.ph ]
  %.0345413.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %113, %.lr.ph ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge, label %.lr.ph.epil

.lr.ph.epil:                                      ; preds = %._crit_edge.loopexit.unr-lcssa
  %114 = getelementptr inbounds double, ptr %41, i64 %.0345413.unr
  %115 = load double, ptr %114, align 8, !tbaa !10
  %116 = fcmp ole double %.0343414.unr, %115
  %117 = select i1 %116, double %.0343414.unr, double %115
  %118 = fcmp oge double %.0341415.unr, %115
  %119 = select i1 %118, double %.0341415.unr, double %115
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %98
  %.0343.lcssa = phi double [ %47, %98 ], [ %.lcssa516.ph, %._crit_edge.loopexit.unr-lcssa ], [ %117, %.lr.ph.epil ]
  %.0341.lcssa = phi double [ 0.000000e+00, %98 ], [ %.lcssa515.ph, %._crit_edge.loopexit.unr-lcssa ], [ %119, %.lr.ph.epil ]
  %120 = fcmp ugt double %.0343.lcssa, 0.000000e+00
  br i1 %120, label %121, label %.thread388.sink.split

121:                                              ; preds = %._crit_edge
  %122 = icmp sgt i64 %99, 0
  br i1 %122, label %123, label %129

123:                                              ; preds = %121
  %124 = fcmp oge double %.0343.lcssa, %46
  %125 = select i1 %124, double %.0343.lcssa, double %46
  %126 = fcmp ole double %.0341.lcssa, %47
  %127 = select i1 %126, double %.0341.lcssa, double %47
  %128 = fdiv double %125, %127
  store double %128, ptr %34, align 8, !tbaa !10
  br label %130

129:                                              ; preds = %121
  store double 1.000000e+00, ptr %34, align 8, !tbaa !10
  br label %130

130:                                              ; preds = %129, %123, %97
  %.pr.pre455.pr = load i64, ptr %28, align 8, !tbaa !5
  br i1 %94, label %131, label %.thread383

131:                                              ; preds = %130
  %132 = icmp eq i64 %.pr.pre455.pr, 0
  br i1 %132, label %133, label %.thread388

133:                                              ; preds = %131
  %134 = load i64, ptr %2, align 8, !tbaa !5
  %.not363417 = icmp slt i64 %134, 1
  br i1 %.not363417, label %._crit_edge423, label %.lr.ph422.preheader

.lr.ph422.preheader:                              ; preds = %133
  %xtraiter519 = and i64 %134, 1
  %135 = icmp eq i64 %134, 1
  br i1 %135, label %._crit_edge423.loopexit.unr-lcssa, label %.lr.ph422.preheader.new

.lr.ph422.preheader.new:                          ; preds = %.lr.ph422.preheader
  %unroll_iter523 = and i64 %134, 9223372036854775806
  br label %.lr.ph422

.lr.ph422:                                        ; preds = %.lr.ph422, %.lr.ph422.preheader.new
  %.1342420 = phi double [ 0.000000e+00, %.lr.ph422.preheader.new ], [ %147, %.lr.ph422 ]
  %.1344419 = phi double [ %47, %.lr.ph422.preheader.new ], [ %145, %.lr.ph422 ]
  %.1346418 = phi i64 [ 1, %.lr.ph422.preheader.new ], [ %148, %.lr.ph422 ]
  %niter524 = phi i64 [ 0, %.lr.ph422.preheader.new ], [ %niter524.next.1, %.lr.ph422 ]
  %136 = getelementptr inbounds double, ptr %42, i64 %.1346418
  %137 = load double, ptr %136, align 8, !tbaa !10
  %138 = fcmp ole double %.1344419, %137
  %139 = select i1 %138, double %.1344419, double %137
  %140 = fcmp oge double %.1342420, %137
  %141 = select i1 %140, double %.1342420, double %137
  %142 = getelementptr double, ptr %13, i64 %.1346418
  %143 = load double, ptr %142, align 8, !tbaa !10
  %144 = fcmp ole double %139, %143
  %145 = select i1 %144, double %139, double %143
  %146 = fcmp oge double %141, %143
  %147 = select i1 %146, double %141, double %143
  %148 = add nuw i64 %.1346418, 2
  %niter524.next.1 = add i64 %niter524, 2
  %niter524.ncmp.1 = icmp eq i64 %niter524.next.1, %unroll_iter523
  br i1 %niter524.ncmp.1, label %._crit_edge423.loopexit.unr-lcssa, label %.lr.ph422, !llvm.loop !14

._crit_edge423.loopexit.unr-lcssa:                ; preds = %.lr.ph422, %.lr.ph422.preheader
  %.lcssa514.ph = phi double [ poison, %.lr.ph422.preheader ], [ %145, %.lr.ph422 ]
  %.lcssa.ph = phi double [ poison, %.lr.ph422.preheader ], [ %147, %.lr.ph422 ]
  %.1342420.unr = phi double [ 0.000000e+00, %.lr.ph422.preheader ], [ %147, %.lr.ph422 ]
  %.1344419.unr = phi double [ %47, %.lr.ph422.preheader ], [ %145, %.lr.ph422 ]
  %.1346418.unr = phi i64 [ 1, %.lr.ph422.preheader ], [ %148, %.lr.ph422 ]
  %lcmp.mod520.not = icmp eq i64 %xtraiter519, 0
  br i1 %lcmp.mod520.not, label %._crit_edge423, label %.lr.ph422.epil

.lr.ph422.epil:                                   ; preds = %._crit_edge423.loopexit.unr-lcssa
  %149 = getelementptr inbounds double, ptr %42, i64 %.1346418.unr
  %150 = load double, ptr %149, align 8, !tbaa !10
  %151 = fcmp ole double %.1344419.unr, %150
  %152 = select i1 %151, double %.1344419.unr, double %150
  %153 = fcmp oge double %.1342420.unr, %150
  %154 = select i1 %153, double %.1342420.unr, double %150
  br label %._crit_edge423

._crit_edge423:                                   ; preds = %.lr.ph422.epil, %._crit_edge423.loopexit.unr-lcssa, %133
  %.1344.lcssa = phi double [ %47, %133 ], [ %.lcssa514.ph, %._crit_edge423.loopexit.unr-lcssa ], [ %152, %.lr.ph422.epil ]
  %.1342.lcssa = phi double [ 0.000000e+00, %133 ], [ %.lcssa.ph, %._crit_edge423.loopexit.unr-lcssa ], [ %154, %.lr.ph422.epil ]
  %155 = fcmp ugt double %.1344.lcssa, 0.000000e+00
  br i1 %155, label %156, label %.thread388.sink.split

156:                                              ; preds = %._crit_edge423
  %157 = icmp sgt i64 %134, 0
  br i1 %157, label %158, label %164

158:                                              ; preds = %156
  %159 = fcmp oge double %.1344.lcssa, %46
  %160 = select i1 %159, double %.1344.lcssa, double %46
  %161 = fcmp ole double %.1342.lcssa, %47
  %162 = select i1 %161, double %.1342.lcssa, double %47
  %163 = fdiv double %160, %162
  store double %163, ptr %32, align 8, !tbaa !10
  br label %.thread383.thread

164:                                              ; preds = %156
  store double 1.000000e+00, ptr %32, align 8, !tbaa !10
  br label %.thread383.thread

.thread383:                                       ; preds = %..thread383_crit_edge, %130
  %.pr386.pr = phi i64 [ %.pr.pre, %..thread383_crit_edge ], [ %.pr.pre455.pr, %130 ]
  %165 = icmp eq i64 %.pr386.pr, 0
  br i1 %165, label %.thread383.thread, label %.thread388

.thread383.thread:                                ; preds = %158, %164, %.thread383
  %166 = load i64, ptr %15, align 8, !tbaa !5
  %167 = load i64, ptr %2, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.smax.i64(i64 %167, i64 1)
  %168 = icmp slt i64 %166, %spec.select
  br i1 %168, label %.thread388.sink.split, label %169

169:                                              ; preds = %.thread383.thread
  %170 = load i64, ptr %17, align 8, !tbaa !5
  %171 = icmp slt i64 %170, %spec.select
  br i1 %171, label %.thread388.sink.split, label %.thread384

.thread388.sink.split:                            ; preds = %169, %.thread383.thread, %._crit_edge423, %._crit_edge, %95, %86, %83, %80, %77, %74, %71, %69, %62
  %.sink = phi i64 [ -1, %62 ], [ -2, %69 ], [ -3, %71 ], [ -4, %74 ], [ -5, %77 ], [ -6, %80 ], [ -8, %83 ], [ -10, %86 ], [ -12, %95 ], [ -13, %._crit_edge ], [ -14, %._crit_edge423 ], [ -15, %.thread383.thread ], [ -16, %169 ]
  store i64 %.sink, ptr %28, align 8, !tbaa !5
  br label %.thread388

.thread388:                                       ; preds = %.thread388.sink.split, %131, %.thread383
  %172 = phi i64 [ %.pr386.pr, %.thread383 ], [ %.pr.pre455.pr, %131 ], [ %.sink, %.thread388.sink.split ]
  %173 = sub nsw i64 0, %172
  store i64 %173, ptr %30, align 8, !tbaa !5
  %174 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %30) #4
  br label %277

.thread384:                                       ; preds = %169
  br i1 %49, label %175, label %.loopexit

175:                                              ; preds = %.thread384
  %176 = call i32 @zgbequb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %34, ptr noundef nonnull %32, ptr noundef nonnull %31, ptr noundef nonnull %33) #4
  %177 = load i64, ptr %33, align 8, !tbaa !5
  %178 = icmp eq i64 %177, 0
  br i1 %178, label %179, label %193

179:                                              ; preds = %175
  %180 = call i32 @zlaqgb_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %12, ptr noundef %13, ptr noundef nonnull %34, ptr noundef nonnull %32, ptr noundef nonnull %31, ptr noundef %11) #4
  %181 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #4
  %.not365 = icmp eq i64 %181, 0
  br i1 %.not365, label %182, label %186

182:                                              ; preds = %179
  %183 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %184 = icmp ne i64 %183, 0
  %185 = zext i1 %184 to i64
  br label %186

186:                                              ; preds = %182, %179
  %187 = phi i64 [ 1, %179 ], [ %185, %182 ]
  %188 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.5) #4
  %.not366 = icmp eq i64 %188, 0
  br i1 %.not366, label %189, label %193

189:                                              ; preds = %186
  %190 = call i64 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #4
  %191 = icmp ne i64 %190, 0
  %192 = zext i1 %191 to i64
  br label %193

193:                                              ; preds = %186, %189, %175
  %.1339 = phi i64 [ %.0338379, %175 ], [ 1, %186 ], [ %192, %189 ]
  %.1 = phi i64 [ %.0381, %175 ], [ %187, %186 ], [ %187, %189 ]
  %.not367 = icmp eq i64 %.1, 0
  br i1 %.not367, label %194, label %.loopexit411

194:                                              ; preds = %193
  %195 = load i64, ptr %2, align 8, !tbaa !5
  %.not368426 = icmp slt i64 %195, 1
  br i1 %.not368426, label %.loopexit411, label %.lr.ph429.preheader

.lr.ph429.preheader:                              ; preds = %194
  %min.iters.check = icmp ult i64 %195, 4
  br i1 %min.iters.check, label %.lr.ph429.preheader513, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph429.preheader
  %n.vec = and i64 %195, 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 ]
  %196 = getelementptr double, ptr %12, i64 %index
  %197 = getelementptr inbounds i8, ptr %196, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %196, align 8, !tbaa !10
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %197, align 8, !tbaa !10
  %index.next = add nuw i64 %index, 4
  %198 = icmp eq i64 %index.next, %n.vec
  br i1 %198, label %middle.block, label %vector.body, !llvm.loop !15

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %195, %n.vec
  br i1 %cmp.n, label %.loopexit411, label %.lr.ph429.preheader513

.lr.ph429.preheader513:                           ; preds = %middle.block, %.lr.ph429.preheader
  %.2347427.ph = phi i64 [ 1, %.lr.ph429.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph429

.lr.ph429:                                        ; preds = %.lr.ph429.preheader513, %.lr.ph429
  %.2347427 = phi i64 [ %200, %.lr.ph429 ], [ %.2347427.ph, %.lr.ph429.preheader513 ]
  %199 = getelementptr inbounds double, ptr %41, i64 %.2347427
  store double 1.000000e+00, ptr %199, align 8, !tbaa !10
  %200 = add nuw i64 %.2347427, 1
  %exitcond451.not = icmp eq i64 %.2347427, %195
  br i1 %exitcond451.not, label %.loopexit411, label %.lr.ph429, !llvm.loop !18

.loopexit411:                                     ; preds = %.lr.ph429, %middle.block, %194, %193
  %.not369 = icmp eq i64 %.1339, 0
  br i1 %.not369, label %201, label %.thread392

201:                                              ; preds = %.loopexit411
  %202 = load i64, ptr %2, align 8, !tbaa !5
  %.not370430 = icmp slt i64 %202, 1
  br i1 %.not370430, label %.loopexit, label %.lr.ph433.preheader

.lr.ph433.preheader:                              ; preds = %201
  %min.iters.check475 = icmp ult i64 %202, 4
  br i1 %min.iters.check475, label %.lr.ph433.preheader512, label %vector.ph476

vector.ph476:                                     ; preds = %.lr.ph433.preheader
  %n.vec478 = and i64 %202, 9223372036854775804
  %ind.end479 = or disjoint i64 %n.vec478, 1
  br label %vector.body481

vector.body481:                                   ; preds = %vector.body481, %vector.ph476
  %index482 = phi i64 [ 0, %vector.ph476 ], [ %index.next484, %vector.body481 ]
  %203 = getelementptr double, ptr %13, i64 %index482
  %204 = getelementptr inbounds i8, ptr %203, i64 16
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %203, align 8, !tbaa !10
  store <2 x double> <double 1.000000e+00, double 1.000000e+00>, ptr %204, align 8, !tbaa !10
  %index.next484 = add nuw i64 %index482, 4
  %205 = icmp eq i64 %index.next484, %n.vec478
  br i1 %205, label %middle.block473, label %vector.body481, !llvm.loop !19

middle.block473:                                  ; preds = %vector.body481
  %cmp.n485 = icmp eq i64 %202, %n.vec478
  br i1 %cmp.n485, label %.loopexit, label %.lr.ph433.preheader512

.lr.ph433.preheader512:                           ; preds = %middle.block473, %.lr.ph433.preheader
  %.3431.ph = phi i64 [ 1, %.lr.ph433.preheader ], [ %ind.end479, %middle.block473 ]
  br label %.lr.ph433

.lr.ph433:                                        ; preds = %.lr.ph433.preheader512, %.lr.ph433
  %.3431 = phi i64 [ %207, %.lr.ph433 ], [ %.3431.ph, %.lr.ph433.preheader512 ]
  %206 = getelementptr inbounds double, ptr %42, i64 %.3431
  store double 1.000000e+00, ptr %206, align 8, !tbaa !10
  %207 = add nuw i64 %.3431, 1
  %exitcond452.not = icmp eq i64 %.3431, %202
  br i1 %exitcond452.not, label %.loopexit, label %.lr.ph433, !llvm.loop !20

.loopexit:                                        ; preds = %.lr.ph433, %middle.block473, %201, %.thread384
  %.2340 = phi i64 [ %.0338379, %.thread384 ], [ 0, %201 ], [ 0, %middle.block473 ], [ 0, %.lr.ph433 ]
  %.2 = phi i64 [ %.0381, %.thread384 ], [ %.1, %201 ], [ %.1, %middle.block473 ], [ %.1, %.lr.ph433 ]
  br i1 %.not356, label %209, label %208

.thread392:                                       ; preds = %.loopexit411
  br i1 %.not356, label %.sink.split, label %208

208:                                              ; preds = %.thread392, %.loopexit
  %.2398 = phi i64 [ %.1, %.thread392 ], [ %.2, %.loopexit ]
  %.2340397 = phi i64 [ 1, %.thread392 ], [ %.2340, %.loopexit ]
  %.not372 = icmp eq i64 %.2398, 0
  br i1 %.not372, label %211, label %.sink.split

209:                                              ; preds = %.loopexit
  %.not371 = icmp eq i64 %.2340, 0
  br i1 %.not371, label %211, label %.sink.split

.sink.split:                                      ; preds = %209, %.thread392, %208
  %.sink469 = phi ptr [ %12, %208 ], [ %13, %.thread392 ], [ %13, %209 ]
  %.ph468 = phi i1 [ true, %208 ], [ false, %.thread392 ], [ false, %209 ]
  %.2399.ph = phi i64 [ 1, %208 ], [ %.1, %.thread392 ], [ %.2, %209 ]
  %.2340395.ph = phi i64 [ %.2340397, %208 ], [ 1, %.thread392 ], [ 1, %209 ]
  %210 = call i32 @zlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %.sink469, ptr noundef %14, ptr noundef nonnull %15) #4
  br label %211

211:                                              ; preds = %.sink.split, %209, %208
  %212 = phi i1 [ false, %209 ], [ true, %208 ], [ %.ph468, %.sink.split ]
  %.2399 = phi i64 [ %.2, %209 ], [ 0, %208 ], [ %.2399.ph, %.sink.split ]
  %.2340395 = phi i64 [ 0, %209 ], [ %.2340397, %208 ], [ %.2340395.ph, %.sink.split ]
  br i1 %or.cond, label %213, label %265

213:                                              ; preds = %211
  %214 = load i64, ptr %2, align 8, !tbaa !5
  %.not373441 = icmp slt i64 %214, 1
  br i1 %.not373441, label %._crit_edge445, label %.lr.ph444

.lr.ph444:                                        ; preds = %213
  %215 = load i64, ptr %3, align 8, !tbaa !5
  %216 = shl i64 %215, 1
  %217 = load i64, ptr %4, align 8, !tbaa !5
  %218 = add i64 %216, %217
  %.not374434 = icmp sgt i64 %215, %218
  br i1 %.not374434, label %._crit_edge445, label %.lr.ph437.preheader

.lr.ph437.preheader:                              ; preds = %.lr.ph444
  %219 = shl i64 %215, 4
  %scevgep = getelementptr i8, ptr %8, i64 %219
  %220 = add nsw i64 %214, -1
  %221 = mul i64 %38, %220
  %222 = shl i64 %221, 4
  %223 = shl i64 %215, 5
  %224 = add i64 %222, %223
  %225 = shl i64 %217, 4
  %226 = add i64 %224, %225
  %227 = or disjoint i64 %226, 8
  %scevgep486 = getelementptr i8, ptr %8, i64 %227
  %228 = shl i64 %38, 4
  %229 = mul i64 %35, %220
  %230 = shl i64 %229, 4
  %231 = add i64 %217, %215
  %232 = shl i64 %231, 4
  %233 = add i64 %230, %232
  %234 = or disjoint i64 %233, 8
  %scevgep487 = getelementptr i8, ptr %6, i64 %234
  %235 = shl i64 %35, 4
  %236 = or disjoint i64 %219, 8
  %scevgep488 = getelementptr i8, ptr %8, i64 %236
  %237 = getelementptr i8, ptr %8, i64 %222
  %238 = getelementptr i8, ptr %237, i64 %223
  %239 = getelementptr i8, ptr %238, i64 %225
  %scevgep489 = getelementptr i8, ptr %239, i64 16
  %scevgep490 = getelementptr i8, ptr %6, i64 8
  %240 = getelementptr i8, ptr %6, i64 %230
  %241 = getelementptr i8, ptr %240, i64 %232
  %scevgep491 = getelementptr i8, ptr %241, i64 16
  %242 = add i64 %217, %215
  %243 = add i64 %242, 1
  %min.iters.check500 = icmp ult i64 %243, 14
  %bound0 = icmp ult ptr %scevgep, %scevgep487
  %bound1 = icmp ugt ptr %scevgep486, %6
  %found.conflict = and i1 %bound0, %bound1
  %244 = or i64 %228, %235
  %245 = icmp slt i64 %244, 0
  %246 = or i1 %found.conflict, %245
  %bound0493 = icmp ult ptr %scevgep488, %scevgep491
  %bound1494 = icmp ult ptr %scevgep490, %scevgep489
  %found.conflict495 = and i1 %bound0493, %bound1494
  %247 = or i64 %228, %235
  %248 = icmp slt i64 %247, 0
  %249 = or i1 %found.conflict495, %248
  %conflict.rdx = or i1 %246, %249
  %n.vec503 = and i64 %243, -2
  %ind.end504 = add i64 %215, %n.vec503
  %cmp.n511 = icmp eq i64 %243, %n.vec503
  br label %.lr.ph437

.lr.ph437:                                        ; preds = %.lr.ph437.preheader, %._crit_edge438
  %.4442 = phi i64 [ %259, %._crit_edge438 ], [ 1, %.lr.ph437.preheader ]
  %250 = mul nsw i64 %.4442, %38
  %251 = mul nsw i64 %.4442, %35
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %37, i64 %251
  %invariant.gep439 = getelementptr %struct.doublecomplex, ptr %40, i64 %250
  %brmerge = select i1 %min.iters.check500, i1 true, i1 %conflict.rdx
  br i1 %brmerge, label %scalar.ph499.preheader, label %vector.body506

vector.body506:                                   ; preds = %.lr.ph437, %vector.body506
  %index507 = phi i64 [ %index.next510, %vector.body506 ], [ 0, %.lr.ph437 ]
  %offset.idx508 = add i64 %215, %index507
  %252 = add nsw i64 %offset.idx508, 1
  %253 = sub nsw i64 %252, %215
  %254 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %253
  %wide.vec = load <4 x double>, ptr %254, align 8, !tbaa !10
  %255 = getelementptr %struct.doublecomplex, ptr %invariant.gep439, i64 %252
  store <4 x double> %wide.vec, ptr %255, align 8, !tbaa !10
  %index.next510 = add nuw i64 %index507, 2
  %256 = icmp eq i64 %index.next510, %n.vec503
  br i1 %256, label %middle.block498, label %vector.body506, !llvm.loop !21

middle.block498:                                  ; preds = %vector.body506
  br i1 %cmp.n511, label %._crit_edge438, label %scalar.ph499.preheader

scalar.ph499.preheader:                           ; preds = %.lr.ph437, %middle.block498
  %.0348.in435.ph = phi i64 [ %215, %.lr.ph437 ], [ %ind.end504, %middle.block498 ]
  br label %scalar.ph499

scalar.ph499:                                     ; preds = %scalar.ph499.preheader, %scalar.ph499
  %.0348.in435 = phi i64 [ %.0348, %scalar.ph499 ], [ %.0348.in435.ph, %scalar.ph499.preheader ]
  %.0348 = add nsw i64 %.0348.in435, 1
  %257 = sub nsw i64 %.0348, %215
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %257
  %gep440 = getelementptr %struct.doublecomplex, ptr %invariant.gep439, i64 %.0348
  %258 = load <2 x double>, ptr %gep, align 8, !tbaa !10
  store <2 x double> %258, ptr %gep440, align 8, !tbaa !10
  %exitcond453.not = icmp eq i64 %.0348.in435, %218
  br i1 %exitcond453.not, label %._crit_edge438, label %scalar.ph499, !llvm.loop !22

._crit_edge438:                                   ; preds = %scalar.ph499, %middle.block498
  %259 = add nuw i64 %.4442, 1
  %exitcond454.not = icmp eq i64 %.4442, %214
  br i1 %exitcond454.not, label %._crit_edge445, label %.lr.ph437, !llvm.loop !23

._crit_edge445:                                   ; preds = %._crit_edge438, %.lr.ph444, %213
  %260 = call i32 @zgbtrf_(ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %28) #4
  %261 = load i64, ptr %28, align 8, !tbaa !5
  %262 = icmp sgt i64 %261, 0
  br i1 %262, label %263, label %265

263:                                              ; preds = %._crit_edge445
  %264 = call double @zla_gbrpvgrw__(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %28, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9) #4
  store double %264, ptr %19, align 8, !tbaa !10
  br label %277

265:                                              ; preds = %._crit_edge445, %211
  %266 = call double @zla_gbrpvgrw__(ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %2, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9) #4
  store double %266, ptr %19, align 8, !tbaa !10
  %267 = call i32 @zlacpy_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17) #4
  %268 = call i32 @zgbtrs_(ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %16, ptr noundef nonnull %17, ptr noundef nonnull %28) #4
  %269 = call i32 @zgbrfsx_(ptr noundef %1, ptr noundef %11, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %18, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef %23, ptr noundef %24, ptr noundef %25, ptr noundef %26, ptr noundef %27, ptr noundef nonnull %28) #4
  %270 = icmp ne i64 %.2340395, 0
  %or.cond11 = and i1 %212, %270
  br i1 %or.cond11, label %271, label %273

271:                                              ; preds = %265
  %272 = call i32 @zlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %13, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %277

273:                                              ; preds = %265
  %274 = icmp eq i64 %.2399, 0
  %or.cond13 = or i1 %212, %274
  br i1 %or.cond13, label %277, label %275

275:                                              ; preds = %273
  %276 = call i32 @zlascl2_(ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %12, ptr noundef %16, ptr noundef nonnull %17) #4
  br label %277

277:                                              ; preds = %271, %275, %273, %263, %.thread388
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #4
  ret i32 0
}

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare i32 @zgbequb_(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

declare i32 @zlaqgb_(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

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

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

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

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

declare i32 @zgbtrs_(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

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

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

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

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


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