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

; 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
@c__1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.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 [2 x i8], align 1
@c_b29 = external hidden global double, align 8
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

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

151:                                              ; preds = %17
  store i32 1, ptr %84, align 4, !tbaa !9
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %159

152:                                              ; preds = %17
  %153 = load ptr, ptr %18, align 8, !tbaa !5
  %154 = call i32 @lsame_(ptr noundef %153, ptr noundef @.str.1)
  %155 = icmp ne i32 %154, 0
  br i1 %155, label %156, label %157

156:                                              ; preds = %152
  store i32 2, ptr %84, align 4, !tbaa !9
  store i32 1, ptr %58, align 4, !tbaa !9
  br label %158

157:                                              ; preds = %152
  store i32 -1, ptr %84, align 4, !tbaa !9
  store i32 0, ptr %58, align 4, !tbaa !9
  br label %158

158:                                              ; preds = %157, %156
  br label %159

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

163:                                              ; preds = %159
  store i32 1, ptr %87, align 4, !tbaa !9
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %171

164:                                              ; preds = %159
  %165 = load ptr, ptr %19, align 8, !tbaa !5
  %166 = call i32 @lsame_(ptr noundef %165, ptr noundef @.str.1)
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %169

168:                                              ; preds = %164
  store i32 2, ptr %87, align 4, !tbaa !9
  store i32 1, ptr %59, align 4, !tbaa !9
  br label %170

169:                                              ; preds = %164
  store i32 -1, ptr %87, align 4, !tbaa !9
  store i32 0, ptr %59, align 4, !tbaa !9
  br label %170

170:                                              ; preds = %169, %168
  br label %171

171:                                              ; preds = %170, %163
  %172 = load i32, ptr %58, align 4, !tbaa !9
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %177, label %174

174:                                              ; preds = %171
  %175 = load i32, ptr %59, align 4, !tbaa !9
  %176 = icmp ne i32 %175, 0
  br label %177

177:                                              ; preds = %174, %171
  %178 = phi i1 [ true, %171 ], [ %176, %174 ]
  %179 = zext i1 %178 to i32
  store i32 %179, ptr %98, align 4, !tbaa !9
  %180 = load ptr, ptr %20, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = shl i32 %181, 1
  store i32 %182, ptr %43, align 4, !tbaa !9
  %183 = load i32, ptr %43, align 4, !tbaa !9
  %184 = icmp sge i32 %183, 1
  br i1 %184, label %185, label %187

185:                                              ; preds = %177
  %186 = load i32, ptr %43, align 4, !tbaa !9
  br label %188

187:                                              ; preds = %177
  br label %188

188:                                              ; preds = %187, %185
  %189 = phi i32 [ %186, %185 ], [ 1, %187 ]
  store i32 %189, ptr %88, align 4, !tbaa !9
  %190 = load i32, ptr %88, align 4, !tbaa !9
  store i32 %190, ptr %93, align 4, !tbaa !9
  %191 = load i32, ptr %93, align 4, !tbaa !9
  %192 = sitofp i32 %191 to double
  %193 = load ptr, ptr %31, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.doublecomplex, ptr %193, i64 1
  %195 = getelementptr inbounds %struct.doublecomplex, ptr %194, i32 0, i32 0
  store double %192, ptr %195, align 8, !tbaa !11
  %196 = load ptr, ptr %31, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.doublecomplex, ptr %196, i64 1
  %198 = getelementptr inbounds %struct.doublecomplex, ptr %197, i32 0, i32 1
  store double 0.000000e+00, ptr %198, align 8, !tbaa !14
  %199 = load ptr, ptr %32, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = icmp eq i32 %200, -1
  %202 = zext i1 %201 to i32
  store i32 %202, ptr %94, align 4, !tbaa !9
  %203 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 0, ptr %203, align 4, !tbaa !9
  %204 = load i32, ptr %84, align 4, !tbaa !9
  %205 = icmp sle i32 %204, 0
  br i1 %205, label %206, label %208

206:                                              ; preds = %188
  %207 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -1, ptr %207, align 4, !tbaa !9
  br label %296

208:                                              ; preds = %188
  %209 = load i32, ptr %87, align 4, !tbaa !9
  %210 = icmp sle i32 %209, 0
  br i1 %210, label %211, label %213

211:                                              ; preds = %208
  %212 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -2, ptr %212, align 4, !tbaa !9
  br label %295

213:                                              ; preds = %208
  %214 = load ptr, ptr %20, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp slt i32 %215, 0
  br i1 %216, label %217, label %219

217:                                              ; preds = %213
  %218 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -3, ptr %218, align 4, !tbaa !9
  br label %294

219:                                              ; preds = %213
  %220 = load ptr, ptr %22, align 8, !tbaa !5
  %221 = load i32, ptr %220, align 4, !tbaa !9
  %222 = load ptr, ptr %20, align 8, !tbaa !5
  %223 = load i32, ptr %222, align 4, !tbaa !9
  %224 = icmp sge i32 1, %223
  br i1 %224, label %225, label %226

225:                                              ; preds = %219
  br label %229

226:                                              ; preds = %219
  %227 = load ptr, ptr %20, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %226, %225
  %230 = phi i32 [ 1, %225 ], [ %228, %226 ]
  %231 = icmp slt i32 %221, %230
  br i1 %231, label %232, label %234

232:                                              ; preds = %229
  %233 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -5, ptr %233, align 4, !tbaa !9
  br label %293

234:                                              ; preds = %229
  %235 = load ptr, ptr %24, align 8, !tbaa !5
  %236 = load i32, ptr %235, align 4, !tbaa !9
  %237 = load ptr, ptr %20, align 8, !tbaa !5
  %238 = load i32, ptr %237, align 4, !tbaa !9
  %239 = icmp sge i32 1, %238
  br i1 %239, label %240, label %241

240:                                              ; preds = %234
  br label %244

241:                                              ; preds = %234
  %242 = load ptr, ptr %20, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  br label %244

244:                                              ; preds = %241, %240
  %245 = phi i32 [ 1, %240 ], [ %243, %241 ]
  %246 = icmp slt i32 %236, %245
  br i1 %246, label %247, label %249

247:                                              ; preds = %244
  %248 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -7, ptr %248, align 4, !tbaa !9
  br label %292

249:                                              ; preds = %244
  %250 = load ptr, ptr %28, align 8, !tbaa !5
  %251 = load i32, ptr %250, align 4, !tbaa !9
  %252 = icmp slt i32 %251, 1
  br i1 %252, label %262, label %253

253:                                              ; preds = %249
  %254 = load i32, ptr %58, align 4, !tbaa !9
  %255 = icmp ne i32 %254, 0
  br i1 %255, label %256, label %264

256:                                              ; preds = %253
  %257 = load ptr, ptr %28, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load ptr, ptr %20, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp slt i32 %258, %260
  br i1 %261, label %262, label %264

262:                                              ; preds = %256, %249
  %263 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -11, ptr %263, align 4, !tbaa !9
  br label %291

264:                                              ; preds = %256, %253
  %265 = load ptr, ptr %30, align 8, !tbaa !5
  %266 = load i32, ptr %265, align 4, !tbaa !9
  %267 = icmp slt i32 %266, 1
  br i1 %267, label %277, label %268

268:                                              ; preds = %264
  %269 = load i32, ptr %59, align 4, !tbaa !9
  %270 = icmp ne i32 %269, 0
  br i1 %270, label %271, label %279

271:                                              ; preds = %268
  %272 = load ptr, ptr %30, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = load ptr, ptr %20, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = icmp slt i32 %273, %275
  br i1 %276, label %277, label %279

277:                                              ; preds = %271, %264
  %278 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -13, ptr %278, align 4, !tbaa !9
  br label %290

279:                                              ; preds = %271, %268
  %280 = load ptr, ptr %32, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = load i32, ptr %88, align 4, !tbaa !9
  %283 = icmp slt i32 %281, %282
  br i1 %283, label %284, label %289

284:                                              ; preds = %279
  %285 = load i32, ptr %94, align 4, !tbaa !9
  %286 = icmp ne i32 %285, 0
  br i1 %286, label %289, label %287

287:                                              ; preds = %284
  %288 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 -15, ptr %288, align 4, !tbaa !9
  br label %289

289:                                              ; preds = %287, %284, %279
  br label %290

290:                                              ; preds = %289, %277
  br label %291

291:                                              ; preds = %290, %262
  br label %292

292:                                              ; preds = %291, %247
  br label %293

293:                                              ; preds = %292, %232
  br label %294

294:                                              ; preds = %293, %217
  br label %295

295:                                              ; preds = %294, %211
  br label %296

296:                                              ; preds = %295, %206
  %297 = load ptr, ptr %34, align 8, !tbaa !5
  %298 = load i32, ptr %297, align 4, !tbaa !9
  %299 = icmp eq i32 %298, 0
  br i1 %299, label %300, label %355

300:                                              ; preds = %296
  %301 = load ptr, ptr %20, align 8, !tbaa !5
  %302 = load ptr, ptr %20, align 8, !tbaa !5
  %303 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.3, ptr noundef %301, ptr noundef %302, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %303, ptr %89, align 4, !tbaa !9
  %304 = load ptr, ptr %20, align 8, !tbaa !5
  %305 = load ptr, ptr %20, align 8, !tbaa !5
  %306 = load ptr, ptr %20, align 8, !tbaa !5
  %307 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.4, ptr noundef @.str.3, ptr noundef %304, ptr noundef %305, ptr noundef %306, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %307, ptr %90, align 4, !tbaa !9
  %308 = load ptr, ptr %20, align 8, !tbaa !5
  %309 = load ptr, ptr %20, align 8, !tbaa !5
  %310 = load ptr, ptr %20, align 8, !tbaa !5
  %311 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.3, ptr noundef %308, ptr noundef %309, ptr noundef %310, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %311, ptr %91, align 4, !tbaa !9
  %312 = load i32, ptr %89, align 4, !tbaa !9
  %313 = load i32, ptr %90, align 4, !tbaa !9
  %314 = icmp sge i32 %312, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %300
  %316 = load i32, ptr %89, align 4, !tbaa !9
  br label %319

317:                                              ; preds = %300
  %318 = load i32, ptr %90, align 4, !tbaa !9
  br label %319

319:                                              ; preds = %317, %315
  %320 = phi i32 [ %316, %315 ], [ %318, %317 ]
  store i32 %320, ptr %43, align 4, !tbaa !9
  %321 = load i32, ptr %43, align 4, !tbaa !9
  %322 = load i32, ptr %91, align 4, !tbaa !9
  %323 = icmp sge i32 %321, %322
  br i1 %323, label %324, label %326

324:                                              ; preds = %319
  %325 = load i32, ptr %43, align 4, !tbaa !9
  br label %328

326:                                              ; preds = %319
  %327 = load i32, ptr %91, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %326, %324
  %329 = phi i32 [ %325, %324 ], [ %327, %326 ]
  store i32 %329, ptr %75, align 4, !tbaa !9
  %330 = load ptr, ptr %20, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = shl i32 %331, 1
  store i32 %332, ptr %43, align 4, !tbaa !9
  %333 = load ptr, ptr %20, align 8, !tbaa !5
  %334 = load i32, ptr %333, align 4, !tbaa !9
  %335 = load i32, ptr %75, align 4, !tbaa !9
  %336 = add nsw i32 %335, 1
  %337 = mul nsw i32 %334, %336
  store i32 %337, ptr %44, align 4, !tbaa !9
  %338 = load i32, ptr %43, align 4, !tbaa !9
  %339 = load i32, ptr %44, align 4, !tbaa !9
  %340 = icmp sge i32 %338, %339
  br i1 %340, label %341, label %343

341:                                              ; preds = %328
  %342 = load i32, ptr %43, align 4, !tbaa !9
  br label %345

343:                                              ; preds = %328
  %344 = load i32, ptr %44, align 4, !tbaa !9
  br label %345

345:                                              ; preds = %343, %341
  %346 = phi i32 [ %342, %341 ], [ %344, %343 ]
  store i32 %346, ptr %60, align 4, !tbaa !9
  %347 = load i32, ptr %60, align 4, !tbaa !9
  %348 = sitofp i32 %347 to double
  %349 = load ptr, ptr %31, align 8, !tbaa !5
  %350 = getelementptr inbounds %struct.doublecomplex, ptr %349, i64 1
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %350, i32 0, i32 0
  store double %348, ptr %351, align 8, !tbaa !11
  %352 = load ptr, ptr %31, align 8, !tbaa !5
  %353 = getelementptr inbounds %struct.doublecomplex, ptr %352, i64 1
  %354 = getelementptr inbounds %struct.doublecomplex, ptr %353, i32 0, i32 1
  store double 0.000000e+00, ptr %354, align 8, !tbaa !14
  br label %355

355:                                              ; preds = %345, %296
  %356 = load ptr, ptr %34, align 8, !tbaa !5
  %357 = load i32, ptr %356, align 4, !tbaa !9
  %358 = icmp ne i32 %357, 0
  br i1 %358, label %359, label %364

359:                                              ; preds = %355
  %360 = load ptr, ptr %34, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = sub nsw i32 0, %361
  store i32 %362, ptr %43, align 4, !tbaa !9
  %363 = call i32 @xerbla_(ptr noundef @.str.6, ptr noundef %43, i32 noundef 6)
  store i32 1, ptr %99, align 4
  br label %1744

364:                                              ; preds = %355
  %365 = load i32, ptr %94, align 4, !tbaa !9
  %366 = icmp ne i32 %365, 0
  br i1 %366, label %367, label %368

367:                                              ; preds = %364
  store i32 1, ptr %99, align 4
  br label %1744

368:                                              ; preds = %364
  br label %369

369:                                              ; preds = %368
  %370 = load ptr, ptr %20, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = icmp eq i32 %371, 0
  br i1 %372, label %373, label %374

373:                                              ; preds = %369
  store i32 1, ptr %99, align 4
  br label %1744

374:                                              ; preds = %369
  %375 = call double @dlamch_(ptr noundef @.str.7)
  %376 = call double @dlamch_(ptr noundef @.str.8)
  %377 = fmul double %375, %376
  store double %377, ptr %97, align 8, !tbaa !15
  %378 = call double @dlamch_(ptr noundef @.str.9)
  store double %378, ptr %80, align 8, !tbaa !15
  %379 = load double, ptr %80, align 8, !tbaa !15
  %380 = load double, ptr %80, align 8, !tbaa !15
  %381 = fadd double %380, %379
  store double %381, ptr %80, align 8, !tbaa !15
  %382 = load double, ptr %80, align 8, !tbaa !15
  %383 = fdiv double 1.000000e+00, %382
  store double %383, ptr %81, align 8, !tbaa !15
  %384 = load ptr, ptr %20, align 8, !tbaa !5
  %385 = load ptr, ptr %20, align 8, !tbaa !5
  %386 = load ptr, ptr %21, align 8, !tbaa !5
  %387 = load i32, ptr %36, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.doublecomplex, ptr %386, i64 %388
  %390 = load ptr, ptr %22, align 8, !tbaa !5
  %391 = load ptr, ptr %33, align 8, !tbaa !5
  %392 = getelementptr inbounds double, ptr %391, i64 1
  %393 = call double @zlange_(ptr noundef @.str.10, ptr noundef %384, ptr noundef %385, ptr noundef %389, ptr noundef %390, ptr noundef %392)
  store double %393, ptr %54, align 8, !tbaa !15
  %394 = load double, ptr %54, align 8, !tbaa !15
  store double %394, ptr %61, align 8, !tbaa !15
  store double 1.000000e+00, ptr %62, align 8, !tbaa !15
  %395 = load double, ptr %54, align 8, !tbaa !15
  %396 = fcmp olt double %395, 1.000000e+00
  br i1 %396, label %397, label %408

397:                                              ; preds = %374
  %398 = load double, ptr %81, align 8, !tbaa !15
  %399 = load double, ptr %54, align 8, !tbaa !15
  %400 = fmul double %398, %399
  %401 = fcmp olt double %400, 1.000000e+00
  br i1 %401, label %402, label %407

402:                                              ; preds = %397
  %403 = load double, ptr %80, align 8, !tbaa !15
  store double %403, ptr %61, align 8, !tbaa !15
  %404 = load double, ptr %81, align 8, !tbaa !15
  %405 = load double, ptr %54, align 8, !tbaa !15
  %406 = fmul double %404, %405
  store double %406, ptr %62, align 8, !tbaa !15
  br label %407

407:                                              ; preds = %402, %397
  br label %408

408:                                              ; preds = %407, %374
  %409 = load double, ptr %54, align 8, !tbaa !15
  %410 = fcmp ogt double %409, 0.000000e+00
  br i1 %410, label %411, label %427

411:                                              ; preds = %408
  %412 = load ptr, ptr %20, align 8, !tbaa !5
  %413 = load ptr, ptr %20, align 8, !tbaa !5
  %414 = load ptr, ptr %21, align 8, !tbaa !5
  %415 = load i32, ptr %36, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds %struct.doublecomplex, ptr %414, i64 %416
  %418 = load ptr, ptr %22, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %54, ptr noundef @c_b29, ptr noundef %412, ptr noundef %413, ptr noundef %417, ptr noundef %418, ptr noundef %70)
  %419 = load i32, ptr %70, align 4, !tbaa !9
  %420 = icmp ne i32 %419, 0
  br i1 %420, label %421, label %426

421:                                              ; preds = %411
  %422 = load ptr, ptr %20, align 8, !tbaa !5
  %423 = load i32, ptr %422, align 4, !tbaa !9
  %424 = add nsw i32 %423, 10
  %425 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %424, ptr %425, align 4, !tbaa !9
  store i32 1, ptr %99, align 4
  br label %1744

426:                                              ; preds = %411
  br label %427

427:                                              ; preds = %426, %408
  %428 = load ptr, ptr %20, align 8, !tbaa !5
  %429 = load ptr, ptr %20, align 8, !tbaa !5
  %430 = load ptr, ptr %23, align 8, !tbaa !5
  %431 = load i32, ptr %38, align 4, !tbaa !9
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds %struct.doublecomplex, ptr %430, i64 %432
  %434 = load ptr, ptr %24, align 8, !tbaa !5
  %435 = load ptr, ptr %33, align 8, !tbaa !5
  %436 = getelementptr inbounds double, ptr %435, i64 1
  %437 = call double @zlange_(ptr noundef @.str.10, ptr noundef %428, ptr noundef %429, ptr noundef %433, ptr noundef %434, ptr noundef %436)
  store double %437, ptr %55, align 8, !tbaa !15
  %438 = load double, ptr %55, align 8, !tbaa !15
  store double %438, ptr %63, align 8, !tbaa !15
  store double 1.000000e+00, ptr %64, align 8, !tbaa !15
  %439 = load double, ptr %55, align 8, !tbaa !15
  %440 = fcmp olt double %439, 1.000000e+00
  br i1 %440, label %441, label %452

441:                                              ; preds = %427
  %442 = load double, ptr %81, align 8, !tbaa !15
  %443 = load double, ptr %55, align 8, !tbaa !15
  %444 = fmul double %442, %443
  %445 = fcmp olt double %444, 1.000000e+00
  br i1 %445, label %446, label %451

446:                                              ; preds = %441
  %447 = load double, ptr %80, align 8, !tbaa !15
  store double %447, ptr %63, align 8, !tbaa !15
  %448 = load double, ptr %81, align 8, !tbaa !15
  %449 = load double, ptr %55, align 8, !tbaa !15
  %450 = fmul double %448, %449
  store double %450, ptr %64, align 8, !tbaa !15
  br label %451

451:                                              ; preds = %446, %441
  br label %452

452:                                              ; preds = %451, %427
  %453 = load double, ptr %55, align 8, !tbaa !15
  %454 = fcmp ogt double %453, 0.000000e+00
  br i1 %454, label %455, label %471

455:                                              ; preds = %452
  %456 = load ptr, ptr %20, align 8, !tbaa !5
  %457 = load ptr, ptr %20, align 8, !tbaa !5
  %458 = load ptr, ptr %23, align 8, !tbaa !5
  %459 = load i32, ptr %38, align 4, !tbaa !9
  %460 = sext i32 %459 to i64
  %461 = getelementptr inbounds %struct.doublecomplex, ptr %458, i64 %460
  %462 = load ptr, ptr %24, align 8, !tbaa !5
  call void @zlascl_(ptr noundef @.str.11, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef %55, ptr noundef @c_b29, ptr noundef %456, ptr noundef %457, ptr noundef %461, ptr noundef %462, ptr noundef %70)
  %463 = load i32, ptr %70, align 4, !tbaa !9
  %464 = icmp ne i32 %463, 0
  br i1 %464, label %465, label %470

465:                                              ; preds = %455
  %466 = load ptr, ptr %20, align 8, !tbaa !5
  %467 = load i32, ptr %466, align 4, !tbaa !9
  %468 = add nsw i32 %467, 10
  %469 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %468, ptr %469, align 4, !tbaa !9
  store i32 1, ptr %99, align 4
  br label %1744

470:                                              ; preds = %455
  br label %471

471:                                              ; preds = %470, %452
  store i32 1, ptr %69, align 4, !tbaa !9
  %472 = load ptr, ptr %20, align 8, !tbaa !5
  %473 = load i32, ptr %472, align 4, !tbaa !9
  %474 = add nsw i32 %473, 1
  store i32 %474, ptr %85, align 4, !tbaa !9
  %475 = load i32, ptr %85, align 4, !tbaa !9
  %476 = load ptr, ptr %20, align 8, !tbaa !5
  %477 = load i32, ptr %476, align 4, !tbaa !9
  %478 = add nsw i32 %475, %477
  store i32 %478, ptr %92, align 4, !tbaa !9
  %479 = load ptr, ptr %20, align 8, !tbaa !5
  %480 = load ptr, ptr %21, align 8, !tbaa !5
  %481 = load i32, ptr %36, align 4, !tbaa !9
  %482 = sext i32 %481 to i64
  %483 = getelementptr inbounds %struct.doublecomplex, ptr %480, i64 %482
  %484 = load ptr, ptr %22, align 8, !tbaa !5
  %485 = load ptr, ptr %23, align 8, !tbaa !5
  %486 = load i32, ptr %38, align 4, !tbaa !9
  %487 = sext i32 %486 to i64
  %488 = getelementptr inbounds %struct.doublecomplex, ptr %485, i64 %487
  %489 = load ptr, ptr %24, align 8, !tbaa !5
  %490 = load ptr, ptr %33, align 8, !tbaa !5
  %491 = load i32, ptr %69, align 4, !tbaa !9
  %492 = sext i32 %491 to i64
  %493 = getelementptr inbounds double, ptr %490, i64 %492
  %494 = load ptr, ptr %33, align 8, !tbaa !5
  %495 = load i32, ptr %85, align 4, !tbaa !9
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds double, ptr %494, i64 %496
  %498 = load ptr, ptr %33, align 8, !tbaa !5
  %499 = load i32, ptr %92, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds double, ptr %498, i64 %500
  call void @zggbal_(ptr noundef @.str.12, ptr noundef %479, ptr noundef %483, ptr noundef %484, ptr noundef %488, ptr noundef %489, ptr noundef %96, ptr noundef %95, ptr noundef %493, ptr noundef %497, ptr noundef %501, ptr noundef %70)
  %502 = load i32, ptr %70, align 4, !tbaa !9
  %503 = icmp ne i32 %502, 0
  br i1 %503, label %504, label %509

504:                                              ; preds = %471
  %505 = load ptr, ptr %20, align 8, !tbaa !5
  %506 = load i32, ptr %505, align 4, !tbaa !9
  %507 = add nsw i32 %506, 1
  %508 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %507, ptr %508, align 4, !tbaa !9
  br label %1735

509:                                              ; preds = %471
  %510 = load i32, ptr %95, align 4, !tbaa !9
  %511 = add nsw i32 %510, 1
  %512 = load i32, ptr %96, align 4, !tbaa !9
  %513 = sub nsw i32 %511, %512
  store i32 %513, ptr %73, align 4, !tbaa !9
  %514 = load i32, ptr %98, align 4, !tbaa !9
  %515 = icmp ne i32 %514, 0
  br i1 %515, label %516, label %522

516:                                              ; preds = %509
  %517 = load ptr, ptr %20, align 8, !tbaa !5
  %518 = load i32, ptr %517, align 4, !tbaa !9
  %519 = add nsw i32 %518, 1
  %520 = load i32, ptr %96, align 4, !tbaa !9
  %521 = sub nsw i32 %519, %520
  store i32 %521, ptr %71, align 4, !tbaa !9
  br label %524

522:                                              ; preds = %509
  %523 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %523, ptr %71, align 4, !tbaa !9
  br label %524

524:                                              ; preds = %522, %516
  store i32 1, ptr %56, align 4, !tbaa !9
  %525 = load i32, ptr %56, align 4, !tbaa !9
  %526 = load i32, ptr %73, align 4, !tbaa !9
  %527 = add nsw i32 %525, %526
  store i32 %527, ptr %72, align 4, !tbaa !9
  %528 = load ptr, ptr %32, align 8, !tbaa !5
  %529 = load i32, ptr %528, align 4, !tbaa !9
  %530 = add nsw i32 %529, 1
  %531 = load i32, ptr %72, align 4, !tbaa !9
  %532 = sub nsw i32 %530, %531
  store i32 %532, ptr %43, align 4, !tbaa !9
  %533 = load ptr, ptr %23, align 8, !tbaa !5
  %534 = load i32, ptr %96, align 4, !tbaa !9
  %535 = load i32, ptr %96, align 4, !tbaa !9
  %536 = load i32, ptr %37, align 4, !tbaa !9
  %537 = mul nsw i32 %535, %536
  %538 = add nsw i32 %534, %537
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds %struct.doublecomplex, ptr %533, i64 %539
  %541 = load ptr, ptr %24, align 8, !tbaa !5
  %542 = load ptr, ptr %31, align 8, !tbaa !5
  %543 = load i32, ptr %56, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds %struct.doublecomplex, ptr %542, i64 %544
  %546 = load ptr, ptr %31, align 8, !tbaa !5
  %547 = load i32, ptr %72, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.doublecomplex, ptr %546, i64 %548
  call void @zgeqrf_(ptr noundef %73, ptr noundef %71, ptr noundef %540, ptr noundef %541, ptr noundef %545, ptr noundef %549, ptr noundef %43, ptr noundef %70)
  %550 = load i32, ptr %70, align 4, !tbaa !9
  %551 = icmp sge i32 %550, 0
  br i1 %551, label %552, label %574

552:                                              ; preds = %524
  %553 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %553, ptr %45, align 4, !tbaa !9
  %554 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %554, ptr %43, align 4, !tbaa !9
  %555 = load ptr, ptr %31, align 8, !tbaa !5
  %556 = load i32, ptr %45, align 4, !tbaa !9
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %struct.doublecomplex, ptr %555, i64 %557
  %559 = getelementptr inbounds %struct.doublecomplex, ptr %558, i32 0, i32 0
  %560 = load double, ptr %559, align 8, !tbaa !11
  %561 = fptosi double %560 to i32
  %562 = load i32, ptr %72, align 4, !tbaa !9
  %563 = add nsw i32 %561, %562
  %564 = sub nsw i32 %563, 1
  store i32 %564, ptr %44, align 4, !tbaa !9
  %565 = load i32, ptr %43, align 4, !tbaa !9
  %566 = load i32, ptr %44, align 4, !tbaa !9
  %567 = icmp sge i32 %565, %566
  br i1 %567, label %568, label %570

568:                                              ; preds = %552
  %569 = load i32, ptr %43, align 4, !tbaa !9
  br label %572

570:                                              ; preds = %552
  %571 = load i32, ptr %44, align 4, !tbaa !9
  br label %572

572:                                              ; preds = %570, %568
  %573 = phi i32 [ %569, %568 ], [ %571, %570 ]
  store i32 %573, ptr %93, align 4, !tbaa !9
  br label %574

574:                                              ; preds = %572, %524
  %575 = load i32, ptr %70, align 4, !tbaa !9
  %576 = icmp ne i32 %575, 0
  br i1 %576, label %577, label %582

577:                                              ; preds = %574
  %578 = load ptr, ptr %20, align 8, !tbaa !5
  %579 = load i32, ptr %578, align 4, !tbaa !9
  %580 = add nsw i32 %579, 2
  %581 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %580, ptr %581, align 4, !tbaa !9
  br label %1735

582:                                              ; preds = %574
  %583 = load ptr, ptr %32, align 8, !tbaa !5
  %584 = load i32, ptr %583, align 4, !tbaa !9
  %585 = add nsw i32 %584, 1
  %586 = load i32, ptr %72, align 4, !tbaa !9
  %587 = sub nsw i32 %585, %586
  store i32 %587, ptr %43, align 4, !tbaa !9
  %588 = load ptr, ptr %23, align 8, !tbaa !5
  %589 = load i32, ptr %96, align 4, !tbaa !9
  %590 = load i32, ptr %96, align 4, !tbaa !9
  %591 = load i32, ptr %37, align 4, !tbaa !9
  %592 = mul nsw i32 %590, %591
  %593 = add nsw i32 %589, %592
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds %struct.doublecomplex, ptr %588, i64 %594
  %596 = load ptr, ptr %24, align 8, !tbaa !5
  %597 = load ptr, ptr %31, align 8, !tbaa !5
  %598 = load i32, ptr %56, align 4, !tbaa !9
  %599 = sext i32 %598 to i64
  %600 = getelementptr inbounds %struct.doublecomplex, ptr %597, i64 %599
  %601 = load ptr, ptr %21, align 8, !tbaa !5
  %602 = load i32, ptr %96, align 4, !tbaa !9
  %603 = load i32, ptr %96, align 4, !tbaa !9
  %604 = load i32, ptr %35, align 4, !tbaa !9
  %605 = mul nsw i32 %603, %604
  %606 = add nsw i32 %602, %605
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds %struct.doublecomplex, ptr %601, i64 %607
  %609 = load ptr, ptr %22, align 8, !tbaa !5
  %610 = load ptr, ptr %31, align 8, !tbaa !5
  %611 = load i32, ptr %72, align 4, !tbaa !9
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %610, i64 %612
  call void @zunmqr_(ptr noundef @.str.13, ptr noundef @.str.14, ptr noundef %73, ptr noundef %71, ptr noundef %73, ptr noundef %595, ptr noundef %596, ptr noundef %600, ptr noundef %608, ptr noundef %609, ptr noundef %613, ptr noundef %43, ptr noundef %70)
  %614 = load i32, ptr %70, align 4, !tbaa !9
  %615 = icmp sge i32 %614, 0
  br i1 %615, label %616, label %638

616:                                              ; preds = %582
  %617 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %617, ptr %45, align 4, !tbaa !9
  %618 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %618, ptr %43, align 4, !tbaa !9
  %619 = load ptr, ptr %31, align 8, !tbaa !5
  %620 = load i32, ptr %45, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.doublecomplex, ptr %619, i64 %621
  %623 = getelementptr inbounds %struct.doublecomplex, ptr %622, i32 0, i32 0
  %624 = load double, ptr %623, align 8, !tbaa !11
  %625 = fptosi double %624 to i32
  %626 = load i32, ptr %72, align 4, !tbaa !9
  %627 = add nsw i32 %625, %626
  %628 = sub nsw i32 %627, 1
  store i32 %628, ptr %44, align 4, !tbaa !9
  %629 = load i32, ptr %43, align 4, !tbaa !9
  %630 = load i32, ptr %44, align 4, !tbaa !9
  %631 = icmp sge i32 %629, %630
  br i1 %631, label %632, label %634

632:                                              ; preds = %616
  %633 = load i32, ptr %43, align 4, !tbaa !9
  br label %636

634:                                              ; preds = %616
  %635 = load i32, ptr %44, align 4, !tbaa !9
  br label %636

636:                                              ; preds = %634, %632
  %637 = phi i32 [ %633, %632 ], [ %635, %634 ]
  store i32 %637, ptr %93, align 4, !tbaa !9
  br label %638

638:                                              ; preds = %636, %582
  %639 = load i32, ptr %70, align 4, !tbaa !9
  %640 = icmp ne i32 %639, 0
  br i1 %640, label %641, label %646

641:                                              ; preds = %638
  %642 = load ptr, ptr %20, align 8, !tbaa !5
  %643 = load i32, ptr %642, align 4, !tbaa !9
  %644 = add nsw i32 %643, 3
  %645 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %644, ptr %645, align 4, !tbaa !9
  br label %1735

646:                                              ; preds = %638
  %647 = load i32, ptr %58, align 4, !tbaa !9
  %648 = icmp ne i32 %647, 0
  br i1 %648, label %649, label %736

649:                                              ; preds = %646
  %650 = load ptr, ptr %20, align 8, !tbaa !5
  %651 = load ptr, ptr %20, align 8, !tbaa !5
  %652 = load ptr, ptr %27, align 8, !tbaa !5
  %653 = load i32, ptr %40, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds %struct.doublecomplex, ptr %652, i64 %654
  %656 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.15, ptr noundef %650, ptr noundef %651, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %655, ptr noundef %656)
  %657 = load i32, ptr %73, align 4, !tbaa !9
  %658 = sub nsw i32 %657, 1
  store i32 %658, ptr %43, align 4, !tbaa !9
  %659 = load i32, ptr %73, align 4, !tbaa !9
  %660 = sub nsw i32 %659, 1
  store i32 %660, ptr %44, align 4, !tbaa !9
  %661 = load ptr, ptr %23, align 8, !tbaa !5
  %662 = load i32, ptr %96, align 4, !tbaa !9
  %663 = add nsw i32 %662, 1
  %664 = load i32, ptr %96, align 4, !tbaa !9
  %665 = load i32, ptr %37, align 4, !tbaa !9
  %666 = mul nsw i32 %664, %665
  %667 = add nsw i32 %663, %666
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds %struct.doublecomplex, ptr %661, i64 %668
  %670 = load ptr, ptr %24, align 8, !tbaa !5
  %671 = load ptr, ptr %27, align 8, !tbaa !5
  %672 = load i32, ptr %96, align 4, !tbaa !9
  %673 = add nsw i32 %672, 1
  %674 = load i32, ptr %96, align 4, !tbaa !9
  %675 = load i32, ptr %39, align 4, !tbaa !9
  %676 = mul nsw i32 %674, %675
  %677 = add nsw i32 %673, %676
  %678 = sext i32 %677 to i64
  %679 = getelementptr inbounds %struct.doublecomplex, ptr %671, i64 %678
  %680 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.13, ptr noundef %43, ptr noundef %44, ptr noundef %669, ptr noundef %670, ptr noundef %679, ptr noundef %680)
  %681 = load ptr, ptr %32, align 8, !tbaa !5
  %682 = load i32, ptr %681, align 4, !tbaa !9
  %683 = add nsw i32 %682, 1
  %684 = load i32, ptr %72, align 4, !tbaa !9
  %685 = sub nsw i32 %683, %684
  store i32 %685, ptr %43, align 4, !tbaa !9
  %686 = load ptr, ptr %27, align 8, !tbaa !5
  %687 = load i32, ptr %96, align 4, !tbaa !9
  %688 = load i32, ptr %96, align 4, !tbaa !9
  %689 = load i32, ptr %39, align 4, !tbaa !9
  %690 = mul nsw i32 %688, %689
  %691 = add nsw i32 %687, %690
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds %struct.doublecomplex, ptr %686, i64 %692
  %694 = load ptr, ptr %28, align 8, !tbaa !5
  %695 = load ptr, ptr %31, align 8, !tbaa !5
  %696 = load i32, ptr %56, align 4, !tbaa !9
  %697 = sext i32 %696 to i64
  %698 = getelementptr inbounds %struct.doublecomplex, ptr %695, i64 %697
  %699 = load ptr, ptr %31, align 8, !tbaa !5
  %700 = load i32, ptr %72, align 4, !tbaa !9
  %701 = sext i32 %700 to i64
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %699, i64 %701
  call void @zungqr_(ptr noundef %73, ptr noundef %73, ptr noundef %73, ptr noundef %693, ptr noundef %694, ptr noundef %698, ptr noundef %702, ptr noundef %43, ptr noundef %70)
  %703 = load i32, ptr %70, align 4, !tbaa !9
  %704 = icmp sge i32 %703, 0
  br i1 %704, label %705, label %727

705:                                              ; preds = %649
  %706 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %706, ptr %45, align 4, !tbaa !9
  %707 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %707, ptr %43, align 4, !tbaa !9
  %708 = load ptr, ptr %31, align 8, !tbaa !5
  %709 = load i32, ptr %45, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds %struct.doublecomplex, ptr %708, i64 %710
  %712 = getelementptr inbounds %struct.doublecomplex, ptr %711, i32 0, i32 0
  %713 = load double, ptr %712, align 8, !tbaa !11
  %714 = fptosi double %713 to i32
  %715 = load i32, ptr %72, align 4, !tbaa !9
  %716 = add nsw i32 %714, %715
  %717 = sub nsw i32 %716, 1
  store i32 %717, ptr %44, align 4, !tbaa !9
  %718 = load i32, ptr %43, align 4, !tbaa !9
  %719 = load i32, ptr %44, align 4, !tbaa !9
  %720 = icmp sge i32 %718, %719
  br i1 %720, label %721, label %723

721:                                              ; preds = %705
  %722 = load i32, ptr %43, align 4, !tbaa !9
  br label %725

723:                                              ; preds = %705
  %724 = load i32, ptr %44, align 4, !tbaa !9
  br label %725

725:                                              ; preds = %723, %721
  %726 = phi i32 [ %722, %721 ], [ %724, %723 ]
  store i32 %726, ptr %93, align 4, !tbaa !9
  br label %727

727:                                              ; preds = %725, %649
  %728 = load i32, ptr %70, align 4, !tbaa !9
  %729 = icmp ne i32 %728, 0
  br i1 %729, label %730, label %735

730:                                              ; preds = %727
  %731 = load ptr, ptr %20, align 8, !tbaa !5
  %732 = load i32, ptr %731, align 4, !tbaa !9
  %733 = add nsw i32 %732, 4
  %734 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %733, ptr %734, align 4, !tbaa !9
  br label %1735

735:                                              ; preds = %727
  br label %736

736:                                              ; preds = %735, %646
  %737 = load i32, ptr %59, align 4, !tbaa !9
  %738 = icmp ne i32 %737, 0
  br i1 %738, label %739, label %747

739:                                              ; preds = %736
  %740 = load ptr, ptr %20, align 8, !tbaa !5
  %741 = load ptr, ptr %20, align 8, !tbaa !5
  %742 = load ptr, ptr %29, align 8, !tbaa !5
  %743 = load i32, ptr %42, align 4, !tbaa !9
  %744 = sext i32 %743 to i64
  %745 = getelementptr inbounds %struct.doublecomplex, ptr %742, i64 %744
  %746 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.15, ptr noundef %740, ptr noundef %741, ptr noundef @c_b1, ptr noundef @c_b2, ptr noundef %745, ptr noundef %746)
  br label %747

747:                                              ; preds = %739, %736
  %748 = load i32, ptr %98, align 4, !tbaa !9
  %749 = icmp ne i32 %748, 0
  br i1 %749, label %750, label %774

750:                                              ; preds = %747
  %751 = load ptr, ptr %18, align 8, !tbaa !5
  %752 = load ptr, ptr %19, align 8, !tbaa !5
  %753 = load ptr, ptr %20, align 8, !tbaa !5
  %754 = load ptr, ptr %21, align 8, !tbaa !5
  %755 = load i32, ptr %36, align 4, !tbaa !9
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds %struct.doublecomplex, ptr %754, i64 %756
  %758 = load ptr, ptr %22, align 8, !tbaa !5
  %759 = load ptr, ptr %23, align 8, !tbaa !5
  %760 = load i32, ptr %38, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds %struct.doublecomplex, ptr %759, i64 %761
  %763 = load ptr, ptr %24, align 8, !tbaa !5
  %764 = load ptr, ptr %27, align 8, !tbaa !5
  %765 = load i32, ptr %40, align 4, !tbaa !9
  %766 = sext i32 %765 to i64
  %767 = getelementptr inbounds %struct.doublecomplex, ptr %764, i64 %766
  %768 = load ptr, ptr %28, align 8, !tbaa !5
  %769 = load ptr, ptr %29, align 8, !tbaa !5
  %770 = load i32, ptr %42, align 4, !tbaa !9
  %771 = sext i32 %770 to i64
  %772 = getelementptr inbounds %struct.doublecomplex, ptr %769, i64 %771
  %773 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zgghrd_(ptr noundef %751, ptr noundef %752, ptr noundef %753, ptr noundef %96, ptr noundef %95, ptr noundef %757, ptr noundef %758, ptr noundef %762, ptr noundef %763, ptr noundef %767, ptr noundef %768, ptr noundef %772, ptr noundef %773, ptr noundef %70)
  br label %803

774:                                              ; preds = %747
  %775 = load ptr, ptr %21, align 8, !tbaa !5
  %776 = load i32, ptr %96, align 4, !tbaa !9
  %777 = load i32, ptr %96, align 4, !tbaa !9
  %778 = load i32, ptr %35, align 4, !tbaa !9
  %779 = mul nsw i32 %777, %778
  %780 = add nsw i32 %776, %779
  %781 = sext i32 %780 to i64
  %782 = getelementptr inbounds %struct.doublecomplex, ptr %775, i64 %781
  %783 = load ptr, ptr %22, align 8, !tbaa !5
  %784 = load ptr, ptr %23, align 8, !tbaa !5
  %785 = load i32, ptr %96, align 4, !tbaa !9
  %786 = load i32, ptr %96, align 4, !tbaa !9
  %787 = load i32, ptr %37, align 4, !tbaa !9
  %788 = mul nsw i32 %786, %787
  %789 = add nsw i32 %785, %788
  %790 = sext i32 %789 to i64
  %791 = getelementptr inbounds %struct.doublecomplex, ptr %784, i64 %790
  %792 = load ptr, ptr %24, align 8, !tbaa !5
  %793 = load ptr, ptr %27, align 8, !tbaa !5
  %794 = load i32, ptr %40, align 4, !tbaa !9
  %795 = sext i32 %794 to i64
  %796 = getelementptr inbounds %struct.doublecomplex, ptr %793, i64 %795
  %797 = load ptr, ptr %28, align 8, !tbaa !5
  %798 = load ptr, ptr %29, align 8, !tbaa !5
  %799 = load i32, ptr %42, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds %struct.doublecomplex, ptr %798, i64 %800
  %802 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zgghrd_(ptr noundef @.str, ptr noundef @.str, ptr noundef %73, ptr noundef @c__1, ptr noundef %73, ptr noundef %782, ptr noundef %783, ptr noundef %791, ptr noundef %792, ptr noundef %796, ptr noundef %797, ptr noundef %801, ptr noundef %802, ptr noundef %70)
  br label %803

803:                                              ; preds = %774, %750
  %804 = load i32, ptr %70, align 4, !tbaa !9
  %805 = icmp ne i32 %804, 0
  br i1 %805, label %806, label %811

806:                                              ; preds = %803
  %807 = load ptr, ptr %20, align 8, !tbaa !5
  %808 = load i32, ptr %807, align 4, !tbaa !9
  %809 = add nsw i32 %808, 5
  %810 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %809, ptr %810, align 4, !tbaa !9
  br label %1735

811:                                              ; preds = %803
  %812 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %812, ptr %72, align 4, !tbaa !9
  %813 = load i32, ptr %98, align 4, !tbaa !9
  %814 = icmp ne i32 %813, 0
  br i1 %814, label %815, label %817

815:                                              ; preds = %811
  %816 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  store i8 83, ptr %816, align 1, !tbaa !16
  br label %819

817:                                              ; preds = %811
  %818 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  store i8 69, ptr %818, align 1, !tbaa !16
  br label %819

819:                                              ; preds = %817, %815
  %820 = load ptr, ptr %32, align 8, !tbaa !5
  %821 = load i32, ptr %820, align 4, !tbaa !9
  %822 = add nsw i32 %821, 1
  %823 = load i32, ptr %72, align 4, !tbaa !9
  %824 = sub nsw i32 %822, %823
  store i32 %824, ptr %43, align 4, !tbaa !9
  %825 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  %826 = load ptr, ptr %18, align 8, !tbaa !5
  %827 = load ptr, ptr %19, align 8, !tbaa !5
  %828 = load ptr, ptr %20, align 8, !tbaa !5
  %829 = load ptr, ptr %21, align 8, !tbaa !5
  %830 = load i32, ptr %36, align 4, !tbaa !9
  %831 = sext i32 %830 to i64
  %832 = getelementptr inbounds %struct.doublecomplex, ptr %829, i64 %831
  %833 = load ptr, ptr %22, align 8, !tbaa !5
  %834 = load ptr, ptr %23, align 8, !tbaa !5
  %835 = load i32, ptr %38, align 4, !tbaa !9
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds %struct.doublecomplex, ptr %834, i64 %836
  %838 = load ptr, ptr %24, align 8, !tbaa !5
  %839 = load ptr, ptr %25, align 8, !tbaa !5
  %840 = getelementptr inbounds %struct.doublecomplex, ptr %839, i64 1
  %841 = load ptr, ptr %26, align 8, !tbaa !5
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %841, i64 1
  %843 = load ptr, ptr %27, align 8, !tbaa !5
  %844 = load i32, ptr %40, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds %struct.doublecomplex, ptr %843, i64 %845
  %847 = load ptr, ptr %28, align 8, !tbaa !5
  %848 = load ptr, ptr %29, align 8, !tbaa !5
  %849 = load i32, ptr %42, align 4, !tbaa !9
  %850 = sext i32 %849 to i64
  %851 = getelementptr inbounds %struct.doublecomplex, ptr %848, i64 %850
  %852 = load ptr, ptr %30, align 8, !tbaa !5
  %853 = load ptr, ptr %31, align 8, !tbaa !5
  %854 = load i32, ptr %72, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %853, i64 %855
  %857 = load ptr, ptr %33, align 8, !tbaa !5
  %858 = load i32, ptr %92, align 4, !tbaa !9
  %859 = sext i32 %858 to i64
  %860 = getelementptr inbounds double, ptr %857, i64 %859
  call void @zhgeqz_(ptr noundef %825, ptr noundef %826, ptr noundef %827, ptr noundef %828, ptr noundef %96, ptr noundef %95, ptr noundef %832, ptr noundef %833, ptr noundef %837, ptr noundef %838, ptr noundef %840, ptr noundef %842, ptr noundef %846, ptr noundef %847, ptr noundef %851, ptr noundef %852, ptr noundef %856, ptr noundef %43, ptr noundef %860, ptr noundef %70)
  %861 = load i32, ptr %70, align 4, !tbaa !9
  %862 = icmp sge i32 %861, 0
  br i1 %862, label %863, label %885

863:                                              ; preds = %819
  %864 = load i32, ptr %72, align 4, !tbaa !9
  store i32 %864, ptr %45, align 4, !tbaa !9
  %865 = load i32, ptr %93, align 4, !tbaa !9
  store i32 %865, ptr %43, align 4, !tbaa !9
  %866 = load ptr, ptr %31, align 8, !tbaa !5
  %867 = load i32, ptr %45, align 4, !tbaa !9
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds %struct.doublecomplex, ptr %866, i64 %868
  %870 = getelementptr inbounds %struct.doublecomplex, ptr %869, i32 0, i32 0
  %871 = load double, ptr %870, align 8, !tbaa !11
  %872 = fptosi double %871 to i32
  %873 = load i32, ptr %72, align 4, !tbaa !9
  %874 = add nsw i32 %872, %873
  %875 = sub nsw i32 %874, 1
  store i32 %875, ptr %44, align 4, !tbaa !9
  %876 = load i32, ptr %43, align 4, !tbaa !9
  %877 = load i32, ptr %44, align 4, !tbaa !9
  %878 = icmp sge i32 %876, %877
  br i1 %878, label %879, label %881

879:                                              ; preds = %863
  %880 = load i32, ptr %43, align 4, !tbaa !9
  br label %883

881:                                              ; preds = %863
  %882 = load i32, ptr %44, align 4, !tbaa !9
  br label %883

883:                                              ; preds = %881, %879
  %884 = phi i32 [ %880, %879 ], [ %882, %881 ]
  store i32 %884, ptr %93, align 4, !tbaa !9
  br label %885

885:                                              ; preds = %883, %819
  %886 = load i32, ptr %70, align 4, !tbaa !9
  %887 = icmp ne i32 %886, 0
  br i1 %887, label %888, label %923

888:                                              ; preds = %885
  %889 = load i32, ptr %70, align 4, !tbaa !9
  %890 = icmp sgt i32 %889, 0
  br i1 %890, label %891, label %899

891:                                              ; preds = %888
  %892 = load i32, ptr %70, align 4, !tbaa !9
  %893 = load ptr, ptr %20, align 8, !tbaa !5
  %894 = load i32, ptr %893, align 4, !tbaa !9
  %895 = icmp sle i32 %892, %894
  br i1 %895, label %896, label %899

896:                                              ; preds = %891
  %897 = load i32, ptr %70, align 4, !tbaa !9
  %898 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %897, ptr %898, align 4, !tbaa !9
  br label %922

899:                                              ; preds = %891, %888
  %900 = load i32, ptr %70, align 4, !tbaa !9
  %901 = load ptr, ptr %20, align 8, !tbaa !5
  %902 = load i32, ptr %901, align 4, !tbaa !9
  %903 = icmp sgt i32 %900, %902
  br i1 %903, label %904, label %916

904:                                              ; preds = %899
  %905 = load i32, ptr %70, align 4, !tbaa !9
  %906 = load ptr, ptr %20, align 8, !tbaa !5
  %907 = load i32, ptr %906, align 4, !tbaa !9
  %908 = shl i32 %907, 1
  %909 = icmp sle i32 %905, %908
  br i1 %909, label %910, label %916

910:                                              ; preds = %904
  %911 = load i32, ptr %70, align 4, !tbaa !9
  %912 = load ptr, ptr %20, align 8, !tbaa !5
  %913 = load i32, ptr %912, align 4, !tbaa !9
  %914 = sub nsw i32 %911, %913
  %915 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %914, ptr %915, align 4, !tbaa !9
  br label %921

916:                                              ; preds = %904, %899
  %917 = load ptr, ptr %20, align 8, !tbaa !5
  %918 = load i32, ptr %917, align 4, !tbaa !9
  %919 = add nsw i32 %918, 6
  %920 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %919, ptr %920, align 4, !tbaa !9
  br label %921

921:                                              ; preds = %916, %910
  br label %922

922:                                              ; preds = %921, %896
  br label %1735

923:                                              ; preds = %885
  %924 = load i32, ptr %98, align 4, !tbaa !9
  %925 = icmp ne i32 %924, 0
  br i1 %925, label %926, label %1302

926:                                              ; preds = %923
  %927 = load i32, ptr %58, align 4, !tbaa !9
  %928 = icmp ne i32 %927, 0
  br i1 %928, label %929, label %937

929:                                              ; preds = %926
  %930 = load i32, ptr %59, align 4, !tbaa !9
  %931 = icmp ne i32 %930, 0
  br i1 %931, label %932, label %934

932:                                              ; preds = %929
  %933 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  store i8 66, ptr %933, align 1, !tbaa !16
  br label %936

934:                                              ; preds = %929
  %935 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  store i8 76, ptr %935, align 1, !tbaa !16
  br label %936

936:                                              ; preds = %934, %932
  br label %939

937:                                              ; preds = %926
  %938 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  store i8 82, ptr %938, align 1, !tbaa !16
  br label %939

939:                                              ; preds = %937, %936
  %940 = getelementptr inbounds [1 x i8], ptr %82, i64 0, i64 0
  %941 = getelementptr inbounds [1 x i32], ptr %83, i64 0, i64 0
  %942 = load ptr, ptr %20, align 8, !tbaa !5
  %943 = load ptr, ptr %21, align 8, !tbaa !5
  %944 = load i32, ptr %36, align 4, !tbaa !9
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds %struct.doublecomplex, ptr %943, i64 %945
  %947 = load ptr, ptr %22, align 8, !tbaa !5
  %948 = load ptr, ptr %23, align 8, !tbaa !5
  %949 = load i32, ptr %38, align 4, !tbaa !9
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %948, i64 %950
  %952 = load ptr, ptr %24, align 8, !tbaa !5
  %953 = load ptr, ptr %27, align 8, !tbaa !5
  %954 = load i32, ptr %40, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds %struct.doublecomplex, ptr %953, i64 %955
  %957 = load ptr, ptr %28, align 8, !tbaa !5
  %958 = load ptr, ptr %29, align 8, !tbaa !5
  %959 = load i32, ptr %42, align 4, !tbaa !9
  %960 = sext i32 %959 to i64
  %961 = getelementptr inbounds %struct.doublecomplex, ptr %958, i64 %960
  %962 = load ptr, ptr %30, align 8, !tbaa !5
  %963 = load ptr, ptr %20, align 8, !tbaa !5
  %964 = load ptr, ptr %31, align 8, !tbaa !5
  %965 = load i32, ptr %72, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds %struct.doublecomplex, ptr %964, i64 %966
  %968 = load ptr, ptr %33, align 8, !tbaa !5
  %969 = load i32, ptr %92, align 4, !tbaa !9
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds double, ptr %968, i64 %970
  call void @ztgevc_(ptr noundef %940, ptr noundef @.str.8, ptr noundef %941, ptr noundef %942, ptr noundef %946, ptr noundef %947, ptr noundef %951, ptr noundef %952, ptr noundef %956, ptr noundef %957, ptr noundef %961, ptr noundef %962, ptr noundef %963, ptr noundef %76, ptr noundef %967, ptr noundef %971, ptr noundef %70)
  %972 = load i32, ptr %70, align 4, !tbaa !9
  %973 = icmp ne i32 %972, 0
  br i1 %973, label %974, label %979

974:                                              ; preds = %939
  %975 = load ptr, ptr %20, align 8, !tbaa !5
  %976 = load i32, ptr %975, align 4, !tbaa !9
  %977 = add nsw i32 %976, 7
  %978 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %977, ptr %978, align 4, !tbaa !9
  br label %1735

979:                                              ; preds = %939
  %980 = load i32, ptr %58, align 4, !tbaa !9
  %981 = icmp ne i32 %980, 0
  br i1 %981, label %982, label %1140

982:                                              ; preds = %979
  %983 = load ptr, ptr %20, align 8, !tbaa !5
  %984 = load ptr, ptr %33, align 8, !tbaa !5
  %985 = load i32, ptr %69, align 4, !tbaa !9
  %986 = sext i32 %985 to i64
  %987 = getelementptr inbounds double, ptr %984, i64 %986
  %988 = load ptr, ptr %33, align 8, !tbaa !5
  %989 = load i32, ptr %85, align 4, !tbaa !9
  %990 = sext i32 %989 to i64
  %991 = getelementptr inbounds double, ptr %988, i64 %990
  %992 = load ptr, ptr %20, align 8, !tbaa !5
  %993 = load ptr, ptr %27, align 8, !tbaa !5
  %994 = load i32, ptr %40, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds %struct.doublecomplex, ptr %993, i64 %995
  %997 = load ptr, ptr %28, align 8, !tbaa !5
  call void @zggbak_(ptr noundef @.str.12, ptr noundef @.str.13, ptr noundef %983, ptr noundef %96, ptr noundef %95, ptr noundef %987, ptr noundef %991, ptr noundef %992, ptr noundef %996, ptr noundef %997, ptr noundef %70)
  %998 = load i32, ptr %70, align 4, !tbaa !9
  %999 = icmp ne i32 %998, 0
  br i1 %999, label %1000, label %1005

1000:                                             ; preds = %982
  %1001 = load ptr, ptr %20, align 8, !tbaa !5
  %1002 = load i32, ptr %1001, align 4, !tbaa !9
  %1003 = add nsw i32 %1002, 8
  %1004 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1003, ptr %1004, align 4, !tbaa !9
  br label %1735

1005:                                             ; preds = %982
  %1006 = load ptr, ptr %20, align 8, !tbaa !5
  %1007 = load i32, ptr %1006, align 4, !tbaa !9
  store i32 %1007, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %1008

1008:                                             ; preds = %1136, %1005
  %1009 = load i32, ptr %74, align 4, !tbaa !9
  %1010 = load i32, ptr %43, align 4, !tbaa !9
  %1011 = icmp sle i32 %1009, %1010
  br i1 %1011, label %1012, label %1139

1012:                                             ; preds = %1008
  store double 0.000000e+00, ptr %57, align 8, !tbaa !15
  %1013 = load ptr, ptr %20, align 8, !tbaa !5
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  store i32 %1014, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %1015

1015:                                             ; preds = %1071, %1012
  %1016 = load i32, ptr %77, align 4, !tbaa !9
  %1017 = load i32, ptr %44, align 4, !tbaa !9
  %1018 = icmp sle i32 %1016, %1017
  br i1 %1018, label %1019, label %1074

1019:                                             ; preds = %1015
  %1020 = load i32, ptr %77, align 4, !tbaa !9
  %1021 = load i32, ptr %74, align 4, !tbaa !9
  %1022 = load i32, ptr %39, align 4, !tbaa !9
  %1023 = mul nsw i32 %1021, %1022
  %1024 = add nsw i32 %1020, %1023
  store i32 %1024, ptr %45, align 4, !tbaa !9
  %1025 = load double, ptr %57, align 8, !tbaa !15
  store double %1025, ptr %49, align 8, !tbaa !15
  %1026 = load ptr, ptr %27, align 8, !tbaa !5
  %1027 = load i32, ptr %45, align 4, !tbaa !9
  %1028 = sext i32 %1027 to i64
  %1029 = getelementptr inbounds %struct.doublecomplex, ptr %1026, i64 %1028
  %1030 = getelementptr inbounds %struct.doublecomplex, ptr %1029, i32 0, i32 0
  %1031 = load double, ptr %1030, align 8, !tbaa !11
  store double %1031, ptr %47, align 8, !tbaa !15
  %1032 = load double, ptr %47, align 8, !tbaa !15
  %1033 = fcmp oge double %1032, 0.000000e+00
  br i1 %1033, label %1034, label %1036

1034:                                             ; preds = %1019
  %1035 = load double, ptr %47, align 8, !tbaa !15
  br label %1039

1036:                                             ; preds = %1019
  %1037 = load double, ptr %47, align 8, !tbaa !15
  %1038 = fneg double %1037
  br label %1039

1039:                                             ; preds = %1036, %1034
  %1040 = phi double [ %1035, %1034 ], [ %1038, %1036 ]
  %1041 = load ptr, ptr %27, align 8, !tbaa !5
  %1042 = load i32, ptr %77, align 4, !tbaa !9
  %1043 = load i32, ptr %74, align 4, !tbaa !9
  %1044 = load i32, ptr %39, align 4, !tbaa !9
  %1045 = mul nsw i32 %1043, %1044
  %1046 = add nsw i32 %1042, %1045
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1041, i64 %1047
  %1049 = call { double, double } @Cd(ptr noundef %1048)
  %1050 = extractvalue { double, double } %1049, 0
  %1051 = extractvalue { double, double } %1049, 1
  store double %1051, ptr %48, align 8, !tbaa !15
  %1052 = load double, ptr %48, align 8, !tbaa !15
  %1053 = fcmp oge double %1052, 0.000000e+00
  br i1 %1053, label %1054, label %1056

1054:                                             ; preds = %1039
  %1055 = load double, ptr %48, align 8, !tbaa !15
  br label %1059

1056:                                             ; preds = %1039
  %1057 = load double, ptr %48, align 8, !tbaa !15
  %1058 = fneg double %1057
  br label %1059

1059:                                             ; preds = %1056, %1054
  %1060 = phi double [ %1055, %1054 ], [ %1058, %1056 ]
  %1061 = fadd double %1040, %1060
  store double %1061, ptr %50, align 8, !tbaa !15
  %1062 = load double, ptr %49, align 8, !tbaa !15
  %1063 = load double, ptr %50, align 8, !tbaa !15
  %1064 = fcmp oge double %1062, %1063
  br i1 %1064, label %1065, label %1067

1065:                                             ; preds = %1059
  %1066 = load double, ptr %49, align 8, !tbaa !15
  br label %1069

1067:                                             ; preds = %1059
  %1068 = load double, ptr %50, align 8, !tbaa !15
  br label %1069

1069:                                             ; preds = %1067, %1065
  %1070 = phi double [ %1066, %1065 ], [ %1068, %1067 ]
  store double %1070, ptr %57, align 8, !tbaa !15
  br label %1071

1071:                                             ; preds = %1069
  %1072 = load i32, ptr %77, align 4, !tbaa !9
  %1073 = add nsw i32 %1072, 1
  store i32 %1073, ptr %77, align 4, !tbaa !9
  br label %1015, !llvm.loop !17

1074:                                             ; preds = %1015
  %1075 = load double, ptr %57, align 8, !tbaa !15
  %1076 = load double, ptr %80, align 8, !tbaa !15
  %1077 = fcmp olt double %1075, %1076
  br i1 %1077, label %1078, label %1079

1078:                                             ; preds = %1074
  br label %1135

1079:                                             ; preds = %1074
  %1080 = load double, ptr %57, align 8, !tbaa !15
  %1081 = fdiv double 1.000000e+00, %1080
  store double %1081, ptr %57, align 8, !tbaa !15
  %1082 = load ptr, ptr %20, align 8, !tbaa !5
  %1083 = load i32, ptr %1082, align 4, !tbaa !9
  store i32 %1083, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %1084

1084:                                             ; preds = %1131, %1079
  %1085 = load i32, ptr %77, align 4, !tbaa !9
  %1086 = load i32, ptr %44, align 4, !tbaa !9
  %1087 = icmp sle i32 %1085, %1086
  br i1 %1087, label %1088, label %1134

1088:                                             ; preds = %1084
  %1089 = load i32, ptr %77, align 4, !tbaa !9
  %1090 = load i32, ptr %74, align 4, !tbaa !9
  %1091 = load i32, ptr %39, align 4, !tbaa !9
  %1092 = mul nsw i32 %1090, %1091
  %1093 = add nsw i32 %1089, %1092
  store i32 %1093, ptr %45, align 4, !tbaa !9
  %1094 = load i32, ptr %77, align 4, !tbaa !9
  %1095 = load i32, ptr %74, align 4, !tbaa !9
  %1096 = load i32, ptr %39, align 4, !tbaa !9
  %1097 = mul nsw i32 %1095, %1096
  %1098 = add nsw i32 %1094, %1097
  store i32 %1098, ptr %46, align 4, !tbaa !9
  %1099 = load double, ptr %57, align 8, !tbaa !15
  %1100 = load ptr, ptr %27, align 8, !tbaa !5
  %1101 = load i32, ptr %46, align 4, !tbaa !9
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds %struct.doublecomplex, ptr %1100, i64 %1102
  %1104 = getelementptr inbounds %struct.doublecomplex, ptr %1103, i32 0, i32 0
  %1105 = load double, ptr %1104, align 8, !tbaa !11
  %1106 = fmul double %1099, %1105
  %1107 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1106, ptr %1107, align 8, !tbaa !11
  %1108 = load double, ptr %57, align 8, !tbaa !15
  %1109 = load ptr, ptr %27, align 8, !tbaa !5
  %1110 = load i32, ptr %46, align 4, !tbaa !9
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds %struct.doublecomplex, ptr %1109, i64 %1111
  %1113 = getelementptr inbounds %struct.doublecomplex, ptr %1112, i32 0, i32 1
  %1114 = load double, ptr %1113, align 8, !tbaa !14
  %1115 = fmul double %1108, %1114
  %1116 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1115, ptr %1116, align 8, !tbaa !14
  %1117 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1118 = load double, ptr %1117, align 8, !tbaa !11
  %1119 = load ptr, ptr %27, align 8, !tbaa !5
  %1120 = load i32, ptr %45, align 4, !tbaa !9
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds %struct.doublecomplex, ptr %1119, i64 %1121
  %1123 = getelementptr inbounds %struct.doublecomplex, ptr %1122, i32 0, i32 0
  store double %1118, ptr %1123, align 8, !tbaa !11
  %1124 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1125 = load double, ptr %1124, align 8, !tbaa !14
  %1126 = load ptr, ptr %27, align 8, !tbaa !5
  %1127 = load i32, ptr %45, align 4, !tbaa !9
  %1128 = sext i32 %1127 to i64
  %1129 = getelementptr inbounds %struct.doublecomplex, ptr %1126, i64 %1128
  %1130 = getelementptr inbounds %struct.doublecomplex, ptr %1129, i32 0, i32 1
  store double %1125, ptr %1130, align 8, !tbaa !14
  br label %1131

1131:                                             ; preds = %1088
  %1132 = load i32, ptr %77, align 4, !tbaa !9
  %1133 = add nsw i32 %1132, 1
  store i32 %1133, ptr %77, align 4, !tbaa !9
  br label %1084, !llvm.loop !19

1134:                                             ; preds = %1084
  br label %1135

1135:                                             ; preds = %1134, %1078
  br label %1136

1136:                                             ; preds = %1135
  %1137 = load i32, ptr %74, align 4, !tbaa !9
  %1138 = add nsw i32 %1137, 1
  store i32 %1138, ptr %74, align 4, !tbaa !9
  br label %1008, !llvm.loop !20

1139:                                             ; preds = %1008
  br label %1140

1140:                                             ; preds = %1139, %979
  %1141 = load i32, ptr %59, align 4, !tbaa !9
  %1142 = icmp ne i32 %1141, 0
  br i1 %1142, label %1143, label %1301

1143:                                             ; preds = %1140
  %1144 = load ptr, ptr %20, align 8, !tbaa !5
  %1145 = load ptr, ptr %33, align 8, !tbaa !5
  %1146 = load i32, ptr %69, align 4, !tbaa !9
  %1147 = sext i32 %1146 to i64
  %1148 = getelementptr inbounds double, ptr %1145, i64 %1147
  %1149 = load ptr, ptr %33, align 8, !tbaa !5
  %1150 = load i32, ptr %85, align 4, !tbaa !9
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds double, ptr %1149, i64 %1151
  %1153 = load ptr, ptr %20, align 8, !tbaa !5
  %1154 = load ptr, ptr %29, align 8, !tbaa !5
  %1155 = load i32, ptr %42, align 4, !tbaa !9
  %1156 = sext i32 %1155 to i64
  %1157 = getelementptr inbounds %struct.doublecomplex, ptr %1154, i64 %1156
  %1158 = load ptr, ptr %30, align 8, !tbaa !5
  call void @zggbak_(ptr noundef @.str.12, ptr noundef @.str.16, ptr noundef %1144, ptr noundef %96, ptr noundef %95, ptr noundef %1148, ptr noundef %1152, ptr noundef %1153, ptr noundef %1157, ptr noundef %1158, ptr noundef %70)
  %1159 = load i32, ptr %70, align 4, !tbaa !9
  %1160 = icmp ne i32 %1159, 0
  br i1 %1160, label %1161, label %1166

1161:                                             ; preds = %1143
  %1162 = load ptr, ptr %20, align 8, !tbaa !5
  %1163 = load i32, ptr %1162, align 4, !tbaa !9
  %1164 = add nsw i32 %1163, 9
  %1165 = load ptr, ptr %34, align 8, !tbaa !5
  store i32 %1164, ptr %1165, align 4, !tbaa !9
  br label %1735

1166:                                             ; preds = %1143
  %1167 = load ptr, ptr %20, align 8, !tbaa !5
  %1168 = load i32, ptr %1167, align 4, !tbaa !9
  store i32 %1168, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %1169

1169:                                             ; preds = %1297, %1166
  %1170 = load i32, ptr %74, align 4, !tbaa !9
  %1171 = load i32, ptr %43, align 4, !tbaa !9
  %1172 = icmp sle i32 %1170, %1171
  br i1 %1172, label %1173, label %1300

1173:                                             ; preds = %1169
  store double 0.000000e+00, ptr %57, align 8, !tbaa !15
  %1174 = load ptr, ptr %20, align 8, !tbaa !5
  %1175 = load i32, ptr %1174, align 4, !tbaa !9
  store i32 %1175, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %1176

1176:                                             ; preds = %1232, %1173
  %1177 = load i32, ptr %77, align 4, !tbaa !9
  %1178 = load i32, ptr %44, align 4, !tbaa !9
  %1179 = icmp sle i32 %1177, %1178
  br i1 %1179, label %1180, label %1235

1180:                                             ; preds = %1176
  %1181 = load i32, ptr %77, align 4, !tbaa !9
  %1182 = load i32, ptr %74, align 4, !tbaa !9
  %1183 = load i32, ptr %41, align 4, !tbaa !9
  %1184 = mul nsw i32 %1182, %1183
  %1185 = add nsw i32 %1181, %1184
  store i32 %1185, ptr %45, align 4, !tbaa !9
  %1186 = load double, ptr %57, align 8, !tbaa !15
  store double %1186, ptr %49, align 8, !tbaa !15
  %1187 = load ptr, ptr %29, align 8, !tbaa !5
  %1188 = load i32, ptr %45, align 4, !tbaa !9
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds %struct.doublecomplex, ptr %1187, i64 %1189
  %1191 = getelementptr inbounds %struct.doublecomplex, ptr %1190, i32 0, i32 0
  %1192 = load double, ptr %1191, align 8, !tbaa !11
  store double %1192, ptr %47, align 8, !tbaa !15
  %1193 = load double, ptr %47, align 8, !tbaa !15
  %1194 = fcmp oge double %1193, 0.000000e+00
  br i1 %1194, label %1195, label %1197

1195:                                             ; preds = %1180
  %1196 = load double, ptr %47, align 8, !tbaa !15
  br label %1200

1197:                                             ; preds = %1180
  %1198 = load double, ptr %47, align 8, !tbaa !15
  %1199 = fneg double %1198
  br label %1200

1200:                                             ; preds = %1197, %1195
  %1201 = phi double [ %1196, %1195 ], [ %1199, %1197 ]
  %1202 = load ptr, ptr %29, align 8, !tbaa !5
  %1203 = load i32, ptr %77, align 4, !tbaa !9
  %1204 = load i32, ptr %74, align 4, !tbaa !9
  %1205 = load i32, ptr %41, align 4, !tbaa !9
  %1206 = mul nsw i32 %1204, %1205
  %1207 = add nsw i32 %1203, %1206
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds %struct.doublecomplex, ptr %1202, i64 %1208
  %1210 = call { double, double } @Cd(ptr noundef %1209)
  %1211 = extractvalue { double, double } %1210, 0
  %1212 = extractvalue { double, double } %1210, 1
  store double %1212, ptr %48, align 8, !tbaa !15
  %1213 = load double, ptr %48, align 8, !tbaa !15
  %1214 = fcmp oge double %1213, 0.000000e+00
  br i1 %1214, label %1215, label %1217

1215:                                             ; preds = %1200
  %1216 = load double, ptr %48, align 8, !tbaa !15
  br label %1220

1217:                                             ; preds = %1200
  %1218 = load double, ptr %48, align 8, !tbaa !15
  %1219 = fneg double %1218
  br label %1220

1220:                                             ; preds = %1217, %1215
  %1221 = phi double [ %1216, %1215 ], [ %1219, %1217 ]
  %1222 = fadd double %1201, %1221
  store double %1222, ptr %50, align 8, !tbaa !15
  %1223 = load double, ptr %49, align 8, !tbaa !15
  %1224 = load double, ptr %50, align 8, !tbaa !15
  %1225 = fcmp oge double %1223, %1224
  br i1 %1225, label %1226, label %1228

1226:                                             ; preds = %1220
  %1227 = load double, ptr %49, align 8, !tbaa !15
  br label %1230

1228:                                             ; preds = %1220
  %1229 = load double, ptr %50, align 8, !tbaa !15
  br label %1230

1230:                                             ; preds = %1228, %1226
  %1231 = phi double [ %1227, %1226 ], [ %1229, %1228 ]
  store double %1231, ptr %57, align 8, !tbaa !15
  br label %1232

1232:                                             ; preds = %1230
  %1233 = load i32, ptr %77, align 4, !tbaa !9
  %1234 = add nsw i32 %1233, 1
  store i32 %1234, ptr %77, align 4, !tbaa !9
  br label %1176, !llvm.loop !21

1235:                                             ; preds = %1176
  %1236 = load double, ptr %57, align 8, !tbaa !15
  %1237 = load double, ptr %80, align 8, !tbaa !15
  %1238 = fcmp olt double %1236, %1237
  br i1 %1238, label %1239, label %1240

1239:                                             ; preds = %1235
  br label %1296

1240:                                             ; preds = %1235
  %1241 = load double, ptr %57, align 8, !tbaa !15
  %1242 = fdiv double 1.000000e+00, %1241
  store double %1242, ptr %57, align 8, !tbaa !15
  %1243 = load ptr, ptr %20, align 8, !tbaa !5
  %1244 = load i32, ptr %1243, align 4, !tbaa !9
  store i32 %1244, ptr %44, align 4, !tbaa !9
  store i32 1, ptr %77, align 4, !tbaa !9
  br label %1245

1245:                                             ; preds = %1292, %1240
  %1246 = load i32, ptr %77, align 4, !tbaa !9
  %1247 = load i32, ptr %44, align 4, !tbaa !9
  %1248 = icmp sle i32 %1246, %1247
  br i1 %1248, label %1249, label %1295

1249:                                             ; preds = %1245
  %1250 = load i32, ptr %77, align 4, !tbaa !9
  %1251 = load i32, ptr %74, align 4, !tbaa !9
  %1252 = load i32, ptr %41, align 4, !tbaa !9
  %1253 = mul nsw i32 %1251, %1252
  %1254 = add nsw i32 %1250, %1253
  store i32 %1254, ptr %45, align 4, !tbaa !9
  %1255 = load i32, ptr %77, align 4, !tbaa !9
  %1256 = load i32, ptr %74, align 4, !tbaa !9
  %1257 = load i32, ptr %41, align 4, !tbaa !9
  %1258 = mul nsw i32 %1256, %1257
  %1259 = add nsw i32 %1255, %1258
  store i32 %1259, ptr %46, align 4, !tbaa !9
  %1260 = load double, ptr %57, align 8, !tbaa !15
  %1261 = load ptr, ptr %29, align 8, !tbaa !5
  %1262 = load i32, ptr %46, align 4, !tbaa !9
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds %struct.doublecomplex, ptr %1261, i64 %1263
  %1265 = getelementptr inbounds %struct.doublecomplex, ptr %1264, i32 0, i32 0
  %1266 = load double, ptr %1265, align 8, !tbaa !11
  %1267 = fmul double %1260, %1266
  %1268 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1267, ptr %1268, align 8, !tbaa !11
  %1269 = load double, ptr %57, align 8, !tbaa !15
  %1270 = load ptr, ptr %29, align 8, !tbaa !5
  %1271 = load i32, ptr %46, align 4, !tbaa !9
  %1272 = sext i32 %1271 to i64
  %1273 = getelementptr inbounds %struct.doublecomplex, ptr %1270, i64 %1272
  %1274 = getelementptr inbounds %struct.doublecomplex, ptr %1273, i32 0, i32 1
  %1275 = load double, ptr %1274, align 8, !tbaa !14
  %1276 = fmul double %1269, %1275
  %1277 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1276, ptr %1277, align 8, !tbaa !14
  %1278 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1279 = load double, ptr %1278, align 8, !tbaa !11
  %1280 = load ptr, ptr %29, align 8, !tbaa !5
  %1281 = load i32, ptr %45, align 4, !tbaa !9
  %1282 = sext i32 %1281 to i64
  %1283 = getelementptr inbounds %struct.doublecomplex, ptr %1280, i64 %1282
  %1284 = getelementptr inbounds %struct.doublecomplex, ptr %1283, i32 0, i32 0
  store double %1279, ptr %1284, align 8, !tbaa !11
  %1285 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1286 = load double, ptr %1285, align 8, !tbaa !14
  %1287 = load ptr, ptr %29, align 8, !tbaa !5
  %1288 = load i32, ptr %45, align 4, !tbaa !9
  %1289 = sext i32 %1288 to i64
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %1287, i64 %1289
  %1291 = getelementptr inbounds %struct.doublecomplex, ptr %1290, i32 0, i32 1
  store double %1286, ptr %1291, align 8, !tbaa !14
  br label %1292

1292:                                             ; preds = %1249
  %1293 = load i32, ptr %77, align 4, !tbaa !9
  %1294 = add nsw i32 %1293, 1
  store i32 %1294, ptr %77, align 4, !tbaa !9
  br label %1245, !llvm.loop !22

1295:                                             ; preds = %1245
  br label %1296

1296:                                             ; preds = %1295, %1239
  br label %1297

1297:                                             ; preds = %1296
  %1298 = load i32, ptr %74, align 4, !tbaa !9
  %1299 = add nsw i32 %1298, 1
  store i32 %1299, ptr %74, align 4, !tbaa !9
  br label %1169, !llvm.loop !23

1300:                                             ; preds = %1169
  br label %1301

1301:                                             ; preds = %1300, %1140
  br label %1302

1302:                                             ; preds = %1301, %923
  %1303 = load ptr, ptr %20, align 8, !tbaa !5
  %1304 = load i32, ptr %1303, align 4, !tbaa !9
  store i32 %1304, ptr %43, align 4, !tbaa !9
  store i32 1, ptr %74, align 4, !tbaa !9
  br label %1305

1305:                                             ; preds = %1731, %1302
  %1306 = load i32, ptr %74, align 4, !tbaa !9
  %1307 = load i32, ptr %43, align 4, !tbaa !9
  %1308 = icmp sle i32 %1306, %1307
  br i1 %1308, label %1309, label %1734

1309:                                             ; preds = %1305
  %1310 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1310, ptr %44, align 4, !tbaa !9
  %1311 = load ptr, ptr %25, align 8, !tbaa !5
  %1312 = load i32, ptr %44, align 4, !tbaa !9
  %1313 = sext i32 %1312 to i64
  %1314 = getelementptr inbounds %struct.doublecomplex, ptr %1311, i64 %1313
  %1315 = getelementptr inbounds %struct.doublecomplex, ptr %1314, i32 0, i32 0
  %1316 = load double, ptr %1315, align 8, !tbaa !11
  store double %1316, ptr %47, align 8, !tbaa !15
  %1317 = load double, ptr %47, align 8, !tbaa !15
  %1318 = fcmp oge double %1317, 0.000000e+00
  br i1 %1318, label %1319, label %1321

1319:                                             ; preds = %1309
  %1320 = load double, ptr %47, align 8, !tbaa !15
  br label %1324

1321:                                             ; preds = %1309
  %1322 = load double, ptr %47, align 8, !tbaa !15
  %1323 = fneg double %1322
  br label %1324

1324:                                             ; preds = %1321, %1319
  %1325 = phi double [ %1320, %1319 ], [ %1323, %1321 ]
  store double %1325, ptr %67, align 8, !tbaa !15
  %1326 = load ptr, ptr %25, align 8, !tbaa !5
  %1327 = load i32, ptr %74, align 4, !tbaa !9
  %1328 = sext i32 %1327 to i64
  %1329 = getelementptr inbounds %struct.doublecomplex, ptr %1326, i64 %1328
  %1330 = call { double, double } @Cd(ptr noundef %1329)
  %1331 = extractvalue { double, double } %1330, 0
  %1332 = extractvalue { double, double } %1330, 1
  store double %1332, ptr %47, align 8, !tbaa !15
  %1333 = load double, ptr %47, align 8, !tbaa !15
  %1334 = fcmp oge double %1333, 0.000000e+00
  br i1 %1334, label %1335, label %1337

1335:                                             ; preds = %1324
  %1336 = load double, ptr %47, align 8, !tbaa !15
  br label %1340

1337:                                             ; preds = %1324
  %1338 = load double, ptr %47, align 8, !tbaa !15
  %1339 = fneg double %1338
  br label %1340

1340:                                             ; preds = %1337, %1335
  %1341 = phi double [ %1336, %1335 ], [ %1339, %1337 ]
  store double %1341, ptr %65, align 8, !tbaa !15
  %1342 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1342, ptr %44, align 4, !tbaa !9
  %1343 = load ptr, ptr %26, align 8, !tbaa !5
  %1344 = load i32, ptr %44, align 4, !tbaa !9
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds %struct.doublecomplex, ptr %1343, i64 %1345
  %1347 = getelementptr inbounds %struct.doublecomplex, ptr %1346, i32 0, i32 0
  %1348 = load double, ptr %1347, align 8, !tbaa !11
  store double %1348, ptr %47, align 8, !tbaa !15
  %1349 = load double, ptr %47, align 8, !tbaa !15
  %1350 = fcmp oge double %1349, 0.000000e+00
  br i1 %1350, label %1351, label %1353

1351:                                             ; preds = %1340
  %1352 = load double, ptr %47, align 8, !tbaa !15
  br label %1356

1353:                                             ; preds = %1340
  %1354 = load double, ptr %47, align 8, !tbaa !15
  %1355 = fneg double %1354
  br label %1356

1356:                                             ; preds = %1353, %1351
  %1357 = phi double [ %1352, %1351 ], [ %1355, %1353 ]
  store double %1357, ptr %53, align 8, !tbaa !15
  %1358 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1358, ptr %44, align 4, !tbaa !9
  %1359 = load double, ptr %54, align 8, !tbaa !15
  %1360 = load ptr, ptr %25, align 8, !tbaa !5
  %1361 = load i32, ptr %44, align 4, !tbaa !9
  %1362 = sext i32 %1361 to i64
  %1363 = getelementptr inbounds %struct.doublecomplex, ptr %1360, i64 %1362
  %1364 = getelementptr inbounds %struct.doublecomplex, ptr %1363, i32 0, i32 0
  %1365 = load double, ptr %1364, align 8, !tbaa !11
  %1366 = fmul double %1359, %1365
  store double %1366, ptr %79, align 8, !tbaa !15
  %1367 = load double, ptr %54, align 8, !tbaa !15
  %1368 = load ptr, ptr %25, align 8, !tbaa !5
  %1369 = load i32, ptr %74, align 4, !tbaa !9
  %1370 = sext i32 %1369 to i64
  %1371 = getelementptr inbounds %struct.doublecomplex, ptr %1368, i64 %1370
  %1372 = call { double, double } @Cd(ptr noundef %1371)
  %1373 = extractvalue { double, double } %1372, 0
  %1374 = extractvalue { double, double } %1372, 1
  %1375 = fmul double %1367, %1374
  store double %1375, ptr %78, align 8, !tbaa !15
  %1376 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1376, ptr %44, align 4, !tbaa !9
  %1377 = load double, ptr %55, align 8, !tbaa !15
  %1378 = load ptr, ptr %26, align 8, !tbaa !5
  %1379 = load i32, ptr %44, align 4, !tbaa !9
  %1380 = sext i32 %1379 to i64
  %1381 = getelementptr inbounds %struct.doublecomplex, ptr %1378, i64 %1380
  %1382 = getelementptr inbounds %struct.doublecomplex, ptr %1381, i32 0, i32 0
  %1383 = load double, ptr %1382, align 8, !tbaa !11
  %1384 = fmul double %1377, %1383
  store double %1384, ptr %68, align 8, !tbaa !15
  store i32 0, ptr %86, align 4, !tbaa !9
  store double 1.000000e+00, ptr %66, align 8, !tbaa !15
  %1385 = load double, ptr %80, align 8, !tbaa !15
  store double %1385, ptr %47, align 8, !tbaa !15
  %1386 = load double, ptr %97, align 8, !tbaa !15
  %1387 = load double, ptr %67, align 8, !tbaa !15
  %1388 = fmul double %1386, %1387
  store double %1388, ptr %48, align 8, !tbaa !15
  %1389 = load double, ptr %47, align 8, !tbaa !15
  %1390 = load double, ptr %48, align 8, !tbaa !15
  %1391 = fcmp oge double %1389, %1390
  br i1 %1391, label %1392, label %1394

1392:                                             ; preds = %1356
  %1393 = load double, ptr %47, align 8, !tbaa !15
  br label %1396

1394:                                             ; preds = %1356
  %1395 = load double, ptr %48, align 8, !tbaa !15
  br label %1396

1396:                                             ; preds = %1394, %1392
  %1397 = phi double [ %1393, %1392 ], [ %1395, %1394 ]
  store double %1397, ptr %47, align 8, !tbaa !15
  %1398 = load double, ptr %97, align 8, !tbaa !15
  %1399 = load double, ptr %53, align 8, !tbaa !15
  %1400 = fmul double %1398, %1399
  store double %1400, ptr %48, align 8, !tbaa !15
  %1401 = load double, ptr %78, align 8, !tbaa !15
  %1402 = fcmp oge double %1401, 0.000000e+00
  br i1 %1402, label %1403, label %1405

1403:                                             ; preds = %1396
  %1404 = load double, ptr %78, align 8, !tbaa !15
  br label %1408

1405:                                             ; preds = %1396
  %1406 = load double, ptr %78, align 8, !tbaa !15
  %1407 = fneg double %1406
  br label %1408

1408:                                             ; preds = %1405, %1403
  %1409 = phi double [ %1404, %1403 ], [ %1407, %1405 ]
  %1410 = load double, ptr %80, align 8, !tbaa !15
  %1411 = fcmp olt double %1409, %1410
  br i1 %1411, label %1412, label %1442

1412:                                             ; preds = %1408
  %1413 = load double, ptr %65, align 8, !tbaa !15
  %1414 = load double, ptr %47, align 8, !tbaa !15
  %1415 = load double, ptr %48, align 8, !tbaa !15
  %1416 = fcmp oge double %1414, %1415
  br i1 %1416, label %1417, label %1419

1417:                                             ; preds = %1412
  %1418 = load double, ptr %47, align 8, !tbaa !15
  br label %1421

1419:                                             ; preds = %1412
  %1420 = load double, ptr %48, align 8, !tbaa !15
  br label %1421

1421:                                             ; preds = %1419, %1417
  %1422 = phi double [ %1418, %1417 ], [ %1420, %1419 ]
  %1423 = fcmp oge double %1413, %1422
  br i1 %1423, label %1424, label %1442

1424:                                             ; preds = %1421
  store i32 1, ptr %86, align 4, !tbaa !9
  %1425 = load double, ptr %80, align 8, !tbaa !15
  store double %1425, ptr %47, align 8, !tbaa !15
  %1426 = load double, ptr %62, align 8, !tbaa !15
  %1427 = load double, ptr %65, align 8, !tbaa !15
  %1428 = fmul double %1426, %1427
  store double %1428, ptr %48, align 8, !tbaa !15
  %1429 = load double, ptr %80, align 8, !tbaa !15
  %1430 = load double, ptr %61, align 8, !tbaa !15
  %1431 = fdiv double %1429, %1430
  %1432 = load double, ptr %47, align 8, !tbaa !15
  %1433 = load double, ptr %48, align 8, !tbaa !15
  %1434 = fcmp oge double %1432, %1433
  br i1 %1434, label %1435, label %1437

1435:                                             ; preds = %1424
  %1436 = load double, ptr %47, align 8, !tbaa !15
  br label %1439

1437:                                             ; preds = %1424
  %1438 = load double, ptr %48, align 8, !tbaa !15
  br label %1439

1439:                                             ; preds = %1437, %1435
  %1440 = phi double [ %1436, %1435 ], [ %1438, %1437 ]
  %1441 = fdiv double %1431, %1440
  store double %1441, ptr %66, align 8, !tbaa !15
  br label %1442

1442:                                             ; preds = %1439, %1421, %1408
  %1443 = load double, ptr %80, align 8, !tbaa !15
  store double %1443, ptr %47, align 8, !tbaa !15
  %1444 = load double, ptr %97, align 8, !tbaa !15
  %1445 = load double, ptr %65, align 8, !tbaa !15
  %1446 = fmul double %1444, %1445
  store double %1446, ptr %48, align 8, !tbaa !15
  %1447 = load double, ptr %47, align 8, !tbaa !15
  %1448 = load double, ptr %48, align 8, !tbaa !15
  %1449 = fcmp oge double %1447, %1448
  br i1 %1449, label %1450, label %1452

1450:                                             ; preds = %1442
  %1451 = load double, ptr %47, align 8, !tbaa !15
  br label %1454

1452:                                             ; preds = %1442
  %1453 = load double, ptr %48, align 8, !tbaa !15
  br label %1454

1454:                                             ; preds = %1452, %1450
  %1455 = phi double [ %1451, %1450 ], [ %1453, %1452 ]
  store double %1455, ptr %47, align 8, !tbaa !15
  %1456 = load double, ptr %97, align 8, !tbaa !15
  %1457 = load double, ptr %53, align 8, !tbaa !15
  %1458 = fmul double %1456, %1457
  store double %1458, ptr %48, align 8, !tbaa !15
  %1459 = load double, ptr %79, align 8, !tbaa !15
  %1460 = fcmp oge double %1459, 0.000000e+00
  br i1 %1460, label %1461, label %1463

1461:                                             ; preds = %1454
  %1462 = load double, ptr %79, align 8, !tbaa !15
  br label %1466

1463:                                             ; preds = %1454
  %1464 = load double, ptr %79, align 8, !tbaa !15
  %1465 = fneg double %1464
  br label %1466

1466:                                             ; preds = %1463, %1461
  %1467 = phi double [ %1462, %1461 ], [ %1465, %1463 ]
  %1468 = load double, ptr %80, align 8, !tbaa !15
  %1469 = fcmp olt double %1467, %1468
  br i1 %1469, label %1470, label %1510

1470:                                             ; preds = %1466
  %1471 = load double, ptr %67, align 8, !tbaa !15
  %1472 = load double, ptr %47, align 8, !tbaa !15
  %1473 = load double, ptr %48, align 8, !tbaa !15
  %1474 = fcmp oge double %1472, %1473
  br i1 %1474, label %1475, label %1477

1475:                                             ; preds = %1470
  %1476 = load double, ptr %47, align 8, !tbaa !15
  br label %1479

1477:                                             ; preds = %1470
  %1478 = load double, ptr %48, align 8, !tbaa !15
  br label %1479

1479:                                             ; preds = %1477, %1475
  %1480 = phi double [ %1476, %1475 ], [ %1478, %1477 ]
  %1481 = fcmp oge double %1471, %1480
  br i1 %1481, label %1482, label %1510

1482:                                             ; preds = %1479
  store i32 1, ptr %86, align 4, !tbaa !9
  %1483 = load double, ptr %80, align 8, !tbaa !15
  store double %1483, ptr %49, align 8, !tbaa !15
  %1484 = load double, ptr %62, align 8, !tbaa !15
  %1485 = load double, ptr %67, align 8, !tbaa !15
  %1486 = fmul double %1484, %1485
  store double %1486, ptr %50, align 8, !tbaa !15
  %1487 = load double, ptr %66, align 8, !tbaa !15
  store double %1487, ptr %47, align 8, !tbaa !15
  %1488 = load double, ptr %80, align 8, !tbaa !15
  %1489 = load double, ptr %61, align 8, !tbaa !15
  %1490 = fdiv double %1488, %1489
  %1491 = load double, ptr %49, align 8, !tbaa !15
  %1492 = load double, ptr %50, align 8, !tbaa !15
  %1493 = fcmp oge double %1491, %1492
  br i1 %1493, label %1494, label %1496

1494:                                             ; preds = %1482
  %1495 = load double, ptr %49, align 8, !tbaa !15
  br label %1498

1496:                                             ; preds = %1482
  %1497 = load double, ptr %50, align 8, !tbaa !15
  br label %1498

1498:                                             ; preds = %1496, %1494
  %1499 = phi double [ %1495, %1494 ], [ %1497, %1496 ]
  %1500 = fdiv double %1490, %1499
  store double %1500, ptr %48, align 8, !tbaa !15
  %1501 = load double, ptr %47, align 8, !tbaa !15
  %1502 = load double, ptr %48, align 8, !tbaa !15
  %1503 = fcmp oge double %1501, %1502
  br i1 %1503, label %1504, label %1506

1504:                                             ; preds = %1498
  %1505 = load double, ptr %47, align 8, !tbaa !15
  br label %1508

1506:                                             ; preds = %1498
  %1507 = load double, ptr %48, align 8, !tbaa !15
  br label %1508

1508:                                             ; preds = %1506, %1504
  %1509 = phi double [ %1505, %1504 ], [ %1507, %1506 ]
  store double %1509, ptr %66, align 8, !tbaa !15
  br label %1510

1510:                                             ; preds = %1508, %1479, %1466
  %1511 = load double, ptr %80, align 8, !tbaa !15
  store double %1511, ptr %47, align 8, !tbaa !15
  %1512 = load double, ptr %97, align 8, !tbaa !15
  %1513 = load double, ptr %67, align 8, !tbaa !15
  %1514 = fmul double %1512, %1513
  store double %1514, ptr %48, align 8, !tbaa !15
  %1515 = load double, ptr %47, align 8, !tbaa !15
  %1516 = load double, ptr %48, align 8, !tbaa !15
  %1517 = fcmp oge double %1515, %1516
  br i1 %1517, label %1518, label %1520

1518:                                             ; preds = %1510
  %1519 = load double, ptr %47, align 8, !tbaa !15
  br label %1522

1520:                                             ; preds = %1510
  %1521 = load double, ptr %48, align 8, !tbaa !15
  br label %1522

1522:                                             ; preds = %1520, %1518
  %1523 = phi double [ %1519, %1518 ], [ %1521, %1520 ]
  store double %1523, ptr %47, align 8, !tbaa !15
  %1524 = load double, ptr %97, align 8, !tbaa !15
  %1525 = load double, ptr %65, align 8, !tbaa !15
  %1526 = fmul double %1524, %1525
  store double %1526, ptr %48, align 8, !tbaa !15
  %1527 = load double, ptr %68, align 8, !tbaa !15
  %1528 = fcmp oge double %1527, 0.000000e+00
  br i1 %1528, label %1529, label %1531

1529:                                             ; preds = %1522
  %1530 = load double, ptr %68, align 8, !tbaa !15
  br label %1534

1531:                                             ; preds = %1522
  %1532 = load double, ptr %68, align 8, !tbaa !15
  %1533 = fneg double %1532
  br label %1534

1534:                                             ; preds = %1531, %1529
  %1535 = phi double [ %1530, %1529 ], [ %1533, %1531 ]
  %1536 = load double, ptr %80, align 8, !tbaa !15
  %1537 = fcmp olt double %1535, %1536
  br i1 %1537, label %1538, label %1578

1538:                                             ; preds = %1534
  %1539 = load double, ptr %53, align 8, !tbaa !15
  %1540 = load double, ptr %47, align 8, !tbaa !15
  %1541 = load double, ptr %48, align 8, !tbaa !15
  %1542 = fcmp oge double %1540, %1541
  br i1 %1542, label %1543, label %1545

1543:                                             ; preds = %1538
  %1544 = load double, ptr %47, align 8, !tbaa !15
  br label %1547

1545:                                             ; preds = %1538
  %1546 = load double, ptr %48, align 8, !tbaa !15
  br label %1547

1547:                                             ; preds = %1545, %1543
  %1548 = phi double [ %1544, %1543 ], [ %1546, %1545 ]
  %1549 = fcmp oge double %1539, %1548
  br i1 %1549, label %1550, label %1578

1550:                                             ; preds = %1547
  store i32 1, ptr %86, align 4, !tbaa !9
  %1551 = load double, ptr %80, align 8, !tbaa !15
  store double %1551, ptr %49, align 8, !tbaa !15
  %1552 = load double, ptr %64, align 8, !tbaa !15
  %1553 = load double, ptr %53, align 8, !tbaa !15
  %1554 = fmul double %1552, %1553
  store double %1554, ptr %50, align 8, !tbaa !15
  %1555 = load double, ptr %66, align 8, !tbaa !15
  store double %1555, ptr %47, align 8, !tbaa !15
  %1556 = load double, ptr %80, align 8, !tbaa !15
  %1557 = load double, ptr %63, align 8, !tbaa !15
  %1558 = fdiv double %1556, %1557
  %1559 = load double, ptr %49, align 8, !tbaa !15
  %1560 = load double, ptr %50, align 8, !tbaa !15
  %1561 = fcmp oge double %1559, %1560
  br i1 %1561, label %1562, label %1564

1562:                                             ; preds = %1550
  %1563 = load double, ptr %49, align 8, !tbaa !15
  br label %1566

1564:                                             ; preds = %1550
  %1565 = load double, ptr %50, align 8, !tbaa !15
  br label %1566

1566:                                             ; preds = %1564, %1562
  %1567 = phi double [ %1563, %1562 ], [ %1565, %1564 ]
  %1568 = fdiv double %1558, %1567
  store double %1568, ptr %48, align 8, !tbaa !15
  %1569 = load double, ptr %47, align 8, !tbaa !15
  %1570 = load double, ptr %48, align 8, !tbaa !15
  %1571 = fcmp oge double %1569, %1570
  br i1 %1571, label %1572, label %1574

1572:                                             ; preds = %1566
  %1573 = load double, ptr %47, align 8, !tbaa !15
  br label %1576

1574:                                             ; preds = %1566
  %1575 = load double, ptr %48, align 8, !tbaa !15
  br label %1576

1576:                                             ; preds = %1574, %1572
  %1577 = phi double [ %1573, %1572 ], [ %1575, %1574 ]
  store double %1577, ptr %66, align 8, !tbaa !15
  br label %1578

1578:                                             ; preds = %1576, %1547, %1534
  %1579 = load i32, ptr %86, align 4, !tbaa !9
  %1580 = icmp ne i32 %1579, 0
  br i1 %1580, label %1581, label %1642

1581:                                             ; preds = %1578
  %1582 = load double, ptr %79, align 8, !tbaa !15
  %1583 = fcmp oge double %1582, 0.000000e+00
  br i1 %1583, label %1584, label %1586

1584:                                             ; preds = %1581
  %1585 = load double, ptr %79, align 8, !tbaa !15
  br label %1589

1586:                                             ; preds = %1581
  %1587 = load double, ptr %79, align 8, !tbaa !15
  %1588 = fneg double %1587
  br label %1589

1589:                                             ; preds = %1586, %1584
  %1590 = phi double [ %1585, %1584 ], [ %1588, %1586 ]
  store double %1590, ptr %47, align 8, !tbaa !15
  %1591 = load double, ptr %78, align 8, !tbaa !15
  %1592 = fcmp oge double %1591, 0.000000e+00
  br i1 %1592, label %1593, label %1595

1593:                                             ; preds = %1589
  %1594 = load double, ptr %78, align 8, !tbaa !15
  br label %1598

1595:                                             ; preds = %1589
  %1596 = load double, ptr %78, align 8, !tbaa !15
  %1597 = fneg double %1596
  br label %1598

1598:                                             ; preds = %1595, %1593
  %1599 = phi double [ %1594, %1593 ], [ %1597, %1595 ]
  store double %1599, ptr %48, align 8, !tbaa !15
  %1600 = load double, ptr %47, align 8, !tbaa !15
  %1601 = load double, ptr %48, align 8, !tbaa !15
  %1602 = fcmp oge double %1600, %1601
  br i1 %1602, label %1603, label %1605

1603:                                             ; preds = %1598
  %1604 = load double, ptr %47, align 8, !tbaa !15
  br label %1607

1605:                                             ; preds = %1598
  %1606 = load double, ptr %48, align 8, !tbaa !15
  br label %1607

1607:                                             ; preds = %1605, %1603
  %1608 = phi double [ %1604, %1603 ], [ %1606, %1605 ]
  store double %1608, ptr %47, align 8, !tbaa !15
  %1609 = load double, ptr %68, align 8, !tbaa !15
  %1610 = fcmp oge double %1609, 0.000000e+00
  br i1 %1610, label %1611, label %1613

1611:                                             ; preds = %1607
  %1612 = load double, ptr %68, align 8, !tbaa !15
  br label %1616

1613:                                             ; preds = %1607
  %1614 = load double, ptr %68, align 8, !tbaa !15
  %1615 = fneg double %1614
  br label %1616

1616:                                             ; preds = %1613, %1611
  %1617 = phi double [ %1612, %1611 ], [ %1615, %1613 ]
  store double %1617, ptr %48, align 8, !tbaa !15
  %1618 = load double, ptr %66, align 8, !tbaa !15
  %1619 = load double, ptr %80, align 8, !tbaa !15
  %1620 = fmul double %1618, %1619
  %1621 = load double, ptr %47, align 8, !tbaa !15
  %1622 = load double, ptr %48, align 8, !tbaa !15
  %1623 = fcmp oge double %1621, %1622
  br i1 %1623, label %1624, label %1626

1624:                                             ; preds = %1616
  %1625 = load double, ptr %47, align 8, !tbaa !15
  br label %1628

1626:                                             ; preds = %1616
  %1627 = load double, ptr %48, align 8, !tbaa !15
  br label %1628

1628:                                             ; preds = %1626, %1624
  %1629 = phi double [ %1625, %1624 ], [ %1627, %1626 ]
  %1630 = fmul double %1620, %1629
  store double %1630, ptr %57, align 8, !tbaa !15
  %1631 = load double, ptr %57, align 8, !tbaa !15
  %1632 = fcmp ogt double %1631, 1.000000e+00
  br i1 %1632, label %1633, label %1637

1633:                                             ; preds = %1628
  %1634 = load double, ptr %57, align 8, !tbaa !15
  %1635 = load double, ptr %66, align 8, !tbaa !15
  %1636 = fdiv double %1635, %1634
  store double %1636, ptr %66, align 8, !tbaa !15
  br label %1637

1637:                                             ; preds = %1633, %1628
  %1638 = load double, ptr %66, align 8, !tbaa !15
  %1639 = fcmp olt double %1638, 1.000000e+00
  br i1 %1639, label %1640, label %1641

1640:                                             ; preds = %1637
  store i32 0, ptr %86, align 4, !tbaa !9
  br label %1641

1641:                                             ; preds = %1640, %1637
  br label %1642

1642:                                             ; preds = %1641, %1578
  %1643 = load i32, ptr %86, align 4, !tbaa !9
  %1644 = icmp ne i32 %1643, 0
  br i1 %1644, label %1645, label %1699

1645:                                             ; preds = %1642
  %1646 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1646, ptr %44, align 4, !tbaa !9
  %1647 = load double, ptr %66, align 8, !tbaa !15
  %1648 = load ptr, ptr %25, align 8, !tbaa !5
  %1649 = load i32, ptr %44, align 4, !tbaa !9
  %1650 = sext i32 %1649 to i64
  %1651 = getelementptr inbounds %struct.doublecomplex, ptr %1648, i64 %1650
  %1652 = getelementptr inbounds %struct.doublecomplex, ptr %1651, i32 0, i32 0
  %1653 = load double, ptr %1652, align 8, !tbaa !11
  %1654 = fmul double %1647, %1653
  %1655 = load double, ptr %54, align 8, !tbaa !15
  %1656 = fmul double %1654, %1655
  store double %1656, ptr %79, align 8, !tbaa !15
  %1657 = load double, ptr %66, align 8, !tbaa !15
  %1658 = load ptr, ptr %25, align 8, !tbaa !5
  %1659 = load i32, ptr %74, align 4, !tbaa !9
  %1660 = sext i32 %1659 to i64
  %1661 = getelementptr inbounds %struct.doublecomplex, ptr %1658, i64 %1660
  %1662 = call { double, double } @Cd(ptr noundef %1661)
  %1663 = extractvalue { double, double } %1662, 0
  %1664 = extractvalue { double, double } %1662, 1
  %1665 = fmul double %1657, %1664
  %1666 = load double, ptr %54, align 8, !tbaa !15
  %1667 = fmul double %1665, %1666
  store double %1667, ptr %78, align 8, !tbaa !15
  %1668 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1668, ptr %44, align 4, !tbaa !9
  %1669 = load double, ptr %66, align 8, !tbaa !15
  %1670 = load ptr, ptr %26, align 8, !tbaa !5
  %1671 = load i32, ptr %44, align 4, !tbaa !9
  %1672 = sext i32 %1671 to i64
  %1673 = getelementptr inbounds %struct.doublecomplex, ptr %1670, i64 %1672
  %1674 = getelementptr inbounds %struct.doublecomplex, ptr %1673, i32 0, i32 0
  %1675 = load double, ptr %1674, align 8, !tbaa !11
  %1676 = fmul double %1669, %1675
  %1677 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  store double %1676, ptr %1677, align 8, !tbaa !11
  %1678 = load double, ptr %66, align 8, !tbaa !15
  %1679 = load ptr, ptr %26, align 8, !tbaa !5
  %1680 = load i32, ptr %44, align 4, !tbaa !9
  %1681 = sext i32 %1680 to i64
  %1682 = getelementptr inbounds %struct.doublecomplex, ptr %1679, i64 %1681
  %1683 = getelementptr inbounds %struct.doublecomplex, ptr %1682, i32 0, i32 1
  %1684 = load double, ptr %1683, align 8, !tbaa !14
  %1685 = fmul double %1678, %1684
  %1686 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  store double %1685, ptr %1686, align 8, !tbaa !14
  %1687 = load double, ptr %55, align 8, !tbaa !15
  %1688 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 0
  %1689 = load double, ptr %1688, align 8, !tbaa !11
  %1690 = fmul double %1687, %1689
  %1691 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1690, ptr %1691, align 8, !tbaa !11
  %1692 = load double, ptr %55, align 8, !tbaa !15
  %1693 = getelementptr inbounds %struct.doublecomplex, ptr %52, i32 0, i32 1
  %1694 = load double, ptr %1693, align 8, !tbaa !14
  %1695 = fmul double %1692, %1694
  %1696 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1695, ptr %1696, align 8, !tbaa !14
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1698 = load double, ptr %1697, align 8, !tbaa !11
  store double %1698, ptr %68, align 8, !tbaa !15
  br label %1699

1699:                                             ; preds = %1645, %1642
  %1700 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1700, ptr %44, align 4, !tbaa !9
  %1701 = load double, ptr %79, align 8, !tbaa !15
  %1702 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  store double %1701, ptr %1702, align 8, !tbaa !11
  %1703 = load double, ptr %78, align 8, !tbaa !15
  %1704 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  store double %1703, ptr %1704, align 8, !tbaa !14
  %1705 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 0
  %1706 = load double, ptr %1705, align 8, !tbaa !11
  %1707 = load ptr, ptr %25, align 8, !tbaa !5
  %1708 = load i32, ptr %44, align 4, !tbaa !9
  %1709 = sext i32 %1708 to i64
  %1710 = getelementptr inbounds %struct.doublecomplex, ptr %1707, i64 %1709
  %1711 = getelementptr inbounds %struct.doublecomplex, ptr %1710, i32 0, i32 0
  store double %1706, ptr %1711, align 8, !tbaa !11
  %1712 = getelementptr inbounds %struct.doublecomplex, ptr %51, i32 0, i32 1
  %1713 = load double, ptr %1712, align 8, !tbaa !14
  %1714 = load ptr, ptr %25, align 8, !tbaa !5
  %1715 = load i32, ptr %44, align 4, !tbaa !9
  %1716 = sext i32 %1715 to i64
  %1717 = getelementptr inbounds %struct.doublecomplex, ptr %1714, i64 %1716
  %1718 = getelementptr inbounds %struct.doublecomplex, ptr %1717, i32 0, i32 1
  store double %1713, ptr %1718, align 8, !tbaa !14
  %1719 = load i32, ptr %74, align 4, !tbaa !9
  store i32 %1719, ptr %44, align 4, !tbaa !9
  %1720 = load double, ptr %68, align 8, !tbaa !15
  %1721 = load ptr, ptr %26, align 8, !tbaa !5
  %1722 = load i32, ptr %44, align 4, !tbaa !9
  %1723 = sext i32 %1722 to i64
  %1724 = getelementptr inbounds %struct.doublecomplex, ptr %1721, i64 %1723
  %1725 = getelementptr inbounds %struct.doublecomplex, ptr %1724, i32 0, i32 0
  store double %1720, ptr %1725, align 8, !tbaa !11
  %1726 = load ptr, ptr %26, align 8, !tbaa !5
  %1727 = load i32, ptr %44, align 4, !tbaa !9
  %1728 = sext i32 %1727 to i64
  %1729 = getelementptr inbounds %struct.doublecomplex, ptr %1726, i64 %1728
  %1730 = getelementptr inbounds %struct.doublecomplex, ptr %1729, i32 0, i32 1
  store double 0.000000e+00, ptr %1730, align 8, !tbaa !14
  br label %1731

1731:                                             ; preds = %1699
  %1732 = load i32, ptr %74, align 4, !tbaa !9
  %1733 = add nsw i32 %1732, 1
  store i32 %1733, ptr %74, align 4, !tbaa !9
  br label %1305, !llvm.loop !24

1734:                                             ; preds = %1305
  br label %1735

1735:                                             ; preds = %1734, %1161, %1000, %974, %922, %806, %730, %641, %577, %504
  %1736 = load i32, ptr %93, align 4, !tbaa !9
  %1737 = sitofp i32 %1736 to double
  %1738 = load ptr, ptr %31, align 8, !tbaa !5
  %1739 = getelementptr inbounds %struct.doublecomplex, ptr %1738, i64 1
  %1740 = getelementptr inbounds %struct.doublecomplex, ptr %1739, i32 0, i32 0
  store double %1737, ptr %1740, align 8, !tbaa !11
  %1741 = load ptr, ptr %31, align 8, !tbaa !5
  %1742 = getelementptr inbounds %struct.doublecomplex, ptr %1741, i64 1
  %1743 = getelementptr inbounds %struct.doublecomplex, ptr %1742, i32 0, i32 1
  store double 0.000000e+00, ptr %1743, align 8, !tbaa !14
  store i32 1, ptr %99, align 4
  br label %1744

1744:                                             ; preds = %1735, %465, %421, %373, %367, %359
  call void @llvm.lifetime.end.p0(i64 4, ptr %98) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %94) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %93) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %91) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %90) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %88) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %87) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #4
  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 i32 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

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

declare double @dlamch_(ptr noundef) #2

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

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

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

declare void @zunmqr_(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

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

declare void @zgghrd_(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

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

declare void @ztgevc_(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

declare void @zggbak_(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: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #3

; 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 = { 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 #4 = { nounwind }

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

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


; 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
@c__1 = external hidden global i32, align 4
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [2 x i8], align 1
@.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 [2 x i8], align 1
@c_b29 = external hidden global double, align 8
@.str.12 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [5 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b2 = external hidden global %struct.doublecomplex, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @zgegv_(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 nocapture noundef readonly %14, ptr noundef %15, ptr nocapture noundef %16) local_unnamed_addr #0 {
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca double, align 8
  %21 = alloca double, align 8
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca [1 x i8], align 1
  %27 = alloca [1 x i32], align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #5
  %30 = load i32, ptr %4, align 4, !tbaa !5
  %narrow = xor i32 %30, -1
  %31 = sext i32 %narrow to i64
  %32 = getelementptr inbounds %struct.doublecomplex, ptr %3, i64 %31
  %33 = load i32, ptr %6, align 4, !tbaa !5
  %narrow649 = xor i32 %33, -1
  %34 = sext i32 %narrow649 to i64
  %35 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %34
  %36 = getelementptr inbounds i8, ptr %7, i64 -16
  %37 = getelementptr inbounds i8, ptr %8, i64 -16
  %38 = load i32, ptr %10, align 4, !tbaa !5
  %narrow660 = xor i32 %38, -1
  %39 = sext i32 %narrow660 to i64
  %40 = getelementptr inbounds %struct.doublecomplex, ptr %9, i64 %39
  %41 = load i32, ptr %12, align 4, !tbaa !5
  %narrow661 = xor i32 %41, -1
  %42 = sext i32 %narrow661 to i64
  %43 = getelementptr inbounds %struct.doublecomplex, ptr %11, i64 %42
  %44 = getelementptr inbounds i8, ptr %13, i64 -16
  %45 = getelementptr inbounds i8, ptr %15, i64 -8
  %46 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %.not = icmp eq i32 %46, 0
  br i1 %.not, label %47, label %49

47:                                               ; preds = %17
  %48 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not641 = icmp eq i32 %48, 0
  %not..not641 = xor i1 %.not641, true
  br label %49

49:                                               ; preds = %47, %17
  %50 = phi i1 [ false, %17 ], [ %not..not641, %47 ]
  %51 = phi i1 [ false, %17 ], [ %.not641, %47 ]
  %52 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str) #5
  %.not642 = icmp eq i32 %52, 0
  br i1 %.not642, label %53, label %55

53:                                               ; preds = %49
  %54 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #5
  %.not643 = icmp eq i32 %54, 0
  %not..not643 = xor i1 %.not643, true
  br label %55

55:                                               ; preds = %53, %49
  %56 = phi i1 [ false, %49 ], [ %not..not643, %53 ]
  %57 = phi i1 [ false, %49 ], [ %.not643, %53 ]
  %58 = or i1 %50, %56
  %59 = load i32, ptr %2, align 4, !tbaa !5
  %60 = shl i32 %59, 1
  %61 = tail call i32 @llvm.smax.i32(i32 %60, i32 1)
  %62 = uitofp nneg i32 %61 to double
  store double %62, ptr %13, align 8, !tbaa !9
  %63 = getelementptr inbounds i8, ptr %13, i64 8
  store double 0.000000e+00, ptr %63, align 8, !tbaa !12
  %64 = load i32, ptr %14, align 4, !tbaa !5
  %65 = icmp eq i32 %64, -1
  store i32 0, ptr %16, align 4, !tbaa !5
  %brmerge = select i1 %51, i1 true, i1 %57
  %.mux = select i1 %51, i32 -1, i32 -2
  br i1 %brmerge, label %.thread686.sink.split, label %66

66:                                               ; preds = %55
  %67 = load i32, ptr %2, align 4, !tbaa !5
  %68 = icmp slt i32 %67, 0
  br i1 %68, label %.thread686.sink.split, label %69

69:                                               ; preds = %66
  %70 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %67, i32 1)
  %71 = icmp slt i32 %70, %spec.select
  br i1 %71, label %.thread686.sink.split, label %72

72:                                               ; preds = %69
  %73 = load i32, ptr %6, align 4, !tbaa !5
  %74 = icmp slt i32 %73, %spec.select
  br i1 %74, label %.thread686.sink.split, label %75

75:                                               ; preds = %72
  %76 = load i32, ptr %10, align 4, !tbaa !5
  %77 = icmp slt i32 %76, 1
  %78 = icmp ult i32 %76, %67
  %or.cond731 = and i1 %50, %78
  %or.cond733 = select i1 %77, i1 true, i1 %or.cond731
  br i1 %or.cond733, label %.thread686.sink.split, label %79

79:                                               ; preds = %75
  %80 = load i32, ptr %12, align 4, !tbaa !5
  %81 = icmp slt i32 %80, 1
  %82 = icmp ult i32 %80, %67
  %or.cond732 = and i1 %56, %82
  %or.cond734 = select i1 %81, i1 true, i1 %or.cond732
  br i1 %or.cond734, label %.thread686.sink.split, label %83

83:                                               ; preds = %79
  %84 = load i32, ptr %14, align 4, !tbaa !5
  %85 = icmp sge i32 %84, %61
  %or.cond = select i1 %85, i1 true, i1 %65
  br i1 %or.cond, label %.thread, label %.thread686.sink.split

.thread:                                          ; preds = %83
  %86 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %87 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %88 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #5
  %89 = tail call i32 @llvm.smax.i32(i32 %86, i32 %87)
  %90 = tail call i32 @llvm.smax.i32(i32 %89, i32 %88)
  %91 = load i32, ptr %2, align 4, !tbaa !5
  %92 = shl i32 %91, 1
  store i32 %92, ptr %18, align 4, !tbaa !5
  %93 = add nsw i32 %90, 1
  %94 = mul nsw i32 %91, %93
  store i32 %94, ptr %19, align 4, !tbaa !5
  %95 = tail call i32 @llvm.smax.i32(i32 %92, i32 %94)
  %96 = sitofp i32 %95 to double
  store double %96, ptr %13, align 8, !tbaa !9
  store double 0.000000e+00, ptr %63, align 8, !tbaa !12
  %.pr685.pr = load i32, ptr %16, align 4, !tbaa !5
  %.not647 = icmp eq i32 %.pr685.pr, 0
  br i1 %.not647, label %100, label %.thread686

.thread686.sink.split:                            ; preds = %55, %83, %79, %75, %72, %69, %66
  %.sink = phi i32 [ %.mux, %55 ], [ -3, %66 ], [ -5, %69 ], [ -7, %72 ], [ -11, %75 ], [ -13, %79 ], [ -15, %83 ]
  store i32 %.sink, ptr %16, align 4, !tbaa !5
  br label %.thread686

.thread686:                                       ; preds = %.thread686.sink.split, %.thread
  %97 = phi i32 [ %.pr685.pr, %.thread ], [ %.sink, %.thread686.sink.split ]
  %98 = sub nsw i32 0, %97
  store i32 %98, ptr %18, align 4, !tbaa !5
  %99 = call i32 @xerbla_(ptr noundef nonnull @.str.6, ptr noundef nonnull %18, i32 noundef 6) #5
  br label %464

100:                                              ; preds = %.thread
  %101 = icmp eq i32 %91, 0
  %or.cond802 = select i1 %65, i1 true, i1 %101
  br i1 %or.cond802, label %464, label %102

102:                                              ; preds = %100
  %103 = tail call double @dlamch_(ptr noundef nonnull @.str.7) #5
  %104 = tail call double @dlamch_(ptr noundef nonnull @.str.8) #5
  %105 = fmul double %103, %104
  %106 = tail call double @dlamch_(ptr noundef nonnull @.str.9) #5
  %107 = fadd double %106, %106
  %108 = fdiv double 1.000000e+00, %107
  %109 = tail call double @zlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %15) #5
  store double %109, ptr %20, align 8, !tbaa !13
  %110 = fcmp olt double %109, 1.000000e+00
  br i1 %110, label %111, label %115

111:                                              ; preds = %102
  %112 = fmul double %109, %108
  %113 = fcmp olt double %112, 1.000000e+00
  br i1 %113, label %114, label %115

114:                                              ; preds = %111
  br label %115

115:                                              ; preds = %111, %114, %102
  %.0615 = phi double [ %107, %114 ], [ %109, %111 ], [ %109, %102 ]
  %.0614 = phi double [ %112, %114 ], [ 1.000000e+00, %111 ], [ 1.000000e+00, %102 ]
  %116 = fcmp ogt double %109, 0.000000e+00
  br i1 %116, label %117, label %122

117:                                              ; preds = %115
  call void @zlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %20, ptr noundef nonnull @c_b29, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %22) #5
  %118 = load i32, ptr %22, align 4, !tbaa !5
  %.not648 = icmp eq i32 %118, 0
  br i1 %.not648, label %122, label %119

119:                                              ; preds = %117
  %120 = load i32, ptr %2, align 4, !tbaa !5
  %121 = add nsw i32 %120, 10
  store i32 %121, ptr %16, align 4, !tbaa !5
  br label %464

122:                                              ; preds = %117, %115
  %123 = call double @zlange_(ptr noundef nonnull @.str.10, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %15) #5
  store double %123, ptr %21, align 8, !tbaa !13
  %124 = fcmp olt double %123, 1.000000e+00
  br i1 %124, label %125, label %129

125:                                              ; preds = %122
  %126 = fmul double %108, %123
  %127 = fcmp olt double %126, 1.000000e+00
  br i1 %127, label %128, label %129

128:                                              ; preds = %125
  br label %129

129:                                              ; preds = %125, %128, %122
  %.0613 = phi double [ %107, %128 ], [ %123, %125 ], [ %123, %122 ]
  %.0612 = phi double [ %126, %128 ], [ 1.000000e+00, %125 ], [ 1.000000e+00, %122 ]
  %130 = fcmp ogt double %123, 0.000000e+00
  br i1 %130, label %131, label %136

131:                                              ; preds = %129
  call void @zlascl_(ptr noundef nonnull @.str.11, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull %21, ptr noundef nonnull @c_b29, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %22) #5
  %132 = load i32, ptr %22, align 4, !tbaa !5
  %.not650 = icmp eq i32 %132, 0
  br i1 %.not650, label %136, label %133

133:                                              ; preds = %131
  %134 = load i32, ptr %2, align 4, !tbaa !5
  %135 = add nsw i32 %134, 10
  store i32 %135, ptr %16, align 4, !tbaa !5
  br label %464

136:                                              ; preds = %131, %129
  %137 = load i32, ptr %2, align 4, !tbaa !5
  %138 = add nsw i32 %137, 1
  %139 = add nsw i32 %138, %137
  %140 = sext i32 %138 to i64
  %141 = getelementptr inbounds double, ptr %45, i64 %140
  %142 = sext i32 %139 to i64
  %143 = getelementptr inbounds double, ptr %45, i64 %142
  call void @zggbal_(ptr noundef nonnull @.str.12, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %15, ptr noundef nonnull %141, ptr noundef nonnull %143, ptr noundef nonnull %22) #5
  %144 = load i32, ptr %22, align 4, !tbaa !5
  %.not651 = icmp eq i32 %144, 0
  br i1 %.not651, label %148, label %145

145:                                              ; preds = %136
  %146 = load i32, ptr %2, align 4, !tbaa !5
  %147 = add nsw i32 %146, 1
  br label %.loopexit.sink.split

148:                                              ; preds = %136
  %149 = load i32, ptr %28, align 4, !tbaa !5
  %150 = add nsw i32 %149, 1
  %151 = load i32, ptr %29, align 4, !tbaa !5
  %152 = sub i32 %150, %151
  store i32 %152, ptr %24, align 4, !tbaa !5
  br i1 %58, label %153, label %156

153:                                              ; preds = %148
  %154 = load i32, ptr %2, align 4, !tbaa !5
  %reass.sub = sub i32 %154, %151
  %155 = add i32 %reass.sub, 1
  br label %156

156:                                              ; preds = %148, %153
  %storemerge = phi i32 [ %155, %153 ], [ %152, %148 ]
  store i32 %storemerge, ptr %23, align 4, !tbaa !5
  %157 = load i32, ptr %14, align 4, !tbaa !5
  %158 = sub i32 %157, %152
  store i32 %158, ptr %18, align 4, !tbaa !5
  %159 = add i32 %33, 1
  %160 = mul i32 %151, %159
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %161
  %163 = sext i32 %152 to i64
  %164 = getelementptr %struct.doublecomplex, ptr %44, i64 %163
  %165 = getelementptr i8, ptr %164, i64 16
  call void @zgeqrf_(ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef %162, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef nonnull %165, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  %166 = load i32, ptr %22, align 4, !tbaa !5
  %167 = icmp sgt i32 %166, -1
  br i1 %167, label %168, label %.thread688

168:                                              ; preds = %156
  %169 = load double, ptr %165, align 8, !tbaa !9
  %170 = fptosi double %169 to i32
  %171 = add i32 %152, %170
  store i32 %171, ptr %19, align 4, !tbaa !5
  %172 = call i32 @llvm.smax.i32(i32 %61, i32 %171)
  %.not653 = icmp eq i32 %166, 0
  br i1 %.not653, label %175, label %.thread688

.thread688:                                       ; preds = %156, %168
  %.0691 = phi i32 [ %172, %168 ], [ %61, %156 ]
  %173 = load i32, ptr %2, align 4, !tbaa !5
  %174 = add nsw i32 %173, 2
  br label %.loopexit.sink.split

175:                                              ; preds = %168
  %176 = load i32, ptr %14, align 4, !tbaa !5
  %177 = sub i32 %176, %152
  store i32 %177, ptr %18, align 4, !tbaa !5
  %178 = load i32, ptr %29, align 4, !tbaa !5
  %179 = mul i32 %178, %159
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %180
  %182 = add i32 %30, 1
  %183 = mul i32 %178, %182
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds %struct.doublecomplex, ptr %32, i64 %184
  call void @zunmqr_(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.14, ptr noundef nonnull %24, ptr noundef nonnull %23, ptr noundef nonnull %24, ptr noundef %181, ptr noundef nonnull %6, ptr noundef nonnull %13, ptr noundef %185, ptr noundef nonnull %4, ptr noundef nonnull %165, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  %186 = load i32, ptr %22, align 4, !tbaa !5
  %187 = icmp sgt i32 %186, -1
  br i1 %187, label %188, label %.thread692

188:                                              ; preds = %175
  store i32 %172, ptr %18, align 4, !tbaa !5
  %189 = load double, ptr %165, align 8, !tbaa !9
  %190 = fptosi double %189 to i32
  %191 = add i32 %152, %190
  store i32 %191, ptr %19, align 4, !tbaa !5
  %192 = call i32 @llvm.smax.i32(i32 %172, i32 %191)
  %.not655 = icmp eq i32 %186, 0
  br i1 %.not655, label %195, label %.thread692

.thread692:                                       ; preds = %175, %188
  %.1695 = phi i32 [ %192, %188 ], [ %172, %175 ]
  %193 = load i32, ptr %2, align 4, !tbaa !5
  %194 = add nsw i32 %193, 3
  br label %.loopexit.sink.split

195:                                              ; preds = %188
  br i1 %50, label %196, label %225

196:                                              ; preds = %195
  call void @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %9, ptr noundef nonnull %10) #5
  %197 = load i32, ptr %24, align 4, !tbaa !5
  %198 = add nsw i32 %197, -1
  store i32 %198, ptr %18, align 4, !tbaa !5
  store i32 %198, ptr %19, align 4, !tbaa !5
  %199 = load i32, ptr %29, align 4, !tbaa !5
  %200 = add nsw i32 %199, 1
  %201 = mul nsw i32 %199, %33
  %202 = add nsw i32 %200, %201
  %203 = sext i32 %202 to i64
  %204 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %203
  %205 = mul nsw i32 %199, %38
  %206 = add nsw i32 %200, %205
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds %struct.doublecomplex, ptr %40, i64 %207
  call void @zlacpy_(ptr noundef nonnull @.str.13, ptr noundef nonnull %18, ptr noundef nonnull %19, ptr noundef %204, ptr noundef nonnull %6, ptr noundef %208, ptr noundef nonnull %10) #5
  %209 = load i32, ptr %14, align 4, !tbaa !5
  %210 = sub i32 %209, %152
  store i32 %210, ptr %18, align 4, !tbaa !5
  %211 = load i32, ptr %29, align 4, !tbaa !5
  %212 = add i32 %38, 1
  %213 = mul i32 %211, %212
  %214 = sext i32 %213 to i64
  %215 = getelementptr inbounds %struct.doublecomplex, ptr %40, i64 %214
  call void @zungqr_(ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef nonnull %24, ptr noundef %215, ptr noundef nonnull %10, ptr noundef nonnull %13, ptr noundef nonnull %165, ptr noundef nonnull %18, ptr noundef nonnull %22) #5
  %216 = load i32, ptr %22, align 4, !tbaa !5
  %217 = icmp sgt i32 %216, -1
  br i1 %217, label %218, label %.thread696

218:                                              ; preds = %196
  store i32 %192, ptr %18, align 4, !tbaa !5
  %219 = load double, ptr %165, align 8, !tbaa !9
  %220 = fptosi double %219 to i32
  %221 = add i32 %152, %220
  store i32 %221, ptr %19, align 4, !tbaa !5
  %222 = call i32 @llvm.smax.i32(i32 %192, i32 %221)
  %.not657 = icmp eq i32 %216, 0
  br i1 %.not657, label %.thread701, label %.thread696

.thread696:                                       ; preds = %196, %218
  %.2699 = phi i32 [ %222, %218 ], [ %192, %196 ]
  %223 = load i32, ptr %2, align 4, !tbaa !5
  %224 = add nsw i32 %223, 4
  br label %.loopexit.sink.split

225:                                              ; preds = %195
  br i1 %56, label %.thread700, label %226

.thread701:                                       ; preds = %218
  br i1 %56, label %.thread700, label %.thread707

.thread700:                                       ; preds = %225, %.thread701
  %.3706 = phi i32 [ %222, %.thread701 ], [ %192, %225 ]
  call void @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %2, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b2, ptr noundef %11, ptr noundef nonnull %12) #5
  br label %.thread707

226:                                              ; preds = %225
  br i1 %58, label %.thread707, label %227

.thread707:                                       ; preds = %.thread701, %.thread700, %226
  %.3704 = phi i32 [ %.3706, %.thread700 ], [ %192, %226 ], [ %222, %.thread701 ]
  call void @zgghrd_(ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %22) #5
  br label %235

227:                                              ; preds = %226
  %228 = load i32, ptr %29, align 4, !tbaa !5
  %229 = mul i32 %228, %182
  %230 = sext i32 %229 to i64
  %231 = getelementptr inbounds %struct.doublecomplex, ptr %32, i64 %230
  %232 = mul i32 %228, %159
  %233 = sext i32 %232 to i64
  %234 = getelementptr inbounds %struct.doublecomplex, ptr %35, i64 %233
  call void @zgghrd_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull @c__1, ptr noundef nonnull %24, ptr noundef %231, ptr noundef nonnull %4, ptr noundef %234, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %22) #5
  br label %235

235:                                              ; preds = %227, %.thread707
  %.3703 = phi i32 [ %192, %227 ], [ %.3704, %.thread707 ]
  %236 = load i32, ptr %22, align 4, !tbaa !5
  %.not658 = icmp eq i32 %236, 0
  br i1 %.not658, label %240, label %237

237:                                              ; preds = %235
  %238 = load i32, ptr %2, align 4, !tbaa !5
  %239 = add nsw i32 %238, 5
  br label %.loopexit.sink.split

240:                                              ; preds = %235
  %.682 = select i1 %58, i8 83, i8 69
  store i8 %.682, ptr %26, align 1, !tbaa !14
  %241 = load i32, ptr %14, align 4, !tbaa !5
  store i32 %241, ptr %18, align 4, !tbaa !5
  call void @zhgeqz_(ptr noundef nonnull %26, ptr noundef %0, ptr noundef %1, ptr noundef nonnull %2, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %18, ptr noundef nonnull %143, ptr noundef nonnull %22) #5
  %242 = load i32, ptr %22, align 4, !tbaa !5
  %243 = icmp sgt i32 %242, -1
  br i1 %243, label %244, label %._crit_edge791

._crit_edge791:                                   ; preds = %240
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  br label %250

244:                                              ; preds = %240
  store i32 %.3703, ptr %18, align 4, !tbaa !5
  %245 = load double, ptr %13, align 8, !tbaa !9
  %246 = fptosi double %245 to i32
  store i32 %246, ptr %19, align 4, !tbaa !5
  %247 = call i32 @llvm.smax.i32(i32 %.3703, i32 %246)
  %.not663 = icmp eq i32 %242, 0
  br i1 %.not663, label %258, label %248

248:                                              ; preds = %244
  %249 = load i32, ptr %2, align 4, !tbaa !5
  %.not676 = icmp sgt i32 %242, %249
  br i1 %.not676, label %250, label %.loopexit.sink.split

250:                                              ; preds = %._crit_edge791, %248
  %251 = phi i32 [ %249, %248 ], [ %.pre, %._crit_edge791 ]
  %.4712716 = phi i32 [ %247, %248 ], [ %.3703, %._crit_edge791 ]
  %252 = icmp sle i32 %242, %251
  %253 = shl i32 %251, 1
  %.not677 = icmp sgt i32 %242, %253
  %or.cond683 = or i1 %252, %.not677
  br i1 %or.cond683, label %256, label %254

254:                                              ; preds = %250
  %255 = sub nsw i32 %242, %251
  br label %.loopexit.sink.split

256:                                              ; preds = %250
  %257 = add nsw i32 %251, 6
  br label %.loopexit.sink.split

258:                                              ; preds = %244
  br i1 %58, label %259, label %.loopexit737

259:                                              ; preds = %258
  br i1 %50, label %260, label %.thread717

260:                                              ; preds = %259
  %. = select i1 %56, i8 66, i8 76
  store i8 %., ptr %26, align 1, !tbaa !14
  call void @ztgevc_(ptr noundef nonnull %26, ptr noundef nonnull @.str.8, ptr noundef nonnull %27, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef nonnull %13, ptr noundef nonnull %143, ptr noundef nonnull %22) #5
  %261 = load i32, ptr %22, align 4, !tbaa !5
  %.not664 = icmp eq i32 %261, 0
  br i1 %.not664, label %266, label %263

.thread717:                                       ; preds = %259
  store i8 82, ptr %26, align 1, !tbaa !14
  call void @ztgevc_(ptr noundef nonnull %26, ptr noundef nonnull @.str.8, ptr noundef nonnull %27, ptr noundef nonnull %2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %9, ptr noundef nonnull %10, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %2, ptr noundef nonnull %25, ptr noundef nonnull %13, ptr noundef nonnull %143, ptr noundef nonnull %22) #5
  %262 = load i32, ptr %22, align 4, !tbaa !5
  %.not664718 = icmp eq i32 %262, 0
  br i1 %.not664718, label %.thread719, label %263

263:                                              ; preds = %.thread717, %260
  %264 = load i32, ptr %2, align 4, !tbaa !5
  %265 = add nsw i32 %264, 7
  br label %.loopexit.sink.split

266:                                              ; preds = %260
  call void @zggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.13, ptr noundef nonnull %2, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %15, ptr noundef nonnull %141, ptr noundef nonnull %2, ptr noundef %9, ptr noundef nonnull %10, ptr noundef nonnull %22) #5
  %267 = load i32, ptr %22, align 4, !tbaa !5
  %.not665 = icmp eq i32 %267, 0
  %268 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not665, label %271, label %269

269:                                              ; preds = %266
  %270 = add nsw i32 %268, 8
  br label %.loopexit.sink.split

271:                                              ; preds = %266
  store i32 %268, ptr %18, align 4, !tbaa !5
  %.not666746 = icmp slt i32 %268, 1
  br i1 %.not666746, label %.thread719, label %.lr.ph749.preheader

.lr.ph749.preheader:                              ; preds = %271
  %272 = sext i32 %38 to i64
  br label %.lr.ph749

.lr.ph749thread-pre-split:                        ; preds = %.loopexit738
  %indvars.iv.next775 = add nuw nsw i64 %indvars.iv774, 1
  %.pr = load i32, ptr %2, align 4, !tbaa !5
  br label %.lr.ph749

.lr.ph749:                                        ; preds = %.lr.ph749thread-pre-split, %.lr.ph749.preheader
  %273 = phi i32 [ %.pr, %.lr.ph749thread-pre-split ], [ %268, %.lr.ph749.preheader ]
  %indvars.iv774 = phi i64 [ %indvars.iv.next775, %.lr.ph749thread-pre-split ], [ 1, %.lr.ph749.preheader ]
  store i32 %273, ptr %19, align 4, !tbaa !5
  %.not674739 = icmp slt i32 %273, 1
  br i1 %.not674739, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph749
  %274 = mul nsw i64 %indvars.iv774, %272
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %40, i64 %274
  br label %275

275:                                              ; preds = %.lr.ph, %275
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %275 ]
  %.0618740 = phi double [ 0.000000e+00, %.lr.ph ], [ %287, %275 ]
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %indvars.iv
  %276 = load double, ptr %gep, align 8, !tbaa !9
  %277 = call { double, double } @Cd(ptr noundef nonnull %gep)
  %278 = extractvalue { double, double } %277, 1
  %279 = insertelement <2 x double> poison, double %276, i64 0
  %280 = insertelement <2 x double> %279, double %278, i64 1
  %281 = fcmp oge <2 x double> %280, zeroinitializer
  %282 = fneg <2 x double> %280
  %283 = select <2 x i1> %281, <2 x double> %280, <2 x double> %282
  %shift = shufflevector <2 x double> %283, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %284 = fadd <2 x double> %283, %shift
  %285 = extractelement <2 x double> %284, i64 0
  %286 = fcmp oge double %.0618740, %285
  %287 = select i1 %286, double %.0618740, double %285
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %288 = load i32, ptr %19, align 4, !tbaa !5
  %289 = sext i32 %288 to i64
  %.not674.not = icmp slt i64 %indvars.iv, %289
  br i1 %.not674.not, label %275, label %._crit_edge, !llvm.loop !15

._crit_edge:                                      ; preds = %275, %.lr.ph749
  %.0618.lcssa = phi double [ 0.000000e+00, %.lr.ph749 ], [ %287, %275 ]
  %290 = fcmp olt double %.0618.lcssa, %107
  br i1 %290, label %.loopexit738, label %291

291:                                              ; preds = %._crit_edge
  %292 = fdiv double 1.000000e+00, %.0618.lcssa
  %293 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %293, ptr %19, align 4, !tbaa !5
  %.not675742 = icmp slt i32 %293, 1
  br i1 %.not675742, label %.loopexit738, label %.lr.ph745

.lr.ph745:                                        ; preds = %291
  %294 = mul nsw i64 %indvars.iv774, %272
  %295 = add nuw i32 %293, 1
  %wide.trip.count = zext i32 %295 to i64
  %invariant.gep796 = getelementptr %struct.doublecomplex, ptr %40, i64 %294
  %296 = zext nneg i32 %293 to i64
  %min.iters.check = icmp eq i32 %293, 1
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph745
  %n.vec = and i64 %296, 2147483646
  %ind.end = or i64 %296, 1
  %broadcast.splatinsert = insertelement <2 x double> poison, double %292, i64 0
  %297 = shufflevector <2 x double> %broadcast.splatinsert, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %298 = getelementptr %struct.doublecomplex, ptr %invariant.gep796, i64 %offset.idx
  %wide.vec = load <4 x double>, ptr %298, align 8, !tbaa !13
  %interleaved.vec = fmul <4 x double> %297, %wide.vec
  store <4 x double> %interleaved.vec, ptr %298, align 8, !tbaa !13
  %index.next = add nuw i64 %index, 2
  %299 = icmp eq i64 %index.next, %n.vec
  br i1 %299, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %296
  br i1 %cmp.n, label %.loopexit738, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %.lr.ph745
  %indvars.iv771.ph = phi i64 [ 1, %.lr.ph745 ], [ %ind.end, %middle.block ]
  %300 = insertelement <2 x double> poison, double %292, i64 0
  %301 = shufflevector <2 x double> %300, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv771 = phi i64 [ %indvars.iv.next772, %scalar.ph ], [ %indvars.iv771.ph, %scalar.ph.preheader ]
  %gep797 = getelementptr %struct.doublecomplex, ptr %invariant.gep796, i64 %indvars.iv771
  %302 = load <2 x double>, ptr %gep797, align 8, !tbaa !13
  %303 = fmul <2 x double> %301, %302
  store <2 x double> %303, ptr %gep797, align 8, !tbaa !13
  %indvars.iv.next772 = add nuw nsw i64 %indvars.iv771, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next772, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit738, label %scalar.ph, !llvm.loop !20

.loopexit738:                                     ; preds = %scalar.ph, %middle.block, %291, %._crit_edge
  %304 = load i32, ptr %18, align 4, !tbaa !5
  %305 = sext i32 %304 to i64
  %.not666.not = icmp slt i64 %indvars.iv774, %305
  br i1 %.not666.not, label %.lr.ph749thread-pre-split, label %.thread719, !llvm.loop !21

.thread719:                                       ; preds = %.loopexit738, %271, %.thread717
  br i1 %56, label %306, label %.loopexit737

306:                                              ; preds = %.thread719
  call void @zggbak_(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.16, ptr noundef nonnull %2, ptr noundef nonnull %29, ptr noundef nonnull %28, ptr noundef %15, ptr noundef nonnull %141, ptr noundef nonnull %2, ptr noundef %11, ptr noundef nonnull %12, ptr noundef nonnull %22) #5
  %307 = load i32, ptr %22, align 4, !tbaa !5
  %.not667 = icmp eq i32 %307, 0
  %308 = load i32, ptr %2, align 4, !tbaa !5
  br i1 %.not667, label %311, label %309

309:                                              ; preds = %306
  %310 = add nsw i32 %308, 9
  br label %.loopexit.sink.split

311:                                              ; preds = %306
  store i32 %308, ptr %18, align 4, !tbaa !5
  %.not668761 = icmp slt i32 %308, 1
  br i1 %.not668761, label %.loopexit, label %.lr.ph764.preheader

.lr.ph764.preheader:                              ; preds = %311
  %312 = sext i32 %41 to i64
  br label %.lr.ph764

.lr.ph764thread-pre-split:                        ; preds = %.loopexit736
  %indvars.iv.next786 = add nuw nsw i64 %indvars.iv785, 1
  %.pr792 = load i32, ptr %2, align 4, !tbaa !5
  br label %.lr.ph764

.lr.ph764:                                        ; preds = %.lr.ph764thread-pre-split, %.lr.ph764.preheader
  %313 = phi i32 [ %.pr792, %.lr.ph764thread-pre-split ], [ %308, %.lr.ph764.preheader ]
  %indvars.iv785 = phi i64 [ %indvars.iv.next786, %.lr.ph764thread-pre-split ], [ 1, %.lr.ph764.preheader ]
  store i32 %313, ptr %19, align 4, !tbaa !5
  %.not672750 = icmp slt i32 %313, 1
  br i1 %.not672750, label %._crit_edge755, label %.lr.ph754

.lr.ph754:                                        ; preds = %.lr.ph764
  %314 = mul nsw i64 %indvars.iv785, %312
  %invariant.gep798 = getelementptr %struct.doublecomplex, ptr %43, i64 %314
  br label %315

315:                                              ; preds = %.lr.ph754, %315
  %indvars.iv777 = phi i64 [ 1, %.lr.ph754 ], [ %indvars.iv.next778, %315 ]
  %.1619751 = phi double [ 0.000000e+00, %.lr.ph754 ], [ %327, %315 ]
  %gep799 = getelementptr %struct.doublecomplex, ptr %invariant.gep798, i64 %indvars.iv777
  %316 = load double, ptr %gep799, align 8, !tbaa !9
  %317 = call { double, double } @Cd(ptr noundef nonnull %gep799)
  %318 = extractvalue { double, double } %317, 1
  %319 = insertelement <2 x double> poison, double %316, i64 0
  %320 = insertelement <2 x double> %319, double %318, i64 1
  %321 = fcmp oge <2 x double> %320, zeroinitializer
  %322 = fneg <2 x double> %320
  %323 = select <2 x i1> %321, <2 x double> %320, <2 x double> %322
  %shift825 = shufflevector <2 x double> %323, <2 x double> poison, <2 x i32> <i32 1, i32 poison>
  %324 = fadd <2 x double> %323, %shift825
  %325 = extractelement <2 x double> %324, i64 0
  %326 = fcmp oge double %.1619751, %325
  %327 = select i1 %326, double %.1619751, double %325
  %indvars.iv.next778 = add nuw nsw i64 %indvars.iv777, 1
  %328 = load i32, ptr %19, align 4, !tbaa !5
  %329 = sext i32 %328 to i64
  %.not672.not = icmp slt i64 %indvars.iv777, %329
  br i1 %.not672.not, label %315, label %._crit_edge755, !llvm.loop !22

._crit_edge755:                                   ; preds = %315, %.lr.ph764
  %.1619.lcssa = phi double [ 0.000000e+00, %.lr.ph764 ], [ %327, %315 ]
  %330 = fcmp olt double %.1619.lcssa, %107
  br i1 %330, label %.loopexit736, label %331

331:                                              ; preds = %._crit_edge755
  %332 = fdiv double 1.000000e+00, %.1619.lcssa
  %333 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %333, ptr %19, align 4, !tbaa !5
  %.not673757 = icmp slt i32 %333, 1
  br i1 %.not673757, label %.loopexit736, label %.lr.ph760

.lr.ph760:                                        ; preds = %331
  %334 = mul nsw i64 %indvars.iv785, %312
  %335 = add nuw i32 %333, 1
  %wide.trip.count783 = zext i32 %335 to i64
  %invariant.gep800 = getelementptr %struct.doublecomplex, ptr %43, i64 %334
  %336 = zext nneg i32 %333 to i64
  %min.iters.check808 = icmp eq i32 %333, 1
  br i1 %min.iters.check808, label %scalar.ph807.preheader, label %vector.ph809

vector.ph809:                                     ; preds = %.lr.ph760
  %n.vec811 = and i64 %336, 2147483646
  %ind.end812 = or i64 %336, 1
  %broadcast.splatinsert820 = insertelement <2 x double> poison, double %332, i64 0
  %337 = shufflevector <2 x double> %broadcast.splatinsert820, <2 x double> poison, <4 x i32> zeroinitializer
  br label %vector.body814

vector.body814:                                   ; preds = %vector.body814, %vector.ph809
  %index815 = phi i64 [ 0, %vector.ph809 ], [ %index.next823, %vector.body814 ]
  %offset.idx816 = or disjoint i64 %index815, 1
  %338 = getelementptr %struct.doublecomplex, ptr %invariant.gep800, i64 %offset.idx816
  %wide.vec817 = load <4 x double>, ptr %338, align 8, !tbaa !13
  %interleaved.vec822 = fmul <4 x double> %337, %wide.vec817
  store <4 x double> %interleaved.vec822, ptr %338, align 8, !tbaa !13
  %index.next823 = add nuw i64 %index815, 2
  %339 = icmp eq i64 %index.next823, %n.vec811
  br i1 %339, label %middle.block806, label %vector.body814, !llvm.loop !23

middle.block806:                                  ; preds = %vector.body814
  %cmp.n824 = icmp eq i64 %n.vec811, %336
  br i1 %cmp.n824, label %.loopexit736, label %scalar.ph807.preheader

scalar.ph807.preheader:                           ; preds = %middle.block806, %.lr.ph760
  %indvars.iv780.ph = phi i64 [ 1, %.lr.ph760 ], [ %ind.end812, %middle.block806 ]
  %340 = insertelement <2 x double> poison, double %332, i64 0
  %341 = shufflevector <2 x double> %340, <2 x double> poison, <2 x i32> zeroinitializer
  br label %scalar.ph807

scalar.ph807:                                     ; preds = %scalar.ph807.preheader, %scalar.ph807
  %indvars.iv780 = phi i64 [ %indvars.iv.next781, %scalar.ph807 ], [ %indvars.iv780.ph, %scalar.ph807.preheader ]
  %gep801 = getelementptr %struct.doublecomplex, ptr %invariant.gep800, i64 %indvars.iv780
  %342 = load <2 x double>, ptr %gep801, align 8, !tbaa !13
  %343 = fmul <2 x double> %341, %342
  store <2 x double> %343, ptr %gep801, align 8, !tbaa !13
  %indvars.iv.next781 = add nuw nsw i64 %indvars.iv780, 1
  %exitcond784.not = icmp eq i64 %indvars.iv.next781, %wide.trip.count783
  br i1 %exitcond784.not, label %.loopexit736, label %scalar.ph807, !llvm.loop !24

.loopexit736:                                     ; preds = %scalar.ph807, %middle.block806, %331, %._crit_edge755
  %344 = load i32, ptr %18, align 4, !tbaa !5
  %345 = sext i32 %344 to i64
  %.not668.not = icmp slt i64 %indvars.iv785, %345
  br i1 %.not668.not, label %.lr.ph764thread-pre-split, label %.loopexit737, !llvm.loop !25

.loopexit737:                                     ; preds = %.loopexit736, %.thread719, %258
  %.pr793 = load i32, ptr %2, align 4, !tbaa !5
  store i32 %.pr793, ptr %18, align 4, !tbaa !5
  %.not669765 = icmp slt i32 %.pr793, 1
  br i1 %.not669765, label %.loopexit, label %.lr.ph768

.lr.ph768:                                        ; preds = %.loopexit737
  %346 = fdiv double %107, %.0615
  %347 = fdiv double %107, %.0613
  br label %348

348:                                              ; preds = %.lr.ph768, %.thread726
  %indvars.iv788 = phi i64 [ 1, %.lr.ph768 ], [ %indvars.iv.next789, %.thread726 ]
  %349 = trunc nuw nsw i64 %indvars.iv788 to i32
  store i32 %349, ptr %19, align 4, !tbaa !5
  %350 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %indvars.iv788
  %351 = load double, ptr %350, align 8, !tbaa !9
  %352 = fcmp oge double %351, 0.000000e+00
  %353 = fneg double %351
  %354 = select i1 %352, double %351, double %353
  %355 = call { double, double } @Cd(ptr noundef nonnull %350)
  %356 = extractvalue { double, double } %355, 1
  %357 = fcmp oge double %356, 0.000000e+00
  %358 = fneg double %356
  %359 = select i1 %357, double %356, double %358
  %360 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %indvars.iv788
  %361 = load double, ptr %360, align 8, !tbaa !9
  %362 = fcmp oge double %361, 0.000000e+00
  %363 = fneg double %361
  %364 = select i1 %362, double %361, double %363
  store i32 %349, ptr %19, align 4, !tbaa !5
  %365 = load double, ptr %20, align 8, !tbaa !13
  %366 = load double, ptr %350, align 8, !tbaa !9
  %367 = call { double, double } @Cd(ptr noundef nonnull %350)
  %368 = extractvalue { double, double } %367, 1
  %369 = insertelement <2 x double> poison, double %365, i64 0
  %370 = shufflevector <2 x double> %369, <2 x double> poison, <2 x i32> zeroinitializer
  %371 = insertelement <2 x double> poison, double %366, i64 0
  %372 = insertelement <2 x double> %371, double %368, i64 1
  %373 = fmul <2 x double> %370, %372
  %374 = load double, ptr %21, align 8, !tbaa !13
  %375 = load double, ptr %360, align 8, !tbaa !9
  %376 = fmul double %374, %375
  %377 = fmul double %105, %354
  %378 = fcmp oge double %107, %377
  %379 = select i1 %378, double %107, double %377
  %380 = fmul double %105, %364
  %381 = extractelement <2 x double> %373, i64 1
  %382 = fcmp oge double %381, 0.000000e+00
  %383 = fneg double %381
  %384 = select i1 %382, double %381, double %383
  %385 = fcmp olt double %384, %107
  br i1 %385, label %386, label %395

386:                                              ; preds = %348
  %387 = fcmp oge double %379, %380
  %388 = select i1 %387, double %379, double %380
  %389 = fcmp ult double %359, %388
  br i1 %389, label %395, label %390

390:                                              ; preds = %386
  %391 = fmul double %.0614, %359
  %392 = fcmp oge double %107, %391
  %393 = select i1 %392, double %107, double %391
  %394 = fdiv double %346, %393
  br label %395

395:                                              ; preds = %390, %386, %348
  %.0607 = phi double [ %394, %390 ], [ 1.000000e+00, %386 ], [ 1.000000e+00, %348 ]
  %.0592 = phi i32 [ 1, %390 ], [ 0, %386 ], [ 0, %348 ]
  %396 = fmul double %105, %359
  %397 = extractelement <2 x double> %373, i64 0
  %398 = fcmp oge double %397, 0.000000e+00
  %399 = fneg double %397
  %400 = select i1 %398, double %397, double %399
  %401 = fcmp olt double %400, %107
  br i1 %401, label %402, label %415

402:                                              ; preds = %395
  %403 = fcmp oge double %107, %396
  %404 = select i1 %403, double %107, double %396
  %405 = fcmp oge double %404, %380
  %406 = select i1 %405, double %404, double %380
  %407 = fcmp ult double %354, %406
  br i1 %407, label %415, label %408

408:                                              ; preds = %402
  %409 = fmul double %.0614, %354
  %410 = fcmp oge double %107, %409
  %411 = select i1 %410, double %107, double %409
  %412 = fdiv double %346, %411
  %413 = fcmp oge double %.0607, %412
  %414 = select i1 %413, double %.0607, double %412
  br label %415

415:                                              ; preds = %408, %402, %395
  %.1608 = phi double [ %414, %408 ], [ %.0607, %402 ], [ %.0607, %395 ]
  %.1593 = phi i32 [ 1, %408 ], [ %.0592, %402 ], [ %.0592, %395 ]
  %416 = fcmp oge double %376, 0.000000e+00
  %417 = fneg double %376
  %418 = select i1 %416, double %376, double %417
  %419 = fcmp olt double %418, %107
  br i1 %419, label %420, label %430

420:                                              ; preds = %415
  %421 = fcmp oge double %379, %396
  %422 = select i1 %421, double %379, double %396
  %423 = fcmp ult double %364, %422
  br i1 %423, label %430, label %.thread720

.thread720:                                       ; preds = %420
  %424 = fmul double %.0612, %364
  %425 = fcmp oge double %107, %424
  %426 = select i1 %425, double %107, double %424
  %427 = fdiv double %347, %426
  %428 = fcmp oge double %.1608, %427
  %429 = select i1 %428, double %.1608, double %427
  br label %431

430:                                              ; preds = %420, %415
  %.not670 = icmp eq i32 %.1593, 0
  br i1 %.not670, label %.thread726, label %431

431:                                              ; preds = %.thread720, %430
  %.2609724 = phi double [ %429, %.thread720 ], [ %.1608, %430 ]
  %432 = fcmp oge double %400, %384
  %433 = select i1 %432, double %400, double %384
  %434 = fmul double %107, %.2609724
  %435 = fcmp oge double %433, %418
  %436 = select i1 %435, double %433, double %418
  %437 = fmul double %436, %434
  %438 = fcmp ogt double %437, 1.000000e+00
  %439 = fdiv double %.2609724, %437
  %.3610 = select i1 %438, double %439, double %.2609724
  %440 = fcmp olt double %.3610, 1.000000e+00
  br i1 %440, label %.thread726, label %441

441:                                              ; preds = %431
  store i32 %349, ptr %19, align 4, !tbaa !5
  %442 = load double, ptr %350, align 8, !tbaa !9
  %443 = load double, ptr %20, align 8, !tbaa !13
  %444 = call { double, double } @Cd(ptr noundef nonnull %350)
  %445 = extractvalue { double, double } %444, 1
  %446 = insertelement <2 x double> poison, double %.3610, i64 0
  %447 = shufflevector <2 x double> %446, <2 x double> poison, <2 x i32> zeroinitializer
  %448 = insertelement <2 x double> poison, double %442, i64 0
  %449 = insertelement <2 x double> %448, double %445, i64 1
  %450 = fmul <2 x double> %447, %449
  %451 = load double, ptr %20, align 8, !tbaa !13
  %452 = insertelement <2 x double> poison, double %443, i64 0
  %453 = insertelement <2 x double> %452, double %451, i64 1
  %454 = fmul <2 x double> %450, %453
  %455 = load double, ptr %360, align 8, !tbaa !9
  %456 = fmul double %.3610, %455
  %457 = load double, ptr %21, align 8, !tbaa !13
  %458 = fmul double %457, %456
  br label %.thread726

.thread726:                                       ; preds = %431, %430, %441
  %.0606 = phi double [ %458, %441 ], [ %376, %430 ], [ %376, %431 ]
  %459 = phi <2 x double> [ %454, %441 ], [ %373, %430 ], [ %373, %431 ]
  store <2 x double> %459, ptr %350, align 8, !tbaa !13
  store i32 %349, ptr %19, align 4, !tbaa !5
  store double %.0606, ptr %360, align 8, !tbaa !9
  %460 = getelementptr inbounds %struct.doublecomplex, ptr %37, i64 %indvars.iv788, i32 1
  store double 0.000000e+00, ptr %460, align 8, !tbaa !12
  %indvars.iv.next789 = add nuw nsw i64 %indvars.iv788, 1
  %461 = load i32, ptr %18, align 4, !tbaa !5
  %462 = sext i32 %461 to i64
  %.not669.not = icmp slt i64 %indvars.iv788, %462
  br i1 %.not669.not, label %348, label %.loopexit, !llvm.loop !26

.loopexit.sink.split:                             ; preds = %248, %145, %.thread688, %.thread692, %.thread696, %237, %263, %269, %309, %254, %256
  %.sink803 = phi i32 [ %257, %256 ], [ %255, %254 ], [ %310, %309 ], [ %270, %269 ], [ %265, %263 ], [ %239, %237 ], [ %224, %.thread696 ], [ %194, %.thread692 ], [ %174, %.thread688 ], [ %147, %145 ], [ %242, %248 ]
  %.5.ph = phi i32 [ %.4712716, %256 ], [ %.4712716, %254 ], [ %247, %309 ], [ %247, %269 ], [ %247, %263 ], [ %.3703, %237 ], [ %.2699, %.thread696 ], [ %.1695, %.thread692 ], [ %.0691, %.thread688 ], [ %61, %145 ], [ %247, %248 ]
  store i32 %.sink803, ptr %16, align 4, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %.thread726, %.loopexit.sink.split, %311, %.loopexit737
  %.5 = phi i32 [ %247, %.loopexit737 ], [ %247, %311 ], [ %.5.ph, %.loopexit.sink.split ], [ %247, %.thread726 ]
  %463 = uitofp nneg i32 %.5 to double
  store double %463, ptr %13, align 8, !tbaa !9
  store double 0.000000e+00, ptr %63, align 8, !tbaa !12
  br label %464

464:                                              ; preds = %100, %.loopexit, %133, %119, %.thread686
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %22) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #5
  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 i32 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

declare void @zlascl_(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 @zggbal_(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 @zgeqrf_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

declare void @zunmqr_(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

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

declare void @zgghrd_(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

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

declare void @ztgevc_(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

declare void @zggbak_(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: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #3

; 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.smax.i32(i32, i32) #4

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

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 = { 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 #4 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = !{!11, !11, i64 0}
!14 = !{!7, !7, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !16, !19, !18}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16, !18, !19}
!24 = distinct !{!24, !16, !19, !18}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}


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