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

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

@c__6 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [3 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 [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.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
@c__0 = external hidden global i64, align 8
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b78 = external hidden global double, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.doublecomplex, align 8

; Function Attrs: nounwind uwtable
define dso_local i32 @zgelss_(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) #0 {
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %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 i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca i64, align 8
  %33 = alloca i64, align 8
  %34 = alloca i64, align 8
  %35 = alloca i64, align 8
  %36 = alloca i64, align 8
  %37 = alloca double, align 8
  %38 = alloca i64, align 8
  %39 = alloca i64, align 8
  %40 = alloca i64, align 8
  %41 = alloca i64, align 8
  %42 = alloca i64, align 8
  %43 = alloca double, align 8
  %44 = alloca double, align 8
  %45 = alloca double, align 8
  %46 = alloca double, align 8
  %47 = alloca i64, align 8
  %48 = alloca [1 x %struct.doublecomplex], align 16
  %49 = alloca i64, align 8
  %50 = alloca i64, align 8
  %51 = alloca i64, align 8
  %52 = alloca double, align 8
  %53 = alloca i64, align 8
  %54 = alloca i64, align 8
  %55 = alloca i64, align 8
  %56 = alloca i64, align 8
  %57 = alloca i64, align 8
  %58 = alloca i64, align 8
  %59 = alloca double, align 8
  %60 = alloca i64, align 8
  %61 = alloca i64, align 8
  %62 = alloca i64, align 8
  %63 = alloca double, align 8
  %64 = alloca i64, align 8
  %65 = alloca i64, align 8
  %66 = alloca i32, align 4
  store ptr %0, ptr %16, align 8, !tbaa !5
  store ptr %1, ptr %17, align 8, !tbaa !5
  store ptr %2, ptr %18, align 8, !tbaa !5
  store ptr %3, ptr %19, align 8, !tbaa !5
  store ptr %4, ptr %20, align 8, !tbaa !5
  store ptr %5, ptr %21, align 8, !tbaa !5
  store ptr %6, ptr %22, align 8, !tbaa !5
  store ptr %7, ptr %23, align 8, !tbaa !5
  store ptr %8, ptr %24, align 8, !tbaa !5
  store ptr %9, ptr %25, align 8, !tbaa !5
  store ptr %10, ptr %26, align 8, !tbaa !5
  store ptr %11, ptr %27, align 8, !tbaa !5
  store ptr %12, ptr %28, align 8, !tbaa !5
  store ptr %13, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #3
  %67 = load ptr, ptr %20, align 8, !tbaa !5
  %68 = load i64, ptr %67, align 8, !tbaa !9
  store i64 %68, ptr %30, align 8, !tbaa !9
  %69 = load i64, ptr %30, align 8, !tbaa !9
  %70 = add nsw i64 1, %69
  store i64 %70, ptr %31, align 8, !tbaa !9
  %71 = load i64, ptr %31, align 8, !tbaa !9
  %72 = load ptr, ptr %19, align 8, !tbaa !5
  %73 = sub i64 0, %71
  %74 = getelementptr inbounds %struct.doublecomplex, ptr %72, i64 %73
  store ptr %74, ptr %19, align 8, !tbaa !5
  %75 = load ptr, ptr %22, align 8, !tbaa !5
  %76 = load i64, ptr %75, align 8, !tbaa !9
  store i64 %76, ptr %32, align 8, !tbaa !9
  %77 = load i64, ptr %32, align 8, !tbaa !9
  %78 = add nsw i64 1, %77
  store i64 %78, ptr %33, align 8, !tbaa !9
  %79 = load i64, ptr %33, align 8, !tbaa !9
  %80 = load ptr, ptr %21, align 8, !tbaa !5
  %81 = sub i64 0, %79
  %82 = getelementptr inbounds %struct.doublecomplex, ptr %80, i64 %81
  store ptr %82, ptr %21, align 8, !tbaa !5
  %83 = load ptr, ptr %23, align 8, !tbaa !5
  %84 = getelementptr inbounds double, ptr %83, i32 -1
  store ptr %84, ptr %23, align 8, !tbaa !5
  %85 = load ptr, ptr %26, align 8, !tbaa !5
  %86 = getelementptr inbounds %struct.doublecomplex, ptr %85, i32 -1
  store ptr %86, ptr %26, align 8, !tbaa !5
  %87 = load ptr, ptr %28, align 8, !tbaa !5
  %88 = getelementptr inbounds double, ptr %87, i32 -1
  store ptr %88, ptr %28, align 8, !tbaa !5
  %89 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 0, ptr %89, align 8, !tbaa !9
  %90 = load ptr, ptr %16, align 8, !tbaa !5
  %91 = load i64, ptr %90, align 8, !tbaa !9
  %92 = load ptr, ptr %17, align 8, !tbaa !5
  %93 = load i64, ptr %92, align 8, !tbaa !9
  %94 = icmp sle i64 %91, %93
  br i1 %94, label %95, label %98

95:                                               ; preds = %14
  %96 = load ptr, ptr %16, align 8, !tbaa !5
  %97 = load i64, ptr %96, align 8, !tbaa !9
  br label %101

98:                                               ; preds = %14
  %99 = load ptr, ptr %17, align 8, !tbaa !5
  %100 = load i64, ptr %99, align 8, !tbaa !9
  br label %101

101:                                              ; preds = %98, %95
  %102 = phi i64 [ %97, %95 ], [ %100, %98 ]
  store i64 %102, ptr %53, align 8, !tbaa !9
  %103 = load ptr, ptr %16, align 8, !tbaa !5
  %104 = load i64, ptr %103, align 8, !tbaa !9
  %105 = load ptr, ptr %17, align 8, !tbaa !5
  %106 = load i64, ptr %105, align 8, !tbaa !9
  %107 = icmp sge i64 %104, %106
  br i1 %107, label %108, label %111

108:                                              ; preds = %101
  %109 = load ptr, ptr %16, align 8, !tbaa !5
  %110 = load i64, ptr %109, align 8, !tbaa !9
  br label %114

111:                                              ; preds = %101
  %112 = load ptr, ptr %17, align 8, !tbaa !5
  %113 = load i64, ptr %112, align 8, !tbaa !9
  br label %114

114:                                              ; preds = %111, %108
  %115 = phi i64 [ %110, %108 ], [ %113, %111 ]
  store i64 %115, ptr %54, align 8, !tbaa !9
  %116 = load ptr, ptr %27, align 8, !tbaa !5
  %117 = load i64, ptr %116, align 8, !tbaa !9
  %118 = icmp eq i64 %117, -1
  %119 = zext i1 %118 to i32
  %120 = sext i32 %119 to i64
  store i64 %120, ptr %65, align 8, !tbaa !9
  %121 = load ptr, ptr %16, align 8, !tbaa !5
  %122 = load i64, ptr %121, align 8, !tbaa !9
  %123 = icmp slt i64 %122, 0
  br i1 %123, label %124, label %126

124:                                              ; preds = %114
  %125 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -1, ptr %125, align 8, !tbaa !9
  br label %170

126:                                              ; preds = %114
  %127 = load ptr, ptr %17, align 8, !tbaa !5
  %128 = load i64, ptr %127, align 8, !tbaa !9
  %129 = icmp slt i64 %128, 0
  br i1 %129, label %130, label %132

130:                                              ; preds = %126
  %131 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -2, ptr %131, align 8, !tbaa !9
  br label %169

132:                                              ; preds = %126
  %133 = load ptr, ptr %18, align 8, !tbaa !5
  %134 = load i64, ptr %133, align 8, !tbaa !9
  %135 = icmp slt i64 %134, 0
  br i1 %135, label %136, label %138

136:                                              ; preds = %132
  %137 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -3, ptr %137, align 8, !tbaa !9
  br label %168

138:                                              ; preds = %132
  %139 = load ptr, ptr %20, align 8, !tbaa !5
  %140 = load i64, ptr %139, align 8, !tbaa !9
  %141 = load ptr, ptr %16, align 8, !tbaa !5
  %142 = load i64, ptr %141, align 8, !tbaa !9
  %143 = icmp sge i64 1, %142
  br i1 %143, label %144, label %145

144:                                              ; preds = %138
  br label %148

145:                                              ; preds = %138
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  %147 = load i64, ptr %146, align 8, !tbaa !9
  br label %148

148:                                              ; preds = %145, %144
  %149 = phi i64 [ 1, %144 ], [ %147, %145 ]
  %150 = icmp slt i64 %140, %149
  br i1 %150, label %151, label %153

151:                                              ; preds = %148
  %152 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -5, ptr %152, align 8, !tbaa !9
  br label %167

153:                                              ; preds = %148
  %154 = load ptr, ptr %22, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = load i64, ptr %54, align 8, !tbaa !9
  %157 = icmp sge i64 1, %156
  br i1 %157, label %158, label %159

158:                                              ; preds = %153
  br label %161

159:                                              ; preds = %153
  %160 = load i64, ptr %54, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %159, %158
  %162 = phi i64 [ 1, %158 ], [ %160, %159 ]
  %163 = icmp slt i64 %155, %162
  br i1 %163, label %164, label %166

164:                                              ; preds = %161
  %165 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -7, ptr %165, align 8, !tbaa !9
  br label %166

166:                                              ; preds = %164, %161
  br label %167

167:                                              ; preds = %166, %151
  br label %168

168:                                              ; preds = %167, %136
  br label %169

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

170:                                              ; preds = %169, %124
  %171 = load ptr, ptr %29, align 8, !tbaa !5
  %172 = load i64, ptr %171, align 8, !tbaa !9
  %173 = icmp eq i64 %172, 0
  br i1 %173, label %174, label %628

174:                                              ; preds = %170
  store i64 1, ptr %61, align 8, !tbaa !9
  store i64 1, ptr %62, align 8, !tbaa !9
  %175 = load i64, ptr %53, align 8, !tbaa !9
  %176 = icmp sgt i64 %175, 0
  br i1 %176, label %177, label %609

177:                                              ; preds = %174
  %178 = load ptr, ptr %16, align 8, !tbaa !5
  %179 = load i64, ptr %178, align 8, !tbaa !9
  store i64 %179, ptr %42, align 8, !tbaa !9
  %180 = load ptr, ptr %16, align 8, !tbaa !5
  %181 = load ptr, ptr %17, align 8, !tbaa !5
  %182 = load ptr, ptr %18, align 8, !tbaa !5
  %183 = call i64 @ilaenv_(ptr noundef @c__6, ptr noundef @.str, ptr noundef @.str.1, ptr noundef %180, ptr noundef %181, ptr noundef %182, ptr noundef @c_n1)
  store i64 %183, ptr %57, align 8, !tbaa !9
  %184 = load ptr, ptr %16, align 8, !tbaa !5
  %185 = load i64, ptr %184, align 8, !tbaa !9
  %186 = load ptr, ptr %17, align 8, !tbaa !5
  %187 = load i64, ptr %186, align 8, !tbaa !9
  %188 = icmp sge i64 %185, %187
  br i1 %188, label %189, label %236

189:                                              ; preds = %177
  %190 = load ptr, ptr %16, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = load i64, ptr %57, align 8, !tbaa !9
  %193 = icmp sge i64 %191, %192
  br i1 %193, label %194, label %236

194:                                              ; preds = %189
  %195 = load ptr, ptr %17, align 8, !tbaa !5
  %196 = load i64, ptr %195, align 8, !tbaa !9
  store i64 %196, ptr %42, align 8, !tbaa !9
  %197 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %197, ptr %34, align 8, !tbaa !9
  %198 = load ptr, ptr %17, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = load ptr, ptr %17, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = load ptr, ptr %16, align 8, !tbaa !5
  %203 = load ptr, ptr %17, align 8, !tbaa !5
  %204 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.2, ptr noundef @.str.1, ptr noundef %202, ptr noundef %203, ptr noundef @c_n1, ptr noundef @c_n1)
  %205 = mul nsw i64 %201, %204
  %206 = add nsw i64 %199, %205
  store i64 %206, ptr %35, align 8, !tbaa !9
  %207 = load i64, ptr %34, align 8, !tbaa !9
  %208 = load i64, ptr %35, align 8, !tbaa !9
  %209 = icmp sge i64 %207, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %194
  %211 = load i64, ptr %34, align 8, !tbaa !9
  br label %214

212:                                              ; preds = %194
  %213 = load i64, ptr %35, align 8, !tbaa !9
  br label %214

214:                                              ; preds = %212, %210
  %215 = phi i64 [ %211, %210 ], [ %213, %212 ]
  store i64 %215, ptr %62, align 8, !tbaa !9
  %216 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %216, ptr %34, align 8, !tbaa !9
  %217 = load ptr, ptr %17, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = load ptr, ptr %18, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = load ptr, ptr %16, align 8, !tbaa !5
  %222 = load ptr, ptr %18, align 8, !tbaa !5
  %223 = load ptr, ptr %17, align 8, !tbaa !5
  %224 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef @.str.4, ptr noundef %221, ptr noundef %222, ptr noundef %223, ptr noundef @c_n1)
  %225 = mul nsw i64 %220, %224
  %226 = add nsw i64 %218, %225
  store i64 %226, ptr %35, align 8, !tbaa !9
  %227 = load i64, ptr %34, align 8, !tbaa !9
  %228 = load i64, ptr %35, align 8, !tbaa !9
  %229 = icmp sge i64 %227, %228
  br i1 %229, label %230, label %232

230:                                              ; preds = %214
  %231 = load i64, ptr %34, align 8, !tbaa !9
  br label %234

232:                                              ; preds = %214
  %233 = load i64, ptr %35, align 8, !tbaa !9
  br label %234

234:                                              ; preds = %232, %230
  %235 = phi i64 [ %231, %230 ], [ %233, %232 ]
  store i64 %235, ptr %62, align 8, !tbaa !9
  br label %236

236:                                              ; preds = %234, %189, %177
  %237 = load ptr, ptr %16, align 8, !tbaa !5
  %238 = load i64, ptr %237, align 8, !tbaa !9
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  %241 = icmp sge i64 %238, %240
  br i1 %241, label %242, label %338

242:                                              ; preds = %236
  %243 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %243, ptr %34, align 8, !tbaa !9
  %244 = load ptr, ptr %17, align 8, !tbaa !5
  %245 = load i64, ptr %244, align 8, !tbaa !9
  %246 = shl i64 %245, 1
  %247 = load i64, ptr %42, align 8, !tbaa !9
  %248 = load ptr, ptr %17, align 8, !tbaa !5
  %249 = load i64, ptr %248, align 8, !tbaa !9
  %250 = add nsw i64 %247, %249
  %251 = load ptr, ptr %17, align 8, !tbaa !5
  %252 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef %42, ptr noundef %251, ptr noundef @c_n1, ptr noundef @c_n1)
  %253 = mul nsw i64 %250, %252
  %254 = add nsw i64 %246, %253
  store i64 %254, ptr %35, align 8, !tbaa !9
  %255 = load i64, ptr %34, align 8, !tbaa !9
  %256 = load i64, ptr %35, align 8, !tbaa !9
  %257 = icmp sge i64 %255, %256
  br i1 %257, label %258, label %260

258:                                              ; preds = %242
  %259 = load i64, ptr %34, align 8, !tbaa !9
  br label %262

260:                                              ; preds = %242
  %261 = load i64, ptr %35, align 8, !tbaa !9
  br label %262

262:                                              ; preds = %260, %258
  %263 = phi i64 [ %259, %258 ], [ %261, %260 ]
  store i64 %263, ptr %62, align 8, !tbaa !9
  %264 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %264, ptr %34, align 8, !tbaa !9
  %265 = load ptr, ptr %17, align 8, !tbaa !5
  %266 = load i64, ptr %265, align 8, !tbaa !9
  %267 = shl i64 %266, 1
  %268 = load ptr, ptr %18, align 8, !tbaa !5
  %269 = load i64, ptr %268, align 8, !tbaa !9
  %270 = load ptr, ptr %18, align 8, !tbaa !5
  %271 = load ptr, ptr %17, align 8, !tbaa !5
  %272 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %42, ptr noundef %270, ptr noundef %271, ptr noundef @c_n1)
  %273 = mul nsw i64 %269, %272
  %274 = add nsw i64 %267, %273
  store i64 %274, ptr %35, align 8, !tbaa !9
  %275 = load i64, ptr %34, align 8, !tbaa !9
  %276 = load i64, ptr %35, align 8, !tbaa !9
  %277 = icmp sge i64 %275, %276
  br i1 %277, label %278, label %280

278:                                              ; preds = %262
  %279 = load i64, ptr %34, align 8, !tbaa !9
  br label %282

280:                                              ; preds = %262
  %281 = load i64, ptr %35, align 8, !tbaa !9
  br label %282

282:                                              ; preds = %280, %278
  %283 = phi i64 [ %279, %278 ], [ %281, %280 ]
  store i64 %283, ptr %62, align 8, !tbaa !9
  %284 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %284, ptr %34, align 8, !tbaa !9
  %285 = load ptr, ptr %17, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = shl i64 %286, 1
  %288 = load ptr, ptr %17, align 8, !tbaa !5
  %289 = load i64, ptr %288, align 8, !tbaa !9
  %290 = sub nsw i64 %289, 1
  %291 = load ptr, ptr %17, align 8, !tbaa !5
  %292 = load ptr, ptr %17, align 8, !tbaa !5
  %293 = load ptr, ptr %17, align 8, !tbaa !5
  %294 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef %291, ptr noundef %292, ptr noundef %293, ptr noundef @c_n1)
  %295 = mul nsw i64 %290, %294
  %296 = add nsw i64 %287, %295
  store i64 %296, ptr %35, align 8, !tbaa !9
  %297 = load i64, ptr %34, align 8, !tbaa !9
  %298 = load i64, ptr %35, align 8, !tbaa !9
  %299 = icmp sge i64 %297, %298
  br i1 %299, label %300, label %302

300:                                              ; preds = %282
  %301 = load i64, ptr %34, align 8, !tbaa !9
  br label %304

302:                                              ; preds = %282
  %303 = load i64, ptr %35, align 8, !tbaa !9
  br label %304

304:                                              ; preds = %302, %300
  %305 = phi i64 [ %301, %300 ], [ %303, %302 ]
  store i64 %305, ptr %62, align 8, !tbaa !9
  %306 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %306, ptr %34, align 8, !tbaa !9
  %307 = load ptr, ptr %17, align 8, !tbaa !5
  %308 = load i64, ptr %307, align 8, !tbaa !9
  %309 = load ptr, ptr %18, align 8, !tbaa !5
  %310 = load i64, ptr %309, align 8, !tbaa !9
  %311 = mul nsw i64 %308, %310
  store i64 %311, ptr %35, align 8, !tbaa !9
  %312 = load i64, ptr %34, align 8, !tbaa !9
  %313 = load i64, ptr %35, align 8, !tbaa !9
  %314 = icmp sge i64 %312, %313
  br i1 %314, label %315, label %317

315:                                              ; preds = %304
  %316 = load i64, ptr %34, align 8, !tbaa !9
  br label %319

317:                                              ; preds = %304
  %318 = load i64, ptr %35, align 8, !tbaa !9
  br label %319

319:                                              ; preds = %317, %315
  %320 = phi i64 [ %316, %315 ], [ %318, %317 ]
  store i64 %320, ptr %62, align 8, !tbaa !9
  %321 = load ptr, ptr %17, align 8, !tbaa !5
  %322 = load i64, ptr %321, align 8, !tbaa !9
  %323 = shl i64 %322, 1
  %324 = load ptr, ptr %18, align 8, !tbaa !5
  %325 = load i64, ptr %324, align 8, !tbaa !9
  %326 = load ptr, ptr %16, align 8, !tbaa !5
  %327 = load i64, ptr %326, align 8, !tbaa !9
  %328 = icmp sge i64 %325, %327
  br i1 %328, label %329, label %332

329:                                              ; preds = %319
  %330 = load ptr, ptr %18, align 8, !tbaa !5
  %331 = load i64, ptr %330, align 8, !tbaa !9
  br label %335

332:                                              ; preds = %319
  %333 = load ptr, ptr %16, align 8, !tbaa !5
  %334 = load i64, ptr %333, align 8, !tbaa !9
  br label %335

335:                                              ; preds = %332, %329
  %336 = phi i64 [ %331, %329 ], [ %334, %332 ]
  %337 = add nsw i64 %323, %336
  store i64 %337, ptr %61, align 8, !tbaa !9
  br label %338

338:                                              ; preds = %335, %236
  %339 = load ptr, ptr %17, align 8, !tbaa !5
  %340 = load i64, ptr %339, align 8, !tbaa !9
  %341 = load ptr, ptr %16, align 8, !tbaa !5
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = icmp sgt i64 %340, %342
  br i1 %343, label %344, label %599

344:                                              ; preds = %338
  %345 = load ptr, ptr %16, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = shl i64 %346, 1
  %348 = load ptr, ptr %18, align 8, !tbaa !5
  %349 = load i64, ptr %348, align 8, !tbaa !9
  %350 = load ptr, ptr %17, align 8, !tbaa !5
  %351 = load i64, ptr %350, align 8, !tbaa !9
  %352 = icmp sge i64 %349, %351
  br i1 %352, label %353, label %356

353:                                              ; preds = %344
  %354 = load ptr, ptr %18, align 8, !tbaa !5
  %355 = load i64, ptr %354, align 8, !tbaa !9
  br label %359

356:                                              ; preds = %344
  %357 = load ptr, ptr %17, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  br label %359

359:                                              ; preds = %356, %353
  %360 = phi i64 [ %355, %353 ], [ %358, %356 ]
  %361 = add nsw i64 %347, %360
  store i64 %361, ptr %61, align 8, !tbaa !9
  %362 = load ptr, ptr %17, align 8, !tbaa !5
  %363 = load i64, ptr %362, align 8, !tbaa !9
  %364 = load i64, ptr %57, align 8, !tbaa !9
  %365 = icmp sge i64 %363, %364
  br i1 %365, label %366, label %527

366:                                              ; preds = %359
  %367 = load ptr, ptr %16, align 8, !tbaa !5
  %368 = load i64, ptr %367, align 8, !tbaa !9
  %369 = load ptr, ptr %16, align 8, !tbaa !5
  %370 = load i64, ptr %369, align 8, !tbaa !9
  %371 = load ptr, ptr %16, align 8, !tbaa !5
  %372 = load ptr, ptr %17, align 8, !tbaa !5
  %373 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.10, ptr noundef @.str.1, ptr noundef %371, ptr noundef %372, ptr noundef @c_n1, ptr noundef @c_n1)
  %374 = mul nsw i64 %370, %373
  %375 = add nsw i64 %368, %374
  store i64 %375, ptr %62, align 8, !tbaa !9
  %376 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %376, ptr %34, align 8, !tbaa !9
  %377 = load ptr, ptr %16, align 8, !tbaa !5
  %378 = load i64, ptr %377, align 8, !tbaa !9
  %379 = mul nsw i64 %378, 3
  %380 = load ptr, ptr %16, align 8, !tbaa !5
  %381 = load i64, ptr %380, align 8, !tbaa !9
  %382 = load ptr, ptr %16, align 8, !tbaa !5
  %383 = load i64, ptr %382, align 8, !tbaa !9
  %384 = mul nsw i64 %381, %383
  %385 = add nsw i64 %379, %384
  %386 = load ptr, ptr %16, align 8, !tbaa !5
  %387 = load i64, ptr %386, align 8, !tbaa !9
  %388 = shl i64 %387, 1
  %389 = load ptr, ptr %16, align 8, !tbaa !5
  %390 = load ptr, ptr %16, align 8, !tbaa !5
  %391 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef %389, ptr noundef %390, ptr noundef @c_n1, ptr noundef @c_n1)
  %392 = mul nsw i64 %388, %391
  %393 = add nsw i64 %385, %392
  store i64 %393, ptr %35, align 8, !tbaa !9
  %394 = load i64, ptr %34, align 8, !tbaa !9
  %395 = load i64, ptr %35, align 8, !tbaa !9
  %396 = icmp sge i64 %394, %395
  br i1 %396, label %397, label %399

397:                                              ; preds = %366
  %398 = load i64, ptr %34, align 8, !tbaa !9
  br label %401

399:                                              ; preds = %366
  %400 = load i64, ptr %35, align 8, !tbaa !9
  br label %401

401:                                              ; preds = %399, %397
  %402 = phi i64 [ %398, %397 ], [ %400, %399 ]
  store i64 %402, ptr %62, align 8, !tbaa !9
  %403 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %403, ptr %34, align 8, !tbaa !9
  %404 = load ptr, ptr %16, align 8, !tbaa !5
  %405 = load i64, ptr %404, align 8, !tbaa !9
  %406 = mul nsw i64 %405, 3
  %407 = load ptr, ptr %16, align 8, !tbaa !5
  %408 = load i64, ptr %407, align 8, !tbaa !9
  %409 = load ptr, ptr %16, align 8, !tbaa !5
  %410 = load i64, ptr %409, align 8, !tbaa !9
  %411 = mul nsw i64 %408, %410
  %412 = add nsw i64 %406, %411
  %413 = load ptr, ptr %18, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = load ptr, ptr %16, align 8, !tbaa !5
  %416 = load ptr, ptr %18, align 8, !tbaa !5
  %417 = load ptr, ptr %16, align 8, !tbaa !5
  %418 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %415, ptr noundef %416, ptr noundef %417, ptr noundef @c_n1)
  %419 = mul nsw i64 %414, %418
  %420 = add nsw i64 %412, %419
  store i64 %420, ptr %35, align 8, !tbaa !9
  %421 = load i64, ptr %34, align 8, !tbaa !9
  %422 = load i64, ptr %35, align 8, !tbaa !9
  %423 = icmp sge i64 %421, %422
  br i1 %423, label %424, label %426

424:                                              ; preds = %401
  %425 = load i64, ptr %34, align 8, !tbaa !9
  br label %428

426:                                              ; preds = %401
  %427 = load i64, ptr %35, align 8, !tbaa !9
  br label %428

428:                                              ; preds = %426, %424
  %429 = phi i64 [ %425, %424 ], [ %427, %426 ]
  store i64 %429, ptr %62, align 8, !tbaa !9
  %430 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %430, ptr %34, align 8, !tbaa !9
  %431 = load ptr, ptr %16, align 8, !tbaa !5
  %432 = load i64, ptr %431, align 8, !tbaa !9
  %433 = mul nsw i64 %432, 3
  %434 = load ptr, ptr %16, align 8, !tbaa !5
  %435 = load i64, ptr %434, align 8, !tbaa !9
  %436 = load ptr, ptr %16, align 8, !tbaa !5
  %437 = load i64, ptr %436, align 8, !tbaa !9
  %438 = mul nsw i64 %435, %437
  %439 = add nsw i64 %433, %438
  %440 = load ptr, ptr %16, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  %442 = sub nsw i64 %441, 1
  %443 = load ptr, ptr %16, align 8, !tbaa !5
  %444 = load ptr, ptr %16, align 8, !tbaa !5
  %445 = load ptr, ptr %16, align 8, !tbaa !5
  %446 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef %443, ptr noundef %444, ptr noundef %445, ptr noundef @c_n1)
  %447 = mul nsw i64 %442, %446
  %448 = add nsw i64 %439, %447
  store i64 %448, ptr %35, align 8, !tbaa !9
  %449 = load i64, ptr %34, align 8, !tbaa !9
  %450 = load i64, ptr %35, align 8, !tbaa !9
  %451 = icmp sge i64 %449, %450
  br i1 %451, label %452, label %454

452:                                              ; preds = %428
  %453 = load i64, ptr %34, align 8, !tbaa !9
  br label %456

454:                                              ; preds = %428
  %455 = load i64, ptr %35, align 8, !tbaa !9
  br label %456

456:                                              ; preds = %454, %452
  %457 = phi i64 [ %453, %452 ], [ %455, %454 ]
  store i64 %457, ptr %62, align 8, !tbaa !9
  %458 = load ptr, ptr %18, align 8, !tbaa !5
  %459 = load i64, ptr %458, align 8, !tbaa !9
  %460 = icmp sgt i64 %459, 1
  br i1 %460, label %461, label %486

461:                                              ; preds = %456
  %462 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %462, ptr %34, align 8, !tbaa !9
  %463 = load ptr, ptr %16, align 8, !tbaa !5
  %464 = load i64, ptr %463, align 8, !tbaa !9
  %465 = load ptr, ptr %16, align 8, !tbaa !5
  %466 = load i64, ptr %465, align 8, !tbaa !9
  %467 = mul nsw i64 %464, %466
  %468 = load ptr, ptr %16, align 8, !tbaa !5
  %469 = load i64, ptr %468, align 8, !tbaa !9
  %470 = add nsw i64 %467, %469
  %471 = load ptr, ptr %16, align 8, !tbaa !5
  %472 = load i64, ptr %471, align 8, !tbaa !9
  %473 = load ptr, ptr %18, align 8, !tbaa !5
  %474 = load i64, ptr %473, align 8, !tbaa !9
  %475 = mul nsw i64 %472, %474
  %476 = add nsw i64 %470, %475
  store i64 %476, ptr %35, align 8, !tbaa !9
  %477 = load i64, ptr %34, align 8, !tbaa !9
  %478 = load i64, ptr %35, align 8, !tbaa !9
  %479 = icmp sge i64 %477, %478
  br i1 %479, label %480, label %482

480:                                              ; preds = %461
  %481 = load i64, ptr %34, align 8, !tbaa !9
  br label %484

482:                                              ; preds = %461
  %483 = load i64, ptr %35, align 8, !tbaa !9
  br label %484

484:                                              ; preds = %482, %480
  %485 = phi i64 [ %481, %480 ], [ %483, %482 ]
  store i64 %485, ptr %62, align 8, !tbaa !9
  br label %506

486:                                              ; preds = %456
  %487 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %487, ptr %34, align 8, !tbaa !9
  %488 = load ptr, ptr %16, align 8, !tbaa !5
  %489 = load i64, ptr %488, align 8, !tbaa !9
  %490 = load ptr, ptr %16, align 8, !tbaa !5
  %491 = load i64, ptr %490, align 8, !tbaa !9
  %492 = mul nsw i64 %489, %491
  %493 = load ptr, ptr %16, align 8, !tbaa !5
  %494 = load i64, ptr %493, align 8, !tbaa !9
  %495 = shl i64 %494, 1
  %496 = add nsw i64 %492, %495
  store i64 %496, ptr %35, align 8, !tbaa !9
  %497 = load i64, ptr %34, align 8, !tbaa !9
  %498 = load i64, ptr %35, align 8, !tbaa !9
  %499 = icmp sge i64 %497, %498
  br i1 %499, label %500, label %502

500:                                              ; preds = %486
  %501 = load i64, ptr %34, align 8, !tbaa !9
  br label %504

502:                                              ; preds = %486
  %503 = load i64, ptr %35, align 8, !tbaa !9
  br label %504

504:                                              ; preds = %502, %500
  %505 = phi i64 [ %501, %500 ], [ %503, %502 ]
  store i64 %505, ptr %62, align 8, !tbaa !9
  br label %506

506:                                              ; preds = %504, %484
  %507 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %507, ptr %34, align 8, !tbaa !9
  %508 = load ptr, ptr %16, align 8, !tbaa !5
  %509 = load i64, ptr %508, align 8, !tbaa !9
  %510 = load ptr, ptr %18, align 8, !tbaa !5
  %511 = load i64, ptr %510, align 8, !tbaa !9
  %512 = load ptr, ptr %17, align 8, !tbaa !5
  %513 = load ptr, ptr %18, align 8, !tbaa !5
  %514 = load ptr, ptr %16, align 8, !tbaa !5
  %515 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.11, ptr noundef @.str.4, ptr noundef %512, ptr noundef %513, ptr noundef %514, ptr noundef @c_n1)
  %516 = mul nsw i64 %511, %515
  %517 = add nsw i64 %509, %516
  store i64 %517, ptr %35, align 8, !tbaa !9
  %518 = load i64, ptr %34, align 8, !tbaa !9
  %519 = load i64, ptr %35, align 8, !tbaa !9
  %520 = icmp sge i64 %518, %519
  br i1 %520, label %521, label %523

521:                                              ; preds = %506
  %522 = load i64, ptr %34, align 8, !tbaa !9
  br label %525

523:                                              ; preds = %506
  %524 = load i64, ptr %35, align 8, !tbaa !9
  br label %525

525:                                              ; preds = %523, %521
  %526 = phi i64 [ %522, %521 ], [ %524, %523 ]
  store i64 %526, ptr %62, align 8, !tbaa !9
  br label %598

527:                                              ; preds = %359
  %528 = load ptr, ptr %16, align 8, !tbaa !5
  %529 = load i64, ptr %528, align 8, !tbaa !9
  %530 = shl i64 %529, 1
  %531 = load ptr, ptr %17, align 8, !tbaa !5
  %532 = load i64, ptr %531, align 8, !tbaa !9
  %533 = load ptr, ptr %16, align 8, !tbaa !5
  %534 = load i64, ptr %533, align 8, !tbaa !9
  %535 = add nsw i64 %532, %534
  %536 = load ptr, ptr %16, align 8, !tbaa !5
  %537 = load ptr, ptr %17, align 8, !tbaa !5
  %538 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.5, ptr noundef @.str.1, ptr noundef %536, ptr noundef %537, ptr noundef @c_n1, ptr noundef @c_n1)
  %539 = mul nsw i64 %535, %538
  %540 = add nsw i64 %530, %539
  store i64 %540, ptr %62, align 8, !tbaa !9
  %541 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %541, ptr %34, align 8, !tbaa !9
  %542 = load ptr, ptr %16, align 8, !tbaa !5
  %543 = load i64, ptr %542, align 8, !tbaa !9
  %544 = shl i64 %543, 1
  %545 = load ptr, ptr %18, align 8, !tbaa !5
  %546 = load i64, ptr %545, align 8, !tbaa !9
  %547 = load ptr, ptr %16, align 8, !tbaa !5
  %548 = load ptr, ptr %18, align 8, !tbaa !5
  %549 = load ptr, ptr %16, align 8, !tbaa !5
  %550 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %547, ptr noundef %548, ptr noundef %549, ptr noundef @c_n1)
  %551 = mul nsw i64 %546, %550
  %552 = add nsw i64 %544, %551
  store i64 %552, ptr %35, align 8, !tbaa !9
  %553 = load i64, ptr %34, align 8, !tbaa !9
  %554 = load i64, ptr %35, align 8, !tbaa !9
  %555 = icmp sge i64 %553, %554
  br i1 %555, label %556, label %558

556:                                              ; preds = %527
  %557 = load i64, ptr %34, align 8, !tbaa !9
  br label %560

558:                                              ; preds = %527
  %559 = load i64, ptr %35, align 8, !tbaa !9
  br label %560

560:                                              ; preds = %558, %556
  %561 = phi i64 [ %557, %556 ], [ %559, %558 ]
  store i64 %561, ptr %62, align 8, !tbaa !9
  %562 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %562, ptr %34, align 8, !tbaa !9
  %563 = load ptr, ptr %16, align 8, !tbaa !5
  %564 = load i64, ptr %563, align 8, !tbaa !9
  %565 = shl i64 %564, 1
  %566 = load ptr, ptr %16, align 8, !tbaa !5
  %567 = load i64, ptr %566, align 8, !tbaa !9
  %568 = load ptr, ptr %16, align 8, !tbaa !5
  %569 = load ptr, ptr %17, align 8, !tbaa !5
  %570 = load ptr, ptr %16, align 8, !tbaa !5
  %571 = call i64 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.8, ptr noundef @.str.9, ptr noundef %568, ptr noundef %569, ptr noundef %570, ptr noundef @c_n1)
  %572 = mul nsw i64 %567, %571
  %573 = add nsw i64 %565, %572
  store i64 %573, ptr %35, align 8, !tbaa !9
  %574 = load i64, ptr %34, align 8, !tbaa !9
  %575 = load i64, ptr %35, align 8, !tbaa !9
  %576 = icmp sge i64 %574, %575
  br i1 %576, label %577, label %579

577:                                              ; preds = %560
  %578 = load i64, ptr %34, align 8, !tbaa !9
  br label %581

579:                                              ; preds = %560
  %580 = load i64, ptr %35, align 8, !tbaa !9
  br label %581

581:                                              ; preds = %579, %577
  %582 = phi i64 [ %578, %577 ], [ %580, %579 ]
  store i64 %582, ptr %62, align 8, !tbaa !9
  %583 = load i64, ptr %62, align 8, !tbaa !9
  store i64 %583, ptr %34, align 8, !tbaa !9
  %584 = load ptr, ptr %17, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  %586 = load ptr, ptr %18, align 8, !tbaa !5
  %587 = load i64, ptr %586, align 8, !tbaa !9
  %588 = mul nsw i64 %585, %587
  store i64 %588, ptr %35, align 8, !tbaa !9
  %589 = load i64, ptr %34, align 8, !tbaa !9
  %590 = load i64, ptr %35, align 8, !tbaa !9
  %591 = icmp sge i64 %589, %590
  br i1 %591, label %592, label %594

592:                                              ; preds = %581
  %593 = load i64, ptr %34, align 8, !tbaa !9
  br label %596

594:                                              ; preds = %581
  %595 = load i64, ptr %35, align 8, !tbaa !9
  br label %596

596:                                              ; preds = %594, %592
  %597 = phi i64 [ %593, %592 ], [ %595, %594 ]
  store i64 %597, ptr %62, align 8, !tbaa !9
  br label %598

598:                                              ; preds = %596, %525
  br label %599

599:                                              ; preds = %598, %338
  %600 = load i64, ptr %61, align 8, !tbaa !9
  %601 = load i64, ptr %62, align 8, !tbaa !9
  %602 = icmp sge i64 %600, %601
  br i1 %602, label %603, label %605

603:                                              ; preds = %599
  %604 = load i64, ptr %61, align 8, !tbaa !9
  br label %607

605:                                              ; preds = %599
  %606 = load i64, ptr %62, align 8, !tbaa !9
  br label %607

607:                                              ; preds = %605, %603
  %608 = phi i64 [ %604, %603 ], [ %606, %605 ]
  store i64 %608, ptr %62, align 8, !tbaa !9
  br label %609

609:                                              ; preds = %607, %174
  %610 = load i64, ptr %62, align 8, !tbaa !9
  %611 = sitofp i64 %610 to double
  %612 = load ptr, ptr %26, align 8, !tbaa !5
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %612, i64 1
  %614 = getelementptr inbounds %struct.doublecomplex, ptr %613, i32 0, i32 0
  store double %611, ptr %614, align 8, !tbaa !11
  %615 = load ptr, ptr %26, align 8, !tbaa !5
  %616 = getelementptr inbounds %struct.doublecomplex, ptr %615, i64 1
  %617 = getelementptr inbounds %struct.doublecomplex, ptr %616, i32 0, i32 1
  store double 0.000000e+00, ptr %617, align 8, !tbaa !14
  %618 = load ptr, ptr %27, align 8, !tbaa !5
  %619 = load i64, ptr %618, align 8, !tbaa !9
  %620 = load i64, ptr %61, align 8, !tbaa !9
  %621 = icmp slt i64 %619, %620
  br i1 %621, label %622, label %627

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

625:                                              ; preds = %622
  %626 = load ptr, ptr %29, align 8, !tbaa !5
  store i64 -12, ptr %626, align 8, !tbaa !9
  br label %627

627:                                              ; preds = %625, %622, %609
  br label %628

628:                                              ; preds = %627, %170
  %629 = load ptr, ptr %29, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  %631 = icmp ne i64 %630, 0
  br i1 %631, label %632, label %637

632:                                              ; preds = %628
  %633 = load ptr, ptr %29, align 8, !tbaa !5
  %634 = load i64, ptr %633, align 8, !tbaa !9
  %635 = sub nsw i64 0, %634
  store i64 %635, ptr %34, align 8, !tbaa !9
  %636 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %34)
  store i32 0, ptr %15, align 4
  store i32 1, ptr %66, align 4
  br label %2095

637:                                              ; preds = %628
  %638 = load i64, ptr %65, align 8, !tbaa !9
  %639 = icmp ne i64 %638, 0
  br i1 %639, label %640, label %641

640:                                              ; preds = %637
  store i32 0, ptr %15, align 4
  store i32 1, ptr %66, align 4
  br label %2095

641:                                              ; preds = %637
  br label %642

642:                                              ; preds = %641
  %643 = load ptr, ptr %16, align 8, !tbaa !5
  %644 = load i64, ptr %643, align 8, !tbaa !9
  %645 = icmp eq i64 %644, 0
  br i1 %645, label %650, label %646

646:                                              ; preds = %642
  %647 = load ptr, ptr %17, align 8, !tbaa !5
  %648 = load i64, ptr %647, align 8, !tbaa !9
  %649 = icmp eq i64 %648, 0
  br i1 %649, label %650, label %652

650:                                              ; preds = %646, %642
  %651 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 0, ptr %651, align 8, !tbaa !9
  store i32 0, ptr %15, align 4
  store i32 1, ptr %66, align 4
  br label %2095

652:                                              ; preds = %646
  %653 = call double @dlamch_(ptr noundef @.str.9)
  store double %653, ptr %43, align 8, !tbaa !15
  %654 = call double @dlamch_(ptr noundef @.str.12)
  store double %654, ptr %52, align 8, !tbaa !15
  %655 = load double, ptr %52, align 8, !tbaa !15
  %656 = load double, ptr %43, align 8, !tbaa !15
  %657 = fdiv double %655, %656
  store double %657, ptr %63, align 8, !tbaa !15
  %658 = load double, ptr %63, align 8, !tbaa !15
  %659 = fdiv double 1.000000e+00, %658
  store double %659, ptr %59, align 8, !tbaa !15
  %660 = call i32 @dlabad_(ptr noundef %63, ptr noundef %59)
  %661 = load ptr, ptr %16, align 8, !tbaa !5
  %662 = load ptr, ptr %17, align 8, !tbaa !5
  %663 = load ptr, ptr %19, align 8, !tbaa !5
  %664 = load i64, ptr %31, align 8, !tbaa !9
  %665 = getelementptr inbounds %struct.doublecomplex, ptr %663, i64 %664
  %666 = load ptr, ptr %20, align 8, !tbaa !5
  %667 = load ptr, ptr %28, align 8, !tbaa !5
  %668 = getelementptr inbounds double, ptr %667, i64 1
  %669 = call double @zlange_(ptr noundef @.str.13, ptr noundef %661, ptr noundef %662, ptr noundef %665, ptr noundef %666, ptr noundef %668)
  store double %669, ptr %45, align 8, !tbaa !15
  store i64 0, ptr %49, align 8, !tbaa !9
  %670 = load double, ptr %45, align 8, !tbaa !15
  %671 = fcmp ogt double %670, 0.000000e+00
  br i1 %671, label %672, label %685

672:                                              ; preds = %652
  %673 = load double, ptr %45, align 8, !tbaa !15
  %674 = load double, ptr %63, align 8, !tbaa !15
  %675 = fcmp olt double %673, %674
  br i1 %675, label %676, label %685

676:                                              ; preds = %672
  %677 = load ptr, ptr %16, align 8, !tbaa !5
  %678 = load ptr, ptr %17, align 8, !tbaa !5
  %679 = load ptr, ptr %19, align 8, !tbaa !5
  %680 = load i64, ptr %31, align 8, !tbaa !9
  %681 = getelementptr inbounds %struct.doublecomplex, ptr %679, i64 %680
  %682 = load ptr, ptr %20, align 8, !tbaa !5
  %683 = load ptr, ptr %29, align 8, !tbaa !5
  %684 = call i32 @zlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %45, ptr noundef %63, ptr noundef %677, ptr noundef %678, ptr noundef %681, ptr noundef %682, ptr noundef %683)
  store i64 1, ptr %49, align 8, !tbaa !9
  br label %727

685:                                              ; preds = %672, %652
  %686 = load double, ptr %45, align 8, !tbaa !15
  %687 = load double, ptr %59, align 8, !tbaa !15
  %688 = fcmp ogt double %686, %687
  br i1 %688, label %689, label %698

689:                                              ; preds = %685
  %690 = load ptr, ptr %16, align 8, !tbaa !5
  %691 = load ptr, ptr %17, align 8, !tbaa !5
  %692 = load ptr, ptr %19, align 8, !tbaa !5
  %693 = load i64, ptr %31, align 8, !tbaa !9
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %692, i64 %693
  %695 = load ptr, ptr %20, align 8, !tbaa !5
  %696 = load ptr, ptr %29, align 8, !tbaa !5
  %697 = call i32 @zlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %45, ptr noundef %59, ptr noundef %690, ptr noundef %691, ptr noundef %694, ptr noundef %695, ptr noundef %696)
  store i64 2, ptr %49, align 8, !tbaa !9
  br label %726

698:                                              ; preds = %685
  %699 = load double, ptr %45, align 8, !tbaa !15
  %700 = fcmp oeq double %699, 0.000000e+00
  br i1 %700, label %701, label %725

701:                                              ; preds = %698
  %702 = load ptr, ptr %16, align 8, !tbaa !5
  %703 = load i64, ptr %702, align 8, !tbaa !9
  %704 = load ptr, ptr %17, align 8, !tbaa !5
  %705 = load i64, ptr %704, align 8, !tbaa !9
  %706 = icmp sge i64 %703, %705
  br i1 %706, label %707, label %710

707:                                              ; preds = %701
  %708 = load ptr, ptr %16, align 8, !tbaa !5
  %709 = load i64, ptr %708, align 8, !tbaa !9
  br label %713

710:                                              ; preds = %701
  %711 = load ptr, ptr %17, align 8, !tbaa !5
  %712 = load i64, ptr %711, align 8, !tbaa !9
  br label %713

713:                                              ; preds = %710, %707
  %714 = phi i64 [ %709, %707 ], [ %712, %710 ]
  store i64 %714, ptr %34, align 8, !tbaa !9
  %715 = load ptr, ptr %18, align 8, !tbaa !5
  %716 = load ptr, ptr %21, align 8, !tbaa !5
  %717 = load i64, ptr %33, align 8, !tbaa !9
  %718 = getelementptr inbounds %struct.doublecomplex, ptr %716, i64 %717
  %719 = load ptr, ptr %22, align 8, !tbaa !5
  %720 = call i32 @zlaset_(ptr noundef @.str.15, ptr noundef %34, ptr noundef %715, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %718, ptr noundef %719)
  %721 = load ptr, ptr %23, align 8, !tbaa !5
  %722 = getelementptr inbounds double, ptr %721, i64 1
  %723 = call i32 @dlaset_(ptr noundef @.str.15, ptr noundef %53, ptr noundef @c__1, ptr noundef @c_b78, ptr noundef @c_b78, ptr noundef %722, ptr noundef %53)
  %724 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 0, ptr %724, align 8, !tbaa !9
  br label %2086

725:                                              ; preds = %698
  br label %726

726:                                              ; preds = %725, %689
  br label %727

727:                                              ; preds = %726, %676
  %728 = load ptr, ptr %16, align 8, !tbaa !5
  %729 = load ptr, ptr %18, align 8, !tbaa !5
  %730 = load ptr, ptr %21, align 8, !tbaa !5
  %731 = load i64, ptr %33, align 8, !tbaa !9
  %732 = getelementptr inbounds %struct.doublecomplex, ptr %730, i64 %731
  %733 = load ptr, ptr %22, align 8, !tbaa !5
  %734 = load ptr, ptr %28, align 8, !tbaa !5
  %735 = getelementptr inbounds double, ptr %734, i64 1
  %736 = call double @zlange_(ptr noundef @.str.13, ptr noundef %728, ptr noundef %729, ptr noundef %732, ptr noundef %733, ptr noundef %735)
  store double %736, ptr %46, align 8, !tbaa !15
  store i64 0, ptr %50, align 8, !tbaa !9
  %737 = load double, ptr %46, align 8, !tbaa !15
  %738 = fcmp ogt double %737, 0.000000e+00
  br i1 %738, label %739, label %752

739:                                              ; preds = %727
  %740 = load double, ptr %46, align 8, !tbaa !15
  %741 = load double, ptr %63, align 8, !tbaa !15
  %742 = fcmp olt double %740, %741
  br i1 %742, label %743, label %752

743:                                              ; preds = %739
  %744 = load ptr, ptr %16, align 8, !tbaa !5
  %745 = load ptr, ptr %18, align 8, !tbaa !5
  %746 = load ptr, ptr %21, align 8, !tbaa !5
  %747 = load i64, ptr %33, align 8, !tbaa !9
  %748 = getelementptr inbounds %struct.doublecomplex, ptr %746, i64 %747
  %749 = load ptr, ptr %22, align 8, !tbaa !5
  %750 = load ptr, ptr %29, align 8, !tbaa !5
  %751 = call i32 @zlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %46, ptr noundef %63, ptr noundef %744, ptr noundef %745, ptr noundef %748, ptr noundef %749, ptr noundef %750)
  store i64 1, ptr %50, align 8, !tbaa !9
  br label %766

752:                                              ; preds = %739, %727
  %753 = load double, ptr %46, align 8, !tbaa !15
  %754 = load double, ptr %59, align 8, !tbaa !15
  %755 = fcmp ogt double %753, %754
  br i1 %755, label %756, label %765

756:                                              ; preds = %752
  %757 = load ptr, ptr %16, align 8, !tbaa !5
  %758 = load ptr, ptr %18, align 8, !tbaa !5
  %759 = load ptr, ptr %21, align 8, !tbaa !5
  %760 = load i64, ptr %33, align 8, !tbaa !9
  %761 = getelementptr inbounds %struct.doublecomplex, ptr %759, i64 %760
  %762 = load ptr, ptr %22, align 8, !tbaa !5
  %763 = load ptr, ptr %29, align 8, !tbaa !5
  %764 = call i32 @zlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %46, ptr noundef %59, ptr noundef %757, ptr noundef %758, ptr noundef %761, ptr noundef %762, ptr noundef %763)
  store i64 2, ptr %50, align 8, !tbaa !9
  br label %765

765:                                              ; preds = %756, %752
  br label %766

766:                                              ; preds = %765, %743
  %767 = load ptr, ptr %16, align 8, !tbaa !5
  %768 = load i64, ptr %767, align 8, !tbaa !9
  %769 = load ptr, ptr %17, align 8, !tbaa !5
  %770 = load i64, ptr %769, align 8, !tbaa !9
  %771 = icmp sge i64 %768, %770
  br i1 %771, label %772, label %1170

772:                                              ; preds = %766
  %773 = load ptr, ptr %16, align 8, !tbaa !5
  %774 = load i64, ptr %773, align 8, !tbaa !9
  store i64 %774, ptr %42, align 8, !tbaa !9
  %775 = load ptr, ptr %16, align 8, !tbaa !5
  %776 = load i64, ptr %775, align 8, !tbaa !9
  %777 = load i64, ptr %57, align 8, !tbaa !9
  %778 = icmp sge i64 %776, %777
  br i1 %778, label %779, label %846

779:                                              ; preds = %772
  %780 = load ptr, ptr %17, align 8, !tbaa !5
  %781 = load i64, ptr %780, align 8, !tbaa !9
  store i64 %781, ptr %42, align 8, !tbaa !9
  store i64 1, ptr %47, align 8, !tbaa !9
  %782 = load i64, ptr %47, align 8, !tbaa !9
  %783 = load ptr, ptr %17, align 8, !tbaa !5
  %784 = load i64, ptr %783, align 8, !tbaa !9
  %785 = add nsw i64 %782, %784
  store i64 %785, ptr %58, align 8, !tbaa !9
  %786 = load ptr, ptr %27, align 8, !tbaa !5
  %787 = load i64, ptr %786, align 8, !tbaa !9
  %788 = load i64, ptr %58, align 8, !tbaa !9
  %789 = sub nsw i64 %787, %788
  %790 = add nsw i64 %789, 1
  store i64 %790, ptr %34, align 8, !tbaa !9
  %791 = load ptr, ptr %16, align 8, !tbaa !5
  %792 = load ptr, ptr %17, align 8, !tbaa !5
  %793 = load ptr, ptr %19, align 8, !tbaa !5
  %794 = load i64, ptr %31, align 8, !tbaa !9
  %795 = getelementptr inbounds %struct.doublecomplex, ptr %793, i64 %794
  %796 = load ptr, ptr %20, align 8, !tbaa !5
  %797 = load ptr, ptr %26, align 8, !tbaa !5
  %798 = load i64, ptr %47, align 8, !tbaa !9
  %799 = getelementptr inbounds %struct.doublecomplex, ptr %797, i64 %798
  %800 = load ptr, ptr %26, align 8, !tbaa !5
  %801 = load i64, ptr %58, align 8, !tbaa !9
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %800, i64 %801
  %803 = load ptr, ptr %29, align 8, !tbaa !5
  %804 = call i32 @zgeqrf_(ptr noundef %791, ptr noundef %792, ptr noundef %795, ptr noundef %796, ptr noundef %799, ptr noundef %802, ptr noundef %34, ptr noundef %803)
  %805 = load ptr, ptr %27, align 8, !tbaa !5
  %806 = load i64, ptr %805, align 8, !tbaa !9
  %807 = load i64, ptr %58, align 8, !tbaa !9
  %808 = sub nsw i64 %806, %807
  %809 = add nsw i64 %808, 1
  store i64 %809, ptr %34, align 8, !tbaa !9
  %810 = load ptr, ptr %16, align 8, !tbaa !5
  %811 = load ptr, ptr %18, align 8, !tbaa !5
  %812 = load ptr, ptr %17, align 8, !tbaa !5
  %813 = load ptr, ptr %19, align 8, !tbaa !5
  %814 = load i64, ptr %31, align 8, !tbaa !9
  %815 = getelementptr inbounds %struct.doublecomplex, ptr %813, i64 %814
  %816 = load ptr, ptr %20, align 8, !tbaa !5
  %817 = load ptr, ptr %26, align 8, !tbaa !5
  %818 = load i64, ptr %47, align 8, !tbaa !9
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %817, i64 %818
  %820 = load ptr, ptr %21, align 8, !tbaa !5
  %821 = load i64, ptr %33, align 8, !tbaa !9
  %822 = getelementptr inbounds %struct.doublecomplex, ptr %820, i64 %821
  %823 = load ptr, ptr %22, align 8, !tbaa !5
  %824 = load ptr, ptr %26, align 8, !tbaa !5
  %825 = load i64, ptr %58, align 8, !tbaa !9
  %826 = getelementptr inbounds %struct.doublecomplex, ptr %824, i64 %825
  %827 = load ptr, ptr %29, align 8, !tbaa !5
  %828 = call i32 @zunmqr_(ptr noundef @.str.16, ptr noundef @.str.17, ptr noundef %810, ptr noundef %811, ptr noundef %812, ptr noundef %815, ptr noundef %816, ptr noundef %819, ptr noundef %822, ptr noundef %823, ptr noundef %826, ptr noundef %34, ptr noundef %827)
  %829 = load ptr, ptr %17, align 8, !tbaa !5
  %830 = load i64, ptr %829, align 8, !tbaa !9
  %831 = icmp sgt i64 %830, 1
  br i1 %831, label %832, label %845

832:                                              ; preds = %779
  %833 = load ptr, ptr %17, align 8, !tbaa !5
  %834 = load i64, ptr %833, align 8, !tbaa !9
  %835 = sub nsw i64 %834, 1
  store i64 %835, ptr %34, align 8, !tbaa !9
  %836 = load ptr, ptr %17, align 8, !tbaa !5
  %837 = load i64, ptr %836, align 8, !tbaa !9
  %838 = sub nsw i64 %837, 1
  store i64 %838, ptr %35, align 8, !tbaa !9
  %839 = load ptr, ptr %19, align 8, !tbaa !5
  %840 = load i64, ptr %30, align 8, !tbaa !9
  %841 = add nsw i64 %840, 2
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %839, i64 %841
  %843 = load ptr, ptr %20, align 8, !tbaa !5
  %844 = call i32 @zlaset_(ptr noundef @.str.16, ptr noundef %34, ptr noundef %35, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %842, ptr noundef %843)
  br label %845

845:                                              ; preds = %832, %779
  br label %846

846:                                              ; preds = %845, %772
  store i64 1, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  %847 = load i64, ptr %56, align 8, !tbaa !9
  %848 = load ptr, ptr %17, align 8, !tbaa !5
  %849 = load i64, ptr %848, align 8, !tbaa !9
  %850 = add nsw i64 %847, %849
  store i64 %850, ptr %55, align 8, !tbaa !9
  %851 = load i64, ptr %55, align 8, !tbaa !9
  %852 = load ptr, ptr %17, align 8, !tbaa !5
  %853 = load i64, ptr %852, align 8, !tbaa !9
  %854 = add nsw i64 %851, %853
  store i64 %854, ptr %58, align 8, !tbaa !9
  %855 = load ptr, ptr %27, align 8, !tbaa !5
  %856 = load i64, ptr %855, align 8, !tbaa !9
  %857 = load i64, ptr %58, align 8, !tbaa !9
  %858 = sub nsw i64 %856, %857
  %859 = add nsw i64 %858, 1
  store i64 %859, ptr %34, align 8, !tbaa !9
  %860 = load ptr, ptr %17, align 8, !tbaa !5
  %861 = load ptr, ptr %19, align 8, !tbaa !5
  %862 = load i64, ptr %31, align 8, !tbaa !9
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %861, i64 %862
  %864 = load ptr, ptr %20, align 8, !tbaa !5
  %865 = load ptr, ptr %23, align 8, !tbaa !5
  %866 = getelementptr inbounds double, ptr %865, i64 1
  %867 = load ptr, ptr %28, align 8, !tbaa !5
  %868 = load i64, ptr %40, align 8, !tbaa !9
  %869 = getelementptr inbounds double, ptr %867, i64 %868
  %870 = load ptr, ptr %26, align 8, !tbaa !5
  %871 = load i64, ptr %56, align 8, !tbaa !9
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %870, i64 %871
  %873 = load ptr, ptr %26, align 8, !tbaa !5
  %874 = load i64, ptr %55, align 8, !tbaa !9
  %875 = getelementptr inbounds %struct.doublecomplex, ptr %873, i64 %874
  %876 = load ptr, ptr %26, align 8, !tbaa !5
  %877 = load i64, ptr %58, align 8, !tbaa !9
  %878 = getelementptr inbounds %struct.doublecomplex, ptr %876, i64 %877
  %879 = load ptr, ptr %29, align 8, !tbaa !5
  %880 = call i32 @zgebrd_(ptr noundef %42, ptr noundef %860, ptr noundef %863, ptr noundef %864, ptr noundef %866, ptr noundef %869, ptr noundef %872, ptr noundef %875, ptr noundef %878, ptr noundef %34, ptr noundef %879)
  %881 = load ptr, ptr %27, align 8, !tbaa !5
  %882 = load i64, ptr %881, align 8, !tbaa !9
  %883 = load i64, ptr %58, align 8, !tbaa !9
  %884 = sub nsw i64 %882, %883
  %885 = add nsw i64 %884, 1
  store i64 %885, ptr %34, align 8, !tbaa !9
  %886 = load ptr, ptr %18, align 8, !tbaa !5
  %887 = load ptr, ptr %17, align 8, !tbaa !5
  %888 = load ptr, ptr %19, align 8, !tbaa !5
  %889 = load i64, ptr %31, align 8, !tbaa !9
  %890 = getelementptr inbounds %struct.doublecomplex, ptr %888, i64 %889
  %891 = load ptr, ptr %20, align 8, !tbaa !5
  %892 = load ptr, ptr %26, align 8, !tbaa !5
  %893 = load i64, ptr %56, align 8, !tbaa !9
  %894 = getelementptr inbounds %struct.doublecomplex, ptr %892, i64 %893
  %895 = load ptr, ptr %21, align 8, !tbaa !5
  %896 = load i64, ptr %33, align 8, !tbaa !9
  %897 = getelementptr inbounds %struct.doublecomplex, ptr %895, i64 %896
  %898 = load ptr, ptr %22, align 8, !tbaa !5
  %899 = load ptr, ptr %26, align 8, !tbaa !5
  %900 = load i64, ptr %58, align 8, !tbaa !9
  %901 = getelementptr inbounds %struct.doublecomplex, ptr %899, i64 %900
  %902 = load ptr, ptr %29, align 8, !tbaa !5
  %903 = call i32 @zunmbr_(ptr noundef @.str.18, ptr noundef @.str.16, ptr noundef @.str.17, ptr noundef %42, ptr noundef %886, ptr noundef %887, ptr noundef %890, ptr noundef %891, ptr noundef %894, ptr noundef %897, ptr noundef %898, ptr noundef %901, ptr noundef %34, ptr noundef %902)
  %904 = load ptr, ptr %27, align 8, !tbaa !5
  %905 = load i64, ptr %904, align 8, !tbaa !9
  %906 = load i64, ptr %58, align 8, !tbaa !9
  %907 = sub nsw i64 %905, %906
  %908 = add nsw i64 %907, 1
  store i64 %908, ptr %34, align 8, !tbaa !9
  %909 = load ptr, ptr %17, align 8, !tbaa !5
  %910 = load ptr, ptr %17, align 8, !tbaa !5
  %911 = load ptr, ptr %17, align 8, !tbaa !5
  %912 = load ptr, ptr %19, align 8, !tbaa !5
  %913 = load i64, ptr %31, align 8, !tbaa !9
  %914 = getelementptr inbounds %struct.doublecomplex, ptr %912, i64 %913
  %915 = load ptr, ptr %20, align 8, !tbaa !5
  %916 = load ptr, ptr %26, align 8, !tbaa !5
  %917 = load i64, ptr %55, align 8, !tbaa !9
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %916, i64 %917
  %919 = load ptr, ptr %26, align 8, !tbaa !5
  %920 = load i64, ptr %58, align 8, !tbaa !9
  %921 = getelementptr inbounds %struct.doublecomplex, ptr %919, i64 %920
  %922 = load ptr, ptr %29, align 8, !tbaa !5
  %923 = call i32 @zungbr_(ptr noundef @.str.9, ptr noundef %909, ptr noundef %910, ptr noundef %911, ptr noundef %914, ptr noundef %915, ptr noundef %918, ptr noundef %921, ptr noundef %34, ptr noundef %922)
  %924 = load i64, ptr %40, align 8, !tbaa !9
  %925 = load ptr, ptr %17, align 8, !tbaa !5
  %926 = load i64, ptr %925, align 8, !tbaa !9
  %927 = add nsw i64 %924, %926
  store i64 %927, ptr %64, align 8, !tbaa !9
  %928 = load ptr, ptr %17, align 8, !tbaa !5
  %929 = load ptr, ptr %17, align 8, !tbaa !5
  %930 = load ptr, ptr %18, align 8, !tbaa !5
  %931 = load ptr, ptr %23, align 8, !tbaa !5
  %932 = getelementptr inbounds double, ptr %931, i64 1
  %933 = load ptr, ptr %28, align 8, !tbaa !5
  %934 = load i64, ptr %40, align 8, !tbaa !9
  %935 = getelementptr inbounds double, ptr %933, i64 %934
  %936 = load ptr, ptr %19, align 8, !tbaa !5
  %937 = load i64, ptr %31, align 8, !tbaa !9
  %938 = getelementptr inbounds %struct.doublecomplex, ptr %936, i64 %937
  %939 = load ptr, ptr %20, align 8, !tbaa !5
  %940 = getelementptr inbounds [1 x %struct.doublecomplex], ptr %48, i64 0, i64 0
  %941 = load ptr, ptr %21, align 8, !tbaa !5
  %942 = load i64, ptr %33, align 8, !tbaa !9
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %941, i64 %942
  %944 = load ptr, ptr %22, align 8, !tbaa !5
  %945 = load ptr, ptr %28, align 8, !tbaa !5
  %946 = load i64, ptr %64, align 8, !tbaa !9
  %947 = getelementptr inbounds double, ptr %945, i64 %946
  %948 = load ptr, ptr %29, align 8, !tbaa !5
  %949 = call i32 @zbdsqr_(ptr noundef @.str.19, ptr noundef %928, ptr noundef %929, ptr noundef @c__0, ptr noundef %930, ptr noundef %932, ptr noundef %935, ptr noundef %938, ptr noundef %939, ptr noundef %940, ptr noundef @c__1, ptr noundef %943, ptr noundef %944, ptr noundef %947, ptr noundef %948)
  %950 = load ptr, ptr %29, align 8, !tbaa !5
  %951 = load i64, ptr %950, align 8, !tbaa !9
  %952 = icmp ne i64 %951, 0
  br i1 %952, label %953, label %954

953:                                              ; preds = %846
  br label %2086

954:                                              ; preds = %846
  %955 = load ptr, ptr %24, align 8, !tbaa !5
  %956 = load double, ptr %955, align 8, !tbaa !15
  %957 = load ptr, ptr %23, align 8, !tbaa !5
  %958 = getelementptr inbounds double, ptr %957, i64 1
  %959 = load double, ptr %958, align 8, !tbaa !15
  %960 = fmul double %956, %959
  store double %960, ptr %37, align 8, !tbaa !15
  %961 = load double, ptr %37, align 8, !tbaa !15
  %962 = load double, ptr %52, align 8, !tbaa !15
  %963 = fcmp oge double %961, %962
  br i1 %963, label %964, label %966

964:                                              ; preds = %954
  %965 = load double, ptr %37, align 8, !tbaa !15
  br label %968

966:                                              ; preds = %954
  %967 = load double, ptr %52, align 8, !tbaa !15
  br label %968

968:                                              ; preds = %966, %964
  %969 = phi double [ %965, %964 ], [ %967, %966 ]
  store double %969, ptr %44, align 8, !tbaa !15
  %970 = load ptr, ptr %24, align 8, !tbaa !5
  %971 = load double, ptr %970, align 8, !tbaa !15
  %972 = fcmp olt double %971, 0.000000e+00
  br i1 %972, label %973, label %988

973:                                              ; preds = %968
  %974 = load double, ptr %43, align 8, !tbaa !15
  %975 = load ptr, ptr %23, align 8, !tbaa !5
  %976 = getelementptr inbounds double, ptr %975, i64 1
  %977 = load double, ptr %976, align 8, !tbaa !15
  %978 = fmul double %974, %977
  store double %978, ptr %37, align 8, !tbaa !15
  %979 = load double, ptr %37, align 8, !tbaa !15
  %980 = load double, ptr %52, align 8, !tbaa !15
  %981 = fcmp oge double %979, %980
  br i1 %981, label %982, label %984

982:                                              ; preds = %973
  %983 = load double, ptr %37, align 8, !tbaa !15
  br label %986

984:                                              ; preds = %973
  %985 = load double, ptr %52, align 8, !tbaa !15
  br label %986

986:                                              ; preds = %984, %982
  %987 = phi double [ %983, %982 ], [ %985, %984 ]
  store double %987, ptr %44, align 8, !tbaa !15
  br label %988

988:                                              ; preds = %986, %968
  %989 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 0, ptr %989, align 8, !tbaa !9
  %990 = load ptr, ptr %17, align 8, !tbaa !5
  %991 = load i64, ptr %990, align 8, !tbaa !9
  store i64 %991, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %992

992:                                              ; preds = %1028, %988
  %993 = load i64, ptr %38, align 8, !tbaa !9
  %994 = load i64, ptr %34, align 8, !tbaa !9
  %995 = icmp sle i64 %993, %994
  br i1 %995, label %996, label %1031

996:                                              ; preds = %992
  %997 = load ptr, ptr %23, align 8, !tbaa !5
  %998 = load i64, ptr %38, align 8, !tbaa !9
  %999 = getelementptr inbounds double, ptr %997, i64 %998
  %1000 = load double, ptr %999, align 8, !tbaa !15
  %1001 = load double, ptr %44, align 8, !tbaa !15
  %1002 = fcmp ogt double %1000, %1001
  br i1 %1002, label %1003, label %1018

1003:                                             ; preds = %996
  %1004 = load ptr, ptr %18, align 8, !tbaa !5
  %1005 = load ptr, ptr %23, align 8, !tbaa !5
  %1006 = load i64, ptr %38, align 8, !tbaa !9
  %1007 = getelementptr inbounds double, ptr %1005, i64 %1006
  %1008 = load ptr, ptr %21, align 8, !tbaa !5
  %1009 = load i64, ptr %38, align 8, !tbaa !9
  %1010 = load i64, ptr %32, align 8, !tbaa !9
  %1011 = add nsw i64 %1009, %1010
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %1008, i64 %1011
  %1013 = load ptr, ptr %22, align 8, !tbaa !5
  %1014 = call i32 @zdrscl_(ptr noundef %1004, ptr noundef %1007, ptr noundef %1012, ptr noundef %1013)
  %1015 = load ptr, ptr %25, align 8, !tbaa !5
  %1016 = load i64, ptr %1015, align 8, !tbaa !9
  %1017 = add nsw i64 %1016, 1
  store i64 %1017, ptr %1015, align 8, !tbaa !9
  br label %1027

1018:                                             ; preds = %996
  %1019 = load ptr, ptr %18, align 8, !tbaa !5
  %1020 = load ptr, ptr %21, align 8, !tbaa !5
  %1021 = load i64, ptr %38, align 8, !tbaa !9
  %1022 = load i64, ptr %32, align 8, !tbaa !9
  %1023 = add nsw i64 %1021, %1022
  %1024 = getelementptr inbounds %struct.doublecomplex, ptr %1020, i64 %1023
  %1025 = load ptr, ptr %22, align 8, !tbaa !5
  %1026 = call i32 @zlaset_(ptr noundef @.str.15, ptr noundef @c__1, ptr noundef %1019, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1024, ptr noundef %1025)
  br label %1027

1027:                                             ; preds = %1018, %1003
  br label %1028

1028:                                             ; preds = %1027
  %1029 = load i64, ptr %38, align 8, !tbaa !9
  %1030 = add nsw i64 %1029, 1
  store i64 %1030, ptr %38, align 8, !tbaa !9
  br label %992, !llvm.loop !16

1031:                                             ; preds = %992
  %1032 = load ptr, ptr %27, align 8, !tbaa !5
  %1033 = load i64, ptr %1032, align 8, !tbaa !9
  %1034 = load ptr, ptr %22, align 8, !tbaa !5
  %1035 = load i64, ptr %1034, align 8, !tbaa !9
  %1036 = load ptr, ptr %18, align 8, !tbaa !5
  %1037 = load i64, ptr %1036, align 8, !tbaa !9
  %1038 = mul nsw i64 %1035, %1037
  %1039 = icmp sge i64 %1033, %1038
  br i1 %1039, label %1040, label %1070

1040:                                             ; preds = %1031
  %1041 = load ptr, ptr %18, align 8, !tbaa !5
  %1042 = load i64, ptr %1041, align 8, !tbaa !9
  %1043 = icmp sgt i64 %1042, 1
  br i1 %1043, label %1044, label %1070

1044:                                             ; preds = %1040
  %1045 = load ptr, ptr %17, align 8, !tbaa !5
  %1046 = load ptr, ptr %18, align 8, !tbaa !5
  %1047 = load ptr, ptr %17, align 8, !tbaa !5
  %1048 = load ptr, ptr %19, align 8, !tbaa !5
  %1049 = load i64, ptr %31, align 8, !tbaa !9
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %1048, i64 %1049
  %1051 = load ptr, ptr %20, align 8, !tbaa !5
  %1052 = load ptr, ptr %21, align 8, !tbaa !5
  %1053 = load i64, ptr %33, align 8, !tbaa !9
  %1054 = getelementptr inbounds %struct.doublecomplex, ptr %1052, i64 %1053
  %1055 = load ptr, ptr %22, align 8, !tbaa !5
  %1056 = load ptr, ptr %26, align 8, !tbaa !5
  %1057 = getelementptr inbounds %struct.doublecomplex, ptr %1056, i64 1
  %1058 = load ptr, ptr %22, align 8, !tbaa !5
  %1059 = call i32 @f2c_zgemm(ptr noundef @.str.17, ptr noundef @.str.20, ptr noundef %1045, ptr noundef %1046, ptr noundef %1047, ptr noundef @c_b2, ptr noundef %1050, ptr noundef %1051, ptr noundef %1054, ptr noundef %1055, ptr noundef @c_b1, ptr noundef %1057, ptr noundef %1058)
  %1060 = load ptr, ptr %17, align 8, !tbaa !5
  %1061 = load ptr, ptr %18, align 8, !tbaa !5
  %1062 = load ptr, ptr %26, align 8, !tbaa !5
  %1063 = getelementptr inbounds %struct.doublecomplex, ptr %1062, i64 1
  %1064 = load ptr, ptr %22, align 8, !tbaa !5
  %1065 = load ptr, ptr %21, align 8, !tbaa !5
  %1066 = load i64, ptr %33, align 8, !tbaa !9
  %1067 = getelementptr inbounds %struct.doublecomplex, ptr %1065, i64 %1066
  %1068 = load ptr, ptr %22, align 8, !tbaa !5
  %1069 = call i32 @zlacpy_(ptr noundef @.str.14, ptr noundef %1060, ptr noundef %1061, ptr noundef %1063, ptr noundef %1064, ptr noundef %1067, ptr noundef %1068)
  br label %1169

1070:                                             ; preds = %1040, %1031
  %1071 = load ptr, ptr %18, align 8, !tbaa !5
  %1072 = load i64, ptr %1071, align 8, !tbaa !9
  %1073 = icmp sgt i64 %1072, 1
  br i1 %1073, label %1074, label %1148

1074:                                             ; preds = %1070
  %1075 = load ptr, ptr %27, align 8, !tbaa !5
  %1076 = load i64, ptr %1075, align 8, !tbaa !9
  %1077 = load ptr, ptr %17, align 8, !tbaa !5
  %1078 = load i64, ptr %1077, align 8, !tbaa !9
  %1079 = sdiv i64 %1076, %1078
  store i64 %1079, ptr %51, align 8, !tbaa !9
  %1080 = load ptr, ptr %18, align 8, !tbaa !5
  %1081 = load i64, ptr %1080, align 8, !tbaa !9
  store i64 %1081, ptr %34, align 8, !tbaa !9
  %1082 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1082, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1083

1083:                                             ; preds = %1143, %1074
  %1084 = load i64, ptr %35, align 8, !tbaa !9
  %1085 = icmp slt i64 %1084, 0
  br i1 %1085, label %1086, label %1091

1086:                                             ; preds = %1083
  %1087 = load i64, ptr %38, align 8, !tbaa !9
  %1088 = load i64, ptr %34, align 8, !tbaa !9
  %1089 = icmp sge i64 %1087, %1088
  %1090 = zext i1 %1089 to i32
  br label %1096

1091:                                             ; preds = %1083
  %1092 = load i64, ptr %38, align 8, !tbaa !9
  %1093 = load i64, ptr %34, align 8, !tbaa !9
  %1094 = icmp sle i64 %1092, %1093
  %1095 = zext i1 %1094 to i32
  br label %1096

1096:                                             ; preds = %1091, %1086
  %1097 = phi i32 [ %1090, %1086 ], [ %1095, %1091 ]
  %1098 = icmp ne i32 %1097, 0
  br i1 %1098, label %1099, label %1147

1099:                                             ; preds = %1096
  %1100 = load ptr, ptr %18, align 8, !tbaa !5
  %1101 = load i64, ptr %1100, align 8, !tbaa !9
  %1102 = load i64, ptr %38, align 8, !tbaa !9
  %1103 = sub nsw i64 %1101, %1102
  %1104 = add nsw i64 %1103, 1
  store i64 %1104, ptr %36, align 8, !tbaa !9
  %1105 = load i64, ptr %36, align 8, !tbaa !9
  %1106 = load i64, ptr %51, align 8, !tbaa !9
  %1107 = icmp sle i64 %1105, %1106
  br i1 %1107, label %1108, label %1110

1108:                                             ; preds = %1099
  %1109 = load i64, ptr %36, align 8, !tbaa !9
  br label %1112

1110:                                             ; preds = %1099
  %1111 = load i64, ptr %51, align 8, !tbaa !9
  br label %1112

1112:                                             ; preds = %1110, %1108
  %1113 = phi i64 [ %1109, %1108 ], [ %1111, %1110 ]
  store i64 %1113, ptr %39, align 8, !tbaa !9
  %1114 = load ptr, ptr %17, align 8, !tbaa !5
  %1115 = load ptr, ptr %17, align 8, !tbaa !5
  %1116 = load ptr, ptr %19, align 8, !tbaa !5
  %1117 = load i64, ptr %31, align 8, !tbaa !9
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1116, i64 %1117
  %1119 = load ptr, ptr %20, align 8, !tbaa !5
  %1120 = load ptr, ptr %21, align 8, !tbaa !5
  %1121 = load i64, ptr %38, align 8, !tbaa !9
  %1122 = load i64, ptr %32, align 8, !tbaa !9
  %1123 = mul nsw i64 %1121, %1122
  %1124 = add nsw i64 %1123, 1
  %1125 = getelementptr inbounds %struct.doublecomplex, ptr %1120, i64 %1124
  %1126 = load ptr, ptr %22, align 8, !tbaa !5
  %1127 = load ptr, ptr %26, align 8, !tbaa !5
  %1128 = getelementptr inbounds %struct.doublecomplex, ptr %1127, i64 1
  %1129 = load ptr, ptr %17, align 8, !tbaa !5
  %1130 = call i32 @f2c_zgemm(ptr noundef @.str.17, ptr noundef @.str.20, ptr noundef %1114, ptr noundef %39, ptr noundef %1115, ptr noundef @c_b2, ptr noundef %1118, ptr noundef %1119, ptr noundef %1125, ptr noundef %1126, ptr noundef @c_b1, ptr noundef %1128, ptr noundef %1129)
  %1131 = load ptr, ptr %17, align 8, !tbaa !5
  %1132 = load ptr, ptr %26, align 8, !tbaa !5
  %1133 = getelementptr inbounds %struct.doublecomplex, ptr %1132, i64 1
  %1134 = load ptr, ptr %17, align 8, !tbaa !5
  %1135 = load ptr, ptr %21, align 8, !tbaa !5
  %1136 = load i64, ptr %38, align 8, !tbaa !9
  %1137 = load i64, ptr %32, align 8, !tbaa !9
  %1138 = mul nsw i64 %1136, %1137
  %1139 = add nsw i64 %1138, 1
  %1140 = getelementptr inbounds %struct.doublecomplex, ptr %1135, i64 %1139
  %1141 = load ptr, ptr %22, align 8, !tbaa !5
  %1142 = call i32 @zlacpy_(ptr noundef @.str.14, ptr noundef %1131, ptr noundef %39, ptr noundef %1133, ptr noundef %1134, ptr noundef %1140, ptr noundef %1141)
  br label %1143

1143:                                             ; preds = %1112
  %1144 = load i64, ptr %35, align 8, !tbaa !9
  %1145 = load i64, ptr %38, align 8, !tbaa !9
  %1146 = add nsw i64 %1145, %1144
  store i64 %1146, ptr %38, align 8, !tbaa !9
  br label %1083, !llvm.loop !18

1147:                                             ; preds = %1096
  br label %1168

1148:                                             ; preds = %1070
  %1149 = load ptr, ptr %17, align 8, !tbaa !5
  %1150 = load ptr, ptr %17, align 8, !tbaa !5
  %1151 = load ptr, ptr %19, align 8, !tbaa !5
  %1152 = load i64, ptr %31, align 8, !tbaa !9
  %1153 = getelementptr inbounds %struct.doublecomplex, ptr %1151, i64 %1152
  %1154 = load ptr, ptr %20, align 8, !tbaa !5
  %1155 = load ptr, ptr %21, align 8, !tbaa !5
  %1156 = load i64, ptr %33, align 8, !tbaa !9
  %1157 = getelementptr inbounds %struct.doublecomplex, ptr %1155, i64 %1156
  %1158 = load ptr, ptr %26, align 8, !tbaa !5
  %1159 = getelementptr inbounds %struct.doublecomplex, ptr %1158, i64 1
  %1160 = call i32 @f2c_zgemv(ptr noundef @.str.17, ptr noundef %1149, ptr noundef %1150, ptr noundef @c_b2, ptr noundef %1153, ptr noundef %1154, ptr noundef %1157, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %1159, ptr noundef @c__1)
  %1161 = load ptr, ptr %17, align 8, !tbaa !5
  %1162 = load ptr, ptr %26, align 8, !tbaa !5
  %1163 = getelementptr inbounds %struct.doublecomplex, ptr %1162, i64 1
  %1164 = load ptr, ptr %21, align 8, !tbaa !5
  %1165 = load i64, ptr %33, align 8, !tbaa !9
  %1166 = getelementptr inbounds %struct.doublecomplex, ptr %1164, i64 %1165
  %1167 = call i32 @f2c_zcopy(ptr noundef %1161, ptr noundef %1163, ptr noundef @c__1, ptr noundef %1166, ptr noundef @c__1)
  br label %1168

1168:                                             ; preds = %1148, %1147
  br label %1169

1169:                                             ; preds = %1168, %1044
  br label %2027

1170:                                             ; preds = %766
  %1171 = load ptr, ptr %16, align 8, !tbaa !5
  %1172 = load i64, ptr %1171, align 8, !tbaa !9
  %1173 = load ptr, ptr %18, align 8, !tbaa !5
  %1174 = load i64, ptr %1173, align 8, !tbaa !9
  %1175 = icmp sge i64 %1172, %1174
  br i1 %1175, label %1176, label %1179

1176:                                             ; preds = %1170
  %1177 = load ptr, ptr %16, align 8, !tbaa !5
  %1178 = load i64, ptr %1177, align 8, !tbaa !9
  br label %1182

1179:                                             ; preds = %1170
  %1180 = load ptr, ptr %18, align 8, !tbaa !5
  %1181 = load i64, ptr %1180, align 8, !tbaa !9
  br label %1182

1182:                                             ; preds = %1179, %1176
  %1183 = phi i64 [ %1178, %1176 ], [ %1181, %1179 ]
  store i64 %1183, ptr %35, align 8, !tbaa !9
  %1184 = load ptr, ptr %17, align 8, !tbaa !5
  %1185 = load i64, ptr %1184, align 8, !tbaa !9
  %1186 = load ptr, ptr %16, align 8, !tbaa !5
  %1187 = load i64, ptr %1186, align 8, !tbaa !9
  %1188 = shl i64 %1187, 1
  %1189 = sub nsw i64 %1185, %1188
  store i64 %1189, ptr %34, align 8, !tbaa !9
  %1190 = load ptr, ptr %17, align 8, !tbaa !5
  %1191 = load i64, ptr %1190, align 8, !tbaa !9
  %1192 = load i64, ptr %57, align 8, !tbaa !9
  %1193 = icmp sge i64 %1191, %1192
  br i1 %1193, label %1194, label %1700

1194:                                             ; preds = %1182
  %1195 = load ptr, ptr %27, align 8, !tbaa !5
  %1196 = load i64, ptr %1195, align 8, !tbaa !9
  %1197 = load ptr, ptr %16, align 8, !tbaa !5
  %1198 = load i64, ptr %1197, align 8, !tbaa !9
  %1199 = mul nsw i64 %1198, 3
  %1200 = load ptr, ptr %16, align 8, !tbaa !5
  %1201 = load i64, ptr %1200, align 8, !tbaa !9
  %1202 = load ptr, ptr %16, align 8, !tbaa !5
  %1203 = load i64, ptr %1202, align 8, !tbaa !9
  %1204 = mul nsw i64 %1201, %1203
  %1205 = add nsw i64 %1199, %1204
  %1206 = load i64, ptr %35, align 8, !tbaa !9
  %1207 = load i64, ptr %34, align 8, !tbaa !9
  %1208 = icmp sge i64 %1206, %1207
  br i1 %1208, label %1209, label %1211

1209:                                             ; preds = %1194
  %1210 = load i64, ptr %35, align 8, !tbaa !9
  br label %1213

1211:                                             ; preds = %1194
  %1212 = load i64, ptr %34, align 8, !tbaa !9
  br label %1213

1213:                                             ; preds = %1211, %1209
  %1214 = phi i64 [ %1210, %1209 ], [ %1212, %1211 ]
  %1215 = add nsw i64 %1205, %1214
  %1216 = icmp sge i64 %1196, %1215
  br i1 %1216, label %1217, label %1700

1217:                                             ; preds = %1213
  %1218 = load ptr, ptr %16, align 8, !tbaa !5
  %1219 = load i64, ptr %1218, align 8, !tbaa !9
  store i64 %1219, ptr %60, align 8, !tbaa !9
  %1220 = load ptr, ptr %16, align 8, !tbaa !5
  %1221 = load i64, ptr %1220, align 8, !tbaa !9
  %1222 = load ptr, ptr %18, align 8, !tbaa !5
  %1223 = load i64, ptr %1222, align 8, !tbaa !9
  %1224 = icmp sge i64 %1221, %1223
  br i1 %1224, label %1225, label %1228

1225:                                             ; preds = %1217
  %1226 = load ptr, ptr %16, align 8, !tbaa !5
  %1227 = load i64, ptr %1226, align 8, !tbaa !9
  br label %1231

1228:                                             ; preds = %1217
  %1229 = load ptr, ptr %18, align 8, !tbaa !5
  %1230 = load i64, ptr %1229, align 8, !tbaa !9
  br label %1231

1231:                                             ; preds = %1228, %1225
  %1232 = phi i64 [ %1227, %1225 ], [ %1230, %1228 ]
  store i64 %1232, ptr %35, align 8, !tbaa !9
  %1233 = load ptr, ptr %17, align 8, !tbaa !5
  %1234 = load i64, ptr %1233, align 8, !tbaa !9
  %1235 = load ptr, ptr %16, align 8, !tbaa !5
  %1236 = load i64, ptr %1235, align 8, !tbaa !9
  %1237 = shl i64 %1236, 1
  %1238 = sub nsw i64 %1234, %1237
  store i64 %1238, ptr %34, align 8, !tbaa !9
  %1239 = load ptr, ptr %27, align 8, !tbaa !5
  %1240 = load i64, ptr %1239, align 8, !tbaa !9
  %1241 = load ptr, ptr %16, align 8, !tbaa !5
  %1242 = load i64, ptr %1241, align 8, !tbaa !9
  %1243 = mul nsw i64 %1242, 3
  %1244 = load ptr, ptr %16, align 8, !tbaa !5
  %1245 = load i64, ptr %1244, align 8, !tbaa !9
  %1246 = load ptr, ptr %20, align 8, !tbaa !5
  %1247 = load i64, ptr %1246, align 8, !tbaa !9
  %1248 = mul nsw i64 %1245, %1247
  %1249 = add nsw i64 %1243, %1248
  %1250 = load i64, ptr %35, align 8, !tbaa !9
  %1251 = load i64, ptr %34, align 8, !tbaa !9
  %1252 = icmp sge i64 %1250, %1251
  br i1 %1252, label %1253, label %1255

1253:                                             ; preds = %1231
  %1254 = load i64, ptr %35, align 8, !tbaa !9
  br label %1257

1255:                                             ; preds = %1231
  %1256 = load i64, ptr %34, align 8, !tbaa !9
  br label %1257

1257:                                             ; preds = %1255, %1253
  %1258 = phi i64 [ %1254, %1253 ], [ %1256, %1255 ]
  %1259 = add nsw i64 %1249, %1258
  %1260 = icmp sge i64 %1240, %1259
  br i1 %1260, label %1261, label %1264

1261:                                             ; preds = %1257
  %1262 = load ptr, ptr %20, align 8, !tbaa !5
  %1263 = load i64, ptr %1262, align 8, !tbaa !9
  store i64 %1263, ptr %60, align 8, !tbaa !9
  br label %1264

1264:                                             ; preds = %1261, %1257
  store i64 1, ptr %47, align 8, !tbaa !9
  %1265 = load ptr, ptr %16, align 8, !tbaa !5
  %1266 = load i64, ptr %1265, align 8, !tbaa !9
  %1267 = add nsw i64 %1266, 1
  store i64 %1267, ptr %58, align 8, !tbaa !9
  %1268 = load ptr, ptr %27, align 8, !tbaa !5
  %1269 = load i64, ptr %1268, align 8, !tbaa !9
  %1270 = load i64, ptr %58, align 8, !tbaa !9
  %1271 = sub nsw i64 %1269, %1270
  %1272 = add nsw i64 %1271, 1
  store i64 %1272, ptr %35, align 8, !tbaa !9
  %1273 = load ptr, ptr %16, align 8, !tbaa !5
  %1274 = load ptr, ptr %17, align 8, !tbaa !5
  %1275 = load ptr, ptr %19, align 8, !tbaa !5
  %1276 = load i64, ptr %31, align 8, !tbaa !9
  %1277 = getelementptr inbounds %struct.doublecomplex, ptr %1275, i64 %1276
  %1278 = load ptr, ptr %20, align 8, !tbaa !5
  %1279 = load ptr, ptr %26, align 8, !tbaa !5
  %1280 = load i64, ptr %47, align 8, !tbaa !9
  %1281 = getelementptr inbounds %struct.doublecomplex, ptr %1279, i64 %1280
  %1282 = load ptr, ptr %26, align 8, !tbaa !5
  %1283 = load i64, ptr %58, align 8, !tbaa !9
  %1284 = getelementptr inbounds %struct.doublecomplex, ptr %1282, i64 %1283
  %1285 = load ptr, ptr %29, align 8, !tbaa !5
  %1286 = call i32 @zgelqf_(ptr noundef %1273, ptr noundef %1274, ptr noundef %1277, ptr noundef %1278, ptr noundef %1281, ptr noundef %1284, ptr noundef %35, ptr noundef %1285)
  %1287 = load i64, ptr %58, align 8, !tbaa !9
  store i64 %1287, ptr %41, align 8, !tbaa !9
  %1288 = load ptr, ptr %16, align 8, !tbaa !5
  %1289 = load ptr, ptr %16, align 8, !tbaa !5
  %1290 = load ptr, ptr %19, align 8, !tbaa !5
  %1291 = load i64, ptr %31, align 8, !tbaa !9
  %1292 = getelementptr inbounds %struct.doublecomplex, ptr %1290, i64 %1291
  %1293 = load ptr, ptr %20, align 8, !tbaa !5
  %1294 = load ptr, ptr %26, align 8, !tbaa !5
  %1295 = load i64, ptr %41, align 8, !tbaa !9
  %1296 = getelementptr inbounds %struct.doublecomplex, ptr %1294, i64 %1295
  %1297 = call i32 @zlacpy_(ptr noundef @.str.16, ptr noundef %1288, ptr noundef %1289, ptr noundef %1292, ptr noundef %1293, ptr noundef %1296, ptr noundef %60)
  %1298 = load ptr, ptr %16, align 8, !tbaa !5
  %1299 = load i64, ptr %1298, align 8, !tbaa !9
  %1300 = sub nsw i64 %1299, 1
  store i64 %1300, ptr %35, align 8, !tbaa !9
  %1301 = load ptr, ptr %16, align 8, !tbaa !5
  %1302 = load i64, ptr %1301, align 8, !tbaa !9
  %1303 = sub nsw i64 %1302, 1
  store i64 %1303, ptr %34, align 8, !tbaa !9
  %1304 = load ptr, ptr %26, align 8, !tbaa !5
  %1305 = load i64, ptr %41, align 8, !tbaa !9
  %1306 = load i64, ptr %60, align 8, !tbaa !9
  %1307 = add nsw i64 %1305, %1306
  %1308 = getelementptr inbounds %struct.doublecomplex, ptr %1304, i64 %1307
  %1309 = call i32 @zlaset_(ptr noundef @.str.19, ptr noundef %35, ptr noundef %34, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1308, ptr noundef %60)
  store i64 1, ptr %40, align 8, !tbaa !9
  %1310 = load i64, ptr %41, align 8, !tbaa !9
  %1311 = load i64, ptr %60, align 8, !tbaa !9
  %1312 = load ptr, ptr %16, align 8, !tbaa !5
  %1313 = load i64, ptr %1312, align 8, !tbaa !9
  %1314 = mul nsw i64 %1311, %1313
  %1315 = add nsw i64 %1310, %1314
  store i64 %1315, ptr %56, align 8, !tbaa !9
  %1316 = load i64, ptr %56, align 8, !tbaa !9
  %1317 = load ptr, ptr %16, align 8, !tbaa !5
  %1318 = load i64, ptr %1317, align 8, !tbaa !9
  %1319 = add nsw i64 %1316, %1318
  store i64 %1319, ptr %55, align 8, !tbaa !9
  %1320 = load i64, ptr %55, align 8, !tbaa !9
  %1321 = load ptr, ptr %16, align 8, !tbaa !5
  %1322 = load i64, ptr %1321, align 8, !tbaa !9
  %1323 = add nsw i64 %1320, %1322
  store i64 %1323, ptr %58, align 8, !tbaa !9
  %1324 = load ptr, ptr %27, align 8, !tbaa !5
  %1325 = load i64, ptr %1324, align 8, !tbaa !9
  %1326 = load i64, ptr %58, align 8, !tbaa !9
  %1327 = sub nsw i64 %1325, %1326
  %1328 = add nsw i64 %1327, 1
  store i64 %1328, ptr %35, align 8, !tbaa !9
  %1329 = load ptr, ptr %16, align 8, !tbaa !5
  %1330 = load ptr, ptr %16, align 8, !tbaa !5
  %1331 = load ptr, ptr %26, align 8, !tbaa !5
  %1332 = load i64, ptr %41, align 8, !tbaa !9
  %1333 = getelementptr inbounds %struct.doublecomplex, ptr %1331, i64 %1332
  %1334 = load ptr, ptr %23, align 8, !tbaa !5
  %1335 = getelementptr inbounds double, ptr %1334, i64 1
  %1336 = load ptr, ptr %28, align 8, !tbaa !5
  %1337 = load i64, ptr %40, align 8, !tbaa !9
  %1338 = getelementptr inbounds double, ptr %1336, i64 %1337
  %1339 = load ptr, ptr %26, align 8, !tbaa !5
  %1340 = load i64, ptr %56, align 8, !tbaa !9
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %1339, i64 %1340
  %1342 = load ptr, ptr %26, align 8, !tbaa !5
  %1343 = load i64, ptr %55, align 8, !tbaa !9
  %1344 = getelementptr inbounds %struct.doublecomplex, ptr %1342, i64 %1343
  %1345 = load ptr, ptr %26, align 8, !tbaa !5
  %1346 = load i64, ptr %58, align 8, !tbaa !9
  %1347 = getelementptr inbounds %struct.doublecomplex, ptr %1345, i64 %1346
  %1348 = load ptr, ptr %29, align 8, !tbaa !5
  %1349 = call i32 @zgebrd_(ptr noundef %1329, ptr noundef %1330, ptr noundef %1333, ptr noundef %60, ptr noundef %1335, ptr noundef %1338, ptr noundef %1341, ptr noundef %1344, ptr noundef %1347, ptr noundef %35, ptr noundef %1348)
  %1350 = load ptr, ptr %27, align 8, !tbaa !5
  %1351 = load i64, ptr %1350, align 8, !tbaa !9
  %1352 = load i64, ptr %58, align 8, !tbaa !9
  %1353 = sub nsw i64 %1351, %1352
  %1354 = add nsw i64 %1353, 1
  store i64 %1354, ptr %35, align 8, !tbaa !9
  %1355 = load ptr, ptr %16, align 8, !tbaa !5
  %1356 = load ptr, ptr %18, align 8, !tbaa !5
  %1357 = load ptr, ptr %16, align 8, !tbaa !5
  %1358 = load ptr, ptr %26, align 8, !tbaa !5
  %1359 = load i64, ptr %41, align 8, !tbaa !9
  %1360 = getelementptr inbounds %struct.doublecomplex, ptr %1358, i64 %1359
  %1361 = load ptr, ptr %26, align 8, !tbaa !5
  %1362 = load i64, ptr %56, align 8, !tbaa !9
  %1363 = getelementptr inbounds %struct.doublecomplex, ptr %1361, i64 %1362
  %1364 = load ptr, ptr %21, align 8, !tbaa !5
  %1365 = load i64, ptr %33, align 8, !tbaa !9
  %1366 = getelementptr inbounds %struct.doublecomplex, ptr %1364, i64 %1365
  %1367 = load ptr, ptr %22, align 8, !tbaa !5
  %1368 = load ptr, ptr %26, align 8, !tbaa !5
  %1369 = load i64, ptr %58, align 8, !tbaa !9
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %1368, i64 %1369
  %1371 = load ptr, ptr %29, align 8, !tbaa !5
  %1372 = call i32 @zunmbr_(ptr noundef @.str.18, ptr noundef @.str.16, ptr noundef @.str.17, ptr noundef %1355, ptr noundef %1356, ptr noundef %1357, ptr noundef %1360, ptr noundef %60, ptr noundef %1363, ptr noundef %1366, ptr noundef %1367, ptr noundef %1370, ptr noundef %35, ptr noundef %1371)
  %1373 = load ptr, ptr %27, align 8, !tbaa !5
  %1374 = load i64, ptr %1373, align 8, !tbaa !9
  %1375 = load i64, ptr %58, align 8, !tbaa !9
  %1376 = sub nsw i64 %1374, %1375
  %1377 = add nsw i64 %1376, 1
  store i64 %1377, ptr %35, align 8, !tbaa !9
  %1378 = load ptr, ptr %16, align 8, !tbaa !5
  %1379 = load ptr, ptr %16, align 8, !tbaa !5
  %1380 = load ptr, ptr %16, align 8, !tbaa !5
  %1381 = load ptr, ptr %26, align 8, !tbaa !5
  %1382 = load i64, ptr %41, align 8, !tbaa !9
  %1383 = getelementptr inbounds %struct.doublecomplex, ptr %1381, i64 %1382
  %1384 = load ptr, ptr %26, align 8, !tbaa !5
  %1385 = load i64, ptr %55, align 8, !tbaa !9
  %1386 = getelementptr inbounds %struct.doublecomplex, ptr %1384, i64 %1385
  %1387 = load ptr, ptr %26, align 8, !tbaa !5
  %1388 = load i64, ptr %58, align 8, !tbaa !9
  %1389 = getelementptr inbounds %struct.doublecomplex, ptr %1387, i64 %1388
  %1390 = load ptr, ptr %29, align 8, !tbaa !5
  %1391 = call i32 @zungbr_(ptr noundef @.str.9, ptr noundef %1378, ptr noundef %1379, ptr noundef %1380, ptr noundef %1383, ptr noundef %60, ptr noundef %1386, ptr noundef %1389, ptr noundef %35, ptr noundef %1390)
  %1392 = load i64, ptr %40, align 8, !tbaa !9
  %1393 = load ptr, ptr %16, align 8, !tbaa !5
  %1394 = load i64, ptr %1393, align 8, !tbaa !9
  %1395 = add nsw i64 %1392, %1394
  store i64 %1395, ptr %64, align 8, !tbaa !9
  %1396 = load ptr, ptr %16, align 8, !tbaa !5
  %1397 = load ptr, ptr %16, align 8, !tbaa !5
  %1398 = load ptr, ptr %18, align 8, !tbaa !5
  %1399 = load ptr, ptr %23, align 8, !tbaa !5
  %1400 = getelementptr inbounds double, ptr %1399, i64 1
  %1401 = load ptr, ptr %28, align 8, !tbaa !5
  %1402 = load i64, ptr %40, align 8, !tbaa !9
  %1403 = getelementptr inbounds double, ptr %1401, i64 %1402
  %1404 = load ptr, ptr %26, align 8, !tbaa !5
  %1405 = load i64, ptr %41, align 8, !tbaa !9
  %1406 = getelementptr inbounds %struct.doublecomplex, ptr %1404, i64 %1405
  %1407 = load ptr, ptr %19, align 8, !tbaa !5
  %1408 = load i64, ptr %31, align 8, !tbaa !9
  %1409 = getelementptr inbounds %struct.doublecomplex, ptr %1407, i64 %1408
  %1410 = load ptr, ptr %20, align 8, !tbaa !5
  %1411 = load ptr, ptr %21, align 8, !tbaa !5
  %1412 = load i64, ptr %33, align 8, !tbaa !9
  %1413 = getelementptr inbounds %struct.doublecomplex, ptr %1411, i64 %1412
  %1414 = load ptr, ptr %22, align 8, !tbaa !5
  %1415 = load ptr, ptr %28, align 8, !tbaa !5
  %1416 = load i64, ptr %64, align 8, !tbaa !9
  %1417 = getelementptr inbounds double, ptr %1415, i64 %1416
  %1418 = load ptr, ptr %29, align 8, !tbaa !5
  %1419 = call i32 @zbdsqr_(ptr noundef @.str.19, ptr noundef %1396, ptr noundef %1397, ptr noundef @c__0, ptr noundef %1398, ptr noundef %1400, ptr noundef %1403, ptr noundef %1406, ptr noundef %60, ptr noundef %1409, ptr noundef %1410, ptr noundef %1413, ptr noundef %1414, ptr noundef %1417, ptr noundef %1418)
  %1420 = load ptr, ptr %29, align 8, !tbaa !5
  %1421 = load i64, ptr %1420, align 8, !tbaa !9
  %1422 = icmp ne i64 %1421, 0
  br i1 %1422, label %1423, label %1424

1423:                                             ; preds = %1264
  br label %2086

1424:                                             ; preds = %1264
  %1425 = load ptr, ptr %24, align 8, !tbaa !5
  %1426 = load double, ptr %1425, align 8, !tbaa !15
  %1427 = load ptr, ptr %23, align 8, !tbaa !5
  %1428 = getelementptr inbounds double, ptr %1427, i64 1
  %1429 = load double, ptr %1428, align 8, !tbaa !15
  %1430 = fmul double %1426, %1429
  store double %1430, ptr %37, align 8, !tbaa !15
  %1431 = load double, ptr %37, align 8, !tbaa !15
  %1432 = load double, ptr %52, align 8, !tbaa !15
  %1433 = fcmp oge double %1431, %1432
  br i1 %1433, label %1434, label %1436

1434:                                             ; preds = %1424
  %1435 = load double, ptr %37, align 8, !tbaa !15
  br label %1438

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

1438:                                             ; preds = %1436, %1434
  %1439 = phi double [ %1435, %1434 ], [ %1437, %1436 ]
  store double %1439, ptr %44, align 8, !tbaa !15
  %1440 = load ptr, ptr %24, align 8, !tbaa !5
  %1441 = load double, ptr %1440, align 8, !tbaa !15
  %1442 = fcmp olt double %1441, 0.000000e+00
  br i1 %1442, label %1443, label %1458

1443:                                             ; preds = %1438
  %1444 = load double, ptr %43, align 8, !tbaa !15
  %1445 = load ptr, ptr %23, align 8, !tbaa !5
  %1446 = getelementptr inbounds double, ptr %1445, i64 1
  %1447 = load double, ptr %1446, align 8, !tbaa !15
  %1448 = fmul double %1444, %1447
  store double %1448, ptr %37, align 8, !tbaa !15
  %1449 = load double, ptr %37, align 8, !tbaa !15
  %1450 = load double, ptr %52, align 8, !tbaa !15
  %1451 = fcmp oge double %1449, %1450
  br i1 %1451, label %1452, label %1454

1452:                                             ; preds = %1443
  %1453 = load double, ptr %37, align 8, !tbaa !15
  br label %1456

1454:                                             ; preds = %1443
  %1455 = load double, ptr %52, align 8, !tbaa !15
  br label %1456

1456:                                             ; preds = %1454, %1452
  %1457 = phi double [ %1453, %1452 ], [ %1455, %1454 ]
  store double %1457, ptr %44, align 8, !tbaa !15
  br label %1458

1458:                                             ; preds = %1456, %1438
  %1459 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 0, ptr %1459, align 8, !tbaa !9
  %1460 = load ptr, ptr %16, align 8, !tbaa !5
  %1461 = load i64, ptr %1460, align 8, !tbaa !9
  store i64 %1461, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1462

1462:                                             ; preds = %1498, %1458
  %1463 = load i64, ptr %38, align 8, !tbaa !9
  %1464 = load i64, ptr %35, align 8, !tbaa !9
  %1465 = icmp sle i64 %1463, %1464
  br i1 %1465, label %1466, label %1501

1466:                                             ; preds = %1462
  %1467 = load ptr, ptr %23, align 8, !tbaa !5
  %1468 = load i64, ptr %38, align 8, !tbaa !9
  %1469 = getelementptr inbounds double, ptr %1467, i64 %1468
  %1470 = load double, ptr %1469, align 8, !tbaa !15
  %1471 = load double, ptr %44, align 8, !tbaa !15
  %1472 = fcmp ogt double %1470, %1471
  br i1 %1472, label %1473, label %1488

1473:                                             ; preds = %1466
  %1474 = load ptr, ptr %18, align 8, !tbaa !5
  %1475 = load ptr, ptr %23, align 8, !tbaa !5
  %1476 = load i64, ptr %38, align 8, !tbaa !9
  %1477 = getelementptr inbounds double, ptr %1475, i64 %1476
  %1478 = load ptr, ptr %21, align 8, !tbaa !5
  %1479 = load i64, ptr %38, align 8, !tbaa !9
  %1480 = load i64, ptr %32, align 8, !tbaa !9
  %1481 = add nsw i64 %1479, %1480
  %1482 = getelementptr inbounds %struct.doublecomplex, ptr %1478, i64 %1481
  %1483 = load ptr, ptr %22, align 8, !tbaa !5
  %1484 = call i32 @zdrscl_(ptr noundef %1474, ptr noundef %1477, ptr noundef %1482, ptr noundef %1483)
  %1485 = load ptr, ptr %25, align 8, !tbaa !5
  %1486 = load i64, ptr %1485, align 8, !tbaa !9
  %1487 = add nsw i64 %1486, 1
  store i64 %1487, ptr %1485, align 8, !tbaa !9
  br label %1497

1488:                                             ; preds = %1466
  %1489 = load ptr, ptr %18, align 8, !tbaa !5
  %1490 = load ptr, ptr %21, align 8, !tbaa !5
  %1491 = load i64, ptr %38, align 8, !tbaa !9
  %1492 = load i64, ptr %32, align 8, !tbaa !9
  %1493 = add nsw i64 %1491, %1492
  %1494 = getelementptr inbounds %struct.doublecomplex, ptr %1490, i64 %1493
  %1495 = load ptr, ptr %22, align 8, !tbaa !5
  %1496 = call i32 @zlaset_(ptr noundef @.str.15, ptr noundef @c__1, ptr noundef %1489, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1494, ptr noundef %1495)
  br label %1497

1497:                                             ; preds = %1488, %1473
  br label %1498

1498:                                             ; preds = %1497
  %1499 = load i64, ptr %38, align 8, !tbaa !9
  %1500 = add nsw i64 %1499, 1
  store i64 %1500, ptr %38, align 8, !tbaa !9
  br label %1462, !llvm.loop !19

1501:                                             ; preds = %1462
  %1502 = load i64, ptr %41, align 8, !tbaa !9
  %1503 = load ptr, ptr %16, align 8, !tbaa !5
  %1504 = load i64, ptr %1503, align 8, !tbaa !9
  %1505 = load i64, ptr %60, align 8, !tbaa !9
  %1506 = mul nsw i64 %1504, %1505
  %1507 = add nsw i64 %1502, %1506
  store i64 %1507, ptr %58, align 8, !tbaa !9
  %1508 = load ptr, ptr %27, align 8, !tbaa !5
  %1509 = load i64, ptr %1508, align 8, !tbaa !9
  %1510 = load ptr, ptr %22, align 8, !tbaa !5
  %1511 = load i64, ptr %1510, align 8, !tbaa !9
  %1512 = load ptr, ptr %18, align 8, !tbaa !5
  %1513 = load i64, ptr %1512, align 8, !tbaa !9
  %1514 = mul nsw i64 %1511, %1513
  %1515 = load i64, ptr %58, align 8, !tbaa !9
  %1516 = add nsw i64 %1514, %1515
  %1517 = sub nsw i64 %1516, 1
  %1518 = icmp sge i64 %1509, %1517
  br i1 %1518, label %1519, label %1550

1519:                                             ; preds = %1501
  %1520 = load ptr, ptr %18, align 8, !tbaa !5
  %1521 = load i64, ptr %1520, align 8, !tbaa !9
  %1522 = icmp sgt i64 %1521, 1
  br i1 %1522, label %1523, label %1550

1523:                                             ; preds = %1519
  %1524 = load ptr, ptr %16, align 8, !tbaa !5
  %1525 = load ptr, ptr %18, align 8, !tbaa !5
  %1526 = load ptr, ptr %16, align 8, !tbaa !5
  %1527 = load ptr, ptr %26, align 8, !tbaa !5
  %1528 = load i64, ptr %41, align 8, !tbaa !9
  %1529 = getelementptr inbounds %struct.doublecomplex, ptr %1527, i64 %1528
  %1530 = load ptr, ptr %21, align 8, !tbaa !5
  %1531 = load i64, ptr %33, align 8, !tbaa !9
  %1532 = getelementptr inbounds %struct.doublecomplex, ptr %1530, i64 %1531
  %1533 = load ptr, ptr %22, align 8, !tbaa !5
  %1534 = load ptr, ptr %26, align 8, !tbaa !5
  %1535 = load i64, ptr %58, align 8, !tbaa !9
  %1536 = getelementptr inbounds %struct.doublecomplex, ptr %1534, i64 %1535
  %1537 = load ptr, ptr %22, align 8, !tbaa !5
  %1538 = call i32 @f2c_zgemm(ptr noundef @.str.17, ptr noundef @.str.20, ptr noundef %1524, ptr noundef %1525, ptr noundef %1526, ptr noundef @c_b2, ptr noundef %1529, ptr noundef %60, ptr noundef %1532, ptr noundef %1533, ptr noundef @c_b1, ptr noundef %1536, ptr noundef %1537)
  %1539 = load ptr, ptr %16, align 8, !tbaa !5
  %1540 = load ptr, ptr %18, align 8, !tbaa !5
  %1541 = load ptr, ptr %26, align 8, !tbaa !5
  %1542 = load i64, ptr %58, align 8, !tbaa !9
  %1543 = getelementptr inbounds %struct.doublecomplex, ptr %1541, i64 %1542
  %1544 = load ptr, ptr %22, align 8, !tbaa !5
  %1545 = load ptr, ptr %21, align 8, !tbaa !5
  %1546 = load i64, ptr %33, align 8, !tbaa !9
  %1547 = getelementptr inbounds %struct.doublecomplex, ptr %1545, i64 %1546
  %1548 = load ptr, ptr %22, align 8, !tbaa !5
  %1549 = call i32 @zlacpy_(ptr noundef @.str.14, ptr noundef %1539, ptr noundef %1540, ptr noundef %1543, ptr noundef %1544, ptr noundef %1547, ptr noundef %1548)
  br label %1656

1550:                                             ; preds = %1519, %1501
  %1551 = load ptr, ptr %18, align 8, !tbaa !5
  %1552 = load i64, ptr %1551, align 8, !tbaa !9
  %1553 = icmp sgt i64 %1552, 1
  br i1 %1553, label %1554, label %1632

1554:                                             ; preds = %1550
  %1555 = load ptr, ptr %27, align 8, !tbaa !5
  %1556 = load i64, ptr %1555, align 8, !tbaa !9
  %1557 = load i64, ptr %58, align 8, !tbaa !9
  %1558 = sub nsw i64 %1556, %1557
  %1559 = add nsw i64 %1558, 1
  %1560 = load ptr, ptr %16, align 8, !tbaa !5
  %1561 = load i64, ptr %1560, align 8, !tbaa !9
  %1562 = sdiv i64 %1559, %1561
  store i64 %1562, ptr %51, align 8, !tbaa !9
  %1563 = load ptr, ptr %18, align 8, !tbaa !5
  %1564 = load i64, ptr %1563, align 8, !tbaa !9
  store i64 %1564, ptr %35, align 8, !tbaa !9
  %1565 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1565, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1566

1566:                                             ; preds = %1627, %1554
  %1567 = load i64, ptr %34, align 8, !tbaa !9
  %1568 = icmp slt i64 %1567, 0
  br i1 %1568, label %1569, label %1574

1569:                                             ; preds = %1566
  %1570 = load i64, ptr %38, align 8, !tbaa !9
  %1571 = load i64, ptr %35, align 8, !tbaa !9
  %1572 = icmp sge i64 %1570, %1571
  %1573 = zext i1 %1572 to i32
  br label %1579

1574:                                             ; preds = %1566
  %1575 = load i64, ptr %38, align 8, !tbaa !9
  %1576 = load i64, ptr %35, align 8, !tbaa !9
  %1577 = icmp sle i64 %1575, %1576
  %1578 = zext i1 %1577 to i32
  br label %1579

1579:                                             ; preds = %1574, %1569
  %1580 = phi i32 [ %1573, %1569 ], [ %1578, %1574 ]
  %1581 = icmp ne i32 %1580, 0
  br i1 %1581, label %1582, label %1631

1582:                                             ; preds = %1579
  %1583 = load ptr, ptr %18, align 8, !tbaa !5
  %1584 = load i64, ptr %1583, align 8, !tbaa !9
  %1585 = load i64, ptr %38, align 8, !tbaa !9
  %1586 = sub nsw i64 %1584, %1585
  %1587 = add nsw i64 %1586, 1
  store i64 %1587, ptr %36, align 8, !tbaa !9
  %1588 = load i64, ptr %36, align 8, !tbaa !9
  %1589 = load i64, ptr %51, align 8, !tbaa !9
  %1590 = icmp sle i64 %1588, %1589
  br i1 %1590, label %1591, label %1593

1591:                                             ; preds = %1582
  %1592 = load i64, ptr %36, align 8, !tbaa !9
  br label %1595

1593:                                             ; preds = %1582
  %1594 = load i64, ptr %51, align 8, !tbaa !9
  br label %1595

1595:                                             ; preds = %1593, %1591
  %1596 = phi i64 [ %1592, %1591 ], [ %1594, %1593 ]
  store i64 %1596, ptr %39, align 8, !tbaa !9
  %1597 = load ptr, ptr %16, align 8, !tbaa !5
  %1598 = load ptr, ptr %16, align 8, !tbaa !5
  %1599 = load ptr, ptr %26, align 8, !tbaa !5
  %1600 = load i64, ptr %41, align 8, !tbaa !9
  %1601 = getelementptr inbounds %struct.doublecomplex, ptr %1599, i64 %1600
  %1602 = load ptr, ptr %21, align 8, !tbaa !5
  %1603 = load i64, ptr %38, align 8, !tbaa !9
  %1604 = load i64, ptr %32, align 8, !tbaa !9
  %1605 = mul nsw i64 %1603, %1604
  %1606 = add nsw i64 %1605, 1
  %1607 = getelementptr inbounds %struct.doublecomplex, ptr %1602, i64 %1606
  %1608 = load ptr, ptr %22, align 8, !tbaa !5
  %1609 = load ptr, ptr %26, align 8, !tbaa !5
  %1610 = load i64, ptr %58, align 8, !tbaa !9
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %1609, i64 %1610
  %1612 = load ptr, ptr %16, align 8, !tbaa !5
  %1613 = call i32 @f2c_zgemm(ptr noundef @.str.17, ptr noundef @.str.20, ptr noundef %1597, ptr noundef %39, ptr noundef %1598, ptr noundef @c_b2, ptr noundef %1601, ptr noundef %60, ptr noundef %1607, ptr noundef %1608, ptr noundef @c_b1, ptr noundef %1611, ptr noundef %1612)
  %1614 = load ptr, ptr %16, align 8, !tbaa !5
  %1615 = load ptr, ptr %26, align 8, !tbaa !5
  %1616 = load i64, ptr %58, align 8, !tbaa !9
  %1617 = getelementptr inbounds %struct.doublecomplex, ptr %1615, i64 %1616
  %1618 = load ptr, ptr %16, align 8, !tbaa !5
  %1619 = load ptr, ptr %21, align 8, !tbaa !5
  %1620 = load i64, ptr %38, align 8, !tbaa !9
  %1621 = load i64, ptr %32, align 8, !tbaa !9
  %1622 = mul nsw i64 %1620, %1621
  %1623 = add nsw i64 %1622, 1
  %1624 = getelementptr inbounds %struct.doublecomplex, ptr %1619, i64 %1623
  %1625 = load ptr, ptr %22, align 8, !tbaa !5
  %1626 = call i32 @zlacpy_(ptr noundef @.str.14, ptr noundef %1614, ptr noundef %39, ptr noundef %1617, ptr noundef %1618, ptr noundef %1624, ptr noundef %1625)
  br label %1627

1627:                                             ; preds = %1595
  %1628 = load i64, ptr %34, align 8, !tbaa !9
  %1629 = load i64, ptr %38, align 8, !tbaa !9
  %1630 = add nsw i64 %1629, %1628
  store i64 %1630, ptr %38, align 8, !tbaa !9
  br label %1566, !llvm.loop !20

1631:                                             ; preds = %1579
  br label %1655

1632:                                             ; preds = %1550
  %1633 = load ptr, ptr %16, align 8, !tbaa !5
  %1634 = load ptr, ptr %16, align 8, !tbaa !5
  %1635 = load ptr, ptr %26, align 8, !tbaa !5
  %1636 = load i64, ptr %41, align 8, !tbaa !9
  %1637 = getelementptr inbounds %struct.doublecomplex, ptr %1635, i64 %1636
  %1638 = load ptr, ptr %21, align 8, !tbaa !5
  %1639 = load i64, ptr %32, align 8, !tbaa !9
  %1640 = add nsw i64 %1639, 1
  %1641 = getelementptr inbounds %struct.doublecomplex, ptr %1638, i64 %1640
  %1642 = load ptr, ptr %26, align 8, !tbaa !5
  %1643 = load i64, ptr %58, align 8, !tbaa !9
  %1644 = getelementptr inbounds %struct.doublecomplex, ptr %1642, i64 %1643
  %1645 = call i32 @f2c_zgemv(ptr noundef @.str.17, ptr noundef %1633, ptr noundef %1634, ptr noundef @c_b2, ptr noundef %1637, ptr noundef %60, ptr noundef %1641, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %1644, ptr noundef @c__1)
  %1646 = load ptr, ptr %16, align 8, !tbaa !5
  %1647 = load ptr, ptr %26, align 8, !tbaa !5
  %1648 = load i64, ptr %58, align 8, !tbaa !9
  %1649 = getelementptr inbounds %struct.doublecomplex, ptr %1647, i64 %1648
  %1650 = load ptr, ptr %21, align 8, !tbaa !5
  %1651 = load i64, ptr %32, align 8, !tbaa !9
  %1652 = add nsw i64 %1651, 1
  %1653 = getelementptr inbounds %struct.doublecomplex, ptr %1650, i64 %1652
  %1654 = call i32 @f2c_zcopy(ptr noundef %1646, ptr noundef %1649, ptr noundef @c__1, ptr noundef %1653, ptr noundef @c__1)
  br label %1655

1655:                                             ; preds = %1632, %1631
  br label %1656

1656:                                             ; preds = %1655, %1523
  %1657 = load ptr, ptr %17, align 8, !tbaa !5
  %1658 = load i64, ptr %1657, align 8, !tbaa !9
  %1659 = load ptr, ptr %16, align 8, !tbaa !5
  %1660 = load i64, ptr %1659, align 8, !tbaa !9
  %1661 = sub nsw i64 %1658, %1660
  store i64 %1661, ptr %34, align 8, !tbaa !9
  %1662 = load ptr, ptr %18, align 8, !tbaa !5
  %1663 = load ptr, ptr %21, align 8, !tbaa !5
  %1664 = load ptr, ptr %16, align 8, !tbaa !5
  %1665 = load i64, ptr %1664, align 8, !tbaa !9
  %1666 = add nsw i64 %1665, 1
  %1667 = load i64, ptr %32, align 8, !tbaa !9
  %1668 = add nsw i64 %1666, %1667
  %1669 = getelementptr inbounds %struct.doublecomplex, ptr %1663, i64 %1668
  %1670 = load ptr, ptr %22, align 8, !tbaa !5
  %1671 = call i32 @zlaset_(ptr noundef @.str.15, ptr noundef %34, ptr noundef %1662, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1669, ptr noundef %1670)
  %1672 = load i64, ptr %47, align 8, !tbaa !9
  %1673 = load ptr, ptr %16, align 8, !tbaa !5
  %1674 = load i64, ptr %1673, align 8, !tbaa !9
  %1675 = add nsw i64 %1672, %1674
  store i64 %1675, ptr %58, align 8, !tbaa !9
  %1676 = load ptr, ptr %27, align 8, !tbaa !5
  %1677 = load i64, ptr %1676, align 8, !tbaa !9
  %1678 = load i64, ptr %58, align 8, !tbaa !9
  %1679 = sub nsw i64 %1677, %1678
  %1680 = add nsw i64 %1679, 1
  store i64 %1680, ptr %34, align 8, !tbaa !9
  %1681 = load ptr, ptr %17, align 8, !tbaa !5
  %1682 = load ptr, ptr %18, align 8, !tbaa !5
  %1683 = load ptr, ptr %16, align 8, !tbaa !5
  %1684 = load ptr, ptr %19, align 8, !tbaa !5
  %1685 = load i64, ptr %31, align 8, !tbaa !9
  %1686 = getelementptr inbounds %struct.doublecomplex, ptr %1684, i64 %1685
  %1687 = load ptr, ptr %20, align 8, !tbaa !5
  %1688 = load ptr, ptr %26, align 8, !tbaa !5
  %1689 = load i64, ptr %47, align 8, !tbaa !9
  %1690 = getelementptr inbounds %struct.doublecomplex, ptr %1688, i64 %1689
  %1691 = load ptr, ptr %21, align 8, !tbaa !5
  %1692 = load i64, ptr %33, align 8, !tbaa !9
  %1693 = getelementptr inbounds %struct.doublecomplex, ptr %1691, i64 %1692
  %1694 = load ptr, ptr %22, align 8, !tbaa !5
  %1695 = load ptr, ptr %26, align 8, !tbaa !5
  %1696 = load i64, ptr %58, align 8, !tbaa !9
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %1695, i64 %1696
  %1698 = load ptr, ptr %29, align 8, !tbaa !5
  %1699 = call i32 @zunmlq_(ptr noundef @.str.16, ptr noundef @.str.17, ptr noundef %1681, ptr noundef %1682, ptr noundef %1683, ptr noundef %1686, ptr noundef %1687, ptr noundef %1690, ptr noundef %1693, ptr noundef %1694, ptr noundef %1697, ptr noundef %34, ptr noundef %1698)
  br label %2026

1700:                                             ; preds = %1213, %1182
  store i64 1, ptr %40, align 8, !tbaa !9
  store i64 1, ptr %56, align 8, !tbaa !9
  %1701 = load i64, ptr %56, align 8, !tbaa !9
  %1702 = load ptr, ptr %16, align 8, !tbaa !5
  %1703 = load i64, ptr %1702, align 8, !tbaa !9
  %1704 = add nsw i64 %1701, %1703
  store i64 %1704, ptr %55, align 8, !tbaa !9
  %1705 = load i64, ptr %55, align 8, !tbaa !9
  %1706 = load ptr, ptr %16, align 8, !tbaa !5
  %1707 = load i64, ptr %1706, align 8, !tbaa !9
  %1708 = add nsw i64 %1705, %1707
  store i64 %1708, ptr %58, align 8, !tbaa !9
  %1709 = load ptr, ptr %27, align 8, !tbaa !5
  %1710 = load i64, ptr %1709, align 8, !tbaa !9
  %1711 = load i64, ptr %58, align 8, !tbaa !9
  %1712 = sub nsw i64 %1710, %1711
  %1713 = add nsw i64 %1712, 1
  store i64 %1713, ptr %34, align 8, !tbaa !9
  %1714 = load ptr, ptr %16, align 8, !tbaa !5
  %1715 = load ptr, ptr %17, align 8, !tbaa !5
  %1716 = load ptr, ptr %19, align 8, !tbaa !5
  %1717 = load i64, ptr %31, align 8, !tbaa !9
  %1718 = getelementptr inbounds %struct.doublecomplex, ptr %1716, i64 %1717
  %1719 = load ptr, ptr %20, align 8, !tbaa !5
  %1720 = load ptr, ptr %23, align 8, !tbaa !5
  %1721 = getelementptr inbounds double, ptr %1720, i64 1
  %1722 = load ptr, ptr %28, align 8, !tbaa !5
  %1723 = load i64, ptr %40, align 8, !tbaa !9
  %1724 = getelementptr inbounds double, ptr %1722, i64 %1723
  %1725 = load ptr, ptr %26, align 8, !tbaa !5
  %1726 = load i64, ptr %56, align 8, !tbaa !9
  %1727 = getelementptr inbounds %struct.doublecomplex, ptr %1725, i64 %1726
  %1728 = load ptr, ptr %26, align 8, !tbaa !5
  %1729 = load i64, ptr %55, align 8, !tbaa !9
  %1730 = getelementptr inbounds %struct.doublecomplex, ptr %1728, i64 %1729
  %1731 = load ptr, ptr %26, align 8, !tbaa !5
  %1732 = load i64, ptr %58, align 8, !tbaa !9
  %1733 = getelementptr inbounds %struct.doublecomplex, ptr %1731, i64 %1732
  %1734 = load ptr, ptr %29, align 8, !tbaa !5
  %1735 = call i32 @zgebrd_(ptr noundef %1714, ptr noundef %1715, ptr noundef %1718, ptr noundef %1719, ptr noundef %1721, ptr noundef %1724, ptr noundef %1727, ptr noundef %1730, ptr noundef %1733, ptr noundef %34, ptr noundef %1734)
  %1736 = load ptr, ptr %27, align 8, !tbaa !5
  %1737 = load i64, ptr %1736, align 8, !tbaa !9
  %1738 = load i64, ptr %58, align 8, !tbaa !9
  %1739 = sub nsw i64 %1737, %1738
  %1740 = add nsw i64 %1739, 1
  store i64 %1740, ptr %34, align 8, !tbaa !9
  %1741 = load ptr, ptr %16, align 8, !tbaa !5
  %1742 = load ptr, ptr %18, align 8, !tbaa !5
  %1743 = load ptr, ptr %17, align 8, !tbaa !5
  %1744 = load ptr, ptr %19, align 8, !tbaa !5
  %1745 = load i64, ptr %31, align 8, !tbaa !9
  %1746 = getelementptr inbounds %struct.doublecomplex, ptr %1744, i64 %1745
  %1747 = load ptr, ptr %20, align 8, !tbaa !5
  %1748 = load ptr, ptr %26, align 8, !tbaa !5
  %1749 = load i64, ptr %56, align 8, !tbaa !9
  %1750 = getelementptr inbounds %struct.doublecomplex, ptr %1748, i64 %1749
  %1751 = load ptr, ptr %21, align 8, !tbaa !5
  %1752 = load i64, ptr %33, align 8, !tbaa !9
  %1753 = getelementptr inbounds %struct.doublecomplex, ptr %1751, i64 %1752
  %1754 = load ptr, ptr %22, align 8, !tbaa !5
  %1755 = load ptr, ptr %26, align 8, !tbaa !5
  %1756 = load i64, ptr %58, align 8, !tbaa !9
  %1757 = getelementptr inbounds %struct.doublecomplex, ptr %1755, i64 %1756
  %1758 = load ptr, ptr %29, align 8, !tbaa !5
  %1759 = call i32 @zunmbr_(ptr noundef @.str.18, ptr noundef @.str.16, ptr noundef @.str.17, ptr noundef %1741, ptr noundef %1742, ptr noundef %1743, ptr noundef %1746, ptr noundef %1747, ptr noundef %1750, ptr noundef %1753, ptr noundef %1754, ptr noundef %1757, ptr noundef %34, ptr noundef %1758)
  %1760 = load ptr, ptr %27, align 8, !tbaa !5
  %1761 = load i64, ptr %1760, align 8, !tbaa !9
  %1762 = load i64, ptr %58, align 8, !tbaa !9
  %1763 = sub nsw i64 %1761, %1762
  %1764 = add nsw i64 %1763, 1
  store i64 %1764, ptr %34, align 8, !tbaa !9
  %1765 = load ptr, ptr %16, align 8, !tbaa !5
  %1766 = load ptr, ptr %17, align 8, !tbaa !5
  %1767 = load ptr, ptr %16, align 8, !tbaa !5
  %1768 = load ptr, ptr %19, align 8, !tbaa !5
  %1769 = load i64, ptr %31, align 8, !tbaa !9
  %1770 = getelementptr inbounds %struct.doublecomplex, ptr %1768, i64 %1769
  %1771 = load ptr, ptr %20, align 8, !tbaa !5
  %1772 = load ptr, ptr %26, align 8, !tbaa !5
  %1773 = load i64, ptr %55, align 8, !tbaa !9
  %1774 = getelementptr inbounds %struct.doublecomplex, ptr %1772, i64 %1773
  %1775 = load ptr, ptr %26, align 8, !tbaa !5
  %1776 = load i64, ptr %58, align 8, !tbaa !9
  %1777 = getelementptr inbounds %struct.doublecomplex, ptr %1775, i64 %1776
  %1778 = load ptr, ptr %29, align 8, !tbaa !5
  %1779 = call i32 @zungbr_(ptr noundef @.str.9, ptr noundef %1765, ptr noundef %1766, ptr noundef %1767, ptr noundef %1770, ptr noundef %1771, ptr noundef %1774, ptr noundef %1777, ptr noundef %34, ptr noundef %1778)
  %1780 = load i64, ptr %40, align 8, !tbaa !9
  %1781 = load ptr, ptr %16, align 8, !tbaa !5
  %1782 = load i64, ptr %1781, align 8, !tbaa !9
  %1783 = add nsw i64 %1780, %1782
  store i64 %1783, ptr %64, align 8, !tbaa !9
  %1784 = load ptr, ptr %16, align 8, !tbaa !5
  %1785 = load ptr, ptr %17, align 8, !tbaa !5
  %1786 = load ptr, ptr %18, align 8, !tbaa !5
  %1787 = load ptr, ptr %23, align 8, !tbaa !5
  %1788 = getelementptr inbounds double, ptr %1787, i64 1
  %1789 = load ptr, ptr %28, align 8, !tbaa !5
  %1790 = load i64, ptr %40, align 8, !tbaa !9
  %1791 = getelementptr inbounds double, ptr %1789, i64 %1790
  %1792 = load ptr, ptr %19, align 8, !tbaa !5
  %1793 = load i64, ptr %31, align 8, !tbaa !9
  %1794 = getelementptr inbounds %struct.doublecomplex, ptr %1792, i64 %1793
  %1795 = load ptr, ptr %20, align 8, !tbaa !5
  %1796 = getelementptr inbounds [1 x %struct.doublecomplex], ptr %48, i64 0, i64 0
  %1797 = load ptr, ptr %21, align 8, !tbaa !5
  %1798 = load i64, ptr %33, align 8, !tbaa !9
  %1799 = getelementptr inbounds %struct.doublecomplex, ptr %1797, i64 %1798
  %1800 = load ptr, ptr %22, align 8, !tbaa !5
  %1801 = load ptr, ptr %28, align 8, !tbaa !5
  %1802 = load i64, ptr %64, align 8, !tbaa !9
  %1803 = getelementptr inbounds double, ptr %1801, i64 %1802
  %1804 = load ptr, ptr %29, align 8, !tbaa !5
  %1805 = call i32 @zbdsqr_(ptr noundef @.str.16, ptr noundef %1784, ptr noundef %1785, ptr noundef @c__0, ptr noundef %1786, ptr noundef %1788, ptr noundef %1791, ptr noundef %1794, ptr noundef %1795, ptr noundef %1796, ptr noundef @c__1, ptr noundef %1799, ptr noundef %1800, ptr noundef %1803, ptr noundef %1804)
  %1806 = load ptr, ptr %29, align 8, !tbaa !5
  %1807 = load i64, ptr %1806, align 8, !tbaa !9
  %1808 = icmp ne i64 %1807, 0
  br i1 %1808, label %1809, label %1810

1809:                                             ; preds = %1700
  br label %2086

1810:                                             ; preds = %1700
  %1811 = load ptr, ptr %24, align 8, !tbaa !5
  %1812 = load double, ptr %1811, align 8, !tbaa !15
  %1813 = load ptr, ptr %23, align 8, !tbaa !5
  %1814 = getelementptr inbounds double, ptr %1813, i64 1
  %1815 = load double, ptr %1814, align 8, !tbaa !15
  %1816 = fmul double %1812, %1815
  store double %1816, ptr %37, align 8, !tbaa !15
  %1817 = load double, ptr %37, align 8, !tbaa !15
  %1818 = load double, ptr %52, align 8, !tbaa !15
  %1819 = fcmp oge double %1817, %1818
  br i1 %1819, label %1820, label %1822

1820:                                             ; preds = %1810
  %1821 = load double, ptr %37, align 8, !tbaa !15
  br label %1824

1822:                                             ; preds = %1810
  %1823 = load double, ptr %52, align 8, !tbaa !15
  br label %1824

1824:                                             ; preds = %1822, %1820
  %1825 = phi double [ %1821, %1820 ], [ %1823, %1822 ]
  store double %1825, ptr %44, align 8, !tbaa !15
  %1826 = load ptr, ptr %24, align 8, !tbaa !5
  %1827 = load double, ptr %1826, align 8, !tbaa !15
  %1828 = fcmp olt double %1827, 0.000000e+00
  br i1 %1828, label %1829, label %1844

1829:                                             ; preds = %1824
  %1830 = load double, ptr %43, align 8, !tbaa !15
  %1831 = load ptr, ptr %23, align 8, !tbaa !5
  %1832 = getelementptr inbounds double, ptr %1831, i64 1
  %1833 = load double, ptr %1832, align 8, !tbaa !15
  %1834 = fmul double %1830, %1833
  store double %1834, ptr %37, align 8, !tbaa !15
  %1835 = load double, ptr %37, align 8, !tbaa !15
  %1836 = load double, ptr %52, align 8, !tbaa !15
  %1837 = fcmp oge double %1835, %1836
  br i1 %1837, label %1838, label %1840

1838:                                             ; preds = %1829
  %1839 = load double, ptr %37, align 8, !tbaa !15
  br label %1842

1840:                                             ; preds = %1829
  %1841 = load double, ptr %52, align 8, !tbaa !15
  br label %1842

1842:                                             ; preds = %1840, %1838
  %1843 = phi double [ %1839, %1838 ], [ %1841, %1840 ]
  store double %1843, ptr %44, align 8, !tbaa !15
  br label %1844

1844:                                             ; preds = %1842, %1824
  %1845 = load ptr, ptr %25, align 8, !tbaa !5
  store i64 0, ptr %1845, align 8, !tbaa !9
  %1846 = load ptr, ptr %16, align 8, !tbaa !5
  %1847 = load i64, ptr %1846, align 8, !tbaa !9
  store i64 %1847, ptr %34, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1848

1848:                                             ; preds = %1884, %1844
  %1849 = load i64, ptr %38, align 8, !tbaa !9
  %1850 = load i64, ptr %34, align 8, !tbaa !9
  %1851 = icmp sle i64 %1849, %1850
  br i1 %1851, label %1852, label %1887

1852:                                             ; preds = %1848
  %1853 = load ptr, ptr %23, align 8, !tbaa !5
  %1854 = load i64, ptr %38, align 8, !tbaa !9
  %1855 = getelementptr inbounds double, ptr %1853, i64 %1854
  %1856 = load double, ptr %1855, align 8, !tbaa !15
  %1857 = load double, ptr %44, align 8, !tbaa !15
  %1858 = fcmp ogt double %1856, %1857
  br i1 %1858, label %1859, label %1874

1859:                                             ; preds = %1852
  %1860 = load ptr, ptr %18, align 8, !tbaa !5
  %1861 = load ptr, ptr %23, align 8, !tbaa !5
  %1862 = load i64, ptr %38, align 8, !tbaa !9
  %1863 = getelementptr inbounds double, ptr %1861, i64 %1862
  %1864 = load ptr, ptr %21, align 8, !tbaa !5
  %1865 = load i64, ptr %38, align 8, !tbaa !9
  %1866 = load i64, ptr %32, align 8, !tbaa !9
  %1867 = add nsw i64 %1865, %1866
  %1868 = getelementptr inbounds %struct.doublecomplex, ptr %1864, i64 %1867
  %1869 = load ptr, ptr %22, align 8, !tbaa !5
  %1870 = call i32 @zdrscl_(ptr noundef %1860, ptr noundef %1863, ptr noundef %1868, ptr noundef %1869)
  %1871 = load ptr, ptr %25, align 8, !tbaa !5
  %1872 = load i64, ptr %1871, align 8, !tbaa !9
  %1873 = add nsw i64 %1872, 1
  store i64 %1873, ptr %1871, align 8, !tbaa !9
  br label %1883

1874:                                             ; preds = %1852
  %1875 = load ptr, ptr %18, align 8, !tbaa !5
  %1876 = load ptr, ptr %21, align 8, !tbaa !5
  %1877 = load i64, ptr %38, align 8, !tbaa !9
  %1878 = load i64, ptr %32, align 8, !tbaa !9
  %1879 = add nsw i64 %1877, %1878
  %1880 = getelementptr inbounds %struct.doublecomplex, ptr %1876, i64 %1879
  %1881 = load ptr, ptr %22, align 8, !tbaa !5
  %1882 = call i32 @zlaset_(ptr noundef @.str.15, ptr noundef @c__1, ptr noundef %1875, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1880, ptr noundef %1881)
  br label %1883

1883:                                             ; preds = %1874, %1859
  br label %1884

1884:                                             ; preds = %1883
  %1885 = load i64, ptr %38, align 8, !tbaa !9
  %1886 = add nsw i64 %1885, 1
  store i64 %1886, ptr %38, align 8, !tbaa !9
  br label %1848, !llvm.loop !21

1887:                                             ; preds = %1848
  %1888 = load ptr, ptr %27, align 8, !tbaa !5
  %1889 = load i64, ptr %1888, align 8, !tbaa !9
  %1890 = load ptr, ptr %22, align 8, !tbaa !5
  %1891 = load i64, ptr %1890, align 8, !tbaa !9
  %1892 = load ptr, ptr %18, align 8, !tbaa !5
  %1893 = load i64, ptr %1892, align 8, !tbaa !9
  %1894 = mul nsw i64 %1891, %1893
  %1895 = icmp sge i64 %1889, %1894
  br i1 %1895, label %1896, label %1926

1896:                                             ; preds = %1887
  %1897 = load ptr, ptr %18, align 8, !tbaa !5
  %1898 = load i64, ptr %1897, align 8, !tbaa !9
  %1899 = icmp sgt i64 %1898, 1
  br i1 %1899, label %1900, label %1926

1900:                                             ; preds = %1896
  %1901 = load ptr, ptr %17, align 8, !tbaa !5
  %1902 = load ptr, ptr %18, align 8, !tbaa !5
  %1903 = load ptr, ptr %16, align 8, !tbaa !5
  %1904 = load ptr, ptr %19, align 8, !tbaa !5
  %1905 = load i64, ptr %31, align 8, !tbaa !9
  %1906 = getelementptr inbounds %struct.doublecomplex, ptr %1904, i64 %1905
  %1907 = load ptr, ptr %20, align 8, !tbaa !5
  %1908 = load ptr, ptr %21, align 8, !tbaa !5
  %1909 = load i64, ptr %33, align 8, !tbaa !9
  %1910 = getelementptr inbounds %struct.doublecomplex, ptr %1908, i64 %1909
  %1911 = load ptr, ptr %22, align 8, !tbaa !5
  %1912 = load ptr, ptr %26, align 8, !tbaa !5
  %1913 = getelementptr inbounds %struct.doublecomplex, ptr %1912, i64 1
  %1914 = load ptr, ptr %22, align 8, !tbaa !5
  %1915 = call i32 @f2c_zgemm(ptr noundef @.str.17, ptr noundef @.str.20, ptr noundef %1901, ptr noundef %1902, ptr noundef %1903, ptr noundef @c_b2, ptr noundef %1906, ptr noundef %1907, ptr noundef %1910, ptr noundef %1911, ptr noundef @c_b1, ptr noundef %1913, ptr noundef %1914)
  %1916 = load ptr, ptr %17, align 8, !tbaa !5
  %1917 = load ptr, ptr %18, align 8, !tbaa !5
  %1918 = load ptr, ptr %26, align 8, !tbaa !5
  %1919 = getelementptr inbounds %struct.doublecomplex, ptr %1918, i64 1
  %1920 = load ptr, ptr %22, align 8, !tbaa !5
  %1921 = load ptr, ptr %21, align 8, !tbaa !5
  %1922 = load i64, ptr %33, align 8, !tbaa !9
  %1923 = getelementptr inbounds %struct.doublecomplex, ptr %1921, i64 %1922
  %1924 = load ptr, ptr %22, align 8, !tbaa !5
  %1925 = call i32 @zlacpy_(ptr noundef @.str.14, ptr noundef %1916, ptr noundef %1917, ptr noundef %1919, ptr noundef %1920, ptr noundef %1923, ptr noundef %1924)
  br label %2025

1926:                                             ; preds = %1896, %1887
  %1927 = load ptr, ptr %18, align 8, !tbaa !5
  %1928 = load i64, ptr %1927, align 8, !tbaa !9
  %1929 = icmp sgt i64 %1928, 1
  br i1 %1929, label %1930, label %2004

1930:                                             ; preds = %1926
  %1931 = load ptr, ptr %27, align 8, !tbaa !5
  %1932 = load i64, ptr %1931, align 8, !tbaa !9
  %1933 = load ptr, ptr %17, align 8, !tbaa !5
  %1934 = load i64, ptr %1933, align 8, !tbaa !9
  %1935 = sdiv i64 %1932, %1934
  store i64 %1935, ptr %51, align 8, !tbaa !9
  %1936 = load ptr, ptr %18, align 8, !tbaa !5
  %1937 = load i64, ptr %1936, align 8, !tbaa !9
  store i64 %1937, ptr %34, align 8, !tbaa !9
  %1938 = load i64, ptr %51, align 8, !tbaa !9
  store i64 %1938, ptr %35, align 8, !tbaa !9
  store i64 1, ptr %38, align 8, !tbaa !9
  br label %1939

1939:                                             ; preds = %1999, %1930
  %1940 = load i64, ptr %35, align 8, !tbaa !9
  %1941 = icmp slt i64 %1940, 0
  br i1 %1941, label %1942, label %1947

1942:                                             ; preds = %1939
  %1943 = load i64, ptr %38, align 8, !tbaa !9
  %1944 = load i64, ptr %34, align 8, !tbaa !9
  %1945 = icmp sge i64 %1943, %1944
  %1946 = zext i1 %1945 to i32
  br label %1952

1947:                                             ; preds = %1939
  %1948 = load i64, ptr %38, align 8, !tbaa !9
  %1949 = load i64, ptr %34, align 8, !tbaa !9
  %1950 = icmp sle i64 %1948, %1949
  %1951 = zext i1 %1950 to i32
  br label %1952

1952:                                             ; preds = %1947, %1942
  %1953 = phi i32 [ %1946, %1942 ], [ %1951, %1947 ]
  %1954 = icmp ne i32 %1953, 0
  br i1 %1954, label %1955, label %2003

1955:                                             ; preds = %1952
  %1956 = load ptr, ptr %18, align 8, !tbaa !5
  %1957 = load i64, ptr %1956, align 8, !tbaa !9
  %1958 = load i64, ptr %38, align 8, !tbaa !9
  %1959 = sub nsw i64 %1957, %1958
  %1960 = add nsw i64 %1959, 1
  store i64 %1960, ptr %36, align 8, !tbaa !9
  %1961 = load i64, ptr %36, align 8, !tbaa !9
  %1962 = load i64, ptr %51, align 8, !tbaa !9
  %1963 = icmp sle i64 %1961, %1962
  br i1 %1963, label %1964, label %1966

1964:                                             ; preds = %1955
  %1965 = load i64, ptr %36, align 8, !tbaa !9
  br label %1968

1966:                                             ; preds = %1955
  %1967 = load i64, ptr %51, align 8, !tbaa !9
  br label %1968

1968:                                             ; preds = %1966, %1964
  %1969 = phi i64 [ %1965, %1964 ], [ %1967, %1966 ]
  store i64 %1969, ptr %39, align 8, !tbaa !9
  %1970 = load ptr, ptr %17, align 8, !tbaa !5
  %1971 = load ptr, ptr %16, align 8, !tbaa !5
  %1972 = load ptr, ptr %19, align 8, !tbaa !5
  %1973 = load i64, ptr %31, align 8, !tbaa !9
  %1974 = getelementptr inbounds %struct.doublecomplex, ptr %1972, i64 %1973
  %1975 = load ptr, ptr %20, align 8, !tbaa !5
  %1976 = load ptr, ptr %21, align 8, !tbaa !5
  %1977 = load i64, ptr %38, align 8, !tbaa !9
  %1978 = load i64, ptr %32, align 8, !tbaa !9
  %1979 = mul nsw i64 %1977, %1978
  %1980 = add nsw i64 %1979, 1
  %1981 = getelementptr inbounds %struct.doublecomplex, ptr %1976, i64 %1980
  %1982 = load ptr, ptr %22, align 8, !tbaa !5
  %1983 = load ptr, ptr %26, align 8, !tbaa !5
  %1984 = getelementptr inbounds %struct.doublecomplex, ptr %1983, i64 1
  %1985 = load ptr, ptr %17, align 8, !tbaa !5
  %1986 = call i32 @f2c_zgemm(ptr noundef @.str.17, ptr noundef @.str.20, ptr noundef %1970, ptr noundef %39, ptr noundef %1971, ptr noundef @c_b2, ptr noundef %1974, ptr noundef %1975, ptr noundef %1981, ptr noundef %1982, ptr noundef @c_b1, ptr noundef %1984, ptr noundef %1985)
  %1987 = load ptr, ptr %17, align 8, !tbaa !5
  %1988 = load ptr, ptr %26, align 8, !tbaa !5
  %1989 = getelementptr inbounds %struct.doublecomplex, ptr %1988, i64 1
  %1990 = load ptr, ptr %17, align 8, !tbaa !5
  %1991 = load ptr, ptr %21, align 8, !tbaa !5
  %1992 = load i64, ptr %38, align 8, !tbaa !9
  %1993 = load i64, ptr %32, align 8, !tbaa !9
  %1994 = mul nsw i64 %1992, %1993
  %1995 = add nsw i64 %1994, 1
  %1996 = getelementptr inbounds %struct.doublecomplex, ptr %1991, i64 %1995
  %1997 = load ptr, ptr %22, align 8, !tbaa !5
  %1998 = call i32 @zlacpy_(ptr noundef @.str.15, ptr noundef %1987, ptr noundef %39, ptr noundef %1989, ptr noundef %1990, ptr noundef %1996, ptr noundef %1997)
  br label %1999

1999:                                             ; preds = %1968
  %2000 = load i64, ptr %35, align 8, !tbaa !9
  %2001 = load i64, ptr %38, align 8, !tbaa !9
  %2002 = add nsw i64 %2001, %2000
  store i64 %2002, ptr %38, align 8, !tbaa !9
  br label %1939, !llvm.loop !22

2003:                                             ; preds = %1952
  br label %2024

2004:                                             ; preds = %1926
  %2005 = load ptr, ptr %16, align 8, !tbaa !5
  %2006 = load ptr, ptr %17, align 8, !tbaa !5
  %2007 = load ptr, ptr %19, align 8, !tbaa !5
  %2008 = load i64, ptr %31, align 8, !tbaa !9
  %2009 = getelementptr inbounds %struct.doublecomplex, ptr %2007, i64 %2008
  %2010 = load ptr, ptr %20, align 8, !tbaa !5
  %2011 = load ptr, ptr %21, align 8, !tbaa !5
  %2012 = load i64, ptr %33, align 8, !tbaa !9
  %2013 = getelementptr inbounds %struct.doublecomplex, ptr %2011, i64 %2012
  %2014 = load ptr, ptr %26, align 8, !tbaa !5
  %2015 = getelementptr inbounds %struct.doublecomplex, ptr %2014, i64 1
  %2016 = call i32 @f2c_zgemv(ptr noundef @.str.17, ptr noundef %2005, ptr noundef %2006, ptr noundef @c_b2, ptr noundef %2009, ptr noundef %2010, ptr noundef %2013, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %2015, ptr noundef @c__1)
  %2017 = load ptr, ptr %17, align 8, !tbaa !5
  %2018 = load ptr, ptr %26, align 8, !tbaa !5
  %2019 = getelementptr inbounds %struct.doublecomplex, ptr %2018, i64 1
  %2020 = load ptr, ptr %21, align 8, !tbaa !5
  %2021 = load i64, ptr %33, align 8, !tbaa !9
  %2022 = getelementptr inbounds %struct.doublecomplex, ptr %2020, i64 %2021
  %2023 = call i32 @f2c_zcopy(ptr noundef %2017, ptr noundef %2019, ptr noundef @c__1, ptr noundef %2022, ptr noundef @c__1)
  br label %2024

2024:                                             ; preds = %2004, %2003
  br label %2025

2025:                                             ; preds = %2024, %1900
  br label %2026

2026:                                             ; preds = %2025, %1656
  br label %2027

2027:                                             ; preds = %2026, %1169
  %2028 = load i64, ptr %49, align 8, !tbaa !9
  %2029 = icmp eq i64 %2028, 1
  br i1 %2029, label %2030, label %2043

2030:                                             ; preds = %2027
  %2031 = load ptr, ptr %17, align 8, !tbaa !5
  %2032 = load ptr, ptr %18, align 8, !tbaa !5
  %2033 = load ptr, ptr %21, align 8, !tbaa !5
  %2034 = load i64, ptr %33, align 8, !tbaa !9
  %2035 = getelementptr inbounds %struct.doublecomplex, ptr %2033, i64 %2034
  %2036 = load ptr, ptr %22, align 8, !tbaa !5
  %2037 = load ptr, ptr %29, align 8, !tbaa !5
  %2038 = call i32 @zlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %45, ptr noundef %63, ptr noundef %2031, ptr noundef %2032, ptr noundef %2035, ptr noundef %2036, ptr noundef %2037)
  %2039 = load ptr, ptr %23, align 8, !tbaa !5
  %2040 = getelementptr inbounds double, ptr %2039, i64 1
  %2041 = load ptr, ptr %29, align 8, !tbaa !5
  %2042 = call i32 @dlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %63, ptr noundef %45, ptr noundef %53, ptr noundef @c__1, ptr noundef %2040, ptr noundef %53, ptr noundef %2041)
  br label %2060

2043:                                             ; preds = %2027
  %2044 = load i64, ptr %49, align 8, !tbaa !9
  %2045 = icmp eq i64 %2044, 2
  br i1 %2045, label %2046, label %2059

2046:                                             ; preds = %2043
  %2047 = load ptr, ptr %17, align 8, !tbaa !5
  %2048 = load ptr, ptr %18, align 8, !tbaa !5
  %2049 = load ptr, ptr %21, align 8, !tbaa !5
  %2050 = load i64, ptr %33, align 8, !tbaa !9
  %2051 = getelementptr inbounds %struct.doublecomplex, ptr %2049, i64 %2050
  %2052 = load ptr, ptr %22, align 8, !tbaa !5
  %2053 = load ptr, ptr %29, align 8, !tbaa !5
  %2054 = call i32 @zlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %45, ptr noundef %59, ptr noundef %2047, ptr noundef %2048, ptr noundef %2051, ptr noundef %2052, ptr noundef %2053)
  %2055 = load ptr, ptr %23, align 8, !tbaa !5
  %2056 = getelementptr inbounds double, ptr %2055, i64 1
  %2057 = load ptr, ptr %29, align 8, !tbaa !5
  %2058 = call i32 @dlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %59, ptr noundef %45, ptr noundef %53, ptr noundef @c__1, ptr noundef %2056, ptr noundef %53, ptr noundef %2057)
  br label %2059

2059:                                             ; preds = %2046, %2043
  br label %2060

2060:                                             ; preds = %2059, %2030
  %2061 = load i64, ptr %50, align 8, !tbaa !9
  %2062 = icmp eq i64 %2061, 1
  br i1 %2062, label %2063, label %2072

2063:                                             ; preds = %2060
  %2064 = load ptr, ptr %17, align 8, !tbaa !5
  %2065 = load ptr, ptr %18, align 8, !tbaa !5
  %2066 = load ptr, ptr %21, align 8, !tbaa !5
  %2067 = load i64, ptr %33, align 8, !tbaa !9
  %2068 = getelementptr inbounds %struct.doublecomplex, ptr %2066, i64 %2067
  %2069 = load ptr, ptr %22, align 8, !tbaa !5
  %2070 = load ptr, ptr %29, align 8, !tbaa !5
  %2071 = call i32 @zlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %63, ptr noundef %46, ptr noundef %2064, ptr noundef %2065, ptr noundef %2068, ptr noundef %2069, ptr noundef %2070)
  br label %2085

2072:                                             ; preds = %2060
  %2073 = load i64, ptr %50, align 8, !tbaa !9
  %2074 = icmp eq i64 %2073, 2
  br i1 %2074, label %2075, label %2084

2075:                                             ; preds = %2072
  %2076 = load ptr, ptr %17, align 8, !tbaa !5
  %2077 = load ptr, ptr %18, align 8, !tbaa !5
  %2078 = load ptr, ptr %21, align 8, !tbaa !5
  %2079 = load i64, ptr %33, align 8, !tbaa !9
  %2080 = getelementptr inbounds %struct.doublecomplex, ptr %2078, i64 %2079
  %2081 = load ptr, ptr %22, align 8, !tbaa !5
  %2082 = load ptr, ptr %29, align 8, !tbaa !5
  %2083 = call i32 @zlascl_(ptr noundef @.str.14, ptr noundef @c__0, ptr noundef @c__0, ptr noundef %59, ptr noundef %46, ptr noundef %2076, ptr noundef %2077, ptr noundef %2080, ptr noundef %2081, ptr noundef %2082)
  br label %2084

2084:                                             ; preds = %2075, %2072
  br label %2085

2085:                                             ; preds = %2084, %2063
  br label %2086

2086:                                             ; preds = %2085, %1809, %1423, %953, %713
  %2087 = load i64, ptr %62, align 8, !tbaa !9
  %2088 = sitofp i64 %2087 to double
  %2089 = load ptr, ptr %26, align 8, !tbaa !5
  %2090 = getelementptr inbounds %struct.doublecomplex, ptr %2089, i64 1
  %2091 = getelementptr inbounds %struct.doublecomplex, ptr %2090, i32 0, i32 0
  store double %2088, ptr %2091, align 8, !tbaa !11
  %2092 = load ptr, ptr %26, align 8, !tbaa !5
  %2093 = getelementptr inbounds %struct.doublecomplex, ptr %2092, i64 1
  %2094 = getelementptr inbounds %struct.doublecomplex, ptr %2093, i32 0, i32 1
  store double 0.000000e+00, ptr %2094, align 8, !tbaa !14
  store i32 0, ptr %15, align 4
  store i32 1, ptr %66, align 4
  br label %2095

2095:                                             ; preds = %2086, %650, %640, %632
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #3
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #3
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #3
  %2096 = load i32, ptr %15, align 4
  ret i32 %2096
}

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

@c__6 = external hidden global i64, align 8
@.str = external hidden unnamed_addr constant [7 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@c_n1 = external hidden global i64, align 8
@c__1 = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [3 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 [4 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [7 x i8], align 1
@.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
@c__0 = external hidden global i64, align 8
@.str.15 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c_b78 = external hidden global double, align 8
@.str.16 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.19 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b2 = external hidden global %struct.doublecomplex, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @zgelss_(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 nocapture noundef readonly %8, ptr nocapture noundef %9, ptr noundef %10, ptr nocapture noundef readonly %11, ptr noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = alloca i64, align 8
  %16 = alloca i64, align 8
  %17 = alloca i64, align 8
  %18 = alloca i64, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca [1 x %struct.doublecomplex], align 16
  %22 = alloca i64, align 8
  %23 = alloca double, align 8
  %24 = alloca i64, align 8
  %25 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #4
  %26 = load i64, ptr %6, align 8, !tbaa !5
  %27 = xor i64 %26, -1
  %28 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %27
  %29 = getelementptr inbounds i8, ptr %7, i64 -8
  %30 = getelementptr inbounds i8, ptr %10, i64 -16
  store i64 0, ptr %13, align 8, !tbaa !5
  %31 = load i64, ptr %0, align 8, !tbaa !5
  %32 = load i64, ptr %1, align 8, !tbaa !5
  %. = tail call i64 @llvm.smin.i64(i64 %31, i64 %32)
  store i64 %., ptr %22, align 8, !tbaa !5
  %33 = tail call i64 @llvm.smax.i64(i64 %31, i64 %32)
  %34 = load i64, ptr %11, align 8, !tbaa !5
  %35 = icmp eq i64 %34, -1
  %36 = icmp slt i64 %31, 0
  br i1 %36, label %.thread989.sink.split, label %37

37:                                               ; preds = %14
  %38 = icmp slt i64 %32, 0
  br i1 %38, label %.thread989.sink.split, label %39

39:                                               ; preds = %37
  %40 = load i64, ptr %2, align 8, !tbaa !5
  %41 = icmp slt i64 %40, 0
  br i1 %41, label %.thread989.sink.split, label %42

42:                                               ; preds = %39
  %43 = load i64, ptr %4, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %31, i64 1)
  %44 = icmp slt i64 %43, %spec.select
  br i1 %44, label %.thread989.sink.split, label %45

45:                                               ; preds = %42
  %46 = load i64, ptr %6, align 8, !tbaa !5
  %47 = tail call i64 @llvm.smax.i64(i64 %33, i64 1)
  %48 = icmp slt i64 %46, %47
  br i1 %48, label %.thread989.sink.split, label %49

49:                                               ; preds = %45
  %50 = icmp sgt i64 %., 0
  br i1 %50, label %51, label %172

51:                                               ; preds = %49
  store i64 %31, ptr %18, align 8, !tbaa !5
  %52 = tail call i64 @ilaenv_(ptr noundef nonnull @c__6, ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull @c_n1) #4
  %53 = load i64, ptr %0, align 8, !tbaa !5
  %54 = load i64, ptr %1, align 8, !tbaa !5
  %.not923 = icmp slt i64 %53, %54
  %.not924 = icmp slt i64 %53, %52
  %or.cond971 = select i1 %.not923, i1 true, i1 %.not924
  br i1 %or.cond971, label %66, label %55

55:                                               ; preds = %51
  store i64 %54, ptr %18, align 8, !tbaa !5
  %56 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.2, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %57 = add i64 %56, 1
  %58 = mul i64 %57, %54
  %59 = tail call i64 @llvm.smax.i64(i64 %58, i64 1)
  store i64 %59, ptr %15, align 8, !tbaa !5
  %60 = load i64, ptr %1, align 8, !tbaa !5
  %61 = load i64, ptr %2, align 8, !tbaa !5
  %62 = tail call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef nonnull %1, ptr noundef nonnull @c_n1) #4
  %63 = mul nsw i64 %62, %61
  %64 = add nsw i64 %63, %60
  store i64 %64, ptr %16, align 8, !tbaa !5
  %65 = tail call i64 @llvm.smax.i64(i64 %59, i64 %64)
  %.pre = load i64, ptr %0, align 8, !tbaa !5
  %.pre1049 = load i64, ptr %1, align 8, !tbaa !5
  br label %66

66:                                               ; preds = %55, %51
  %67 = phi i64 [ %54, %55 ], [ %31, %51 ]
  %68 = phi i64 [ %.pre1049, %55 ], [ %54, %51 ]
  %69 = phi i64 [ %.pre, %55 ], [ %53, %51 ]
  %.0878 = phi i64 [ %65, %55 ], [ 1, %51 ]
  %.not927 = icmp slt i64 %69, %68
  br i1 %.not927, label %101, label %70

70:                                               ; preds = %66
  store i64 %.0878, ptr %15, align 8, !tbaa !5
  %71 = shl i64 %68, 1
  %72 = add nsw i64 %67, %68
  %73 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, ptr noundef nonnull %18, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %74 = mul nsw i64 %72, %73
  %75 = add nsw i64 %74, %71
  store i64 %75, ptr %16, align 8, !tbaa !5
  %76 = load i64, ptr %15, align 8
  %77 = call i64 @llvm.smax.i64(i64 %76, i64 %75)
  store i64 %77, ptr %15, align 8, !tbaa !5
  %78 = load i64, ptr %1, align 8, !tbaa !5
  %79 = shl i64 %78, 1
  %80 = load i64, ptr %2, align 8, !tbaa !5
  %81 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %1, ptr noundef nonnull @c_n1) #4
  %82 = mul nsw i64 %81, %80
  %83 = add nsw i64 %82, %79
  store i64 %83, ptr %16, align 8, !tbaa !5
  %84 = load i64, ptr %15, align 8
  %85 = call i64 @llvm.smax.i64(i64 %84, i64 %83)
  store i64 %85, ptr %15, align 8, !tbaa !5
  %86 = load i64, ptr %1, align 8, !tbaa !5
  %87 = shl i64 %86, 1
  %88 = add nsw i64 %86, -1
  %89 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull @c_n1) #4
  %90 = mul nsw i64 %88, %89
  %91 = add nsw i64 %90, %87
  %92 = load i64, ptr %15, align 8
  %93 = call i64 @llvm.smax.i64(i64 %92, i64 %91)
  store i64 %93, ptr %15, align 8, !tbaa !5
  %94 = load i64, ptr %1, align 8, !tbaa !5
  %95 = load i64, ptr %2, align 8, !tbaa !5
  %96 = mul nsw i64 %95, %94
  store i64 %96, ptr %16, align 8, !tbaa !5
  %97 = call i64 @llvm.smax.i64(i64 %93, i64 %96)
  %98 = shl i64 %94, 1
  %99 = load i64, ptr %0, align 8, !tbaa !5
  %.972 = call i64 @llvm.smax.i64(i64 %95, i64 %99)
  %100 = add nsw i64 %.972, %98
  br label %101

101:                                              ; preds = %70, %66
  %102 = phi i64 [ %99, %70 ], [ %69, %66 ]
  %103 = phi i64 [ %94, %70 ], [ %68, %66 ]
  %.0879 = phi i64 [ %100, %70 ], [ 1, %66 ]
  %.1 = phi i64 [ %97, %70 ], [ %.0878, %66 ]
  %104 = icmp sgt i64 %103, %102
  br i1 %104, label %105, label %170

105:                                              ; preds = %101
  %106 = shl i64 %102, 1
  %107 = load i64, ptr %2, align 8, !tbaa !5
  %.973 = call i64 @llvm.smax.i64(i64 %107, i64 %103)
  %108 = add nsw i64 %.973, %106
  %.not934 = icmp slt i64 %103, %52
  br i1 %.not934, label %147, label %109

109:                                              ; preds = %105
  %110 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %111 = add i64 %110, 1
  %112 = mul i64 %111, %102
  store i64 %112, ptr %15, align 8, !tbaa !5
  %113 = load i64, ptr %0, align 8, !tbaa !5
  %114 = add i64 %113, 3
  %115 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %116 = shl i64 %115, 1
  %reass.add = add i64 %114, %116
  %reass.mul = mul i64 %reass.add, %113
  store i64 %reass.mul, ptr %16, align 8, !tbaa !5
  %117 = load i64, ptr %15, align 8
  %118 = call i64 @llvm.smax.i64(i64 %117, i64 %reass.mul)
  store i64 %118, ptr %15, align 8, !tbaa !5
  %119 = load i64, ptr %0, align 8, !tbaa !5
  %120 = add i64 %119, 3
  %121 = mul i64 %120, %119
  %122 = load i64, ptr %2, align 8, !tbaa !5
  %123 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef nonnull %0, ptr noundef nonnull @c_n1) #4
  %124 = mul nsw i64 %123, %122
  %125 = add nsw i64 %124, %121
  store i64 %125, ptr %16, align 8, !tbaa !5
  %126 = load i64, ptr %15, align 8
  %127 = call i64 @llvm.smax.i64(i64 %126, i64 %125)
  store i64 %127, ptr %15, align 8, !tbaa !5
  %128 = load i64, ptr %0, align 8, !tbaa !5
  %129 = add i64 %128, 3
  %130 = mul i64 %129, %128
  %131 = add nsw i64 %128, -1
  %132 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef nonnull @c_n1) #4
  %133 = mul nsw i64 %131, %132
  %134 = add nsw i64 %130, %133
  %135 = load i64, ptr %15, align 8
  %136 = call i64 @llvm.smax.i64(i64 %135, i64 %134)
  %137 = load i64, ptr %2, align 8, !tbaa !5
  %138 = load i64, ptr %0, align 8, !tbaa !5
  %139 = add nuw i64 %137, 1
  %.inv = icmp slt i64 %137, 2
  %.sink1056.v = select i1 %.inv, i64 2, i64 %139
  %.sink1056 = add i64 %.sink1056.v, %138
  %140 = mul i64 %.sink1056, %138
  %141 = call i64 @llvm.smax.i64(i64 %136, i64 %140)
  store i64 %140, ptr %16, align 8
  store i64 %141, ptr %15, align 8, !tbaa !5
  %142 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.4, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %0, ptr noundef nonnull @c_n1) #4
  %143 = mul nsw i64 %142, %137
  %144 = add nsw i64 %143, %138
  store i64 %144, ptr %16, align 8, !tbaa !5
  %145 = load i64, ptr %15, align 8
  %146 = call i64 @llvm.smax.i64(i64 %145, i64 %144)
  br label %170

147:                                              ; preds = %105
  %148 = add nsw i64 %102, %103
  %149 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.5, ptr noundef nonnull @.str.1, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #4
  %150 = mul nsw i64 %149, %148
  %151 = add nsw i64 %150, %106
  store i64 %151, ptr %15, align 8, !tbaa !5
  %152 = load i64, ptr %0, align 8, !tbaa !5
  %153 = shl i64 %152, 1
  %154 = load i64, ptr %2, align 8, !tbaa !5
  %155 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef nonnull %0, ptr noundef nonnull @c_n1) #4
  %156 = mul nsw i64 %155, %154
  %157 = add nsw i64 %156, %153
  store i64 %157, ptr %16, align 8, !tbaa !5
  %158 = load i64, ptr %15, align 8
  %159 = call i64 @llvm.smax.i64(i64 %158, i64 %157)
  store i64 %159, ptr %15, align 8, !tbaa !5
  %160 = load i64, ptr %0, align 8, !tbaa !5
  %161 = call i64 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.8, ptr noundef nonnull @.str.9, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %0, ptr noundef nonnull @c_n1) #4
  %162 = add i64 %161, 2
  %163 = mul i64 %162, %160
  %164 = load i64, ptr %15, align 8
  %165 = call i64 @llvm.smax.i64(i64 %164, i64 %163)
  store i64 %165, ptr %15, align 8, !tbaa !5
  %166 = load i64, ptr %1, align 8, !tbaa !5
  %167 = load i64, ptr %2, align 8, !tbaa !5
  %168 = mul nsw i64 %167, %166
  store i64 %168, ptr %16, align 8, !tbaa !5
  %169 = call i64 @llvm.smax.i64(i64 %165, i64 %168)
  br label %170

170:                                              ; preds = %109, %147, %101
  %.1880 = phi i64 [ %108, %109 ], [ %108, %147 ], [ %.0879, %101 ]
  %.3 = phi i64 [ %146, %109 ], [ %169, %147 ], [ %.1, %101 ]
  %171 = call i64 @llvm.smax.i64(i64 %.1880, i64 %.3)
  %.pre1050 = load i64, ptr %11, align 8, !tbaa !5
  br label %172

172:                                              ; preds = %170, %49
  %173 = phi i64 [ %.pre1050, %170 ], [ %34, %49 ]
  %.0882 = phi i64 [ %52, %170 ], [ undef, %49 ]
  %.2881 = phi i64 [ %.1880, %170 ], [ 1, %49 ]
  %.4 = phi i64 [ %171, %170 ], [ 1, %49 ]
  %174 = sitofp i64 %.4 to double
  store double %174, ptr %10, align 8, !tbaa !9
  %175 = getelementptr inbounds i8, ptr %10, i64 8
  store double 0.000000e+00, ptr %175, align 8, !tbaa !12
  %176 = icmp sge i64 %173, %.2881
  %or.cond = select i1 %176, i1 true, i1 %35
  br i1 %or.cond, label %.thread, label %.thread989.sink.split

.thread:                                          ; preds = %172
  %.pr985.pr = load i64, ptr %13, align 8, !tbaa !5
  %.not945 = icmp eq i64 %.pr985.pr, 0
  br i1 %.not945, label %180, label %.thread989

.thread989.sink.split:                            ; preds = %172, %45, %42, %39, %37, %14
  %.sink = phi i64 [ -1, %14 ], [ -2, %37 ], [ -3, %39 ], [ -5, %42 ], [ -7, %45 ], [ -12, %172 ]
  store i64 %.sink, ptr %13, align 8, !tbaa !5
  br label %.thread989

.thread989:                                       ; preds = %.thread989.sink.split, %.thread
  %177 = phi i64 [ %.pr985.pr, %.thread ], [ %.sink, %.thread989.sink.split ]
  %178 = sub nsw i64 0, %177
  store i64 %178, ptr %15, align 8, !tbaa !5
  %179 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %15) #4
  br label %508

180:                                              ; preds = %.thread
  br i1 %35, label %508, label %181

181:                                              ; preds = %180
  %182 = load i64, ptr %0, align 8, !tbaa !5
  %183 = icmp eq i64 %182, 0
  br i1 %183, label %187, label %184

184:                                              ; preds = %181
  %185 = load i64, ptr %1, align 8, !tbaa !5
  %186 = icmp eq i64 %185, 0
  br i1 %186, label %187, label %188

187:                                              ; preds = %184, %181
  store i64 0, ptr %9, align 8, !tbaa !5
  br label %508

188:                                              ; preds = %184
  %189 = call double @dlamch_(ptr noundef nonnull @.str.9) #4
  %190 = call double @dlamch_(ptr noundef nonnull @.str.12) #4
  %191 = fdiv double %190, %189
  store double %191, ptr %25, align 8, !tbaa !13
  %192 = fdiv double 1.000000e+00, %191
  store double %192, ptr %23, align 8, !tbaa !13
  %193 = call i32 @dlabad_(ptr noundef nonnull %25, ptr noundef nonnull %23) #4
  %194 = call double @zlange_(ptr noundef nonnull @.str.13, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %12) #4
  store double %194, ptr %19, align 8, !tbaa !13
  %195 = fcmp ogt double %194, 0.000000e+00
  %196 = load double, ptr %25, align 8
  %197 = fcmp olt double %194, %196
  %or.cond975 = select i1 %195, i1 %197, i1 false
  br i1 %or.cond975, label %.sink.split, label %198

198:                                              ; preds = %188
  %199 = load double, ptr %23, align 8, !tbaa !13
  %200 = fcmp ogt double %194, %199
  br i1 %200, label %.sink.split, label %201

201:                                              ; preds = %198
  %202 = fcmp oeq double %194, 0.000000e+00
  br i1 %202, label %203, label %209

203:                                              ; preds = %201
  %204 = load i64, ptr %0, align 8, !tbaa !5
  %205 = load i64, ptr %1, align 8, !tbaa !5
  %.976 = call i64 @llvm.smax.i64(i64 %204, i64 %205)
  store i64 %.976, ptr %15, align 8, !tbaa !5
  %206 = call i32 @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %15, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %5, ptr noundef nonnull %6) #4
  %207 = call i32 @dlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b78, ptr noundef nonnull @c_b78, ptr noundef %7, ptr noundef nonnull %22) #4
  store i64 0, ptr %9, align 8, !tbaa !5
  br label %507

.sink.split:                                      ; preds = %198, %188
  %.sink1058 = phi ptr [ %25, %188 ], [ %23, %198 ]
  %.ph1057 = xor i1 %or.cond975, true
  %208 = call i32 @zlascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %19, ptr noundef nonnull %.sink1058, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %13) #4
  br label %209

209:                                              ; preds = %.sink.split, %201
  %210 = phi i1 [ false, %201 ], [ %.ph1057, %.sink.split ]
  %211 = call double @zlange_(ptr noundef nonnull @.str.13, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %12) #4
  store double %211, ptr %20, align 8, !tbaa !13
  %212 = fcmp ule double %211, 0.000000e+00
  %213 = load double, ptr %25, align 8
  %214 = fcmp uge double %211, %213
  %or.cond978.not = select i1 %212, i1 true, i1 %214
  br i1 %or.cond978.not, label %215, label %.sink.split1059

215:                                              ; preds = %209
  %216 = load double, ptr %23, align 8, !tbaa !13
  %217 = fcmp ogt double %211, %216
  br i1 %217, label %.sink.split1059, label %219

.sink.split1059:                                  ; preds = %215, %209
  %.sink1061 = phi ptr [ %25, %209 ], [ %23, %215 ]
  %218 = call i32 @zlascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %20, ptr noundef nonnull %.sink1061, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %13) #4
  br label %219

219:                                              ; preds = %.sink.split1059, %215
  %220 = phi i1 [ false, %215 ], [ %or.cond978.not, %.sink.split1059 ]
  %221 = load i64, ptr %0, align 8, !tbaa !5
  %222 = load i64, ptr %1, align 8, !tbaa !5
  %.not947 = icmp slt i64 %221, %222
  br i1 %.not947, label %308, label %223

223:                                              ; preds = %219
  store i64 %221, ptr %18, align 8, !tbaa !5
  %.not964 = icmp slt i64 %221, %.0882
  br i1 %.not964, label %238, label %224

224:                                              ; preds = %223
  store i64 %222, ptr %18, align 8, !tbaa !5
  %225 = load i64, ptr %11, align 8, !tbaa !5
  %226 = sub i64 %225, %222
  store i64 %226, ptr %15, align 8, !tbaa !5
  %227 = getelementptr %struct.doublecomplex, ptr %10, i64 %222
  %228 = call i32 @zgeqrf_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %10, ptr noundef %227, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  %229 = load i64, ptr %11, align 8, !tbaa !5
  %230 = sub i64 %229, %222
  store i64 %230, ptr %15, align 8, !tbaa !5
  %231 = call i32 @zunmqr_(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %10, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %227, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  %232 = load i64, ptr %1, align 8, !tbaa !5
  %233 = icmp sgt i64 %232, 1
  br i1 %233, label %234, label %238

234:                                              ; preds = %224
  %235 = add nsw i64 %232, -1
  store i64 %235, ptr %15, align 8, !tbaa !5
  store i64 %235, ptr %16, align 8, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %3, i64 16
  %237 = call i32 @zlaset_(ptr noundef nonnull @.str.16, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef nonnull %236, ptr noundef nonnull %4) #4
  %.pre1051 = load i64, ptr %1, align 8, !tbaa !5
  br label %238

238:                                              ; preds = %224, %234, %223
  %239 = phi i64 [ %232, %224 ], [ %.pre1051, %234 ], [ %222, %223 ]
  %reass.add965 = shl i64 %239, 1
  %240 = load i64, ptr %11, align 8, !tbaa !5
  %241 = sub i64 %240, %reass.add965
  store i64 %241, ptr %15, align 8, !tbaa !5
  %242 = getelementptr %struct.doublecomplex, ptr %10, i64 %239
  %243 = getelementptr %struct.doublecomplex, ptr %10, i64 %reass.add965
  %244 = call i32 @zgebrd_(ptr noundef nonnull %18, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef %12, ptr noundef nonnull %10, ptr noundef %242, ptr noundef %243, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  %245 = load i64, ptr %11, align 8, !tbaa !5
  %246 = sub i64 %245, %reass.add965
  store i64 %246, ptr %15, align 8, !tbaa !5
  %247 = call i32 @zunmbr_(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %10, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %243, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  %248 = load i64, ptr %11, align 8, !tbaa !5
  %249 = sub i64 %248, %reass.add965
  store i64 %249, ptr %15, align 8, !tbaa !5
  %250 = call i32 @zungbr_(ptr noundef nonnull @.str.9, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %242, ptr noundef %243, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  %251 = load i64, ptr %1, align 8, !tbaa !5
  %252 = getelementptr double, ptr %12, i64 %251
  %253 = call i32 @zbdsqr_(ptr noundef nonnull @.str.19, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef %7, ptr noundef %12, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %252, ptr noundef nonnull %13) #4
  %254 = load i64, ptr %13, align 8, !tbaa !5
  %.not966 = icmp eq i64 %254, 0
  br i1 %.not966, label %255, label %507

255:                                              ; preds = %238
  %256 = load double, ptr %8, align 8, !tbaa !13
  %257 = load double, ptr %7, align 8, !tbaa !13
  %258 = fmul double %256, %257
  %259 = fcmp oge double %258, %190
  %260 = select i1 %259, double %258, double %190
  %261 = fcmp olt double %256, 0.000000e+00
  br i1 %261, label %262, label %266

262:                                              ; preds = %255
  %263 = fmul double %189, %257
  %264 = fcmp oge double %263, %190
  %265 = select i1 %264, double %263, double %190
  br label %266

266:                                              ; preds = %262, %255
  %.0886 = phi double [ %265, %262 ], [ %260, %255 ]
  store i64 0, ptr %9, align 8, !tbaa !5
  %267 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %267, ptr %15, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %5, i64 -16
  %.not9671006 = icmp slt i64 %267, 1
  br i1 %.not9671006, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %266, %277
  %.08891007 = phi i64 [ %278, %277 ], [ 1, %266 ]
  %268 = getelementptr inbounds double, ptr %29, i64 %.08891007
  %269 = load double, ptr %268, align 8, !tbaa !13
  %270 = fcmp ogt double %269, %.0886
  %gep1005 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %.08891007
  br i1 %270, label %271, label %275

271:                                              ; preds = %.lr.ph
  %272 = call i32 @zdrscl_(ptr noundef nonnull %2, ptr noundef nonnull %268, ptr noundef %gep1005, ptr noundef nonnull %6) #4
  %273 = load i64, ptr %9, align 8, !tbaa !5
  %274 = add nsw i64 %273, 1
  store i64 %274, ptr %9, align 8, !tbaa !5
  br label %277

275:                                              ; preds = %.lr.ph
  %276 = call i32 @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %gep1005, ptr noundef nonnull %6) #4
  br label %277

277:                                              ; preds = %271, %275
  %278 = add nuw nsw i64 %.08891007, 1
  %279 = load i64, ptr %15, align 8, !tbaa !5
  %.not967.not = icmp slt i64 %.08891007, %279
  br i1 %.not967.not, label %.lr.ph, label %._crit_edge, !llvm.loop !14

._crit_edge:                                      ; preds = %277, %266
  %280 = load i64, ptr %11, align 8, !tbaa !5
  %281 = load i64, ptr %6, align 8, !tbaa !5
  %282 = load i64, ptr %2, align 8, !tbaa !5
  %283 = mul nsw i64 %282, %281
  %.not968 = icmp sge i64 %280, %283
  %284 = icmp sgt i64 %282, 1
  %or.cond979 = and i1 %284, %.not968
  br i1 %or.cond979, label %285, label %288

285:                                              ; preds = %._crit_edge
  %286 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.20, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %1, ptr noundef nonnull @c_b2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %6) #4
  %287 = call i32 @zlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6) #4
  br label %.loopexit

288:                                              ; preds = %._crit_edge
  br i1 %284, label %289, label %305

289:                                              ; preds = %288
  %290 = load i64, ptr %1, align 8, !tbaa !5
  %291 = sdiv i64 %280, %290
  store i64 %282, ptr %15, align 8, !tbaa !5
  store i64 %291, ptr %16, align 8, !tbaa !5
  %invariant.gep1008 = getelementptr i8, ptr %28, i64 16
  %292 = icmp sgt i64 %291, -1
  br i1 %292, label %.lr.ph1013, label %.loopexit

.lr.ph1013:                                       ; preds = %289, %.lr.ph1013
  %.18901011 = phi i64 [ %300, %.lr.ph1013 ], [ 1, %289 ]
  %293 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub = sub i64 %293, %.18901011
  %294 = add i64 %reass.sub, 1
  %295 = call i64 @llvm.smin.i64(i64 %294, i64 %291)
  store i64 %295, ptr %17, align 8, !tbaa !5
  %296 = mul nsw i64 %.18901011, %26
  %gep1009 = getelementptr %struct.doublecomplex, ptr %invariant.gep1008, i64 %296
  %297 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.20, ptr noundef nonnull %1, ptr noundef nonnull %17, ptr noundef nonnull %1, ptr noundef nonnull @c_b2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %gep1009, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %1) #4
  %298 = call i32 @zlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %1, ptr noundef nonnull %17, ptr noundef %10, ptr noundef nonnull %1, ptr noundef %gep1009, ptr noundef nonnull %6) #4
  %299 = load i64, ptr %16, align 8, !tbaa !5
  %300 = add nsw i64 %299, %.18901011
  %301 = icmp slt i64 %299, 0
  %302 = load i64, ptr %15, align 8
  %303 = icmp sge i64 %300, %302
  %304 = icmp sle i64 %300, %302
  %.in969 = select i1 %301, i1 %303, i1 %304
  br i1 %.in969, label %.lr.ph1013, label %.loopexit, !llvm.loop !16

305:                                              ; preds = %288
  %306 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.17, ptr noundef nonnull %1, ptr noundef nonnull %1, ptr noundef nonnull @c_b2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull @c__1) #4
  %307 = call i32 @f2c_zcopy(ptr noundef nonnull %1, ptr noundef %10, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull @c__1) #4
  br label %.loopexit

308:                                              ; preds = %219
  %309 = load i64, ptr %2, align 8, !tbaa !5
  %.980 = call i64 @llvm.smax.i64(i64 %221, i64 %309)
  store i64 %.980, ptr %16, align 8, !tbaa !5
  %310 = shl i64 %221, 1
  %311 = sub nsw i64 %222, %310
  %.not949 = icmp slt i64 %222, %.0882
  %.pre1053 = load i64, ptr %11, align 8, !tbaa !5
  br i1 %.not949, label %431, label %312

312:                                              ; preds = %308
  %313 = add i64 %221, 3
  %314 = mul i64 %313, %221
  %315 = call i64 @llvm.smax.i64(i64 %.980, i64 %311)
  %316 = add nsw i64 %315, %314
  %.not951 = icmp slt i64 %.pre1053, %316
  br i1 %.not951, label %431, label %317

317:                                              ; preds = %312
  store i64 %221, ptr %24, align 8, !tbaa !5
  store i64 %311, ptr %15, align 8, !tbaa !5
  %318 = load i64, ptr %4, align 8, !tbaa !5
  %319 = add i64 %318, 3
  %320 = mul i64 %319, %221
  %321 = add nsw i64 %320, %315
  %.not958 = icmp slt i64 %.pre1053, %321
  br i1 %.not958, label %323, label %322

322:                                              ; preds = %317
  store i64 %318, ptr %24, align 8, !tbaa !5
  br label %323

323:                                              ; preds = %322, %317
  %324 = add nsw i64 %221, 1
  %325 = sub i64 %.pre1053, %221
  store i64 %325, ptr %16, align 8, !tbaa !5
  %326 = getelementptr %struct.doublecomplex, ptr %10, i64 %221
  %327 = call i32 @zgelqf_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %10, ptr noundef %326, ptr noundef nonnull %16, ptr noundef nonnull %13) #4
  %328 = call i32 @zlacpy_(ptr noundef nonnull @.str.16, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %326, ptr noundef nonnull %24) #4
  %329 = load i64, ptr %0, align 8, !tbaa !5
  %330 = add nsw i64 %329, -1
  store i64 %330, ptr %16, align 8, !tbaa !5
  store i64 %330, ptr %15, align 8, !tbaa !5
  %331 = load i64, ptr %24, align 8, !tbaa !5
  %332 = getelementptr %struct.doublecomplex, ptr %326, i64 %331
  %333 = call i32 @zlaset_(ptr noundef nonnull @.str.19, ptr noundef nonnull %16, ptr noundef nonnull %15, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %332, ptr noundef nonnull %24) #4
  %334 = load i64, ptr %24, align 8, !tbaa !5
  %335 = load i64, ptr %0, align 8, !tbaa !5
  %336 = mul nsw i64 %335, %334
  %337 = add nsw i64 %336, %324
  %338 = add nsw i64 %337, %335
  %339 = add nsw i64 %338, %335
  %340 = load i64, ptr %11, align 8, !tbaa !5
  %341 = add i64 %340, 1
  %342 = sub i64 %341, %339
  store i64 %342, ptr %16, align 8, !tbaa !5
  %343 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %337
  %344 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %338
  %345 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %339
  %346 = call i32 @zgebrd_(ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef %326, ptr noundef nonnull %24, ptr noundef %7, ptr noundef %12, ptr noundef nonnull %343, ptr noundef nonnull %344, ptr noundef nonnull %345, ptr noundef nonnull %16, ptr noundef nonnull %13) #4
  %347 = load i64, ptr %11, align 8, !tbaa !5
  %reass.sub1044 = sub i64 %347, %339
  %348 = add i64 %reass.sub1044, 1
  store i64 %348, ptr %16, align 8, !tbaa !5
  %349 = call i32 @zunmbr_(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef nonnull %0, ptr noundef %326, ptr noundef nonnull %24, ptr noundef nonnull %343, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %345, ptr noundef nonnull %16, ptr noundef nonnull %13) #4
  %350 = load i64, ptr %11, align 8, !tbaa !5
  %reass.sub1045 = sub i64 %350, %339
  %351 = add i64 %reass.sub1045, 1
  store i64 %351, ptr %16, align 8, !tbaa !5
  %352 = call i32 @zungbr_(ptr noundef nonnull @.str.9, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef %326, ptr noundef nonnull %24, ptr noundef nonnull %344, ptr noundef nonnull %345, ptr noundef nonnull %16, ptr noundef nonnull %13) #4
  %353 = load i64, ptr %0, align 8, !tbaa !5
  %354 = getelementptr double, ptr %12, i64 %353
  %355 = call i32 @zbdsqr_(ptr noundef nonnull @.str.19, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef %7, ptr noundef %12, ptr noundef %326, ptr noundef nonnull %24, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %354, ptr noundef nonnull %13) #4
  %356 = load i64, ptr %13, align 8, !tbaa !5
  %.not959 = icmp eq i64 %356, 0
  br i1 %.not959, label %357, label %507

357:                                              ; preds = %323
  %358 = load double, ptr %8, align 8, !tbaa !13
  %359 = load double, ptr %7, align 8, !tbaa !13
  %360 = fmul double %358, %359
  %361 = fcmp oge double %360, %190
  %362 = select i1 %361, double %360, double %190
  %363 = fcmp olt double %358, 0.000000e+00
  br i1 %363, label %364, label %368

364:                                              ; preds = %357
  %365 = fmul double %189, %359
  %366 = fcmp oge double %365, %190
  %367 = select i1 %366, double %365, double %190
  br label %368

368:                                              ; preds = %364, %357
  %.1887 = phi double [ %367, %364 ], [ %362, %357 ]
  store i64 0, ptr %9, align 8, !tbaa !5
  %369 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %369, ptr %16, align 8, !tbaa !5
  %invariant.gep1014 = getelementptr i8, ptr %5, i64 -16
  %.not9601018 = icmp slt i64 %369, 1
  br i1 %.not9601018, label %._crit_edge1022, label %.lr.ph1021

.lr.ph1021:                                       ; preds = %368, %379
  %.28911019 = phi i64 [ %380, %379 ], [ 1, %368 ]
  %370 = getelementptr inbounds double, ptr %29, i64 %.28911019
  %371 = load double, ptr %370, align 8, !tbaa !13
  %372 = fcmp ogt double %371, %.1887
  %gep1017 = getelementptr %struct.doublecomplex, ptr %invariant.gep1014, i64 %.28911019
  br i1 %372, label %373, label %377

373:                                              ; preds = %.lr.ph1021
  %374 = call i32 @zdrscl_(ptr noundef nonnull %2, ptr noundef nonnull %370, ptr noundef %gep1017, ptr noundef nonnull %6) #4
  %375 = load i64, ptr %9, align 8, !tbaa !5
  %376 = add nsw i64 %375, 1
  store i64 %376, ptr %9, align 8, !tbaa !5
  br label %379

377:                                              ; preds = %.lr.ph1021
  %378 = call i32 @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %gep1017, ptr noundef nonnull %6) #4
  br label %379

379:                                              ; preds = %373, %377
  %380 = add nuw nsw i64 %.28911019, 1
  %381 = load i64, ptr %16, align 8, !tbaa !5
  %.not960.not = icmp slt i64 %.28911019, %381
  br i1 %.not960.not, label %.lr.ph1021, label %._crit_edge1022.loopexit, !llvm.loop !17

._crit_edge1022.loopexit:                         ; preds = %379
  %.pre1052 = load i64, ptr %0, align 8, !tbaa !5
  br label %._crit_edge1022

._crit_edge1022:                                  ; preds = %._crit_edge1022.loopexit, %368
  %382 = phi i64 [ %.pre1052, %._crit_edge1022.loopexit ], [ %369, %368 ]
  %383 = load i64, ptr %24, align 8, !tbaa !5
  %384 = mul nsw i64 %383, %382
  %385 = add nsw i64 %384, %324
  %386 = load i64, ptr %11, align 8, !tbaa !5
  %387 = load i64, ptr %6, align 8, !tbaa !5
  %388 = load i64, ptr %2, align 8, !tbaa !5
  %389 = mul nsw i64 %388, %387
  %390 = add i64 %384, %221
  %391 = add i64 %390, %389
  %.not961 = icmp sge i64 %386, %391
  %392 = icmp sgt i64 %388, 1
  %or.cond982 = and i1 %392, %.not961
  br i1 %or.cond982, label %393, label %397

393:                                              ; preds = %._crit_edge1022
  %394 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %385
  %395 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.20, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef nonnull %0, ptr noundef nonnull @c_b2, ptr noundef %326, ptr noundef nonnull %24, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef nonnull %394, ptr noundef nonnull %6) #4
  %396 = call i32 @zlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef nonnull %394, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6) #4
  br label %.loopexit1002

397:                                              ; preds = %._crit_edge1022
  br i1 %392, label %398, label %417

398:                                              ; preds = %397
  %399 = add i64 %386, 1
  %400 = sub i64 %399, %385
  %401 = sdiv i64 %400, %382
  store i64 %388, ptr %16, align 8, !tbaa !5
  store i64 %401, ptr %15, align 8, !tbaa !5
  %invariant.gep1023 = getelementptr i8, ptr %28, i64 16
  %402 = icmp sgt i64 %401, -1
  br i1 %402, label %.lr.ph1028, label %.loopexit1002

.lr.ph1028:                                       ; preds = %398
  %403 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %385
  br label %404

404:                                              ; preds = %.lr.ph1028, %404
  %.38921026 = phi i64 [ 1, %.lr.ph1028 ], [ %412, %404 ]
  %405 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub1046 = sub i64 %405, %.38921026
  %406 = add i64 %reass.sub1046, 1
  %407 = call i64 @llvm.smin.i64(i64 %406, i64 %401)
  store i64 %407, ptr %17, align 8, !tbaa !5
  %408 = mul nsw i64 %.38921026, %26
  %gep1024 = getelementptr %struct.doublecomplex, ptr %invariant.gep1023, i64 %408
  %409 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.20, ptr noundef nonnull %0, ptr noundef nonnull %17, ptr noundef nonnull %0, ptr noundef nonnull @c_b2, ptr noundef %326, ptr noundef nonnull %24, ptr noundef %gep1024, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef nonnull %403, ptr noundef nonnull %0) #4
  %410 = call i32 @zlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %0, ptr noundef nonnull %17, ptr noundef nonnull %403, ptr noundef nonnull %0, ptr noundef %gep1024, ptr noundef nonnull %6) #4
  %411 = load i64, ptr %15, align 8, !tbaa !5
  %412 = add nsw i64 %411, %.38921026
  %413 = icmp slt i64 %411, 0
  %414 = load i64, ptr %16, align 8
  %415 = icmp sge i64 %412, %414
  %416 = icmp sle i64 %412, %414
  %.in962 = select i1 %413, i1 %415, i1 %416
  br i1 %.in962, label %404, label %.loopexit1002, !llvm.loop !18

417:                                              ; preds = %397
  %418 = getelementptr inbounds %struct.doublecomplex, ptr %30, i64 %385
  %419 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.17, ptr noundef nonnull %0, ptr noundef nonnull %0, ptr noundef nonnull @c_b2, ptr noundef %326, ptr noundef nonnull %24, ptr noundef %5, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef nonnull %418, ptr noundef nonnull @c__1) #4
  %420 = call i32 @f2c_zcopy(ptr noundef nonnull %0, ptr noundef nonnull %418, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull @c__1) #4
  br label %.loopexit1002

.loopexit1002:                                    ; preds = %404, %398, %417, %393
  %421 = load i64, ptr %1, align 8, !tbaa !5
  %422 = load i64, ptr %0, align 8, !tbaa !5
  %423 = sub nsw i64 %421, %422
  store i64 %423, ptr %15, align 8, !tbaa !5
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %422
  %425 = call i32 @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull %15, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %424, ptr noundef nonnull %6) #4
  %426 = load i64, ptr %0, align 8, !tbaa !5
  %427 = load i64, ptr %11, align 8, !tbaa !5
  %428 = sub i64 %427, %426
  store i64 %428, ptr %15, align 8, !tbaa !5
  %429 = getelementptr %struct.doublecomplex, ptr %10, i64 %426
  %430 = call i32 @zunmlq_(ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %10, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %429, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  br label %.loopexit

431:                                              ; preds = %312, %308
  %432 = sub i64 %.pre1053, %310
  store i64 %432, ptr %15, align 8, !tbaa !5
  %433 = getelementptr %struct.doublecomplex, ptr %10, i64 %221
  %434 = getelementptr %struct.doublecomplex, ptr %10, i64 %310
  %435 = call i32 @zgebrd_(ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %7, ptr noundef %12, ptr noundef nonnull %10, ptr noundef %433, ptr noundef %434, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  %436 = load i64, ptr %11, align 8, !tbaa !5
  %437 = sub i64 %436, %310
  store i64 %437, ptr %15, align 8, !tbaa !5
  %438 = call i32 @zunmbr_(ptr noundef nonnull @.str.18, ptr noundef nonnull @.str.16, ptr noundef nonnull @.str.17, ptr noundef nonnull %0, ptr noundef nonnull %2, ptr noundef nonnull %1, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %10, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %434, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  %439 = load i64, ptr %11, align 8, !tbaa !5
  %440 = sub i64 %439, %310
  store i64 %440, ptr %15, align 8, !tbaa !5
  %441 = call i32 @zungbr_(ptr noundef nonnull @.str.9, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull %0, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %433, ptr noundef %434, ptr noundef nonnull %15, ptr noundef nonnull %13) #4
  %442 = load i64, ptr %0, align 8, !tbaa !5
  %443 = getelementptr double, ptr %12, i64 %442
  %444 = call i32 @zbdsqr_(ptr noundef nonnull @.str.16, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c__0, ptr noundef nonnull %2, ptr noundef %7, ptr noundef %12, ptr noundef %3, ptr noundef nonnull %4, ptr noundef nonnull %21, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %443, ptr noundef nonnull %13) #4
  %445 = load i64, ptr %13, align 8, !tbaa !5
  %.not952 = icmp eq i64 %445, 0
  br i1 %.not952, label %446, label %507

446:                                              ; preds = %431
  %447 = load double, ptr %8, align 8, !tbaa !13
  %448 = load double, ptr %7, align 8, !tbaa !13
  %449 = fmul double %447, %448
  %450 = fcmp oge double %449, %190
  %451 = select i1 %450, double %449, double %190
  %452 = fcmp olt double %447, 0.000000e+00
  br i1 %452, label %453, label %457

453:                                              ; preds = %446
  %454 = fmul double %189, %448
  %455 = fcmp oge double %454, %190
  %456 = select i1 %455, double %454, double %190
  br label %457

457:                                              ; preds = %453, %446
  %.2888 = phi double [ %456, %453 ], [ %451, %446 ]
  store i64 0, ptr %9, align 8, !tbaa !5
  %458 = load i64, ptr %0, align 8, !tbaa !5
  store i64 %458, ptr %15, align 8, !tbaa !5
  %invariant.gep1029 = getelementptr i8, ptr %5, i64 -16
  %.not9531033 = icmp slt i64 %458, 1
  br i1 %.not9531033, label %._crit_edge1037, label %.lr.ph1036

.lr.ph1036:                                       ; preds = %457, %468
  %.48931034 = phi i64 [ %469, %468 ], [ 1, %457 ]
  %459 = getelementptr inbounds double, ptr %29, i64 %.48931034
  %460 = load double, ptr %459, align 8, !tbaa !13
  %461 = fcmp ogt double %460, %.2888
  %gep1032 = getelementptr %struct.doublecomplex, ptr %invariant.gep1029, i64 %.48931034
  br i1 %461, label %462, label %466

462:                                              ; preds = %.lr.ph1036
  %463 = call i32 @zdrscl_(ptr noundef nonnull %2, ptr noundef nonnull %459, ptr noundef %gep1032, ptr noundef nonnull %6) #4
  %464 = load i64, ptr %9, align 8, !tbaa !5
  %465 = add nsw i64 %464, 1
  store i64 %465, ptr %9, align 8, !tbaa !5
  br label %468

466:                                              ; preds = %.lr.ph1036
  %467 = call i32 @zlaset_(ptr noundef nonnull @.str.15, ptr noundef nonnull @c__1, ptr noundef nonnull %2, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %gep1032, ptr noundef nonnull %6) #4
  br label %468

468:                                              ; preds = %462, %466
  %469 = add nuw nsw i64 %.48931034, 1
  %470 = load i64, ptr %15, align 8, !tbaa !5
  %.not953.not = icmp slt i64 %.48931034, %470
  br i1 %.not953.not, label %.lr.ph1036, label %._crit_edge1037, !llvm.loop !19

._crit_edge1037:                                  ; preds = %468, %457
  %471 = load i64, ptr %11, align 8, !tbaa !5
  %472 = load i64, ptr %6, align 8, !tbaa !5
  %473 = load i64, ptr %2, align 8, !tbaa !5
  %474 = mul nsw i64 %473, %472
  %.not954 = icmp sge i64 %471, %474
  %475 = icmp sgt i64 %473, 1
  %or.cond983 = and i1 %475, %.not954
  br i1 %or.cond983, label %476, label %479

476:                                              ; preds = %._crit_edge1037
  %477 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.20, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %0, ptr noundef nonnull @c_b2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %6) #4
  %478 = call i32 @zlacpy_(ptr noundef nonnull @.str.14, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %10, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6) #4
  br label %.loopexit

479:                                              ; preds = %._crit_edge1037
  br i1 %475, label %480, label %496

480:                                              ; preds = %479
  %481 = load i64, ptr %1, align 8, !tbaa !5
  %482 = sdiv i64 %471, %481
  store i64 %473, ptr %15, align 8, !tbaa !5
  store i64 %482, ptr %16, align 8, !tbaa !5
  %invariant.gep1038 = getelementptr i8, ptr %28, i64 16
  %483 = icmp sgt i64 %482, -1
  br i1 %483, label %.lr.ph1043, label %.loopexit

.lr.ph1043:                                       ; preds = %480, %.lr.ph1043
  %.58941041 = phi i64 [ %491, %.lr.ph1043 ], [ 1, %480 ]
  %484 = load i64, ptr %2, align 8, !tbaa !5
  %reass.sub1047 = sub i64 %484, %.58941041
  %485 = add i64 %reass.sub1047, 1
  %486 = call i64 @llvm.smin.i64(i64 %485, i64 %482)
  store i64 %486, ptr %17, align 8, !tbaa !5
  %487 = mul nsw i64 %.58941041, %26
  %gep1039 = getelementptr %struct.doublecomplex, ptr %invariant.gep1038, i64 %487
  %488 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.20, ptr noundef nonnull %1, ptr noundef nonnull %17, ptr noundef nonnull %0, ptr noundef nonnull @c_b2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %gep1039, ptr noundef nonnull %6, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull %1) #4
  %489 = call i32 @zlacpy_(ptr noundef nonnull @.str.15, ptr noundef nonnull %1, ptr noundef nonnull %17, ptr noundef %10, ptr noundef nonnull %1, ptr noundef %gep1039, ptr noundef nonnull %6) #4
  %490 = load i64, ptr %16, align 8, !tbaa !5
  %491 = add nsw i64 %490, %.58941041
  %492 = icmp slt i64 %490, 0
  %493 = load i64, ptr %15, align 8
  %494 = icmp sge i64 %491, %493
  %495 = icmp sle i64 %491, %493
  %.in = select i1 %492, i1 %494, i1 %495
  br i1 %.in, label %.lr.ph1043, label %.loopexit, !llvm.loop !20

496:                                              ; preds = %479
  %497 = call i32 @f2c_zgemv(ptr noundef nonnull @.str.17, ptr noundef nonnull %0, ptr noundef nonnull %1, ptr noundef nonnull @c_b2, ptr noundef %3, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %10, ptr noundef nonnull @c__1) #4
  %498 = call i32 @f2c_zcopy(ptr noundef nonnull %1, ptr noundef %10, ptr noundef nonnull @c__1, ptr noundef %5, ptr noundef nonnull @c__1) #4
  br label %.loopexit

.loopexit:                                        ; preds = %.lr.ph1013, %.lr.ph1043, %289, %480, %.loopexit1002, %496, %476, %285, %305
  %brmerge = or i1 %or.cond975, %210
  br i1 %brmerge, label %.sink.split1062, label %501

.sink.split1062:                                  ; preds = %.loopexit
  %.mux = select i1 %or.cond975, ptr %25, ptr %23
  %499 = call i32 @zlascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %19, ptr noundef nonnull %.mux, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %13) #4
  %500 = call i32 @dlascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %.mux, ptr noundef nonnull %19, ptr noundef nonnull %22, ptr noundef nonnull @c__1, ptr noundef %7, ptr noundef nonnull %22, ptr noundef nonnull %13) #4
  br label %501

501:                                              ; preds = %.loopexit, %.sink.split1062
  br i1 %or.cond978.not, label %504, label %502

502:                                              ; preds = %501
  %503 = call i32 @zlascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %25, ptr noundef nonnull %20, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %13) #4
  br label %507

504:                                              ; preds = %501
  br i1 %220, label %505, label %507

505:                                              ; preds = %504
  %506 = call i32 @zlascl_(ptr noundef nonnull @.str.14, ptr noundef nonnull @c__0, ptr noundef nonnull @c__0, ptr noundef nonnull %23, ptr noundef nonnull %20, ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %13) #4
  br label %507

507:                                              ; preds = %502, %505, %504, %431, %323, %238, %203
  store double %174, ptr %10, align 8, !tbaa !9
  store double 0.000000e+00, ptr %175, align 8, !tbaa !12
  br label %508

508:                                              ; preds = %180, %507, %187, %.thread989
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #4
  ret i32 0
}

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

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

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!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 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}


; Effective O3 passes: CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass