; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (zgbsvx)

; 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 [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 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 [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1

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

150:                                              ; preds = %24
  %151 = load i32, ptr %72, align 4, !tbaa !9
  %152 = icmp ne i32 %151, 0
  br i1 %152, label %153, label %155

153:                                              ; preds = %150, %24
  %154 = load ptr, ptr %36, align 8, !tbaa !5
  store i8 78, ptr %154, align 1, !tbaa !11
  store i32 0, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %79, align 4, !tbaa !9
  br label %179

155:                                              ; preds = %150
  %156 = load ptr, ptr %36, align 8, !tbaa !5
  %157 = call i32 @lsame_(ptr noundef %156, ptr noundef @.str.2)
  %158 = icmp ne i32 %157, 0
  br i1 %158, label %163, label %159

159:                                              ; preds = %155
  %160 = load ptr, ptr %36, align 8, !tbaa !5
  %161 = call i32 @lsame_(ptr noundef %160, ptr noundef @.str.3)
  %162 = icmp ne i32 %161, 0
  br label %163

163:                                              ; preds = %159, %155
  %164 = phi i1 [ true, %155 ], [ %162, %159 ]
  %165 = zext i1 %164 to i32
  store i32 %165, ptr %83, align 4, !tbaa !9
  %166 = load ptr, ptr %36, align 8, !tbaa !5
  %167 = call i32 @lsame_(ptr noundef %166, ptr noundef @.str.4)
  %168 = icmp ne i32 %167, 0
  br i1 %168, label %173, label %169

169:                                              ; preds = %163
  %170 = load ptr, ptr %36, align 8, !tbaa !5
  %171 = call i32 @lsame_(ptr noundef %170, ptr noundef @.str.3)
  %172 = icmp ne i32 %171, 0
  br label %173

173:                                              ; preds = %169, %163
  %174 = phi i1 [ true, %163 ], [ %172, %169 ]
  %175 = zext i1 %174 to i32
  store i32 %175, ptr %79, align 4, !tbaa !9
  %176 = call double @dlamch_(ptr noundef @.str.5)
  store double %176, ptr %82, align 8, !tbaa !12
  %177 = load double, ptr %82, align 8, !tbaa !12
  %178 = fdiv double 1.000000e+00, %177
  store double %178, ptr %77, align 8, !tbaa !12
  br label %179

179:                                              ; preds = %173, %153
  %180 = load i32, ptr %76, align 4, !tbaa !9
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %191, label %182

182:                                              ; preds = %179
  %183 = load i32, ptr %72, align 4, !tbaa !9
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %191, label %185

185:                                              ; preds = %182
  %186 = load ptr, ptr %25, align 8, !tbaa !5
  %187 = call i32 @lsame_(ptr noundef %186, ptr noundef @.str.6)
  %188 = icmp ne i32 %187, 0
  br i1 %188, label %191, label %189

189:                                              ; preds = %185
  %190 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -1, ptr %190, align 4, !tbaa !9
  br label %472

191:                                              ; preds = %185, %182, %179
  %192 = load i32, ptr %81, align 4, !tbaa !9
  %193 = icmp ne i32 %192, 0
  br i1 %193, label %204, label %194

194:                                              ; preds = %191
  %195 = load ptr, ptr %26, align 8, !tbaa !5
  %196 = call i32 @lsame_(ptr noundef %195, ptr noundef @.str.7)
  %197 = icmp ne i32 %196, 0
  br i1 %197, label %204, label %198

198:                                              ; preds = %194
  %199 = load ptr, ptr %26, align 8, !tbaa !5
  %200 = call i32 @lsame_(ptr noundef %199, ptr noundef @.str.4)
  %201 = icmp ne i32 %200, 0
  br i1 %201, label %204, label %202

202:                                              ; preds = %198
  %203 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -2, ptr %203, align 4, !tbaa !9
  br label %471

204:                                              ; preds = %198, %194, %191
  %205 = load ptr, ptr %27, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = icmp slt i32 %206, 0
  br i1 %207, label %208, label %210

208:                                              ; preds = %204
  %209 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -3, ptr %209, align 4, !tbaa !9
  br label %470

210:                                              ; preds = %204
  %211 = load ptr, ptr %28, align 8, !tbaa !5
  %212 = load i32, ptr %211, align 4, !tbaa !9
  %213 = icmp slt i32 %212, 0
  br i1 %213, label %214, label %216

214:                                              ; preds = %210
  %215 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -4, ptr %215, align 4, !tbaa !9
  br label %469

216:                                              ; preds = %210
  %217 = load ptr, ptr %29, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = icmp slt i32 %218, 0
  br i1 %219, label %220, label %222

220:                                              ; preds = %216
  %221 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -5, ptr %221, align 4, !tbaa !9
  br label %468

222:                                              ; preds = %216
  %223 = load ptr, ptr %30, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = icmp slt i32 %224, 0
  br i1 %225, label %226, label %228

226:                                              ; preds = %222
  %227 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -6, ptr %227, align 4, !tbaa !9
  br label %467

228:                                              ; preds = %222
  %229 = load ptr, ptr %32, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = load ptr, ptr %28, align 8, !tbaa !5
  %232 = load i32, ptr %231, align 4, !tbaa !9
  %233 = load ptr, ptr %29, align 8, !tbaa !5
  %234 = load i32, ptr %233, align 4, !tbaa !9
  %235 = add nsw i32 %232, %234
  %236 = add nsw i32 %235, 1
  %237 = icmp slt i32 %230, %236
  br i1 %237, label %238, label %240

238:                                              ; preds = %228
  %239 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -8, ptr %239, align 4, !tbaa !9
  br label %466

240:                                              ; preds = %228
  %241 = load ptr, ptr %34, align 8, !tbaa !5
  %242 = load i32, ptr %241, align 4, !tbaa !9
  %243 = load ptr, ptr %28, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = shl i32 %244, 1
  %246 = load ptr, ptr %29, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = add nsw i32 %245, %247
  %249 = add nsw i32 %248, 1
  %250 = icmp slt i32 %242, %249
  br i1 %250, label %251, label %253

251:                                              ; preds = %240
  %252 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -10, ptr %252, align 4, !tbaa !9
  br label %465

253:                                              ; preds = %240
  %254 = load ptr, ptr %25, align 8, !tbaa !5
  %255 = call i32 @lsame_(ptr noundef %254, ptr noundef @.str.6)
  %256 = icmp ne i32 %255, 0
  br i1 %256, label %257, label %269

257:                                              ; preds = %253
  %258 = load i32, ptr %83, align 4, !tbaa !9
  %259 = icmp ne i32 %258, 0
  br i1 %259, label %269, label %260

260:                                              ; preds = %257
  %261 = load i32, ptr %79, align 4, !tbaa !9
  %262 = icmp ne i32 %261, 0
  br i1 %262, label %269, label %263

263:                                              ; preds = %260
  %264 = load ptr, ptr %36, align 8, !tbaa !5
  %265 = call i32 @lsame_(ptr noundef %264, ptr noundef @.str)
  %266 = icmp ne i32 %265, 0
  br i1 %266, label %269, label %267

267:                                              ; preds = %263
  %268 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -12, ptr %268, align 4, !tbaa !9
  br label %464

269:                                              ; preds = %263, %260, %257, %253
  %270 = load i32, ptr %83, align 4, !tbaa !9
  %271 = icmp ne i32 %270, 0
  br i1 %271, label %272, label %346

272:                                              ; preds = %269
  %273 = load double, ptr %77, align 8, !tbaa !12
  store double %273, ptr %69, align 8, !tbaa !12
  store double 0.000000e+00, ptr %70, align 8, !tbaa !12
  %274 = load ptr, ptr %27, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  store i32 %275, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %276

276:                                              ; preds = %311, %272
  %277 = load i32, ptr %68, align 4, !tbaa !9
  %278 = load i32, ptr %57, align 4, !tbaa !9
  %279 = icmp sle i32 %277, %278
  br i1 %279, label %280, label %314

280:                                              ; preds = %276
  %281 = load double, ptr %69, align 8, !tbaa !12
  store double %281, ptr %62, align 8, !tbaa !12
  %282 = load ptr, ptr %37, align 8, !tbaa !5
  %283 = load i32, ptr %68, align 4, !tbaa !9
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds double, ptr %282, i64 %284
  %286 = load double, ptr %285, align 8, !tbaa !12
  store double %286, ptr %63, align 8, !tbaa !12
  %287 = load double, ptr %62, align 8, !tbaa !12
  %288 = load double, ptr %63, align 8, !tbaa !12
  %289 = fcmp ole double %287, %288
  br i1 %289, label %290, label %292

290:                                              ; preds = %280
  %291 = load double, ptr %62, align 8, !tbaa !12
  br label %294

292:                                              ; preds = %280
  %293 = load double, ptr %63, align 8, !tbaa !12
  br label %294

294:                                              ; preds = %292, %290
  %295 = phi double [ %291, %290 ], [ %293, %292 ]
  store double %295, ptr %69, align 8, !tbaa !12
  %296 = load double, ptr %70, align 8, !tbaa !12
  store double %296, ptr %62, align 8, !tbaa !12
  %297 = load ptr, ptr %37, align 8, !tbaa !5
  %298 = load i32, ptr %68, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds double, ptr %297, i64 %299
  %301 = load double, ptr %300, align 8, !tbaa !12
  store double %301, ptr %63, align 8, !tbaa !12
  %302 = load double, ptr %62, align 8, !tbaa !12
  %303 = load double, ptr %63, align 8, !tbaa !12
  %304 = fcmp oge double %302, %303
  br i1 %304, label %305, label %307

305:                                              ; preds = %294
  %306 = load double, ptr %62, align 8, !tbaa !12
  br label %309

307:                                              ; preds = %294
  %308 = load double, ptr %63, align 8, !tbaa !12
  br label %309

309:                                              ; preds = %307, %305
  %310 = phi double [ %306, %305 ], [ %308, %307 ]
  store double %310, ptr %70, align 8, !tbaa !12
  br label %311

311:                                              ; preds = %309
  %312 = load i32, ptr %68, align 4, !tbaa !9
  %313 = add nsw i32 %312, 1
  store i32 %313, ptr %68, align 4, !tbaa !9
  br label %276, !llvm.loop !14

314:                                              ; preds = %276
  %315 = load double, ptr %69, align 8, !tbaa !12
  %316 = fcmp ole double %315, 0.000000e+00
  br i1 %316, label %317, label %319

317:                                              ; preds = %314
  %318 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -13, ptr %318, align 4, !tbaa !9
  br label %345

319:                                              ; preds = %314
  %320 = load ptr, ptr %27, align 8, !tbaa !5
  %321 = load i32, ptr %320, align 4, !tbaa !9
  %322 = icmp sgt i32 %321, 0
  br i1 %322, label %323, label %343

323:                                              ; preds = %319
  %324 = load double, ptr %69, align 8, !tbaa !12
  %325 = load double, ptr %82, align 8, !tbaa !12
  %326 = fcmp oge double %324, %325
  br i1 %326, label %327, label %329

327:                                              ; preds = %323
  %328 = load double, ptr %69, align 8, !tbaa !12
  br label %331

329:                                              ; preds = %323
  %330 = load double, ptr %82, align 8, !tbaa !12
  br label %331

331:                                              ; preds = %329, %327
  %332 = phi double [ %328, %327 ], [ %330, %329 ]
  %333 = load double, ptr %70, align 8, !tbaa !12
  %334 = load double, ptr %77, align 8, !tbaa !12
  %335 = fcmp ole double %333, %334
  br i1 %335, label %336, label %338

336:                                              ; preds = %331
  %337 = load double, ptr %70, align 8, !tbaa !12
  br label %340

338:                                              ; preds = %331
  %339 = load double, ptr %77, align 8, !tbaa !12
  br label %340

340:                                              ; preds = %338, %336
  %341 = phi double [ %337, %336 ], [ %339, %338 ]
  %342 = fdiv double %332, %341
  store double %342, ptr %80, align 8, !tbaa !12
  br label %344

343:                                              ; preds = %319
  store double 1.000000e+00, ptr %80, align 8, !tbaa !12
  br label %344

344:                                              ; preds = %343, %340
  br label %345

345:                                              ; preds = %344, %317
  br label %346

346:                                              ; preds = %345, %269
  %347 = load i32, ptr %79, align 4, !tbaa !9
  %348 = icmp ne i32 %347, 0
  br i1 %348, label %349, label %427

349:                                              ; preds = %346
  %350 = load ptr, ptr %48, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  %352 = icmp eq i32 %351, 0
  br i1 %352, label %353, label %427

353:                                              ; preds = %349
  %354 = load double, ptr %77, align 8, !tbaa !12
  store double %354, ptr %69, align 8, !tbaa !12
  store double 0.000000e+00, ptr %70, align 8, !tbaa !12
  %355 = load ptr, ptr %27, align 8, !tbaa !5
  %356 = load i32, ptr %355, align 4, !tbaa !9
  store i32 %356, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %357

357:                                              ; preds = %392, %353
  %358 = load i32, ptr %68, align 4, !tbaa !9
  %359 = load i32, ptr %57, align 4, !tbaa !9
  %360 = icmp sle i32 %358, %359
  br i1 %360, label %361, label %395

361:                                              ; preds = %357
  %362 = load double, ptr %69, align 8, !tbaa !12
  store double %362, ptr %62, align 8, !tbaa !12
  %363 = load ptr, ptr %38, align 8, !tbaa !5
  %364 = load i32, ptr %68, align 4, !tbaa !9
  %365 = sext i32 %364 to i64
  %366 = getelementptr inbounds double, ptr %363, i64 %365
  %367 = load double, ptr %366, align 8, !tbaa !12
  store double %367, ptr %63, align 8, !tbaa !12
  %368 = load double, ptr %62, align 8, !tbaa !12
  %369 = load double, ptr %63, align 8, !tbaa !12
  %370 = fcmp ole double %368, %369
  br i1 %370, label %371, label %373

371:                                              ; preds = %361
  %372 = load double, ptr %62, align 8, !tbaa !12
  br label %375

373:                                              ; preds = %361
  %374 = load double, ptr %63, align 8, !tbaa !12
  br label %375

375:                                              ; preds = %373, %371
  %376 = phi double [ %372, %371 ], [ %374, %373 ]
  store double %376, ptr %69, align 8, !tbaa !12
  %377 = load double, ptr %70, align 8, !tbaa !12
  store double %377, ptr %62, align 8, !tbaa !12
  %378 = load ptr, ptr %38, align 8, !tbaa !5
  %379 = load i32, ptr %68, align 4, !tbaa !9
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds double, ptr %378, i64 %380
  %382 = load double, ptr %381, align 8, !tbaa !12
  store double %382, ptr %63, align 8, !tbaa !12
  %383 = load double, ptr %62, align 8, !tbaa !12
  %384 = load double, ptr %63, align 8, !tbaa !12
  %385 = fcmp oge double %383, %384
  br i1 %385, label %386, label %388

386:                                              ; preds = %375
  %387 = load double, ptr %62, align 8, !tbaa !12
  br label %390

388:                                              ; preds = %375
  %389 = load double, ptr %63, align 8, !tbaa !12
  br label %390

390:                                              ; preds = %388, %386
  %391 = phi double [ %387, %386 ], [ %389, %388 ]
  store double %391, ptr %70, align 8, !tbaa !12
  br label %392

392:                                              ; preds = %390
  %393 = load i32, ptr %68, align 4, !tbaa !9
  %394 = add nsw i32 %393, 1
  store i32 %394, ptr %68, align 4, !tbaa !9
  br label %357, !llvm.loop !16

395:                                              ; preds = %357
  %396 = load double, ptr %69, align 8, !tbaa !12
  %397 = fcmp ole double %396, 0.000000e+00
  br i1 %397, label %398, label %400

398:                                              ; preds = %395
  %399 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -14, ptr %399, align 4, !tbaa !9
  br label %426

400:                                              ; preds = %395
  %401 = load ptr, ptr %27, align 8, !tbaa !5
  %402 = load i32, ptr %401, align 4, !tbaa !9
  %403 = icmp sgt i32 %402, 0
  br i1 %403, label %404, label %424

404:                                              ; preds = %400
  %405 = load double, ptr %69, align 8, !tbaa !12
  %406 = load double, ptr %82, align 8, !tbaa !12
  %407 = fcmp oge double %405, %406
  br i1 %407, label %408, label %410

408:                                              ; preds = %404
  %409 = load double, ptr %69, align 8, !tbaa !12
  br label %412

410:                                              ; preds = %404
  %411 = load double, ptr %82, align 8, !tbaa !12
  br label %412

412:                                              ; preds = %410, %408
  %413 = phi double [ %409, %408 ], [ %411, %410 ]
  %414 = load double, ptr %70, align 8, !tbaa !12
  %415 = load double, ptr %77, align 8, !tbaa !12
  %416 = fcmp ole double %414, %415
  br i1 %416, label %417, label %419

417:                                              ; preds = %412
  %418 = load double, ptr %70, align 8, !tbaa !12
  br label %421

419:                                              ; preds = %412
  %420 = load double, ptr %77, align 8, !tbaa !12
  br label %421

421:                                              ; preds = %419, %417
  %422 = phi double [ %418, %417 ], [ %420, %419 ]
  %423 = fdiv double %413, %422
  store double %423, ptr %75, align 8, !tbaa !12
  br label %425

424:                                              ; preds = %400
  store double 1.000000e+00, ptr %75, align 8, !tbaa !12
  br label %425

425:                                              ; preds = %424, %421
  br label %426

426:                                              ; preds = %425, %398
  br label %427

427:                                              ; preds = %426, %349, %346
  %428 = load ptr, ptr %48, align 8, !tbaa !5
  %429 = load i32, ptr %428, align 4, !tbaa !9
  %430 = icmp eq i32 %429, 0
  br i1 %430, label %431, label %463

431:                                              ; preds = %427
  %432 = load ptr, ptr %40, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = load ptr, ptr %27, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = icmp sge i32 1, %435
  br i1 %436, label %437, label %438

437:                                              ; preds = %431
  br label %441

438:                                              ; preds = %431
  %439 = load ptr, ptr %27, align 8, !tbaa !5
  %440 = load i32, ptr %439, align 4, !tbaa !9
  br label %441

441:                                              ; preds = %438, %437
  %442 = phi i32 [ 1, %437 ], [ %440, %438 ]
  %443 = icmp slt i32 %433, %442
  br i1 %443, label %444, label %446

444:                                              ; preds = %441
  %445 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -16, ptr %445, align 4, !tbaa !9
  br label %462

446:                                              ; preds = %441
  %447 = load ptr, ptr %42, align 8, !tbaa !5
  %448 = load i32, ptr %447, align 4, !tbaa !9
  %449 = load ptr, ptr %27, align 8, !tbaa !5
  %450 = load i32, ptr %449, align 4, !tbaa !9
  %451 = icmp sge i32 1, %450
  br i1 %451, label %452, label %453

452:                                              ; preds = %446
  br label %456

453:                                              ; preds = %446
  %454 = load ptr, ptr %27, align 8, !tbaa !5
  %455 = load i32, ptr %454, align 4, !tbaa !9
  br label %456

456:                                              ; preds = %453, %452
  %457 = phi i32 [ 1, %452 ], [ %455, %453 ]
  %458 = icmp slt i32 %448, %457
  br i1 %458, label %459, label %461

459:                                              ; preds = %456
  %460 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -18, ptr %460, align 4, !tbaa !9
  br label %461

461:                                              ; preds = %459, %456
  br label %462

462:                                              ; preds = %461, %444
  br label %463

463:                                              ; preds = %462, %427
  br label %464

464:                                              ; preds = %463, %267
  br label %465

465:                                              ; preds = %464, %251
  br label %466

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

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

468:                                              ; preds = %467, %220
  br label %469

469:                                              ; preds = %468, %214
  br label %470

470:                                              ; preds = %469, %208
  br label %471

471:                                              ; preds = %470, %202
  br label %472

472:                                              ; preds = %471, %189
  %473 = load ptr, ptr %48, align 8, !tbaa !5
  %474 = load i32, ptr %473, align 4, !tbaa !9
  %475 = icmp ne i32 %474, 0
  br i1 %475, label %476, label %481

476:                                              ; preds = %472
  %477 = load ptr, ptr %48, align 8, !tbaa !5
  %478 = load i32, ptr %477, align 4, !tbaa !9
  %479 = sub nsw i32 0, %478
  store i32 %479, ptr %57, align 4, !tbaa !9
  %480 = call i32 @xerbla_(ptr noundef @.str.8, ptr noundef %57, i32 noundef 6)
  store i32 1, ptr %85, align 4
  br label %1274

481:                                              ; preds = %472
  %482 = load i32, ptr %72, align 4, !tbaa !9
  %483 = icmp ne i32 %482, 0
  br i1 %483, label %484, label %536

484:                                              ; preds = %481
  %485 = load ptr, ptr %27, align 8, !tbaa !5
  %486 = load ptr, ptr %27, align 8, !tbaa !5
  %487 = load ptr, ptr %28, align 8, !tbaa !5
  %488 = load ptr, ptr %29, align 8, !tbaa !5
  %489 = load ptr, ptr %31, align 8, !tbaa !5
  %490 = load i32, ptr %50, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %489, i64 %491
  %493 = load ptr, ptr %32, align 8, !tbaa !5
  %494 = load ptr, ptr %37, align 8, !tbaa !5
  %495 = getelementptr inbounds double, ptr %494, i64 1
  %496 = load ptr, ptr %38, align 8, !tbaa !5
  %497 = getelementptr inbounds double, ptr %496, i64 1
  call void @zgbequ_(ptr noundef %485, ptr noundef %486, ptr noundef %487, ptr noundef %488, ptr noundef %492, ptr noundef %493, ptr noundef %495, ptr noundef %497, ptr noundef %80, ptr noundef %75, ptr noundef %65, ptr noundef %78)
  %498 = load i32, ptr %78, align 4, !tbaa !9
  %499 = icmp eq i32 %498, 0
  br i1 %499, label %500, label %535

500:                                              ; preds = %484
  %501 = load ptr, ptr %27, align 8, !tbaa !5
  %502 = load ptr, ptr %27, align 8, !tbaa !5
  %503 = load ptr, ptr %28, align 8, !tbaa !5
  %504 = load ptr, ptr %29, align 8, !tbaa !5
  %505 = load ptr, ptr %31, align 8, !tbaa !5
  %506 = load i32, ptr %50, align 4, !tbaa !9
  %507 = sext i32 %506 to i64
  %508 = getelementptr inbounds %struct.doublecomplex, ptr %505, i64 %507
  %509 = load ptr, ptr %32, align 8, !tbaa !5
  %510 = load ptr, ptr %37, align 8, !tbaa !5
  %511 = getelementptr inbounds double, ptr %510, i64 1
  %512 = load ptr, ptr %38, align 8, !tbaa !5
  %513 = getelementptr inbounds double, ptr %512, i64 1
  %514 = load ptr, ptr %36, align 8, !tbaa !5
  call void @zlaqgb_(ptr noundef %501, ptr noundef %502, ptr noundef %503, ptr noundef %504, ptr noundef %508, ptr noundef %509, ptr noundef %511, ptr noundef %513, ptr noundef %80, ptr noundef %75, ptr noundef %65, ptr noundef %514)
  %515 = load ptr, ptr %36, align 8, !tbaa !5
  %516 = call i32 @lsame_(ptr noundef %515, ptr noundef @.str.2)
  %517 = icmp ne i32 %516, 0
  br i1 %517, label %522, label %518

518:                                              ; preds = %500
  %519 = load ptr, ptr %36, align 8, !tbaa !5
  %520 = call i32 @lsame_(ptr noundef %519, ptr noundef @.str.3)
  %521 = icmp ne i32 %520, 0
  br label %522

522:                                              ; preds = %518, %500
  %523 = phi i1 [ true, %500 ], [ %521, %518 ]
  %524 = zext i1 %523 to i32
  store i32 %524, ptr %83, align 4, !tbaa !9
  %525 = load ptr, ptr %36, align 8, !tbaa !5
  %526 = call i32 @lsame_(ptr noundef %525, ptr noundef @.str.4)
  %527 = icmp ne i32 %526, 0
  br i1 %527, label %532, label %528

528:                                              ; preds = %522
  %529 = load ptr, ptr %36, align 8, !tbaa !5
  %530 = call i32 @lsame_(ptr noundef %529, ptr noundef @.str.3)
  %531 = icmp ne i32 %530, 0
  br label %532

532:                                              ; preds = %528, %522
  %533 = phi i1 [ true, %522 ], [ %531, %528 ]
  %534 = zext i1 %533 to i32
  store i32 %534, ptr %79, align 4, !tbaa !9
  br label %535

535:                                              ; preds = %532, %484
  br label %536

536:                                              ; preds = %535, %481
  %537 = load i32, ptr %81, align 4, !tbaa !9
  %538 = icmp ne i32 %537, 0
  br i1 %538, label %539, label %617

539:                                              ; preds = %536
  %540 = load i32, ptr %83, align 4, !tbaa !9
  %541 = icmp ne i32 %540, 0
  br i1 %541, label %542, label %616

542:                                              ; preds = %539
  %543 = load ptr, ptr %30, align 8, !tbaa !5
  %544 = load i32, ptr %543, align 4, !tbaa !9
  store i32 %544, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %545

545:                                              ; preds = %612, %542
  %546 = load i32, ptr %68, align 4, !tbaa !9
  %547 = load i32, ptr %57, align 4, !tbaa !9
  %548 = icmp sle i32 %546, %547
  br i1 %548, label %549, label %615

549:                                              ; preds = %545
  %550 = load ptr, ptr %27, align 8, !tbaa !5
  %551 = load i32, ptr %550, align 4, !tbaa !9
  store i32 %551, ptr %58, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %552

552:                                              ; preds = %608, %549
  %553 = load i32, ptr %67, align 4, !tbaa !9
  %554 = load i32, ptr %58, align 4, !tbaa !9
  %555 = icmp sle i32 %553, %554
  br i1 %555, label %556, label %611

556:                                              ; preds = %552
  %557 = load i32, ptr %67, align 4, !tbaa !9
  %558 = load i32, ptr %68, align 4, !tbaa !9
  %559 = load i32, ptr %53, align 4, !tbaa !9
  %560 = mul nsw i32 %558, %559
  %561 = add nsw i32 %557, %560
  store i32 %561, ptr %59, align 4, !tbaa !9
  %562 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %562, ptr %60, align 4, !tbaa !9
  %563 = load i32, ptr %67, align 4, !tbaa !9
  %564 = load i32, ptr %68, align 4, !tbaa !9
  %565 = load i32, ptr %53, align 4, !tbaa !9
  %566 = mul nsw i32 %564, %565
  %567 = add nsw i32 %563, %566
  store i32 %567, ptr %61, align 4, !tbaa !9
  %568 = load ptr, ptr %37, align 8, !tbaa !5
  %569 = load i32, ptr %60, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds double, ptr %568, i64 %570
  %572 = load double, ptr %571, align 8, !tbaa !12
  %573 = load ptr, ptr %39, align 8, !tbaa !5
  %574 = load i32, ptr %61, align 4, !tbaa !9
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %573, i64 %575
  %577 = getelementptr inbounds %struct.doublecomplex, ptr %576, i32 0, i32 0
  %578 = load double, ptr %577, align 8, !tbaa !17
  %579 = fmul double %572, %578
  %580 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %579, ptr %580, align 8, !tbaa !17
  %581 = load ptr, ptr %37, align 8, !tbaa !5
  %582 = load i32, ptr %60, align 4, !tbaa !9
  %583 = sext i32 %582 to i64
  %584 = getelementptr inbounds double, ptr %581, i64 %583
  %585 = load double, ptr %584, align 8, !tbaa !12
  %586 = load ptr, ptr %39, align 8, !tbaa !5
  %587 = load i32, ptr %61, align 4, !tbaa !9
  %588 = sext i32 %587 to i64
  %589 = getelementptr inbounds %struct.doublecomplex, ptr %586, i64 %588
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %589, i32 0, i32 1
  %591 = load double, ptr %590, align 8, !tbaa !19
  %592 = fmul double %585, %591
  %593 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %592, ptr %593, align 8, !tbaa !19
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %595 = load double, ptr %594, align 8, !tbaa !17
  %596 = load ptr, ptr %39, align 8, !tbaa !5
  %597 = load i32, ptr %59, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct.doublecomplex, ptr %596, i64 %598
  %600 = getelementptr inbounds %struct.doublecomplex, ptr %599, i32 0, i32 0
  store double %595, ptr %600, align 8, !tbaa !17
  %601 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %602 = load double, ptr %601, align 8, !tbaa !19
  %603 = load ptr, ptr %39, align 8, !tbaa !5
  %604 = load i32, ptr %59, align 4, !tbaa !9
  %605 = sext i32 %604 to i64
  %606 = getelementptr inbounds %struct.doublecomplex, ptr %603, i64 %605
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %606, i32 0, i32 1
  store double %602, ptr %607, align 8, !tbaa !19
  br label %608

608:                                              ; preds = %556
  %609 = load i32, ptr %67, align 4, !tbaa !9
  %610 = add nsw i32 %609, 1
  store i32 %610, ptr %67, align 4, !tbaa !9
  br label %552, !llvm.loop !20

611:                                              ; preds = %552
  br label %612

612:                                              ; preds = %611
  %613 = load i32, ptr %68, align 4, !tbaa !9
  %614 = add nsw i32 %613, 1
  store i32 %614, ptr %68, align 4, !tbaa !9
  br label %545, !llvm.loop !21

615:                                              ; preds = %545
  br label %616

616:                                              ; preds = %615, %539
  br label %695

617:                                              ; preds = %536
  %618 = load i32, ptr %79, align 4, !tbaa !9
  %619 = icmp ne i32 %618, 0
  br i1 %619, label %620, label %694

620:                                              ; preds = %617
  %621 = load ptr, ptr %30, align 8, !tbaa !5
  %622 = load i32, ptr %621, align 4, !tbaa !9
  store i32 %622, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %623

623:                                              ; preds = %690, %620
  %624 = load i32, ptr %68, align 4, !tbaa !9
  %625 = load i32, ptr %57, align 4, !tbaa !9
  %626 = icmp sle i32 %624, %625
  br i1 %626, label %627, label %693

627:                                              ; preds = %623
  %628 = load ptr, ptr %27, align 8, !tbaa !5
  %629 = load i32, ptr %628, align 4, !tbaa !9
  store i32 %629, ptr %58, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %630

630:                                              ; preds = %686, %627
  %631 = load i32, ptr %67, align 4, !tbaa !9
  %632 = load i32, ptr %58, align 4, !tbaa !9
  %633 = icmp sle i32 %631, %632
  br i1 %633, label %634, label %689

634:                                              ; preds = %630
  %635 = load i32, ptr %67, align 4, !tbaa !9
  %636 = load i32, ptr %68, align 4, !tbaa !9
  %637 = load i32, ptr %53, align 4, !tbaa !9
  %638 = mul nsw i32 %636, %637
  %639 = add nsw i32 %635, %638
  store i32 %639, ptr %59, align 4, !tbaa !9
  %640 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %640, ptr %60, align 4, !tbaa !9
  %641 = load i32, ptr %67, align 4, !tbaa !9
  %642 = load i32, ptr %68, align 4, !tbaa !9
  %643 = load i32, ptr %53, align 4, !tbaa !9
  %644 = mul nsw i32 %642, %643
  %645 = add nsw i32 %641, %644
  store i32 %645, ptr %61, align 4, !tbaa !9
  %646 = load ptr, ptr %38, align 8, !tbaa !5
  %647 = load i32, ptr %60, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds double, ptr %646, i64 %648
  %650 = load double, ptr %649, align 8, !tbaa !12
  %651 = load ptr, ptr %39, align 8, !tbaa !5
  %652 = load i32, ptr %61, align 4, !tbaa !9
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds %struct.doublecomplex, ptr %651, i64 %653
  %655 = getelementptr inbounds %struct.doublecomplex, ptr %654, i32 0, i32 0
  %656 = load double, ptr %655, align 8, !tbaa !17
  %657 = fmul double %650, %656
  %658 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %657, ptr %658, align 8, !tbaa !17
  %659 = load ptr, ptr %38, align 8, !tbaa !5
  %660 = load i32, ptr %60, align 4, !tbaa !9
  %661 = sext i32 %660 to i64
  %662 = getelementptr inbounds double, ptr %659, i64 %661
  %663 = load double, ptr %662, align 8, !tbaa !12
  %664 = load ptr, ptr %39, align 8, !tbaa !5
  %665 = load i32, ptr %61, align 4, !tbaa !9
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds %struct.doublecomplex, ptr %664, i64 %666
  %668 = getelementptr inbounds %struct.doublecomplex, ptr %667, i32 0, i32 1
  %669 = load double, ptr %668, align 8, !tbaa !19
  %670 = fmul double %663, %669
  %671 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %670, ptr %671, align 8, !tbaa !19
  %672 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %673 = load double, ptr %672, align 8, !tbaa !17
  %674 = load ptr, ptr %39, align 8, !tbaa !5
  %675 = load i32, ptr %59, align 4, !tbaa !9
  %676 = sext i32 %675 to i64
  %677 = getelementptr inbounds %struct.doublecomplex, ptr %674, i64 %676
  %678 = getelementptr inbounds %struct.doublecomplex, ptr %677, i32 0, i32 0
  store double %673, ptr %678, align 8, !tbaa !17
  %679 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %680 = load double, ptr %679, align 8, !tbaa !19
  %681 = load ptr, ptr %39, align 8, !tbaa !5
  %682 = load i32, ptr %59, align 4, !tbaa !9
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %681, i64 %683
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %684, i32 0, i32 1
  store double %680, ptr %685, align 8, !tbaa !19
  br label %686

686:                                              ; preds = %634
  %687 = load i32, ptr %67, align 4, !tbaa !9
  %688 = add nsw i32 %687, 1
  store i32 %688, ptr %67, align 4, !tbaa !9
  br label %630, !llvm.loop !22

689:                                              ; preds = %630
  br label %690

690:                                              ; preds = %689
  %691 = load i32, ptr %68, align 4, !tbaa !9
  %692 = add nsw i32 %691, 1
  store i32 %692, ptr %68, align 4, !tbaa !9
  br label %623, !llvm.loop !23

693:                                              ; preds = %623
  br label %694

694:                                              ; preds = %693, %617
  br label %695

695:                                              ; preds = %694, %616
  %696 = load i32, ptr %76, align 4, !tbaa !9
  %697 = icmp ne i32 %696, 0
  br i1 %697, label %701, label %698

698:                                              ; preds = %695
  %699 = load i32, ptr %72, align 4, !tbaa !9
  %700 = icmp ne i32 %699, 0
  br i1 %700, label %701, label %931

701:                                              ; preds = %698, %695
  %702 = load ptr, ptr %27, align 8, !tbaa !5
  %703 = load i32, ptr %702, align 4, !tbaa !9
  store i32 %703, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %704

704:                                              ; preds = %770, %701
  %705 = load i32, ptr %68, align 4, !tbaa !9
  %706 = load i32, ptr %57, align 4, !tbaa !9
  %707 = icmp sle i32 %705, %706
  br i1 %707, label %708, label %773

708:                                              ; preds = %704
  %709 = load i32, ptr %68, align 4, !tbaa !9
  %710 = load ptr, ptr %29, align 8, !tbaa !5
  %711 = load i32, ptr %710, align 4, !tbaa !9
  %712 = sub nsw i32 %709, %711
  store i32 %712, ptr %58, align 4, !tbaa !9
  %713 = load i32, ptr %58, align 4, !tbaa !9
  %714 = icmp sge i32 %713, 1
  br i1 %714, label %715, label %717

715:                                              ; preds = %708
  %716 = load i32, ptr %58, align 4, !tbaa !9
  br label %718

717:                                              ; preds = %708
  br label %718

718:                                              ; preds = %717, %715
  %719 = phi i32 [ %716, %715 ], [ 1, %717 ]
  store i32 %719, ptr %73, align 4, !tbaa !9
  %720 = load i32, ptr %68, align 4, !tbaa !9
  %721 = load ptr, ptr %28, align 8, !tbaa !5
  %722 = load i32, ptr %721, align 4, !tbaa !9
  %723 = add nsw i32 %720, %722
  store i32 %723, ptr %58, align 4, !tbaa !9
  %724 = load i32, ptr %58, align 4, !tbaa !9
  %725 = load ptr, ptr %27, align 8, !tbaa !5
  %726 = load i32, ptr %725, align 4, !tbaa !9
  %727 = icmp sle i32 %724, %726
  br i1 %727, label %728, label %730

728:                                              ; preds = %718
  %729 = load i32, ptr %58, align 4, !tbaa !9
  br label %733

730:                                              ; preds = %718
  %731 = load ptr, ptr %27, align 8, !tbaa !5
  %732 = load i32, ptr %731, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %730, %728
  %734 = phi i32 [ %729, %728 ], [ %732, %730 ]
  store i32 %734, ptr %74, align 4, !tbaa !9
  %735 = load i32, ptr %74, align 4, !tbaa !9
  %736 = load i32, ptr %73, align 4, !tbaa !9
  %737 = sub nsw i32 %735, %736
  %738 = add nsw i32 %737, 1
  store i32 %738, ptr %58, align 4, !tbaa !9
  %739 = load ptr, ptr %31, align 8, !tbaa !5
  %740 = load ptr, ptr %29, align 8, !tbaa !5
  %741 = load i32, ptr %740, align 4, !tbaa !9
  %742 = add nsw i32 %741, 1
  %743 = load i32, ptr %68, align 4, !tbaa !9
  %744 = sub nsw i32 %742, %743
  %745 = load i32, ptr %73, align 4, !tbaa !9
  %746 = add nsw i32 %744, %745
  %747 = load i32, ptr %68, align 4, !tbaa !9
  %748 = load i32, ptr %49, align 4, !tbaa !9
  %749 = mul nsw i32 %747, %748
  %750 = add nsw i32 %746, %749
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds %struct.doublecomplex, ptr %739, i64 %751
  %753 = load ptr, ptr %33, align 8, !tbaa !5
  %754 = load ptr, ptr %28, align 8, !tbaa !5
  %755 = load i32, ptr %754, align 4, !tbaa !9
  %756 = load ptr, ptr %29, align 8, !tbaa !5
  %757 = load i32, ptr %756, align 4, !tbaa !9
  %758 = add nsw i32 %755, %757
  %759 = add nsw i32 %758, 1
  %760 = load i32, ptr %68, align 4, !tbaa !9
  %761 = sub nsw i32 %759, %760
  %762 = load i32, ptr %73, align 4, !tbaa !9
  %763 = add nsw i32 %761, %762
  %764 = load i32, ptr %68, align 4, !tbaa !9
  %765 = load i32, ptr %51, align 4, !tbaa !9
  %766 = mul nsw i32 %764, %765
  %767 = add nsw i32 %763, %766
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %753, i64 %768
  call void @zcopy_(ptr noundef %58, ptr noundef %752, ptr noundef @c__1, ptr noundef %769, ptr noundef @c__1)
  br label %770

770:                                              ; preds = %733
  %771 = load i32, ptr %68, align 4, !tbaa !9
  %772 = add nsw i32 %771, 1
  store i32 %772, ptr %68, align 4, !tbaa !9
  br label %704, !llvm.loop !24

773:                                              ; preds = %704
  %774 = load ptr, ptr %27, align 8, !tbaa !5
  %775 = load ptr, ptr %27, align 8, !tbaa !5
  %776 = load ptr, ptr %28, align 8, !tbaa !5
  %777 = load ptr, ptr %29, align 8, !tbaa !5
  %778 = load ptr, ptr %33, align 8, !tbaa !5
  %779 = load i32, ptr %52, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds %struct.doublecomplex, ptr %778, i64 %780
  %782 = load ptr, ptr %34, align 8, !tbaa !5
  %783 = load ptr, ptr %35, align 8, !tbaa !5
  %784 = getelementptr inbounds i32, ptr %783, i64 1
  %785 = load ptr, ptr %48, align 8, !tbaa !5
  call void @zgbtrf_(ptr noundef %774, ptr noundef %775, ptr noundef %776, ptr noundef %777, ptr noundef %781, ptr noundef %782, ptr noundef %784, ptr noundef %785)
  %786 = load ptr, ptr %48, align 8, !tbaa !5
  %787 = load i32, ptr %786, align 4, !tbaa !9
  %788 = icmp sgt i32 %787, 0
  br i1 %788, label %789, label %930

789:                                              ; preds = %773
  store double 0.000000e+00, ptr %71, align 8, !tbaa !12
  %790 = load ptr, ptr %48, align 8, !tbaa !5
  %791 = load i32, ptr %790, align 4, !tbaa !9
  store i32 %791, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %792

792:                                              ; preds = %869, %789
  %793 = load i32, ptr %68, align 4, !tbaa !9
  %794 = load i32, ptr %57, align 4, !tbaa !9
  %795 = icmp sle i32 %793, %794
  br i1 %795, label %796, label %872

796:                                              ; preds = %792
  %797 = load ptr, ptr %29, align 8, !tbaa !5
  %798 = load i32, ptr %797, align 4, !tbaa !9
  %799 = add nsw i32 %798, 2
  %800 = load i32, ptr %68, align 4, !tbaa !9
  %801 = sub nsw i32 %799, %800
  store i32 %801, ptr %58, align 4, !tbaa !9
  %802 = load ptr, ptr %27, align 8, !tbaa !5
  %803 = load i32, ptr %802, align 4, !tbaa !9
  %804 = load ptr, ptr %29, align 8, !tbaa !5
  %805 = load i32, ptr %804, align 4, !tbaa !9
  %806 = add nsw i32 %803, %805
  %807 = add nsw i32 %806, 1
  %808 = load i32, ptr %68, align 4, !tbaa !9
  %809 = sub nsw i32 %807, %808
  store i32 %809, ptr %60, align 4, !tbaa !9
  %810 = load ptr, ptr %28, align 8, !tbaa !5
  %811 = load i32, ptr %810, align 4, !tbaa !9
  %812 = load ptr, ptr %29, align 8, !tbaa !5
  %813 = load i32, ptr %812, align 4, !tbaa !9
  %814 = add nsw i32 %811, %813
  %815 = add nsw i32 %814, 1
  store i32 %815, ptr %61, align 4, !tbaa !9
  %816 = load i32, ptr %60, align 4, !tbaa !9
  %817 = load i32, ptr %61, align 4, !tbaa !9
  %818 = icmp sle i32 %816, %817
  br i1 %818, label %819, label %821

819:                                              ; preds = %796
  %820 = load i32, ptr %60, align 4, !tbaa !9
  br label %823

821:                                              ; preds = %796
  %822 = load i32, ptr %61, align 4, !tbaa !9
  br label %823

823:                                              ; preds = %821, %819
  %824 = phi i32 [ %820, %819 ], [ %822, %821 ]
  store i32 %824, ptr %59, align 4, !tbaa !9
  %825 = load i32, ptr %58, align 4, !tbaa !9
  %826 = icmp sge i32 %825, 1
  br i1 %826, label %827, label %829

827:                                              ; preds = %823
  %828 = load i32, ptr %58, align 4, !tbaa !9
  br label %830

829:                                              ; preds = %823
  br label %830

830:                                              ; preds = %829, %827
  %831 = phi i32 [ %828, %827 ], [ 1, %829 ]
  store i32 %831, ptr %67, align 4, !tbaa !9
  br label %832

832:                                              ; preds = %865, %830
  %833 = load i32, ptr %67, align 4, !tbaa !9
  %834 = load i32, ptr %59, align 4, !tbaa !9
  %835 = icmp sle i32 %833, %834
  br i1 %835, label %836, label %868

836:                                              ; preds = %832
  %837 = load double, ptr %71, align 8, !tbaa !12
  store double %837, ptr %62, align 8, !tbaa !12
  %838 = load ptr, ptr %31, align 8, !tbaa !5
  %839 = load i32, ptr %67, align 4, !tbaa !9
  %840 = load i32, ptr %68, align 4, !tbaa !9
  %841 = load i32, ptr %49, align 4, !tbaa !9
  %842 = mul nsw i32 %840, %841
  %843 = add nsw i32 %839, %842
  %844 = sext i32 %843 to i64
  %845 = getelementptr inbounds %struct.doublecomplex, ptr %838, i64 %844
  %846 = call { double, double } @Cd(ptr noundef %845)
  %847 = extractvalue { double, double } %846, 0
  %848 = extractvalue { double, double } %846, 1
  %849 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %850 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  store double %847, ptr %849, align 8
  store double %848, ptr %850, align 8
  %851 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 0
  %852 = load double, ptr %851, align 8
  %853 = getelementptr inbounds { double, double }, ptr %86, i32 0, i32 1
  %854 = load double, ptr %853, align 8
  %855 = call double @cabs(double noundef %852, double noundef %854) #5
  store double %855, ptr %63, align 8, !tbaa !12
  %856 = load double, ptr %62, align 8, !tbaa !12
  %857 = load double, ptr %63, align 8, !tbaa !12
  %858 = fcmp oge double %856, %857
  br i1 %858, label %859, label %861

859:                                              ; preds = %836
  %860 = load double, ptr %62, align 8, !tbaa !12
  br label %863

861:                                              ; preds = %836
  %862 = load double, ptr %63, align 8, !tbaa !12
  br label %863

863:                                              ; preds = %861, %859
  %864 = phi double [ %860, %859 ], [ %862, %861 ]
  store double %864, ptr %71, align 8, !tbaa !12
  br label %865

865:                                              ; preds = %863
  %866 = load i32, ptr %67, align 4, !tbaa !9
  %867 = add nsw i32 %866, 1
  store i32 %867, ptr %67, align 4, !tbaa !9
  br label %832, !llvm.loop !25

868:                                              ; preds = %832
  br label %869

869:                                              ; preds = %868
  %870 = load i32, ptr %68, align 4, !tbaa !9
  %871 = add nsw i32 %870, 1
  store i32 %871, ptr %68, align 4, !tbaa !9
  br label %792, !llvm.loop !26

872:                                              ; preds = %792
  %873 = load ptr, ptr %48, align 8, !tbaa !5
  %874 = load i32, ptr %873, align 4, !tbaa !9
  %875 = sub nsw i32 %874, 1
  store i32 %875, ptr %59, align 4, !tbaa !9
  %876 = load ptr, ptr %28, align 8, !tbaa !5
  %877 = load i32, ptr %876, align 4, !tbaa !9
  %878 = load ptr, ptr %29, align 8, !tbaa !5
  %879 = load i32, ptr %878, align 4, !tbaa !9
  %880 = add nsw i32 %877, %879
  store i32 %880, ptr %58, align 4, !tbaa !9
  %881 = load i32, ptr %59, align 4, !tbaa !9
  %882 = load i32, ptr %58, align 4, !tbaa !9
  %883 = icmp sle i32 %881, %882
  br i1 %883, label %884, label %886

884:                                              ; preds = %872
  %885 = load i32, ptr %59, align 4, !tbaa !9
  br label %888

886:                                              ; preds = %872
  %887 = load i32, ptr %58, align 4, !tbaa !9
  br label %888

888:                                              ; preds = %886, %884
  %889 = phi i32 [ %885, %884 ], [ %887, %886 ]
  store i32 %889, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %60, align 4, !tbaa !9
  %890 = load ptr, ptr %28, align 8, !tbaa !5
  %891 = load i32, ptr %890, align 4, !tbaa !9
  %892 = load ptr, ptr %29, align 8, !tbaa !5
  %893 = load i32, ptr %892, align 4, !tbaa !9
  %894 = add nsw i32 %891, %893
  %895 = add nsw i32 %894, 2
  %896 = load ptr, ptr %48, align 8, !tbaa !5
  %897 = load i32, ptr %896, align 4, !tbaa !9
  %898 = sub nsw i32 %895, %897
  store i32 %898, ptr %61, align 4, !tbaa !9
  %899 = load ptr, ptr %48, align 8, !tbaa !5
  %900 = load ptr, ptr %33, align 8, !tbaa !5
  %901 = load i32, ptr %60, align 4, !tbaa !9
  %902 = load i32, ptr %61, align 4, !tbaa !9
  %903 = icmp sge i32 %901, %902
  br i1 %903, label %904, label %906

904:                                              ; preds = %888
  %905 = load i32, ptr %60, align 4, !tbaa !9
  br label %908

906:                                              ; preds = %888
  %907 = load i32, ptr %61, align 4, !tbaa !9
  br label %908

908:                                              ; preds = %906, %904
  %909 = phi i32 [ %905, %904 ], [ %907, %906 ]
  %910 = load i32, ptr %51, align 4, !tbaa !9
  %911 = add nsw i32 %909, %910
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds %struct.doublecomplex, ptr %900, i64 %912
  %914 = load ptr, ptr %34, align 8, !tbaa !5
  %915 = load ptr, ptr %47, align 8, !tbaa !5
  %916 = getelementptr inbounds double, ptr %915, i64 1
  %917 = call double @zlantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %899, ptr noundef %57, ptr noundef %913, ptr noundef %914, ptr noundef %916)
  store double %917, ptr %84, align 8, !tbaa !12
  %918 = load double, ptr %84, align 8, !tbaa !12
  %919 = fcmp oeq double %918, 0.000000e+00
  br i1 %919, label %920, label %921

920:                                              ; preds = %908
  store double 1.000000e+00, ptr %84, align 8, !tbaa !12
  br label %925

921:                                              ; preds = %908
  %922 = load double, ptr %71, align 8, !tbaa !12
  %923 = load double, ptr %84, align 8, !tbaa !12
  %924 = fdiv double %922, %923
  store double %924, ptr %84, align 8, !tbaa !12
  br label %925

925:                                              ; preds = %921, %920
  %926 = load double, ptr %84, align 8, !tbaa !12
  %927 = load ptr, ptr %47, align 8, !tbaa !5
  %928 = getelementptr inbounds double, ptr %927, i64 1
  store double %926, ptr %928, align 8, !tbaa !12
  %929 = load ptr, ptr %43, align 8, !tbaa !5
  store double 0.000000e+00, ptr %929, align 8, !tbaa !12
  store i32 1, ptr %85, align 4
  br label %1274

930:                                              ; preds = %773
  br label %931

931:                                              ; preds = %930, %698
  %932 = load i32, ptr %81, align 4, !tbaa !9
  %933 = icmp ne i32 %932, 0
  br i1 %933, label %934, label %936

934:                                              ; preds = %931
  %935 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 49, ptr %935, align 1, !tbaa !11
  br label %938

936:                                              ; preds = %931
  %937 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  store i8 73, ptr %937, align 1, !tbaa !11
  br label %938

938:                                              ; preds = %936, %934
  %939 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %940 = load ptr, ptr %27, align 8, !tbaa !5
  %941 = load ptr, ptr %28, align 8, !tbaa !5
  %942 = load ptr, ptr %29, align 8, !tbaa !5
  %943 = load ptr, ptr %31, align 8, !tbaa !5
  %944 = load i32, ptr %50, align 4, !tbaa !9
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds %struct.doublecomplex, ptr %943, i64 %945
  %947 = load ptr, ptr %32, align 8, !tbaa !5
  %948 = load ptr, ptr %47, align 8, !tbaa !5
  %949 = getelementptr inbounds double, ptr %948, i64 1
  %950 = call double @zlangb_(ptr noundef %939, ptr noundef %940, ptr noundef %941, ptr noundef %942, ptr noundef %946, ptr noundef %947, ptr noundef %949)
  store double %950, ptr %71, align 8, !tbaa !12
  %951 = load ptr, ptr %28, align 8, !tbaa !5
  %952 = load i32, ptr %951, align 4, !tbaa !9
  %953 = load ptr, ptr %29, align 8, !tbaa !5
  %954 = load i32, ptr %953, align 4, !tbaa !9
  %955 = add nsw i32 %952, %954
  store i32 %955, ptr %57, align 4, !tbaa !9
  %956 = load ptr, ptr %27, align 8, !tbaa !5
  %957 = load ptr, ptr %33, align 8, !tbaa !5
  %958 = load i32, ptr %52, align 4, !tbaa !9
  %959 = sext i32 %958 to i64
  %960 = getelementptr inbounds %struct.doublecomplex, ptr %957, i64 %959
  %961 = load ptr, ptr %34, align 8, !tbaa !5
  %962 = load ptr, ptr %47, align 8, !tbaa !5
  %963 = getelementptr inbounds double, ptr %962, i64 1
  %964 = call double @zlantb_(ptr noundef @.str.9, ptr noundef @.str.10, ptr noundef @.str, ptr noundef %956, ptr noundef %57, ptr noundef %960, ptr noundef %961, ptr noundef %963)
  store double %964, ptr %84, align 8, !tbaa !12
  %965 = load double, ptr %84, align 8, !tbaa !12
  %966 = fcmp oeq double %965, 0.000000e+00
  br i1 %966, label %967, label %968

967:                                              ; preds = %938
  store double 1.000000e+00, ptr %84, align 8, !tbaa !12
  br label %982

968:                                              ; preds = %938
  %969 = load ptr, ptr %27, align 8, !tbaa !5
  %970 = load ptr, ptr %28, align 8, !tbaa !5
  %971 = load ptr, ptr %29, align 8, !tbaa !5
  %972 = load ptr, ptr %31, align 8, !tbaa !5
  %973 = load i32, ptr %50, align 4, !tbaa !9
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds %struct.doublecomplex, ptr %972, i64 %974
  %976 = load ptr, ptr %32, align 8, !tbaa !5
  %977 = load ptr, ptr %47, align 8, !tbaa !5
  %978 = getelementptr inbounds double, ptr %977, i64 1
  %979 = call double @zlangb_(ptr noundef @.str.9, ptr noundef %969, ptr noundef %970, ptr noundef %971, ptr noundef %975, ptr noundef %976, ptr noundef %978)
  %980 = load double, ptr %84, align 8, !tbaa !12
  %981 = fdiv double %979, %980
  store double %981, ptr %84, align 8, !tbaa !12
  br label %982

982:                                              ; preds = %968, %967
  %983 = getelementptr inbounds [1 x i8], ptr %66, i64 0, i64 0
  %984 = load ptr, ptr %27, align 8, !tbaa !5
  %985 = load ptr, ptr %28, align 8, !tbaa !5
  %986 = load ptr, ptr %29, align 8, !tbaa !5
  %987 = load ptr, ptr %33, align 8, !tbaa !5
  %988 = load i32, ptr %52, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds %struct.doublecomplex, ptr %987, i64 %989
  %991 = load ptr, ptr %34, align 8, !tbaa !5
  %992 = load ptr, ptr %35, align 8, !tbaa !5
  %993 = getelementptr inbounds i32, ptr %992, i64 1
  %994 = load ptr, ptr %43, align 8, !tbaa !5
  %995 = load ptr, ptr %46, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.doublecomplex, ptr %995, i64 1
  %997 = load ptr, ptr %47, align 8, !tbaa !5
  %998 = getelementptr inbounds double, ptr %997, i64 1
  %999 = load ptr, ptr %48, align 8, !tbaa !5
  call void @zgbcon_(ptr noundef %983, ptr noundef %984, ptr noundef %985, ptr noundef %986, ptr noundef %990, ptr noundef %991, ptr noundef %993, ptr noundef %71, ptr noundef %994, ptr noundef %996, ptr noundef %998, ptr noundef %999)
  %1000 = load ptr, ptr %27, align 8, !tbaa !5
  %1001 = load ptr, ptr %30, align 8, !tbaa !5
  %1002 = load ptr, ptr %39, align 8, !tbaa !5
  %1003 = load i32, ptr %54, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds %struct.doublecomplex, ptr %1002, i64 %1004
  %1006 = load ptr, ptr %40, align 8, !tbaa !5
  %1007 = load ptr, ptr %41, align 8, !tbaa !5
  %1008 = load i32, ptr %56, align 4, !tbaa !9
  %1009 = sext i32 %1008 to i64
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %1007, i64 %1009
  %1011 = load ptr, ptr %42, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.11, ptr noundef %1000, ptr noundef %1001, ptr noundef %1005, ptr noundef %1006, ptr noundef %1010, ptr noundef %1011)
  %1012 = load ptr, ptr %26, align 8, !tbaa !5
  %1013 = load ptr, ptr %27, align 8, !tbaa !5
  %1014 = load ptr, ptr %28, align 8, !tbaa !5
  %1015 = load ptr, ptr %29, align 8, !tbaa !5
  %1016 = load ptr, ptr %30, align 8, !tbaa !5
  %1017 = load ptr, ptr %33, align 8, !tbaa !5
  %1018 = load i32, ptr %52, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds %struct.doublecomplex, ptr %1017, i64 %1019
  %1021 = load ptr, ptr %34, align 8, !tbaa !5
  %1022 = load ptr, ptr %35, align 8, !tbaa !5
  %1023 = getelementptr inbounds i32, ptr %1022, i64 1
  %1024 = load ptr, ptr %41, align 8, !tbaa !5
  %1025 = load i32, ptr %56, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds %struct.doublecomplex, ptr %1024, i64 %1026
  %1028 = load ptr, ptr %42, align 8, !tbaa !5
  %1029 = load ptr, ptr %48, align 8, !tbaa !5
  call void @zgbtrs_(ptr noundef %1012, ptr noundef %1013, ptr noundef %1014, ptr noundef %1015, ptr noundef %1016, ptr noundef %1020, ptr noundef %1021, ptr noundef %1023, ptr noundef %1027, ptr noundef %1028, ptr noundef %1029)
  %1030 = load ptr, ptr %26, align 8, !tbaa !5
  %1031 = load ptr, ptr %27, align 8, !tbaa !5
  %1032 = load ptr, ptr %28, align 8, !tbaa !5
  %1033 = load ptr, ptr %29, align 8, !tbaa !5
  %1034 = load ptr, ptr %30, align 8, !tbaa !5
  %1035 = load ptr, ptr %31, align 8, !tbaa !5
  %1036 = load i32, ptr %50, align 4, !tbaa !9
  %1037 = sext i32 %1036 to i64
  %1038 = getelementptr inbounds %struct.doublecomplex, ptr %1035, i64 %1037
  %1039 = load ptr, ptr %32, align 8, !tbaa !5
  %1040 = load ptr, ptr %33, align 8, !tbaa !5
  %1041 = load i32, ptr %52, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %1040, i64 %1042
  %1044 = load ptr, ptr %34, align 8, !tbaa !5
  %1045 = load ptr, ptr %35, align 8, !tbaa !5
  %1046 = getelementptr inbounds i32, ptr %1045, i64 1
  %1047 = load ptr, ptr %39, align 8, !tbaa !5
  %1048 = load i32, ptr %54, align 4, !tbaa !9
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %1047, i64 %1049
  %1051 = load ptr, ptr %40, align 8, !tbaa !5
  %1052 = load ptr, ptr %41, align 8, !tbaa !5
  %1053 = load i32, ptr %56, align 4, !tbaa !9
  %1054 = sext i32 %1053 to i64
  %1055 = getelementptr inbounds %struct.doublecomplex, ptr %1052, i64 %1054
  %1056 = load ptr, ptr %42, align 8, !tbaa !5
  %1057 = load ptr, ptr %44, align 8, !tbaa !5
  %1058 = getelementptr inbounds double, ptr %1057, i64 1
  %1059 = load ptr, ptr %45, align 8, !tbaa !5
  %1060 = getelementptr inbounds double, ptr %1059, i64 1
  %1061 = load ptr, ptr %46, align 8, !tbaa !5
  %1062 = getelementptr inbounds %struct.doublecomplex, ptr %1061, i64 1
  %1063 = load ptr, ptr %47, align 8, !tbaa !5
  %1064 = getelementptr inbounds double, ptr %1063, i64 1
  %1065 = load ptr, ptr %48, align 8, !tbaa !5
  call void @zgbrfs_(ptr noundef %1030, ptr noundef %1031, ptr noundef %1032, ptr noundef %1033, ptr noundef %1034, ptr noundef %1038, ptr noundef %1039, ptr noundef %1043, ptr noundef %1044, ptr noundef %1046, ptr noundef %1050, ptr noundef %1051, ptr noundef %1055, ptr noundef %1056, ptr noundef %1058, ptr noundef %1060, ptr noundef %1062, ptr noundef %1064, ptr noundef %1065)
  %1066 = load i32, ptr %81, align 4, !tbaa !9
  %1067 = icmp ne i32 %1066, 0
  br i1 %1067, label %1068, label %1164

1068:                                             ; preds = %982
  %1069 = load i32, ptr %79, align 4, !tbaa !9
  %1070 = icmp ne i32 %1069, 0
  br i1 %1070, label %1071, label %1163

1071:                                             ; preds = %1068
  %1072 = load ptr, ptr %30, align 8, !tbaa !5
  %1073 = load i32, ptr %1072, align 4, !tbaa !9
  store i32 %1073, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1074

1074:                                             ; preds = %1141, %1071
  %1075 = load i32, ptr %68, align 4, !tbaa !9
  %1076 = load i32, ptr %57, align 4, !tbaa !9
  %1077 = icmp sle i32 %1075, %1076
  br i1 %1077, label %1078, label %1144

1078:                                             ; preds = %1074
  %1079 = load ptr, ptr %27, align 8, !tbaa !5
  %1080 = load i32, ptr %1079, align 4, !tbaa !9
  store i32 %1080, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %1081

1081:                                             ; preds = %1137, %1078
  %1082 = load i32, ptr %67, align 4, !tbaa !9
  %1083 = load i32, ptr %59, align 4, !tbaa !9
  %1084 = icmp sle i32 %1082, %1083
  br i1 %1084, label %1085, label %1140

1085:                                             ; preds = %1081
  %1086 = load i32, ptr %67, align 4, !tbaa !9
  %1087 = load i32, ptr %68, align 4, !tbaa !9
  %1088 = load i32, ptr %55, align 4, !tbaa !9
  %1089 = mul nsw i32 %1087, %1088
  %1090 = add nsw i32 %1086, %1089
  store i32 %1090, ptr %58, align 4, !tbaa !9
  %1091 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %1091, ptr %60, align 4, !tbaa !9
  %1092 = load i32, ptr %67, align 4, !tbaa !9
  %1093 = load i32, ptr %68, align 4, !tbaa !9
  %1094 = load i32, ptr %55, align 4, !tbaa !9
  %1095 = mul nsw i32 %1093, %1094
  %1096 = add nsw i32 %1092, %1095
  store i32 %1096, ptr %61, align 4, !tbaa !9
  %1097 = load ptr, ptr %38, align 8, !tbaa !5
  %1098 = load i32, ptr %60, align 4, !tbaa !9
  %1099 = sext i32 %1098 to i64
  %1100 = getelementptr inbounds double, ptr %1097, i64 %1099
  %1101 = load double, ptr %1100, align 8, !tbaa !12
  %1102 = load ptr, ptr %41, align 8, !tbaa !5
  %1103 = load i32, ptr %61, align 4, !tbaa !9
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds %struct.doublecomplex, ptr %1102, i64 %1104
  %1106 = getelementptr inbounds %struct.doublecomplex, ptr %1105, i32 0, i32 0
  %1107 = load double, ptr %1106, align 8, !tbaa !17
  %1108 = fmul double %1101, %1107
  %1109 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %1108, ptr %1109, align 8, !tbaa !17
  %1110 = load ptr, ptr %38, align 8, !tbaa !5
  %1111 = load i32, ptr %60, align 4, !tbaa !9
  %1112 = sext i32 %1111 to i64
  %1113 = getelementptr inbounds double, ptr %1110, i64 %1112
  %1114 = load double, ptr %1113, align 8, !tbaa !12
  %1115 = load ptr, ptr %41, align 8, !tbaa !5
  %1116 = load i32, ptr %61, align 4, !tbaa !9
  %1117 = sext i32 %1116 to i64
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1115, i64 %1117
  %1119 = getelementptr inbounds %struct.doublecomplex, ptr %1118, i32 0, i32 1
  %1120 = load double, ptr %1119, align 8, !tbaa !19
  %1121 = fmul double %1114, %1120
  %1122 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %1121, ptr %1122, align 8, !tbaa !19
  %1123 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %1124 = load double, ptr %1123, align 8, !tbaa !17
  %1125 = load ptr, ptr %41, align 8, !tbaa !5
  %1126 = load i32, ptr %58, align 4, !tbaa !9
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds %struct.doublecomplex, ptr %1125, i64 %1127
  %1129 = getelementptr inbounds %struct.doublecomplex, ptr %1128, i32 0, i32 0
  store double %1124, ptr %1129, align 8, !tbaa !17
  %1130 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %1131 = load double, ptr %1130, align 8, !tbaa !19
  %1132 = load ptr, ptr %41, align 8, !tbaa !5
  %1133 = load i32, ptr %58, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds %struct.doublecomplex, ptr %1132, i64 %1134
  %1136 = getelementptr inbounds %struct.doublecomplex, ptr %1135, i32 0, i32 1
  store double %1131, ptr %1136, align 8, !tbaa !19
  br label %1137

1137:                                             ; preds = %1085
  %1138 = load i32, ptr %67, align 4, !tbaa !9
  %1139 = add nsw i32 %1138, 1
  store i32 %1139, ptr %67, align 4, !tbaa !9
  br label %1081, !llvm.loop !27

1140:                                             ; preds = %1081
  br label %1141

1141:                                             ; preds = %1140
  %1142 = load i32, ptr %68, align 4, !tbaa !9
  %1143 = add nsw i32 %1142, 1
  store i32 %1143, ptr %68, align 4, !tbaa !9
  br label %1074, !llvm.loop !28

1144:                                             ; preds = %1074
  %1145 = load ptr, ptr %30, align 8, !tbaa !5
  %1146 = load i32, ptr %1145, align 4, !tbaa !9
  store i32 %1146, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1147

1147:                                             ; preds = %1159, %1144
  %1148 = load i32, ptr %68, align 4, !tbaa !9
  %1149 = load i32, ptr %57, align 4, !tbaa !9
  %1150 = icmp sle i32 %1148, %1149
  br i1 %1150, label %1151, label %1162

1151:                                             ; preds = %1147
  %1152 = load double, ptr %75, align 8, !tbaa !12
  %1153 = load ptr, ptr %44, align 8, !tbaa !5
  %1154 = load i32, ptr %68, align 4, !tbaa !9
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds double, ptr %1153, i64 %1155
  %1157 = load double, ptr %1156, align 8, !tbaa !12
  %1158 = fdiv double %1157, %1152
  store double %1158, ptr %1156, align 8, !tbaa !12
  br label %1159

1159:                                             ; preds = %1151
  %1160 = load i32, ptr %68, align 4, !tbaa !9
  %1161 = add nsw i32 %1160, 1
  store i32 %1161, ptr %68, align 4, !tbaa !9
  br label %1147, !llvm.loop !29

1162:                                             ; preds = %1147
  br label %1163

1163:                                             ; preds = %1162, %1068
  br label %1260

1164:                                             ; preds = %982
  %1165 = load i32, ptr %83, align 4, !tbaa !9
  %1166 = icmp ne i32 %1165, 0
  br i1 %1166, label %1167, label %1259

1167:                                             ; preds = %1164
  %1168 = load ptr, ptr %30, align 8, !tbaa !5
  %1169 = load i32, ptr %1168, align 4, !tbaa !9
  store i32 %1169, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1170

1170:                                             ; preds = %1237, %1167
  %1171 = load i32, ptr %68, align 4, !tbaa !9
  %1172 = load i32, ptr %57, align 4, !tbaa !9
  %1173 = icmp sle i32 %1171, %1172
  br i1 %1173, label %1174, label %1240

1174:                                             ; preds = %1170
  %1175 = load ptr, ptr %27, align 8, !tbaa !5
  %1176 = load i32, ptr %1175, align 4, !tbaa !9
  store i32 %1176, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %67, align 4, !tbaa !9
  br label %1177

1177:                                             ; preds = %1233, %1174
  %1178 = load i32, ptr %67, align 4, !tbaa !9
  %1179 = load i32, ptr %59, align 4, !tbaa !9
  %1180 = icmp sle i32 %1178, %1179
  br i1 %1180, label %1181, label %1236

1181:                                             ; preds = %1177
  %1182 = load i32, ptr %67, align 4, !tbaa !9
  %1183 = load i32, ptr %68, align 4, !tbaa !9
  %1184 = load i32, ptr %55, align 4, !tbaa !9
  %1185 = mul nsw i32 %1183, %1184
  %1186 = add nsw i32 %1182, %1185
  store i32 %1186, ptr %58, align 4, !tbaa !9
  %1187 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %1187, ptr %60, align 4, !tbaa !9
  %1188 = load i32, ptr %67, align 4, !tbaa !9
  %1189 = load i32, ptr %68, align 4, !tbaa !9
  %1190 = load i32, ptr %55, align 4, !tbaa !9
  %1191 = mul nsw i32 %1189, %1190
  %1192 = add nsw i32 %1188, %1191
  store i32 %1192, ptr %61, align 4, !tbaa !9
  %1193 = load ptr, ptr %37, align 8, !tbaa !5
  %1194 = load i32, ptr %60, align 4, !tbaa !9
  %1195 = sext i32 %1194 to i64
  %1196 = getelementptr inbounds double, ptr %1193, i64 %1195
  %1197 = load double, ptr %1196, align 8, !tbaa !12
  %1198 = load ptr, ptr %41, align 8, !tbaa !5
  %1199 = load i32, ptr %61, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds %struct.doublecomplex, ptr %1198, i64 %1200
  %1202 = getelementptr inbounds %struct.doublecomplex, ptr %1201, i32 0, i32 0
  %1203 = load double, ptr %1202, align 8, !tbaa !17
  %1204 = fmul double %1197, %1203
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  store double %1204, ptr %1205, align 8, !tbaa !17
  %1206 = load ptr, ptr %37, align 8, !tbaa !5
  %1207 = load i32, ptr %60, align 4, !tbaa !9
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds double, ptr %1206, i64 %1208
  %1210 = load double, ptr %1209, align 8, !tbaa !12
  %1211 = load ptr, ptr %41, align 8, !tbaa !5
  %1212 = load i32, ptr %61, align 4, !tbaa !9
  %1213 = sext i32 %1212 to i64
  %1214 = getelementptr inbounds %struct.doublecomplex, ptr %1211, i64 %1213
  %1215 = getelementptr inbounds %struct.doublecomplex, ptr %1214, i32 0, i32 1
  %1216 = load double, ptr %1215, align 8, !tbaa !19
  %1217 = fmul double %1210, %1216
  %1218 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  store double %1217, ptr %1218, align 8, !tbaa !19
  %1219 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 0
  %1220 = load double, ptr %1219, align 8, !tbaa !17
  %1221 = load ptr, ptr %41, align 8, !tbaa !5
  %1222 = load i32, ptr %58, align 4, !tbaa !9
  %1223 = sext i32 %1222 to i64
  %1224 = getelementptr inbounds %struct.doublecomplex, ptr %1221, i64 %1223
  %1225 = getelementptr inbounds %struct.doublecomplex, ptr %1224, i32 0, i32 0
  store double %1220, ptr %1225, align 8, !tbaa !17
  %1226 = getelementptr inbounds %struct.doublecomplex, ptr %64, i32 0, i32 1
  %1227 = load double, ptr %1226, align 8, !tbaa !19
  %1228 = load ptr, ptr %41, align 8, !tbaa !5
  %1229 = load i32, ptr %58, align 4, !tbaa !9
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds %struct.doublecomplex, ptr %1228, i64 %1230
  %1232 = getelementptr inbounds %struct.doublecomplex, ptr %1231, i32 0, i32 1
  store double %1227, ptr %1232, align 8, !tbaa !19
  br label %1233

1233:                                             ; preds = %1181
  %1234 = load i32, ptr %67, align 4, !tbaa !9
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %67, align 4, !tbaa !9
  br label %1177, !llvm.loop !30

1236:                                             ; preds = %1177
  br label %1237

1237:                                             ; preds = %1236
  %1238 = load i32, ptr %68, align 4, !tbaa !9
  %1239 = add nsw i32 %1238, 1
  store i32 %1239, ptr %68, align 4, !tbaa !9
  br label %1170, !llvm.loop !31

1240:                                             ; preds = %1170
  %1241 = load ptr, ptr %30, align 8, !tbaa !5
  %1242 = load i32, ptr %1241, align 4, !tbaa !9
  store i32 %1242, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %1243

1243:                                             ; preds = %1255, %1240
  %1244 = load i32, ptr %68, align 4, !tbaa !9
  %1245 = load i32, ptr %57, align 4, !tbaa !9
  %1246 = icmp sle i32 %1244, %1245
  br i1 %1246, label %1247, label %1258

1247:                                             ; preds = %1243
  %1248 = load double, ptr %80, align 8, !tbaa !12
  %1249 = load ptr, ptr %44, align 8, !tbaa !5
  %1250 = load i32, ptr %68, align 4, !tbaa !9
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds double, ptr %1249, i64 %1251
  %1253 = load double, ptr %1252, align 8, !tbaa !12
  %1254 = fdiv double %1253, %1248
  store double %1254, ptr %1252, align 8, !tbaa !12
  br label %1255

1255:                                             ; preds = %1247
  %1256 = load i32, ptr %68, align 4, !tbaa !9
  %1257 = add nsw i32 %1256, 1
  store i32 %1257, ptr %68, align 4, !tbaa !9
  br label %1243, !llvm.loop !32

1258:                                             ; preds = %1243
  br label %1259

1259:                                             ; preds = %1258, %1164
  br label %1260

1260:                                             ; preds = %1259, %1163
  %1261 = load ptr, ptr %43, align 8, !tbaa !5
  %1262 = load double, ptr %1261, align 8, !tbaa !12
  %1263 = call double @dlamch_(ptr noundef @.str.12)
  %1264 = fcmp olt double %1262, %1263
  br i1 %1264, label %1265, label %1270

1265:                                             ; preds = %1260
  %1266 = load ptr, ptr %27, align 8, !tbaa !5
  %1267 = load i32, ptr %1266, align 4, !tbaa !9
  %1268 = add nsw i32 %1267, 1
  %1269 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 %1268, ptr %1269, align 4, !tbaa !9
  br label %1270

1270:                                             ; preds = %1265, %1260
  %1271 = load double, ptr %84, align 8, !tbaa !12
  %1272 = load ptr, ptr %47, align 8, !tbaa !5
  %1273 = getelementptr inbounds double, ptr %1272, i64 1
  store double %1271, ptr %1273, align 8, !tbaa !12
  store i32 1, ptr %85, align 4
  br label %1274

1274:                                             ; preds = %1270, %925, %476
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  ret void
}

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

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

declare double @dlamch_(ptr noundef) #2

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

declare void @zgbequ_(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 void @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 void @zcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #4

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

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

declare void @zgbcon_(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 void @zlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

declare void @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 void @zgbrfs_(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 "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint 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 #5 = { 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 = !{!"int", !7, i64 0}
!11 = !{!7, !7, i64 0}
!12 = !{!13, !13, i64 0}
!13 = !{!"double", !7, i64 0}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = !{!18, !13, i64 0}
!18 = !{!"", !13, i64 0, !13, i64 8}
!19 = !{!18, !13, i64 8}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}
!27 = distinct !{!27, !15}
!28 = distinct !{!28, !15}
!29 = distinct !{!29, !15}
!30 = distinct !{!30, !15}
!31 = distinct !{!31, !15}
!32 = distinct !{!32, !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 [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [13 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 [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [8 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @zgbsvx_(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) local_unnamed_addr #0 {
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca double, align 8
  %28 = alloca [1 x i8], align 1
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #6
  %33 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %33, -1
  %34 = sext i32 %narrow to i64
  %35 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %34
  %36 = load i32, ptr %9, align 4, !tbaa !5
  %narrow502 = xor i32 %36, -1
  %37 = sext i32 %narrow502 to i64
  %38 = getelementptr inbounds %struct.doublecomplex, ptr %8, i64 %37
  %39 = getelementptr inbounds i8, ptr %12, i64 -8
  %40 = getelementptr inbounds i8, ptr %13, i64 -8
  %41 = load i32, ptr %15, align 4, !tbaa !5
  %narrow503 = xor i32 %41, -1
  %42 = sext i32 %narrow503 to i64
  %43 = getelementptr inbounds %struct.doublecomplex, ptr %14, i64 %42
  %44 = load i32, ptr %17, align 4, !tbaa !5
  %narrow504 = xor i32 %44, -1
  %45 = sext i32 %narrow504 to i64
  %46 = getelementptr inbounds %struct.doublecomplex, ptr %16, i64 %45
  %47 = getelementptr inbounds i8, ptr %19, i64 -8
  store i32 0, ptr %23, align 4, !tbaa !5
  %48 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %49 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %50 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #6
  %51 = icmp ne i32 %48, 0
  %52 = icmp ne i32 %49, 0
  %or.cond = select i1 %51, i1 true, i1 %52
  br i1 %or.cond, label %.thread, label %53

.thread:                                          ; preds = %24
  store i8 78, ptr %11, align 1, !tbaa !9
  br label %71

53:                                               ; preds = %24
  %54 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #6
  %.not = icmp eq i32 %54, 0
  br i1 %.not, label %55, label %58

55:                                               ; preds = %53
  %56 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #6
  %57 = icmp ne i32 %56, 0
  br label %58

58:                                               ; preds = %55, %53
  %59 = phi i1 [ true, %53 ], [ %57, %55 ]
  %60 = zext i1 %59 to i32
  %61 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #6
  %.not482 = icmp eq i32 %61, 0
  br i1 %.not482, label %62, label %65

62:                                               ; preds = %58
  %63 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #6
  %64 = icmp ne i32 %63, 0
  br label %65

65:                                               ; preds = %62, %58
  %66 = phi i1 [ true, %58 ], [ %64, %62 ]
  %67 = zext i1 %66 to i32
  %68 = tail call double @dlamch_(ptr noundef nonnull @.str.5) #6
  %69 = fdiv double 1.000000e+00, %68
  %70 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #6
  %.not483 = icmp eq i32 %70, 0
  br i1 %.not483, label %.thread537.sink.split, label %71

71:                                               ; preds = %.thread, %65
  %.0456530 = phi i32 [ 0, %.thread ], [ %60, %65 ]
  %.0458528 = phi double [ undef, %.thread ], [ %68, %65 ]
  %.0459527 = phi i32 [ 0, %.thread ], [ %67, %65 ]
  %.0461525 = phi double [ undef, %.thread ], [ %69, %65 ]
  %.not484 = icmp eq i32 %50, 0
  br i1 %.not484, label %72, label %76

72:                                               ; preds = %71
  %73 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.7) #6
  %.not485 = icmp eq i32 %73, 0
  br i1 %.not485, label %74, label %76

74:                                               ; preds = %72
  %75 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.4) #6
  %.not486 = icmp eq i32 %75, 0
  br i1 %.not486, label %.thread537.sink.split, label %76

76:                                               ; preds = %74, %72, %71
  %77 = load i32, ptr %2, align 4, !tbaa !5
  %78 = icmp slt i32 %77, 0
  br i1 %78, label %.thread537.sink.split, label %79

79:                                               ; preds = %76
  %80 = load i32, ptr %3, align 4, !tbaa !5
  %81 = icmp slt i32 %80, 0
  br i1 %81, label %.thread537.sink.split, label %82

82:                                               ; preds = %79
  %83 = load i32, ptr %4, align 4, !tbaa !5
  %84 = icmp slt i32 %83, 0
  br i1 %84, label %.thread537.sink.split, label %85

85:                                               ; preds = %82
  %86 = load i32, ptr %5, align 4, !tbaa !5
  %87 = icmp slt i32 %86, 0
  br i1 %87, label %.thread537.sink.split, label %88

88:                                               ; preds = %85
  %89 = load i32, ptr %7, align 4, !tbaa !5
  %90 = add nuw nsw i32 %83, %80
  %.not487 = icmp sgt i32 %89, %90
  br i1 %.not487, label %91, label %.thread537.sink.split

91:                                               ; preds = %88
  %92 = load i32, ptr %9, align 4, !tbaa !5
  %93 = shl nuw i32 %80, 1
  %94 = add nsw i32 %83, %93
  %.not488 = icmp sgt i32 %92, %94
  br i1 %.not488, label %95, label %.thread537.sink.split

95:                                               ; preds = %91
  %96 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.6) #6
  %97 = icmp eq i32 %96, 0
  %98 = icmp ne i32 %.0456530, 0
  %or.cond5 = select i1 %97, i1 true, i1 %98
  %99 = icmp ne i32 %.0459527, 0
  %or.cond7 = select i1 %or.cond5, i1 true, i1 %99
  br i1 %or.cond7, label %102, label %100

100:                                              ; preds = %95
  %101 = tail call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str) #6
  %.not489 = icmp eq i32 %101, 0
  br i1 %.not489, label %.thread537.sink.split, label %..thread532_crit_edge

..thread532_crit_edge:                            ; preds = %100
  %.pr.pre = load i32, ptr %23, align 4, !tbaa !5
  br label %.thread532

102:                                              ; preds = %95
  br i1 %98, label %103, label %135

103:                                              ; preds = %102
  %104 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %104, ptr %25, align 4, !tbaa !5
  %.not490547 = icmp slt i32 %104, 1
  br i1 %.not490547, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %103
  %105 = zext nneg i32 %104 to i64
  %xtraiter = and i64 %105, 1
  %106 = icmp eq i32 %104, 1
  br i1 %106, label %._crit_edge.loopexit.unr-lcssa, label %.lr.ph.preheader.new

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

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader.new
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader.new ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0462550 = phi double [ 0.000000e+00, %.lr.ph.preheader.new ], [ %118, %.lr.ph ]
  %.0464549 = phi double [ %.0461525, %.lr.ph.preheader.new ], [ %116, %.lr.ph ]
  %niter = phi i64 [ 0, %.lr.ph.preheader.new ], [ %niter.next.1, %.lr.ph ]
  %107 = getelementptr inbounds double, ptr %39, i64 %indvars.iv
  %108 = load double, ptr %107, align 8, !tbaa !10
  %109 = fcmp ole double %.0464549, %108
  %110 = select i1 %109, double %.0464549, double %108
  %111 = fcmp oge double %.0462550, %108
  %112 = select i1 %111, double %.0462550, double %108
  %113 = getelementptr double, ptr %12, i64 %indvars.iv
  %114 = load double, ptr %113, align 8, !tbaa !10
  %115 = fcmp ole double %110, %114
  %116 = select i1 %115, double %110, double %114
  %117 = fcmp oge double %112, %114
  %118 = select i1 %117, double %112, double %114
  %indvars.iv.next.1 = add nuw nsw i64 %indvars.iv, 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
  %.lcssa860.ph = phi double [ poison, %.lr.ph.preheader ], [ %116, %.lr.ph ]
  %.lcssa859.ph = phi double [ poison, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %indvars.iv.unr = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next.1, %.lr.ph ]
  %.0462550.unr = phi double [ 0.000000e+00, %.lr.ph.preheader ], [ %118, %.lr.ph ]
  %.0464549.unr = phi double [ %.0461525, %.lr.ph.preheader ], [ %116, %.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
  %119 = getelementptr inbounds double, ptr %39, i64 %indvars.iv.unr
  %120 = load double, ptr %119, align 8, !tbaa !10
  %121 = fcmp ole double %.0464549.unr, %120
  %122 = select i1 %121, double %.0464549.unr, double %120
  %123 = fcmp oge double %.0462550.unr, %120
  %124 = select i1 %123, double %.0462550.unr, double %120
  br label %._crit_edge

._crit_edge:                                      ; preds = %.lr.ph.epil, %._crit_edge.loopexit.unr-lcssa, %103
  %.0464.lcssa = phi double [ %.0461525, %103 ], [ %.lcssa860.ph, %._crit_edge.loopexit.unr-lcssa ], [ %122, %.lr.ph.epil ]
  %.0462.lcssa = phi double [ 0.000000e+00, %103 ], [ %.lcssa859.ph, %._crit_edge.loopexit.unr-lcssa ], [ %124, %.lr.ph.epil ]
  %125 = fcmp ugt double %.0464.lcssa, 0.000000e+00
  br i1 %125, label %126, label %.thread537.sink.split

126:                                              ; preds = %._crit_edge
  %127 = icmp sgt i32 %104, 0
  br i1 %127, label %128, label %134

128:                                              ; preds = %126
  %129 = fcmp oge double %.0464.lcssa, %.0458528
  %130 = select i1 %129, double %.0464.lcssa, double %.0458528
  %131 = fcmp ole double %.0462.lcssa, %.0461525
  %132 = select i1 %131, double %.0462.lcssa, double %.0461525
  %133 = fdiv double %130, %132
  store double %133, ptr %32, align 8, !tbaa !10
  br label %135

134:                                              ; preds = %126
  store double 1.000000e+00, ptr %32, align 8, !tbaa !10
  br label %135

135:                                              ; preds = %134, %128, %102
  %.pr.pre699.pr = load i32, ptr %23, align 4, !tbaa !5
  br i1 %99, label %136, label %.thread532

136:                                              ; preds = %135
  %137 = icmp eq i32 %.pr.pre699.pr, 0
  br i1 %137, label %138, label %.thread537

138:                                              ; preds = %136
  %139 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %139, ptr %25, align 4, !tbaa !5
  %.not491552 = icmp slt i32 %139, 1
  br i1 %.not491552, label %._crit_edge558, label %.lr.ph557.preheader

.lr.ph557.preheader:                              ; preds = %138
  %140 = zext nneg i32 %139 to i64
  %xtraiter863 = and i64 %140, 1
  %141 = icmp eq i32 %139, 1
  br i1 %141, label %._crit_edge558.loopexit.unr-lcssa, label %.lr.ph557.preheader.new

.lr.ph557.preheader.new:                          ; preds = %.lr.ph557.preheader
  %unroll_iter867 = and i64 %140, 2147483646
  br label %.lr.ph557

.lr.ph557:                                        ; preds = %.lr.ph557, %.lr.ph557.preheader.new
  %indvars.iv635 = phi i64 [ 1, %.lr.ph557.preheader.new ], [ %indvars.iv.next636.1, %.lr.ph557 ]
  %.1463555 = phi double [ 0.000000e+00, %.lr.ph557.preheader.new ], [ %153, %.lr.ph557 ]
  %.1465554 = phi double [ %.0461525, %.lr.ph557.preheader.new ], [ %151, %.lr.ph557 ]
  %niter868 = phi i64 [ 0, %.lr.ph557.preheader.new ], [ %niter868.next.1, %.lr.ph557 ]
  %142 = getelementptr inbounds double, ptr %40, i64 %indvars.iv635
  %143 = load double, ptr %142, align 8, !tbaa !10
  %144 = fcmp ole double %.1465554, %143
  %145 = select i1 %144, double %.1465554, double %143
  %146 = fcmp oge double %.1463555, %143
  %147 = select i1 %146, double %.1463555, double %143
  %148 = getelementptr double, ptr %13, i64 %indvars.iv635
  %149 = load double, ptr %148, align 8, !tbaa !10
  %150 = fcmp ole double %145, %149
  %151 = select i1 %150, double %145, double %149
  %152 = fcmp oge double %147, %149
  %153 = select i1 %152, double %147, double %149
  %indvars.iv.next636.1 = add nuw nsw i64 %indvars.iv635, 2
  %niter868.next.1 = add i64 %niter868, 2
  %niter868.ncmp.1 = icmp eq i64 %niter868.next.1, %unroll_iter867
  br i1 %niter868.ncmp.1, label %._crit_edge558.loopexit.unr-lcssa, label %.lr.ph557, !llvm.loop !14

._crit_edge558.loopexit.unr-lcssa:                ; preds = %.lr.ph557, %.lr.ph557.preheader
  %.lcssa858.ph = phi double [ poison, %.lr.ph557.preheader ], [ %151, %.lr.ph557 ]
  %.lcssa857.ph = phi double [ poison, %.lr.ph557.preheader ], [ %153, %.lr.ph557 ]
  %indvars.iv635.unr = phi i64 [ 1, %.lr.ph557.preheader ], [ %indvars.iv.next636.1, %.lr.ph557 ]
  %.1463555.unr = phi double [ 0.000000e+00, %.lr.ph557.preheader ], [ %153, %.lr.ph557 ]
  %.1465554.unr = phi double [ %.0461525, %.lr.ph557.preheader ], [ %151, %.lr.ph557 ]
  %lcmp.mod864.not = icmp eq i64 %xtraiter863, 0
  br i1 %lcmp.mod864.not, label %._crit_edge558, label %.lr.ph557.epil

.lr.ph557.epil:                                   ; preds = %._crit_edge558.loopexit.unr-lcssa
  %154 = getelementptr inbounds double, ptr %40, i64 %indvars.iv635.unr
  %155 = load double, ptr %154, align 8, !tbaa !10
  %156 = fcmp ole double %.1465554.unr, %155
  %157 = select i1 %156, double %.1465554.unr, double %155
  %158 = fcmp oge double %.1463555.unr, %155
  %159 = select i1 %158, double %.1463555.unr, double %155
  br label %._crit_edge558

._crit_edge558:                                   ; preds = %.lr.ph557.epil, %._crit_edge558.loopexit.unr-lcssa, %138
  %.1465.lcssa = phi double [ %.0461525, %138 ], [ %.lcssa858.ph, %._crit_edge558.loopexit.unr-lcssa ], [ %157, %.lr.ph557.epil ]
  %.1463.lcssa = phi double [ 0.000000e+00, %138 ], [ %.lcssa857.ph, %._crit_edge558.loopexit.unr-lcssa ], [ %159, %.lr.ph557.epil ]
  %160 = fcmp ugt double %.1465.lcssa, 0.000000e+00
  br i1 %160, label %161, label %.thread537.sink.split

161:                                              ; preds = %._crit_edge558
  %162 = icmp sgt i32 %139, 0
  br i1 %162, label %163, label %169

163:                                              ; preds = %161
  %164 = fcmp oge double %.1465.lcssa, %.0458528
  %165 = select i1 %164, double %.1465.lcssa, double %.0458528
  %166 = fcmp ole double %.1463.lcssa, %.0461525
  %167 = select i1 %166, double %.1463.lcssa, double %.0461525
  %168 = fdiv double %165, %167
  store double %168, ptr %30, align 8, !tbaa !10
  br label %.thread532.thread

169:                                              ; preds = %161
  store double 1.000000e+00, ptr %30, align 8, !tbaa !10
  br label %.thread532.thread

.thread532:                                       ; preds = %..thread532_crit_edge, %135
  %.pr535.pr = phi i32 [ %.pr.pre, %..thread532_crit_edge ], [ %.pr.pre699.pr, %135 ]
  %170 = icmp eq i32 %.pr535.pr, 0
  br i1 %170, label %.thread532.thread, label %.thread537

.thread532.thread:                                ; preds = %163, %169, %.thread532
  %171 = load i32, ptr %15, align 4, !tbaa !5
  %172 = load i32, ptr %2, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.smax.i32(i32 %172, i32 1)
  %173 = icmp slt i32 %171, %spec.select
  br i1 %173, label %.thread537.sink.split, label %174

174:                                              ; preds = %.thread532.thread
  %175 = load i32, ptr %17, align 4, !tbaa !5
  %176 = icmp slt i32 %175, %spec.select
  br i1 %176, label %.thread537.sink.split, label %.thread533

.thread537.sink.split:                            ; preds = %174, %.thread532.thread, %._crit_edge558, %._crit_edge, %100, %91, %88, %85, %82, %79, %76, %74, %65
  %.sink = phi i32 [ -1, %65 ], [ -2, %74 ], [ -3, %76 ], [ -4, %79 ], [ -5, %82 ], [ -6, %85 ], [ -8, %88 ], [ -10, %91 ], [ -12, %100 ], [ -13, %._crit_edge ], [ -14, %._crit_edge558 ], [ -16, %.thread532.thread ], [ -18, %174 ]
  store i32 %.sink, ptr %23, align 4, !tbaa !5
  br label %.thread537

.thread537:                                       ; preds = %.thread537.sink.split, %136, %.thread532
  %177 = phi i32 [ %.pr535.pr, %.thread532 ], [ %.pr.pre699.pr, %136 ], [ %.sink, %.thread537.sink.split ]
  %178 = sub nsw i32 0, %177
  store i32 %178, ptr %25, align 4, !tbaa !5
  %179 = call i32 @xerbla_(ptr noundef nonnull @.str.8, ptr noundef nonnull %25, i32 noundef 6) #6
  br label %541

.thread533:                                       ; preds = %174
  br i1 %52, label %180, label %198

180:                                              ; preds = %.thread533
  call void @zgbequ_(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 %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %31) #6
  %181 = load i32, ptr %31, align 4, !tbaa !5
  %182 = icmp eq i32 %181, 0
  br i1 %182, label %183, label %198

183:                                              ; preds = %180
  call void @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 %32, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef %11) #6
  %184 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.2) #6
  %.not493 = icmp eq i32 %184, 0
  br i1 %.not493, label %185, label %188

185:                                              ; preds = %183
  %186 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #6
  %187 = icmp ne i32 %186, 0
  br label %188

188:                                              ; preds = %185, %183
  %189 = phi i1 [ true, %183 ], [ %187, %185 ]
  %190 = zext i1 %189 to i32
  %191 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.4) #6
  %.not494 = icmp eq i32 %191, 0
  br i1 %.not494, label %192, label %195

192:                                              ; preds = %188
  %193 = call i32 @lsame_(ptr noundef %11, ptr noundef nonnull @.str.3) #6
  %194 = icmp ne i32 %193, 0
  br label %195

195:                                              ; preds = %192, %188
  %196 = phi i1 [ true, %188 ], [ %194, %192 ]
  %197 = zext i1 %196 to i32
  br label %198

198:                                              ; preds = %180, %195, %.thread533
  %.1460 = phi i32 [ %197, %195 ], [ %.0459527, %180 ], [ %.0459527, %.thread533 ]
  %.1457 = phi i32 [ %190, %195 ], [ %.0456530, %180 ], [ %.0456530, %.thread533 ]
  br i1 %.not484, label %247, label %199

199:                                              ; preds = %198
  %.not499 = icmp eq i32 %.1457, 0
  br i1 %.not499, label %.loopexit545, label %200

200:                                              ; preds = %199
  %201 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %201, ptr %25, align 4, !tbaa !5
  %.not500566 = icmp slt i32 %201, 1
  br i1 %.not500566, label %.loopexit545, label %.lr.ph569

.lr.ph569:                                        ; preds = %200
  %202 = load i32, ptr %2, align 4, !tbaa !5
  %.not518561 = icmp slt i32 %202, 1
  br i1 %.not518561, label %..loopexit546_crit_edge, label %.lr.ph564.preheader

.lr.ph564.preheader:                              ; preds = %.lr.ph569
  %203 = add nuw i32 %202, 1
  %204 = sext i32 %41 to i64
  %205 = add nuw i32 %201, 1
  %wide.trip.count648 = zext i32 %205 to i64
  %wide.trip.count643 = zext i32 %203 to i64
  %206 = shl nsw i64 %204, 4
  %207 = shl nsw i64 %42, 4
  %208 = getelementptr i8, ptr %14, i64 %206
  %209 = getelementptr i8, ptr %208, i64 %207
  %scevgep = getelementptr i8, ptr %209, i64 16
  %210 = shl nuw nsw i64 %wide.trip.count648, 4
  %211 = add nsw i64 %210, -16
  %212 = mul i64 %211, %204
  %213 = shl nuw nsw i64 %wide.trip.count643, 4
  %214 = getelementptr i8, ptr %14, i64 %212
  %215 = getelementptr i8, ptr %214, i64 %207
  %scevgep728 = getelementptr i8, ptr %215, i64 %213
  %216 = shl nuw nsw i64 %wide.trip.count643, 3
  %217 = getelementptr i8, ptr %12, i64 %216
  %scevgep729 = getelementptr i8, ptr %217, i64 -8
  %218 = zext nneg i32 %202 to i64
  %219 = zext nneg i32 %202 to i64
  %min.iters.check = icmp eq i32 %202, 1
  %bound0 = icmp ult ptr %scevgep, %scevgep729
  %bound1 = icmp ugt ptr %scevgep728, %12
  %found.conflict = and i1 %bound0, %bound1
  %stride.check = icmp slt i32 %41, 0
  %220 = or i1 %found.conflict, %stride.check
  %n.vec = and i64 %218, 2147483646
  %ind.end = or i64 %218, 1
  %cmp.n = icmp eq i64 %n.vec, %218
  %221 = and i32 %202, 1
  %lcmp.mod870.not = icmp eq i32 %221, 0
  br label %.lr.ph564

.lr.ph564:                                        ; preds = %.lr.ph564.preheader, %._crit_edge565
  %indvars.iv645 = phi i64 [ 1, %.lr.ph564.preheader ], [ %indvars.iv.next646, %._crit_edge565 ]
  %222 = mul nsw i64 %indvars.iv645, %204
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %43, i64 %222
  %brmerge = select i1 %min.iters.check, i1 true, i1 %220
  br i1 %brmerge, label %scalar.ph.preheader, label %vector.body

vector.body:                                      ; preds = %.lr.ph564, %vector.body
  %index = phi i64 [ %index.next, %vector.body ], [ 0, %.lr.ph564 ]
  %offset.idx = or disjoint i64 %index, 1
  %223 = getelementptr double, ptr %12, i64 %index
  %wide.load = load <2 x double>, ptr %223, align 8, !tbaa !10, !alias.scope !15
  %224 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %offset.idx
  %wide.vec = load <4 x double>, ptr %224, align 8, !tbaa !10
  %strided.vec = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec730 = shufflevector <4 x double> %wide.vec, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %225 = fmul <2 x double> %wide.load, %strided.vec
  %226 = fmul <2 x double> %wide.load, %strided.vec730
  %interleaved.vec = shufflevector <2 x double> %225, <2 x double> %226, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %224, align 8, !tbaa !10
  %index.next = add nuw i64 %index, 2
  %227 = icmp eq i64 %index.next, %n.vec
  br i1 %227, label %middle.block, label %vector.body, !llvm.loop !18

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

scalar.ph.preheader:                              ; preds = %.lr.ph564, %middle.block
  %indvars.iv640.ph = phi i64 [ 1, %.lr.ph564 ], [ %ind.end, %middle.block ]
  br i1 %lcmp.mod870.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader
  %228 = getelementptr inbounds double, ptr %39, i64 %indvars.iv640.ph
  %229 = load double, ptr %228, align 8, !tbaa !10
  %gep.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv640.ph
  %230 = load <2 x double>, ptr %gep.prol, align 8, !tbaa !10
  %231 = insertelement <2 x double> poison, double %229, i64 0
  %232 = shufflevector <2 x double> %231, <2 x double> poison, <2 x i32> zeroinitializer
  %233 = fmul <2 x double> %232, %230
  store <2 x double> %233, ptr %gep.prol, align 8, !tbaa !10
  %indvars.iv.next641.prol = add nuw nsw i64 %indvars.iv640.ph, 1
  br label %scalar.ph.prol.loopexit

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv640.unr = phi i64 [ %indvars.iv640.ph, %scalar.ph.preheader ], [ %indvars.iv.next641.prol, %scalar.ph.prol ]
  %234 = icmp eq i64 %indvars.iv640.ph, %219
  br i1 %234, label %._crit_edge565, label %scalar.ph.preheader.new

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

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv640 = phi i64 [ %indvars.iv640.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next641.1, %scalar.ph ]
  %235 = getelementptr inbounds double, ptr %39, i64 %indvars.iv640
  %236 = load double, ptr %235, align 8, !tbaa !10
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv640
  %237 = load <2 x double>, ptr %gep, align 8, !tbaa !10
  %238 = insertelement <2 x double> poison, double %236, i64 0
  %239 = shufflevector <2 x double> %238, <2 x double> poison, <2 x i32> zeroinitializer
  %240 = fmul <2 x double> %239, %237
  store <2 x double> %240, ptr %gep, align 8, !tbaa !10
  %241 = getelementptr double, ptr %12, i64 %indvars.iv640
  %242 = load double, ptr %241, align 8, !tbaa !10
  %gep883 = getelementptr %struct.doublecomplex, ptr %invariant.gep882, i64 %indvars.iv640
  %243 = load <2 x double>, ptr %gep883, align 8, !tbaa !10
  %244 = insertelement <2 x double> poison, double %242, i64 0
  %245 = shufflevector <2 x double> %244, <2 x double> poison, <2 x i32> zeroinitializer
  %246 = fmul <2 x double> %245, %243
  store <2 x double> %246, ptr %gep883, align 8, !tbaa !10
  %indvars.iv.next641.1 = add nuw nsw i64 %indvars.iv640, 2
  %exitcond644.not.1 = icmp eq i64 %indvars.iv.next641.1, %wide.trip.count643
  br i1 %exitcond644.not.1, label %._crit_edge565, label %scalar.ph, !llvm.loop !21

._crit_edge565:                                   ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next646 = add nuw nsw i64 %indvars.iv645, 1
  %exitcond649.not = icmp eq i64 %indvars.iv.next646, %wide.trip.count648
  br i1 %exitcond649.not, label %..loopexit546_crit_edge, label %.lr.ph564, !llvm.loop !22

247:                                              ; preds = %198
  %.not496 = icmp eq i32 %.1460, 0
  br i1 %.not496, label %.loopexit545, label %248

248:                                              ; preds = %247
  %249 = load i32, ptr %5, align 4, !tbaa !5
  store i32 %249, ptr %25, align 4, !tbaa !5
  %.not497575 = icmp slt i32 %249, 1
  br i1 %.not497575, label %.loopexit545, label %.lr.ph578

.lr.ph578:                                        ; preds = %248
  %250 = load i32, ptr %2, align 4, !tbaa !5
  %.not498570 = icmp slt i32 %250, 1
  br i1 %.not498570, label %..loopexit545_crit_edge, label %.lr.ph573.preheader

.lr.ph573.preheader:                              ; preds = %.lr.ph578
  %251 = add nuw i32 %250, 1
  %252 = sext i32 %41 to i64
  %253 = add nuw i32 %249, 1
  %wide.trip.count658 = zext i32 %253 to i64
  %wide.trip.count653 = zext i32 %251 to i64
  %254 = shl nsw i64 %252, 4
  %255 = shl nsw i64 %42, 4
  %256 = getelementptr i8, ptr %14, i64 %254
  %257 = getelementptr i8, ptr %256, i64 %255
  %scevgep732 = getelementptr i8, ptr %257, i64 16
  %258 = shl nuw nsw i64 %wide.trip.count658, 4
  %259 = add nsw i64 %258, -16
  %260 = mul i64 %259, %252
  %261 = shl nuw nsw i64 %wide.trip.count653, 4
  %262 = getelementptr i8, ptr %14, i64 %260
  %263 = getelementptr i8, ptr %262, i64 %255
  %scevgep733 = getelementptr i8, ptr %263, i64 %261
  %264 = shl nuw nsw i64 %wide.trip.count653, 3
  %265 = getelementptr i8, ptr %13, i64 %264
  %scevgep734 = getelementptr i8, ptr %265, i64 -8
  %266 = zext nneg i32 %250 to i64
  %267 = zext nneg i32 %250 to i64
  %min.iters.check741 = icmp eq i32 %250, 1
  %bound0735 = icmp ult ptr %scevgep732, %scevgep734
  %bound1736 = icmp ugt ptr %scevgep733, %13
  %found.conflict737 = and i1 %bound0735, %bound1736
  %stride.check738 = icmp slt i32 %41, 0
  %268 = or i1 %found.conflict737, %stride.check738
  %n.vec744 = and i64 %266, 2147483646
  %ind.end745 = or i64 %266, 1
  %cmp.n756 = icmp eq i64 %n.vec744, %266
  %269 = and i32 %250, 1
  %lcmp.mod872.not = icmp eq i32 %269, 0
  br label %.lr.ph573

.lr.ph573:                                        ; preds = %.lr.ph573.preheader, %._crit_edge574
  %indvars.iv655 = phi i64 [ 1, %.lr.ph573.preheader ], [ %indvars.iv.next656, %._crit_edge574 ]
  %270 = mul nsw i64 %indvars.iv655, %252
  %invariant.gep718 = getelementptr %struct.doublecomplex, ptr %43, i64 %270
  %brmerge898 = select i1 %min.iters.check741, i1 true, i1 %268
  br i1 %brmerge898, label %scalar.ph740.preheader, label %vector.body747

vector.body747:                                   ; preds = %.lr.ph573, %vector.body747
  %index748 = phi i64 [ %index.next755, %vector.body747 ], [ 0, %.lr.ph573 ]
  %offset.idx749 = or disjoint i64 %index748, 1
  %271 = getelementptr double, ptr %13, i64 %index748
  %wide.load750 = load <2 x double>, ptr %271, align 8, !tbaa !10, !alias.scope !23
  %272 = getelementptr %struct.doublecomplex, ptr %invariant.gep718, i64 %offset.idx749
  %wide.vec751 = load <4 x double>, ptr %272, align 8, !tbaa !10
  %strided.vec752 = shufflevector <4 x double> %wide.vec751, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec753 = shufflevector <4 x double> %wide.vec751, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %273 = fmul <2 x double> %wide.load750, %strided.vec752
  %274 = fmul <2 x double> %wide.load750, %strided.vec753
  %interleaved.vec754 = shufflevector <2 x double> %273, <2 x double> %274, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec754, ptr %272, align 8, !tbaa !10
  %index.next755 = add nuw i64 %index748, 2
  %275 = icmp eq i64 %index.next755, %n.vec744
  br i1 %275, label %middle.block739, label %vector.body747, !llvm.loop !26

middle.block739:                                  ; preds = %vector.body747
  br i1 %cmp.n756, label %._crit_edge574, label %scalar.ph740.preheader

scalar.ph740.preheader:                           ; preds = %.lr.ph573, %middle.block739
  %indvars.iv650.ph = phi i64 [ 1, %.lr.ph573 ], [ %ind.end745, %middle.block739 ]
  br i1 %lcmp.mod872.not, label %scalar.ph740.prol.loopexit, label %scalar.ph740.prol

scalar.ph740.prol:                                ; preds = %scalar.ph740.preheader
  %276 = getelementptr inbounds double, ptr %40, i64 %indvars.iv650.ph
  %277 = load double, ptr %276, align 8, !tbaa !10
  %gep719.prol = getelementptr %struct.doublecomplex, ptr %invariant.gep718, i64 %indvars.iv650.ph
  %278 = load <2 x double>, ptr %gep719.prol, align 8, !tbaa !10
  %279 = insertelement <2 x double> poison, double %277, i64 0
  %280 = shufflevector <2 x double> %279, <2 x double> poison, <2 x i32> zeroinitializer
  %281 = fmul <2 x double> %280, %278
  store <2 x double> %281, ptr %gep719.prol, align 8, !tbaa !10
  %indvars.iv.next651.prol = add nuw nsw i64 %indvars.iv650.ph, 1
  br label %scalar.ph740.prol.loopexit

scalar.ph740.prol.loopexit:                       ; preds = %scalar.ph740.prol, %scalar.ph740.preheader
  %indvars.iv650.unr = phi i64 [ %indvars.iv650.ph, %scalar.ph740.preheader ], [ %indvars.iv.next651.prol, %scalar.ph740.prol ]
  %282 = icmp eq i64 %indvars.iv650.ph, %267
  br i1 %282, label %._crit_edge574, label %scalar.ph740.preheader.new

scalar.ph740.preheader.new:                       ; preds = %scalar.ph740.prol.loopexit
  %invariant.gep884 = getelementptr i8, ptr %invariant.gep718, i64 16
  br label %scalar.ph740

scalar.ph740:                                     ; preds = %scalar.ph740, %scalar.ph740.preheader.new
  %indvars.iv650 = phi i64 [ %indvars.iv650.unr, %scalar.ph740.preheader.new ], [ %indvars.iv.next651.1, %scalar.ph740 ]
  %283 = getelementptr inbounds double, ptr %40, i64 %indvars.iv650
  %284 = load double, ptr %283, align 8, !tbaa !10
  %gep719 = getelementptr %struct.doublecomplex, ptr %invariant.gep718, i64 %indvars.iv650
  %285 = load <2 x double>, ptr %gep719, align 8, !tbaa !10
  %286 = insertelement <2 x double> poison, double %284, i64 0
  %287 = shufflevector <2 x double> %286, <2 x double> poison, <2 x i32> zeroinitializer
  %288 = fmul <2 x double> %287, %285
  store <2 x double> %288, ptr %gep719, align 8, !tbaa !10
  %289 = getelementptr double, ptr %13, i64 %indvars.iv650
  %290 = load double, ptr %289, align 8, !tbaa !10
  %gep885 = getelementptr %struct.doublecomplex, ptr %invariant.gep884, i64 %indvars.iv650
  %291 = load <2 x double>, ptr %gep885, align 8, !tbaa !10
  %292 = insertelement <2 x double> poison, double %290, i64 0
  %293 = shufflevector <2 x double> %292, <2 x double> poison, <2 x i32> zeroinitializer
  %294 = fmul <2 x double> %293, %291
  store <2 x double> %294, ptr %gep885, align 8, !tbaa !10
  %indvars.iv.next651.1 = add nuw nsw i64 %indvars.iv650, 2
  %exitcond654.not.1 = icmp eq i64 %indvars.iv.next651.1, %wide.trip.count653
  br i1 %exitcond654.not.1, label %._crit_edge574, label %scalar.ph740, !llvm.loop !27

._crit_edge574:                                   ; preds = %scalar.ph740.prol.loopexit, %scalar.ph740, %middle.block739
  %indvars.iv.next656 = add nuw nsw i64 %indvars.iv655, 1
  %exitcond659.not = icmp eq i64 %indvars.iv.next656, %wide.trip.count658
  br i1 %exitcond659.not, label %..loopexit545_crit_edge, label %.lr.ph573, !llvm.loop !28

..loopexit545_crit_edge:                          ; preds = %._crit_edge574, %.lr.ph578
  store i32 %250, ptr %26, align 4, !tbaa !5
  br label %.loopexit545

..loopexit546_crit_edge:                          ; preds = %._crit_edge565, %.lr.ph569
  store i32 %202, ptr %26, align 4, !tbaa !5
  br label %.loopexit545

.loopexit545:                                     ; preds = %200, %..loopexit546_crit_edge, %248, %..loopexit545_crit_edge, %247, %199
  br i1 %or.cond, label %295, label %367

295:                                              ; preds = %.loopexit545
  %296 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %296, ptr %25, align 4, !tbaa !5
  %.not501579 = icmp slt i32 %296, 1
  br i1 %.not501579, label %._crit_edge584, label %.lr.ph583

.lr.ph583:                                        ; preds = %295, %.lr.ph583
  %.4.neg581 = phi i32 [ %.4.neg, %.lr.ph583 ], [ -1, %295 ]
  %.4580 = phi i32 [ %318, %.lr.ph583 ], [ 1, %295 ]
  %297 = load i32, ptr %4, align 4, !tbaa !5
  %298 = sub nsw i32 %.4580, %297
  %299 = call i32 @llvm.smax.i32(i32 %298, i32 1)
  %300 = load i32, ptr %3, align 4, !tbaa !5
  %301 = add nsw i32 %300, %.4580
  %302 = load i32, ptr %2, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %301, i32 %302)
  %reass.sub = sub i32 %., %299
  %303 = add i32 %reass.sub, 1
  store i32 %303, ptr %26, align 4, !tbaa !5
  %304 = mul nsw i32 %.4580, %33
  %305 = add nsw i32 %.4.neg581, 1
  %306 = add i32 %305, %304
  %307 = add i32 %306, %297
  %308 = add i32 %307, %299
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %309
  %311 = mul nsw i32 %.4580, %36
  %312 = add i32 %305, %311
  %313 = add i32 %312, %297
  %314 = add i32 %313, %300
  %315 = add i32 %314, %299
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds %struct.doublecomplex, ptr %38, i64 %316
  call void @zcopy_(ptr noundef nonnull %26, ptr noundef %310, ptr noundef nonnull @c__1, ptr noundef %317, ptr noundef nonnull @c__1) #6
  %318 = add nuw nsw i32 %.4580, 1
  %.4.neg = xor i32 %.4580, -1
  %319 = load i32, ptr %25, align 4, !tbaa !5
  %.not501.not = icmp slt i32 %.4580, %319
  br i1 %.not501.not, label %.lr.ph583, label %._crit_edge584, !llvm.loop !29

._crit_edge584:                                   ; preds = %.lr.ph583, %295
  call void @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 %23) #6
  %320 = load i32, ptr %23, align 4, !tbaa !5
  %321 = icmp sgt i32 %320, 0
  br i1 %321, label %.lr.ph623.preheader, label %367

.lr.ph623.preheader:                              ; preds = %._crit_edge584
  store i32 %320, ptr %25, align 4, !tbaa !5
  %322 = sext i32 %33 to i64
  br label %.lr.ph623

.lr.ph623:                                        ; preds = %.lr.ph623.preheader, %._crit_edge618
  %323 = phi i32 [ %320, %.lr.ph623.preheader ], [ %349, %._crit_edge618 ]
  %324 = phi double [ 0.000000e+00, %.lr.ph623.preheader ], [ %350, %._crit_edge618 ]
  %indvars.iv695 = phi i64 [ 1, %.lr.ph623.preheader ], [ %indvars.iv.next696, %._crit_edge618 ]
  %indvars.iv690 = phi i32 [ 1, %.lr.ph623.preheader ], [ %indvars.iv.next691, %._crit_edge618 ]
  %.5.neg621 = phi i32 [ -1, %.lr.ph623.preheader ], [ %353, %._crit_edge618 ]
  %325 = load i32, ptr %4, align 4, !tbaa !5
  %326 = add nsw i32 %.5.neg621, 2
  %327 = add i32 %326, %325
  store i32 %327, ptr %26, align 4, !tbaa !5
  %328 = load i32, ptr %2, align 4, !tbaa !5
  %329 = add nsw i32 %.5.neg621, 1
  %330 = add i32 %329, %325
  %331 = add i32 %330, %328
  %332 = load i32, ptr %3, align 4, !tbaa !5
  %333 = add i32 %325, 1
  %334 = add i32 %333, %332
  %335 = call i32 @llvm.smin.i32(i32 %331, i32 %334)
  %336 = call i32 @llvm.smax.i32(i32 %327, i32 1)
  %.not516614 = icmp sgt i32 %336, %335
  br i1 %.not516614, label %._crit_edge618, label %.lr.ph617

.lr.ph617:                                        ; preds = %.lr.ph623
  %337 = mul nsw i64 %indvars.iv695, %322
  %338 = add i32 %325, %indvars.iv690
  %smax = call i32 @llvm.smax.i32(i32 %338, i32 1)
  %339 = zext nneg i32 %smax to i64
  %340 = zext nneg i32 %335 to i64
  %invariant.gep720 = getelementptr %struct.doublecomplex, ptr %35, i64 %337
  br label %341

341:                                              ; preds = %.lr.ph617, %341
  %342 = phi double [ %324, %.lr.ph617 ], [ %348, %341 ]
  %indvars.iv692 = phi i64 [ %339, %.lr.ph617 ], [ %indvars.iv.next693, %341 ]
  %gep721 = getelementptr %struct.doublecomplex, ptr %invariant.gep720, i64 %indvars.iv692
  %343 = call { double, double } @Cd(ptr noundef %gep721)
  %344 = extractvalue { double, double } %343, 0
  %345 = extractvalue { double, double } %343, 1
  %346 = call double @cabs(double noundef %344, double noundef %345) #6
  %347 = fcmp oge double %342, %346
  %348 = select i1 %347, double %342, double %346
  %indvars.iv.next693 = add nuw nsw i64 %indvars.iv692, 1
  %.not516.not = icmp ult i64 %indvars.iv692, %340
  br i1 %.not516.not, label %341, label %._crit_edge618.loopexit, !llvm.loop !30

._crit_edge618.loopexit:                          ; preds = %341
  %.pre = load i32, ptr %25, align 4, !tbaa !5
  br label %._crit_edge618

._crit_edge618:                                   ; preds = %._crit_edge618.loopexit, %.lr.ph623
  %349 = phi i32 [ %.pre, %._crit_edge618.loopexit ], [ %323, %.lr.ph623 ]
  %350 = phi double [ %348, %._crit_edge618.loopexit ], [ %324, %.lr.ph623 ]
  %indvars.iv.next696 = add nuw nsw i64 %indvars.iv695, 1
  %351 = sext i32 %349 to i64
  %.not513.not = icmp slt i64 %indvars.iv695, %351
  %indvars.iv.next691 = add nsw i32 %indvars.iv690, -1
  %352 = trunc i64 %indvars.iv695 to i32
  %353 = xor i32 %352, -1
  br i1 %.not513.not, label %.lr.ph623, label %._crit_edge624, !llvm.loop !31

._crit_edge624:                                   ; preds = %._crit_edge618
  %.pre701 = load i32, ptr %23, align 4, !tbaa !5
  %354 = add nsw i32 %.pre701, -1
  %355 = load i32, ptr %3, align 4, !tbaa !5
  %356 = load i32, ptr %4, align 4, !tbaa !5
  %357 = add nsw i32 %356, %355
  store i32 %357, ptr %26, align 4, !tbaa !5
  %358 = call i32 @llvm.smin.i32(i32 %354, i32 %357)
  store i32 %358, ptr %25, align 4, !tbaa !5
  %reass.sub625 = sub i32 %357, %.pre701
  %359 = add i32 %reass.sub625, 2
  %360 = call i32 @llvm.smax.i32(i32 %359, i32 1)
  %361 = add nsw i32 %360, %36
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds %struct.doublecomplex, ptr %38, i64 %362
  %364 = call double @zlantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %23, ptr noundef nonnull %25, ptr noundef %363, ptr noundef nonnull %9, ptr noundef %22) #6
  %365 = fcmp oeq double %364, 0.000000e+00
  %366 = fdiv double %350, %364
  %.0 = select i1 %365, double 1.000000e+00, double %366
  store double %.0, ptr %22, align 8, !tbaa !10
  store double 0.000000e+00, ptr %18, align 8, !tbaa !10
  br label %541

367:                                              ; preds = %._crit_edge584, %.loopexit545
  %.520 = select i1 %.not484, i8 73, i8 49
  store i8 %.520, ptr %28, align 1, !tbaa !9
  %368 = call double @zlangb_(ptr noundef nonnull %28, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22) #6
  store double %368, ptr %29, align 8, !tbaa !10
  %369 = load i32, ptr %3, align 4, !tbaa !5
  %370 = load i32, ptr %4, align 4, !tbaa !5
  %371 = add nsw i32 %370, %369
  store i32 %371, ptr %25, align 4, !tbaa !5
  %372 = call double @zlantb_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %22) #6
  %373 = fcmp oeq double %372, 0.000000e+00
  br i1 %373, label %377, label %374

374:                                              ; preds = %367
  %375 = call double @zlangb_(ptr noundef nonnull @.str.9, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %4, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %22) #6
  %376 = fdiv double %375, %372
  br label %377

377:                                              ; preds = %367, %374
  %.1 = phi double [ %376, %374 ], [ 1.000000e+00, %367 ]
  call void @zgbcon_(ptr noundef nonnull %28, 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 %29, ptr noundef %18, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #6
  call void @zlacpy_(ptr noundef nonnull @.str.11, ptr noundef nonnull %2, ptr noundef nonnull %5, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17) #6
  call void @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 %23) #6
  call void @zgbrfs_(ptr noundef %1, 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 %14, ptr noundef nonnull %15, ptr noundef %16, ptr noundef nonnull %17, ptr noundef %19, ptr noundef %20, ptr noundef %21, ptr noundef %22, ptr noundef nonnull %23) #6
  br i1 %.not484, label %456, label %378

378:                                              ; preds = %377
  %.not509 = icmp eq i32 %.1460, 0
  br i1 %.not509, label %.loopexit, label %379

379:                                              ; preds = %378
  %380 = load i32, ptr %5, align 4, !tbaa !5
  %.not510590 = icmp slt i32 %380, 1
  br i1 %.not510590, label %._crit_edge594.thread, label %.lr.ph593

._crit_edge594.thread:                            ; preds = %379
  store i32 %380, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.lr.ph593:                                        ; preds = %379
  %381 = load i32, ptr %2, align 4, !tbaa !5
  %.not512585 = icmp slt i32 %381, 1
  br i1 %.not512585, label %._crit_edge594.thread710, label %.lr.ph588.preheader

._crit_edge594.thread710:                         ; preds = %.lr.ph593
  store i32 %380, ptr %25, align 4, !tbaa !5
  br label %.lr.ph598

.lr.ph588.preheader:                              ; preds = %.lr.ph593
  %382 = add nuw i32 %381, 1
  %383 = sext i32 %44 to i64
  %384 = mul i32 %44, %380
  %385 = add nuw i32 %380, 1
  %wide.trip.count668 = zext i32 %385 to i64
  %wide.trip.count663 = zext i32 %382 to i64
  %386 = add nsw i64 %wide.trip.count663, -2
  %387 = add nsw i64 %383, %45
  %388 = shl nsw i64 %387, 4
  %389 = shl nsw i64 %383, 4
  %390 = shl nsw i64 %383, 4
  %391 = shl nsw i64 %45, 4
  %392 = getelementptr i8, ptr %16, i64 %390
  %393 = getelementptr i8, ptr %392, i64 %391
  %scevgep763 = getelementptr i8, ptr %393, i64 16
  %394 = shl nuw nsw i64 %wide.trip.count668, 4
  %395 = add nsw i64 %394, -16
  %396 = mul i64 %395, %383
  %397 = shl nuw nsw i64 %wide.trip.count663, 4
  %398 = getelementptr i8, ptr %16, i64 %396
  %399 = getelementptr i8, ptr %398, i64 %391
  %scevgep764 = getelementptr i8, ptr %399, i64 %397
  %400 = shl nuw nsw i64 %wide.trip.count663, 3
  %401 = getelementptr i8, ptr %13, i64 %400
  %scevgep765 = getelementptr i8, ptr %401, i64 -8
  %402 = zext nneg i32 %381 to i64
  %403 = zext nneg i32 %381 to i64
  %min.iters.check772 = icmp ult i32 %381, 12
  %404 = getelementptr i8, ptr %16, i64 %388
  %405 = getelementptr i8, ptr %404, i64 16
  %406 = getelementptr i8, ptr %16, i64 %388
  %407 = getelementptr i8, ptr %406, i64 24
  %mul.result = shl nsw i64 %386, 4
  %mul.result760 = shl nsw i64 %386, 4
  %mul.overflow761 = icmp ugt i64 %386, 1152921504606846975
  %bound0766 = icmp ult ptr %scevgep763, %scevgep765
  %bound1767 = icmp ugt ptr %scevgep764, %13
  %found.conflict768 = and i1 %bound0766, %bound1767
  %stride.check769 = icmp slt i32 %44, 0
  %408 = or i1 %found.conflict768, %stride.check769
  %n.vec775 = and i64 %402, 2147483646
  %ind.end776 = or i64 %402, 1
  %cmp.n787 = icmp eq i64 %n.vec775, %402
  %409 = and i32 %381, 1
  %lcmp.mod874.not = icmp eq i32 %409, 0
  %invariant.gep888 = getelementptr i8, ptr %46, i64 16
  br label %.lr.ph588

.lr.ph588:                                        ; preds = %.lr.ph588.preheader, %._crit_edge589
  %indvar = phi i64 [ 0, %.lr.ph588.preheader ], [ %indvar.next, %._crit_edge589 ]
  %indvars.iv665 = phi i64 [ 1, %.lr.ph588.preheader ], [ %indvars.iv.next666, %._crit_edge589 ]
  %410 = mul nsw i64 %indvars.iv665, %383
  br i1 %min.iters.check772, label %scalar.ph771.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %.lr.ph588
  %411 = mul i64 %389, %indvar
  %scevgep758 = getelementptr i8, ptr %405, i64 %411
  %scevgep757 = getelementptr i8, ptr %407, i64 %411
  %412 = getelementptr i8, ptr %scevgep757, i64 %mul.result
  %413 = icmp ult ptr %412, %scevgep757
  %414 = getelementptr i8, ptr %scevgep758, i64 %mul.result760
  %415 = icmp ult ptr %414, %scevgep758
  %416 = or i1 %415, %mul.overflow761
  %417 = or i1 %413, %416
  %brmerge899 = select i1 %417, i1 true, i1 %408
  br i1 %brmerge899, label %scalar.ph771.preheader, label %vector.body778

vector.body778:                                   ; preds = %vector.scevcheck, %vector.body778
  %index779 = phi i64 [ %index.next786, %vector.body778 ], [ 0, %vector.scevcheck ]
  %offset.idx780 = or disjoint i64 %index779, 1
  %418 = add nsw i64 %offset.idx780, %410
  %419 = getelementptr double, ptr %13, i64 %index779
  %wide.load781 = load <2 x double>, ptr %419, align 8, !tbaa !10, !alias.scope !32
  %420 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %418
  %wide.vec782 = load <4 x double>, ptr %420, align 8, !tbaa !10
  %strided.vec783 = shufflevector <4 x double> %wide.vec782, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec784 = shufflevector <4 x double> %wide.vec782, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %421 = fmul <2 x double> %wide.load781, %strided.vec783
  %422 = fmul <2 x double> %wide.load781, %strided.vec784
  %423 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %418
  %interleaved.vec785 = shufflevector <2 x double> %421, <2 x double> %422, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec785, ptr %423, align 8, !tbaa !10
  %index.next786 = add nuw i64 %index779, 2
  %424 = icmp eq i64 %index.next786, %n.vec775
  br i1 %424, label %middle.block770, label %vector.body778, !llvm.loop !35

middle.block770:                                  ; preds = %vector.body778
  br i1 %cmp.n787, label %._crit_edge589, label %scalar.ph771.preheader

scalar.ph771.preheader:                           ; preds = %vector.scevcheck, %middle.block770, %.lr.ph588
  %indvars.iv660.ph = phi i64 [ 1, %vector.scevcheck ], [ 1, %.lr.ph588 ], [ %ind.end776, %middle.block770 ]
  br i1 %lcmp.mod874.not, label %scalar.ph771.prol.loopexit, label %scalar.ph771.prol

scalar.ph771.prol:                                ; preds = %scalar.ph771.preheader
  %425 = getelementptr inbounds double, ptr %40, i64 %indvars.iv660.ph
  %426 = load double, ptr %425, align 8, !tbaa !10
  %427 = getelementptr %struct.doublecomplex, ptr %46, i64 %indvars.iv660.ph
  %428 = getelementptr %struct.doublecomplex, ptr %427, i64 %410
  %429 = load <2 x double>, ptr %428, align 8, !tbaa !10
  %430 = insertelement <2 x double> poison, double %426, i64 0
  %431 = shufflevector <2 x double> %430, <2 x double> poison, <2 x i32> zeroinitializer
  %432 = fmul <2 x double> %431, %429
  store <2 x double> %432, ptr %428, align 8, !tbaa !10
  %indvars.iv.next661.prol = add nuw nsw i64 %indvars.iv660.ph, 1
  br label %scalar.ph771.prol.loopexit

scalar.ph771.prol.loopexit:                       ; preds = %scalar.ph771.prol, %scalar.ph771.preheader
  %indvars.iv660.unr = phi i64 [ %indvars.iv660.ph, %scalar.ph771.preheader ], [ %indvars.iv.next661.prol, %scalar.ph771.prol ]
  %433 = icmp eq i64 %indvars.iv660.ph, %403
  br i1 %433, label %._crit_edge589, label %scalar.ph771.preheader.new

scalar.ph771.preheader.new:                       ; preds = %scalar.ph771.prol.loopexit
  %invariant.gep886 = getelementptr %struct.doublecomplex, ptr %46, i64 %410
  %invariant.gep890 = getelementptr %struct.doublecomplex, ptr %invariant.gep888, i64 %410
  br label %scalar.ph771

scalar.ph771:                                     ; preds = %scalar.ph771, %scalar.ph771.preheader.new
  %indvars.iv660 = phi i64 [ %indvars.iv660.unr, %scalar.ph771.preheader.new ], [ %indvars.iv.next661.1, %scalar.ph771 ]
  %434 = getelementptr inbounds double, ptr %40, i64 %indvars.iv660
  %435 = load double, ptr %434, align 8, !tbaa !10
  %gep887 = getelementptr %struct.doublecomplex, ptr %invariant.gep886, i64 %indvars.iv660
  %436 = load <2 x double>, ptr %gep887, align 8, !tbaa !10
  %437 = insertelement <2 x double> poison, double %435, i64 0
  %438 = shufflevector <2 x double> %437, <2 x double> poison, <2 x i32> zeroinitializer
  %439 = fmul <2 x double> %438, %436
  store <2 x double> %439, ptr %gep887, align 8, !tbaa !10
  %440 = getelementptr double, ptr %13, i64 %indvars.iv660
  %441 = load double, ptr %440, align 8, !tbaa !10
  %gep891 = getelementptr %struct.doublecomplex, ptr %invariant.gep890, i64 %indvars.iv660
  %442 = load <2 x double>, ptr %gep891, align 8, !tbaa !10
  %443 = insertelement <2 x double> poison, double %441, i64 0
  %444 = shufflevector <2 x double> %443, <2 x double> poison, <2 x i32> zeroinitializer
  %445 = fmul <2 x double> %444, %442
  store <2 x double> %445, ptr %gep891, align 8, !tbaa !10
  %indvars.iv.next661.1 = add nuw nsw i64 %indvars.iv660, 2
  %exitcond664.not.1 = icmp eq i64 %indvars.iv.next661.1, %wide.trip.count663
  br i1 %exitcond664.not.1, label %._crit_edge589, label %scalar.ph771, !llvm.loop !36

._crit_edge589:                                   ; preds = %scalar.ph771.prol.loopexit, %scalar.ph771, %middle.block770
  %indvars.iv.next666 = add nuw nsw i64 %indvars.iv665, 1
  %exitcond669.not = icmp eq i64 %indvars.iv.next666, %wide.trip.count668
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond669.not, label %._crit_edge594, label %.lr.ph588, !llvm.loop !37

._crit_edge594:                                   ; preds = %._crit_edge589
  %446 = add i32 %381, %384
  store i32 %446, ptr %26, align 4, !tbaa !5
  store i32 %380, ptr %25, align 4, !tbaa !5
  br i1 %.not510590, label %.loopexit, label %.lr.ph598

.lr.ph598:                                        ; preds = %._crit_edge594.thread710, %._crit_edge594
  %447 = load double, ptr %30, align 8, !tbaa !10
  %448 = add nuw i32 %380, 1
  %wide.trip.count673 = zext i32 %448 to i64
  %449 = zext nneg i32 %380 to i64
  %min.iters.check790 = icmp eq i32 %380, 1
  br i1 %min.iters.check790, label %scalar.ph789.preheader, label %vector.ph791

vector.ph791:                                     ; preds = %.lr.ph598
  %n.vec793 = and i64 %449, 2147483646
  %ind.end794 = or i64 %449, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %447, i64 0
  %broadcast.splat = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body796

vector.body796:                                   ; preds = %vector.body796, %vector.ph791
  %index797 = phi i64 [ 0, %vector.ph791 ], [ %index.next800, %vector.body796 ]
  %450 = getelementptr double, ptr %19, i64 %index797
  %wide.load799 = load <2 x double>, ptr %450, align 8, !tbaa !10
  %451 = fdiv <2 x double> %wide.load799, %broadcast.splat
  store <2 x double> %451, ptr %450, align 8, !tbaa !10
  %index.next800 = add nuw i64 %index797, 2
  %452 = icmp eq i64 %index.next800, %n.vec793
  br i1 %452, label %middle.block788, label %vector.body796, !llvm.loop !38

middle.block788:                                  ; preds = %vector.body796
  %cmp.n801 = icmp eq i64 %n.vec793, %449
  br i1 %cmp.n801, label %.loopexit, label %scalar.ph789.preheader

scalar.ph789.preheader:                           ; preds = %middle.block788, %.lr.ph598
  %indvars.iv670.ph = phi i64 [ 1, %.lr.ph598 ], [ %ind.end794, %middle.block788 ]
  br label %scalar.ph789

scalar.ph789:                                     ; preds = %scalar.ph789.preheader, %scalar.ph789
  %indvars.iv670 = phi i64 [ %indvars.iv.next671, %scalar.ph789 ], [ %indvars.iv670.ph, %scalar.ph789.preheader ]
  %453 = getelementptr inbounds double, ptr %47, i64 %indvars.iv670
  %454 = load double, ptr %453, align 8, !tbaa !10
  %455 = fdiv double %454, %447
  store double %455, ptr %453, align 8, !tbaa !10
  %indvars.iv.next671 = add nuw nsw i64 %indvars.iv670, 1
  %exitcond674.not = icmp eq i64 %indvars.iv.next671, %wide.trip.count673
  br i1 %exitcond674.not, label %.loopexit, label %scalar.ph789, !llvm.loop !39

456:                                              ; preds = %377
  %.not505 = icmp eq i32 %.1457, 0
  br i1 %.not505, label %.loopexit, label %457

457:                                              ; preds = %456
  %458 = load i32, ptr %5, align 4, !tbaa !5
  %.not506605 = icmp slt i32 %458, 1
  br i1 %.not506605, label %._crit_edge609.thread, label %.lr.ph608

._crit_edge609.thread:                            ; preds = %457
  store i32 %458, ptr %25, align 4, !tbaa !5
  br label %.loopexit

.lr.ph608:                                        ; preds = %457
  %459 = load i32, ptr %2, align 4, !tbaa !5
  %.not508599 = icmp slt i32 %459, 1
  br i1 %.not508599, label %._crit_edge609.thread711, label %.lr.ph602.preheader

._crit_edge609.thread711:                         ; preds = %.lr.ph608
  store i32 %458, ptr %25, align 4, !tbaa !5
  br label %.lr.ph613

.lr.ph602.preheader:                              ; preds = %.lr.ph608
  %460 = add nuw i32 %459, 1
  %461 = sext i32 %44 to i64
  %462 = mul i32 %44, %458
  %463 = add nuw i32 %458, 1
  %wide.trip.count683 = zext i32 %463 to i64
  %wide.trip.count678 = zext i32 %460 to i64
  %464 = add nsw i64 %wide.trip.count678, -2
  %465 = add nsw i64 %461, %45
  %466 = shl nsw i64 %465, 4
  %467 = shl nsw i64 %461, 4
  %468 = shl nsw i64 %461, 4
  %469 = shl nsw i64 %45, 4
  %470 = getelementptr i8, ptr %16, i64 %468
  %471 = getelementptr i8, ptr %470, i64 %469
  %scevgep814 = getelementptr i8, ptr %471, i64 16
  %472 = shl nuw nsw i64 %wide.trip.count683, 4
  %473 = add nsw i64 %472, -16
  %474 = mul i64 %473, %461
  %475 = shl nuw nsw i64 %wide.trip.count678, 4
  %476 = getelementptr i8, ptr %16, i64 %474
  %477 = getelementptr i8, ptr %476, i64 %469
  %scevgep815 = getelementptr i8, ptr %477, i64 %475
  %478 = shl nuw nsw i64 %wide.trip.count678, 3
  %479 = getelementptr i8, ptr %12, i64 %478
  %scevgep816 = getelementptr i8, ptr %479, i64 -8
  %480 = zext nneg i32 %459 to i64
  %481 = zext nneg i32 %459 to i64
  %min.iters.check823 = icmp ult i32 %459, 12
  %482 = getelementptr i8, ptr %16, i64 %466
  %483 = getelementptr i8, ptr %482, i64 16
  %484 = getelementptr i8, ptr %16, i64 %466
  %485 = getelementptr i8, ptr %484, i64 24
  %mul.result807 = shl nsw i64 %464, 4
  %mul.result811 = shl nsw i64 %464, 4
  %mul.overflow812 = icmp ugt i64 %464, 1152921504606846975
  %bound0817 = icmp ult ptr %scevgep814, %scevgep816
  %bound1818 = icmp ugt ptr %scevgep815, %12
  %found.conflict819 = and i1 %bound0817, %bound1818
  %stride.check820 = icmp slt i32 %44, 0
  %486 = or i1 %found.conflict819, %stride.check820
  %n.vec826 = and i64 %480, 2147483646
  %ind.end827 = or i64 %480, 1
  %cmp.n838 = icmp eq i64 %n.vec826, %480
  %487 = and i32 %459, 1
  %lcmp.mod876.not = icmp eq i32 %487, 0
  %invariant.gep894 = getelementptr i8, ptr %46, i64 16
  br label %.lr.ph602

.lr.ph602:                                        ; preds = %.lr.ph602.preheader, %._crit_edge603
  %indvar803 = phi i64 [ 0, %.lr.ph602.preheader ], [ %indvar.next804, %._crit_edge603 ]
  %indvars.iv680 = phi i64 [ 1, %.lr.ph602.preheader ], [ %indvars.iv.next681, %._crit_edge603 ]
  %488 = mul nsw i64 %indvars.iv680, %461
  br i1 %min.iters.check823, label %scalar.ph822.preheader, label %vector.scevcheck802

vector.scevcheck802:                              ; preds = %.lr.ph602
  %489 = mul i64 %467, %indvar803
  %scevgep809 = getelementptr i8, ptr %483, i64 %489
  %scevgep805 = getelementptr i8, ptr %485, i64 %489
  %490 = getelementptr i8, ptr %scevgep805, i64 %mul.result807
  %491 = icmp ult ptr %490, %scevgep805
  %492 = getelementptr i8, ptr %scevgep809, i64 %mul.result811
  %493 = icmp ult ptr %492, %scevgep809
  %494 = or i1 %493, %mul.overflow812
  %495 = or i1 %491, %494
  %brmerge900 = select i1 %495, i1 true, i1 %486
  br i1 %brmerge900, label %scalar.ph822.preheader, label %vector.body829

vector.body829:                                   ; preds = %vector.scevcheck802, %vector.body829
  %index830 = phi i64 [ %index.next837, %vector.body829 ], [ 0, %vector.scevcheck802 ]
  %offset.idx831 = or disjoint i64 %index830, 1
  %496 = add nsw i64 %offset.idx831, %488
  %497 = getelementptr double, ptr %12, i64 %index830
  %wide.load832 = load <2 x double>, ptr %497, align 8, !tbaa !10, !alias.scope !40
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %496
  %wide.vec833 = load <4 x double>, ptr %498, align 8, !tbaa !10
  %strided.vec834 = shufflevector <4 x double> %wide.vec833, <4 x double> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec835 = shufflevector <4 x double> %wide.vec833, <4 x double> poison, <2 x i32> <i32 1, i32 3>
  %499 = fmul <2 x double> %wide.load832, %strided.vec834
  %500 = fmul <2 x double> %wide.load832, %strided.vec835
  %501 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %496
  %interleaved.vec836 = shufflevector <2 x double> %499, <2 x double> %500, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec836, ptr %501, align 8, !tbaa !10
  %index.next837 = add nuw i64 %index830, 2
  %502 = icmp eq i64 %index.next837, %n.vec826
  br i1 %502, label %middle.block821, label %vector.body829, !llvm.loop !43

middle.block821:                                  ; preds = %vector.body829
  br i1 %cmp.n838, label %._crit_edge603, label %scalar.ph822.preheader

scalar.ph822.preheader:                           ; preds = %vector.scevcheck802, %middle.block821, %.lr.ph602
  %indvars.iv675.ph = phi i64 [ 1, %vector.scevcheck802 ], [ 1, %.lr.ph602 ], [ %ind.end827, %middle.block821 ]
  br i1 %lcmp.mod876.not, label %scalar.ph822.prol.loopexit, label %scalar.ph822.prol

scalar.ph822.prol:                                ; preds = %scalar.ph822.preheader
  %503 = getelementptr inbounds double, ptr %39, i64 %indvars.iv675.ph
  %504 = load double, ptr %503, align 8, !tbaa !10
  %505 = getelementptr %struct.doublecomplex, ptr %46, i64 %indvars.iv675.ph
  %506 = getelementptr %struct.doublecomplex, ptr %505, i64 %488
  %507 = load <2 x double>, ptr %506, align 8, !tbaa !10
  %508 = insertelement <2 x double> poison, double %504, i64 0
  %509 = shufflevector <2 x double> %508, <2 x double> poison, <2 x i32> zeroinitializer
  %510 = fmul <2 x double> %509, %507
  store <2 x double> %510, ptr %506, align 8, !tbaa !10
  %indvars.iv.next676.prol = add nuw nsw i64 %indvars.iv675.ph, 1
  br label %scalar.ph822.prol.loopexit

scalar.ph822.prol.loopexit:                       ; preds = %scalar.ph822.prol, %scalar.ph822.preheader
  %indvars.iv675.unr = phi i64 [ %indvars.iv675.ph, %scalar.ph822.preheader ], [ %indvars.iv.next676.prol, %scalar.ph822.prol ]
  %511 = icmp eq i64 %indvars.iv675.ph, %481
  br i1 %511, label %._crit_edge603, label %scalar.ph822.preheader.new

scalar.ph822.preheader.new:                       ; preds = %scalar.ph822.prol.loopexit
  %invariant.gep892 = getelementptr %struct.doublecomplex, ptr %46, i64 %488
  %invariant.gep896 = getelementptr %struct.doublecomplex, ptr %invariant.gep894, i64 %488
  br label %scalar.ph822

scalar.ph822:                                     ; preds = %scalar.ph822, %scalar.ph822.preheader.new
  %indvars.iv675 = phi i64 [ %indvars.iv675.unr, %scalar.ph822.preheader.new ], [ %indvars.iv.next676.1, %scalar.ph822 ]
  %512 = getelementptr inbounds double, ptr %39, i64 %indvars.iv675
  %513 = load double, ptr %512, align 8, !tbaa !10
  %gep893 = getelementptr %struct.doublecomplex, ptr %invariant.gep892, i64 %indvars.iv675
  %514 = load <2 x double>, ptr %gep893, align 8, !tbaa !10
  %515 = insertelement <2 x double> poison, double %513, i64 0
  %516 = shufflevector <2 x double> %515, <2 x double> poison, <2 x i32> zeroinitializer
  %517 = fmul <2 x double> %516, %514
  store <2 x double> %517, ptr %gep893, align 8, !tbaa !10
  %518 = getelementptr double, ptr %12, i64 %indvars.iv675
  %519 = load double, ptr %518, align 8, !tbaa !10
  %gep897 = getelementptr %struct.doublecomplex, ptr %invariant.gep896, i64 %indvars.iv675
  %520 = load <2 x double>, ptr %gep897, align 8, !tbaa !10
  %521 = insertelement <2 x double> poison, double %519, i64 0
  %522 = shufflevector <2 x double> %521, <2 x double> poison, <2 x i32> zeroinitializer
  %523 = fmul <2 x double> %522, %520
  store <2 x double> %523, ptr %gep897, align 8, !tbaa !10
  %indvars.iv.next676.1 = add nuw nsw i64 %indvars.iv675, 2
  %exitcond679.not.1 = icmp eq i64 %indvars.iv.next676.1, %wide.trip.count678
  br i1 %exitcond679.not.1, label %._crit_edge603, label %scalar.ph822, !llvm.loop !44

._crit_edge603:                                   ; preds = %scalar.ph822.prol.loopexit, %scalar.ph822, %middle.block821
  %indvars.iv.next681 = add nuw nsw i64 %indvars.iv680, 1
  %exitcond684.not = icmp eq i64 %indvars.iv.next681, %wide.trip.count683
  %indvar.next804 = add i64 %indvar803, 1
  br i1 %exitcond684.not, label %._crit_edge609, label %.lr.ph602, !llvm.loop !45

._crit_edge609:                                   ; preds = %._crit_edge603
  %524 = add i32 %459, %462
  store i32 %524, ptr %26, align 4, !tbaa !5
  store i32 %458, ptr %25, align 4, !tbaa !5
  br i1 %.not506605, label %.loopexit, label %.lr.ph613

.lr.ph613:                                        ; preds = %._crit_edge609.thread711, %._crit_edge609
  %525 = load double, ptr %32, align 8, !tbaa !10
  %526 = add nuw i32 %458, 1
  %wide.trip.count688 = zext i32 %526 to i64
  %527 = zext nneg i32 %458 to i64
  %min.iters.check841 = icmp eq i32 %458, 1
  br i1 %min.iters.check841, label %scalar.ph840.preheader, label %vector.ph842

vector.ph842:                                     ; preds = %.lr.ph613
  %n.vec844 = and i64 %527, 2147483646
  %ind.end845 = or i64 %527, 1
  %broadcast.splatinsert851 = insertelement <2 x double> poison, double %525, i64 0
  %broadcast.splat852 = shufflevector <2 x double> %broadcast.splatinsert851, <2 x double> poison, <2 x i32> zeroinitializer
  br label %vector.body847

vector.body847:                                   ; preds = %vector.body847, %vector.ph842
  %index848 = phi i64 [ 0, %vector.ph842 ], [ %index.next853, %vector.body847 ]
  %528 = getelementptr double, ptr %19, i64 %index848
  %wide.load850 = load <2 x double>, ptr %528, align 8, !tbaa !10
  %529 = fdiv <2 x double> %wide.load850, %broadcast.splat852
  store <2 x double> %529, ptr %528, align 8, !tbaa !10
  %index.next853 = add nuw i64 %index848, 2
  %530 = icmp eq i64 %index.next853, %n.vec844
  br i1 %530, label %middle.block839, label %vector.body847, !llvm.loop !46

middle.block839:                                  ; preds = %vector.body847
  %cmp.n854 = icmp eq i64 %n.vec844, %527
  br i1 %cmp.n854, label %.loopexit, label %scalar.ph840.preheader

scalar.ph840.preheader:                           ; preds = %middle.block839, %.lr.ph613
  %indvars.iv685.ph = phi i64 [ 1, %.lr.ph613 ], [ %ind.end845, %middle.block839 ]
  br label %scalar.ph840

scalar.ph840:                                     ; preds = %scalar.ph840.preheader, %scalar.ph840
  %indvars.iv685 = phi i64 [ %indvars.iv.next686, %scalar.ph840 ], [ %indvars.iv685.ph, %scalar.ph840.preheader ]
  %531 = getelementptr inbounds double, ptr %47, i64 %indvars.iv685
  %532 = load double, ptr %531, align 8, !tbaa !10
  %533 = fdiv double %532, %525
  store double %533, ptr %531, align 8, !tbaa !10
  %indvars.iv.next686 = add nuw nsw i64 %indvars.iv685, 1
  %exitcond689.not = icmp eq i64 %indvars.iv.next686, %wide.trip.count688
  br i1 %exitcond689.not, label %.loopexit, label %scalar.ph840, !llvm.loop !47

.loopexit:                                        ; preds = %scalar.ph789, %scalar.ph840, %middle.block788, %middle.block839, %._crit_edge609.thread, %._crit_edge594.thread, %._crit_edge594, %._crit_edge609, %456, %378
  %534 = load double, ptr %18, align 8, !tbaa !10
  %535 = call double @dlamch_(ptr noundef nonnull @.str.12) #6
  %536 = fcmp olt double %534, %535
  br i1 %536, label %537, label %540

537:                                              ; preds = %.loopexit
  %538 = load i32, ptr %2, align 4, !tbaa !5
  %539 = add nsw i32 %538, 1
  store i32 %539, ptr %23, align 4, !tbaa !5
  br label %540

540:                                              ; preds = %537, %.loopexit
  store double %.1, ptr %22, align 8, !tbaa !10
  br label %541

541:                                              ; preds = %540, %._crit_edge624, %.thread537
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #6
  ret void
}

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

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

declare void @zgbequ_(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 void @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 void @zcopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

; Function Attrs: nofree nounwind
declare double @cabs(double noundef, double noundef) local_unnamed_addr #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #4

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

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

declare void @zgbcon_(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 void @zlacpy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @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 void @zgbrfs_(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 i32 @llvm.smin.i32(i32, i32) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.smax.i32(i32, i32) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !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 = !{!16}
!16 = distinct !{!16, !17}
!17 = distinct !{!17, !"LVerDomain"}
!18 = distinct !{!18, !13, !19, !20}
!19 = !{!"llvm.loop.isvectorized", i32 1}
!20 = !{!"llvm.loop.unroll.runtime.disable"}
!21 = distinct !{!21, !13, !19}
!22 = distinct !{!22, !13}
!23 = !{!24}
!24 = distinct !{!24, !25}
!25 = distinct !{!25, !"LVerDomain"}
!26 = distinct !{!26, !13, !19, !20}
!27 = distinct !{!27, !13, !19}
!28 = distinct !{!28, !13}
!29 = distinct !{!29, !13}
!30 = distinct !{!30, !13}
!31 = distinct !{!31, !13}
!32 = !{!33}
!33 = distinct !{!33, !34}
!34 = distinct !{!34, !"LVerDomain"}
!35 = distinct !{!35, !13, !19, !20}
!36 = distinct !{!36, !13, !19}
!37 = distinct !{!37, !13}
!38 = distinct !{!38, !13, !19, !20}
!39 = distinct !{!39, !13, !20, !19}
!40 = !{!41}
!41 = distinct !{!41, !42}
!42 = distinct !{!42, !"LVerDomain"}
!43 = distinct !{!43, !13, !19, !20}
!44 = distinct !{!44, !13, !19}
!45 = distinct !{!45, !13}
!46 = distinct !{!46, !13, !19, !20}
!47 = distinct !{!47, !13, !20, !19}


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