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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__2 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@c__5 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c__1 = external hidden global i64, align 8
@c_b44 = external hidden global %struct.doublecomplex, align 8
@c_b45 = external hidden global %struct.doublecomplex, align 8

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

149:                                              ; preds = %22
  %150 = load ptr, ptr %24, align 8, !tbaa !5
  %151 = call i64 @lsame_(ptr noundef %150, ptr noundef @.str.1)
  %152 = icmp ne i64 %151, 0
  br i1 %152, label %155, label %153

153:                                              ; preds = %149
  %154 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -1, ptr %154, align 8, !tbaa !9
  br label %170

155:                                              ; preds = %149, %22
  %156 = load i64, ptr %83, align 8, !tbaa !9
  %157 = icmp ne i64 %156, 0
  br i1 %157, label %158, label %169

158:                                              ; preds = %155
  %159 = load ptr, ptr %25, align 8, !tbaa !5
  %160 = load i64, ptr %159, align 8, !tbaa !9
  %161 = icmp slt i64 %160, 0
  br i1 %161, label %166, label %162

162:                                              ; preds = %158
  %163 = load ptr, ptr %25, align 8, !tbaa !5
  %164 = load i64, ptr %163, align 8, !tbaa !9
  %165 = icmp sgt i64 %164, 4
  br i1 %165, label %166, label %168

166:                                              ; preds = %162, %158
  %167 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -2, ptr %167, align 8, !tbaa !9
  br label %168

168:                                              ; preds = %166, %162
  br label %169

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

170:                                              ; preds = %169, %153
  %171 = load ptr, ptr %45, 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 %284

174:                                              ; preds = %170
  %175 = load ptr, ptr %26, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = icmp sle i64 %176, 0
  br i1 %177, label %178, label %180

178:                                              ; preds = %174
  %179 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -3, ptr %179, align 8, !tbaa !9
  br label %283

180:                                              ; preds = %174
  %181 = load ptr, ptr %27, align 8, !tbaa !5
  %182 = load i64, ptr %181, align 8, !tbaa !9
  %183 = icmp sle i64 %182, 0
  br i1 %183, label %184, label %186

184:                                              ; preds = %180
  %185 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -4, ptr %185, align 8, !tbaa !9
  br label %282

186:                                              ; preds = %180
  %187 = load ptr, ptr %29, align 8, !tbaa !5
  %188 = load i64, ptr %187, align 8, !tbaa !9
  %189 = load ptr, ptr %26, align 8, !tbaa !5
  %190 = load i64, ptr %189, align 8, !tbaa !9
  %191 = icmp sge i64 1, %190
  br i1 %191, label %192, label %193

192:                                              ; preds = %186
  br label %196

193:                                              ; preds = %186
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  br label %196

196:                                              ; preds = %193, %192
  %197 = phi i64 [ 1, %192 ], [ %195, %193 ]
  %198 = icmp slt i64 %188, %197
  br i1 %198, label %199, label %201

199:                                              ; preds = %196
  %200 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -6, ptr %200, align 8, !tbaa !9
  br label %281

201:                                              ; preds = %196
  %202 = load ptr, ptr %31, align 8, !tbaa !5
  %203 = load i64, ptr %202, align 8, !tbaa !9
  %204 = load ptr, ptr %27, align 8, !tbaa !5
  %205 = load i64, ptr %204, align 8, !tbaa !9
  %206 = icmp sge i64 1, %205
  br i1 %206, label %207, label %208

207:                                              ; preds = %201
  br label %211

208:                                              ; preds = %201
  %209 = load ptr, ptr %27, align 8, !tbaa !5
  %210 = load i64, ptr %209, align 8, !tbaa !9
  br label %211

211:                                              ; preds = %208, %207
  %212 = phi i64 [ 1, %207 ], [ %210, %208 ]
  %213 = icmp slt i64 %203, %212
  br i1 %213, label %214, label %216

214:                                              ; preds = %211
  %215 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -8, ptr %215, align 8, !tbaa !9
  br label %280

216:                                              ; preds = %211
  %217 = load ptr, ptr %33, align 8, !tbaa !5
  %218 = load i64, ptr %217, align 8, !tbaa !9
  %219 = load ptr, ptr %26, align 8, !tbaa !5
  %220 = load i64, ptr %219, align 8, !tbaa !9
  %221 = icmp sge i64 1, %220
  br i1 %221, label %222, label %223

222:                                              ; preds = %216
  br label %226

223:                                              ; preds = %216
  %224 = load ptr, ptr %26, align 8, !tbaa !5
  %225 = load i64, ptr %224, align 8, !tbaa !9
  br label %226

226:                                              ; preds = %223, %222
  %227 = phi i64 [ 1, %222 ], [ %225, %223 ]
  %228 = icmp slt i64 %218, %227
  br i1 %228, label %229, label %231

229:                                              ; preds = %226
  %230 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -10, ptr %230, align 8, !tbaa !9
  br label %279

231:                                              ; preds = %226
  %232 = load ptr, ptr %35, align 8, !tbaa !5
  %233 = load i64, ptr %232, align 8, !tbaa !9
  %234 = load ptr, ptr %26, align 8, !tbaa !5
  %235 = load i64, ptr %234, align 8, !tbaa !9
  %236 = icmp sge i64 1, %235
  br i1 %236, label %237, label %238

237:                                              ; preds = %231
  br label %241

238:                                              ; preds = %231
  %239 = load ptr, ptr %26, align 8, !tbaa !5
  %240 = load i64, ptr %239, align 8, !tbaa !9
  br label %241

241:                                              ; preds = %238, %237
  %242 = phi i64 [ 1, %237 ], [ %240, %238 ]
  %243 = icmp slt i64 %233, %242
  br i1 %243, label %244, label %246

244:                                              ; preds = %241
  %245 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -12, ptr %245, align 8, !tbaa !9
  br label %278

246:                                              ; preds = %241
  %247 = load ptr, ptr %37, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = load ptr, ptr %27, align 8, !tbaa !5
  %250 = load i64, ptr %249, align 8, !tbaa !9
  %251 = icmp sge i64 1, %250
  br i1 %251, label %252, label %253

252:                                              ; preds = %246
  br label %256

253:                                              ; preds = %246
  %254 = load ptr, ptr %27, align 8, !tbaa !5
  %255 = load i64, ptr %254, align 8, !tbaa !9
  br label %256

256:                                              ; preds = %253, %252
  %257 = phi i64 [ 1, %252 ], [ %255, %253 ]
  %258 = icmp slt i64 %248, %257
  br i1 %258, label %259, label %261

259:                                              ; preds = %256
  %260 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -14, ptr %260, align 8, !tbaa !9
  br label %277

261:                                              ; preds = %256
  %262 = load ptr, ptr %39, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = load ptr, ptr %26, align 8, !tbaa !5
  %265 = load i64, ptr %264, align 8, !tbaa !9
  %266 = icmp sge i64 1, %265
  br i1 %266, label %267, label %268

267:                                              ; preds = %261
  br label %271

268:                                              ; preds = %261
  %269 = load ptr, ptr %26, align 8, !tbaa !5
  %270 = load i64, ptr %269, align 8, !tbaa !9
  br label %271

271:                                              ; preds = %268, %267
  %272 = phi i64 [ 1, %267 ], [ %270, %268 ]
  %273 = icmp slt i64 %263, %272
  br i1 %273, label %274, label %276

274:                                              ; preds = %271
  %275 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -16, ptr %275, align 8, !tbaa !9
  br label %276

276:                                              ; preds = %274, %271
  br label %277

277:                                              ; preds = %276, %259
  br label %278

278:                                              ; preds = %277, %244
  br label %279

279:                                              ; preds = %278, %229
  br label %280

280:                                              ; preds = %279, %214
  br label %281

281:                                              ; preds = %280, %199
  br label %282

282:                                              ; preds = %281, %184
  br label %283

283:                                              ; preds = %282, %178
  br label %284

284:                                              ; preds = %283, %170
  %285 = load ptr, ptr %45, align 8, !tbaa !5
  %286 = load i64, ptr %285, align 8, !tbaa !9
  %287 = icmp eq i64 %286, 0
  br i1 %287, label %288, label %337

288:                                              ; preds = %284
  %289 = load i64, ptr %83, align 8, !tbaa !9
  %290 = icmp ne i64 %289, 0
  br i1 %290, label %291, label %317

291:                                              ; preds = %288
  %292 = load ptr, ptr %25, align 8, !tbaa !5
  %293 = load i64, ptr %292, align 8, !tbaa !9
  %294 = icmp eq i64 %293, 1
  br i1 %294, label %299, label %295

295:                                              ; preds = %291
  %296 = load ptr, ptr %25, align 8, !tbaa !5
  %297 = load i64, ptr %296, align 8, !tbaa !9
  %298 = icmp eq i64 %297, 2
  br i1 %298, label %299, label %315

299:                                              ; preds = %295, %291
  store i64 1, ptr %58, align 8, !tbaa !9
  %300 = load ptr, ptr %26, align 8, !tbaa !5
  %301 = load i64, ptr %300, align 8, !tbaa !9
  %302 = shl i64 %301, 1
  %303 = load ptr, ptr %27, align 8, !tbaa !5
  %304 = load i64, ptr %303, align 8, !tbaa !9
  %305 = mul nsw i64 %302, %304
  store i64 %305, ptr %59, align 8, !tbaa !9
  %306 = load i64, ptr %58, align 8, !tbaa !9
  %307 = load i64, ptr %59, align 8, !tbaa !9
  %308 = icmp sge i64 %306, %307
  br i1 %308, label %309, label %311

309:                                              ; preds = %299
  %310 = load i64, ptr %58, align 8, !tbaa !9
  br label %313

311:                                              ; preds = %299
  %312 = load i64, ptr %59, align 8, !tbaa !9
  br label %313

313:                                              ; preds = %311, %309
  %314 = phi i64 [ %310, %309 ], [ %312, %311 ]
  store i64 %314, ptr %78, align 8, !tbaa !9
  br label %316

315:                                              ; preds = %295
  store i64 1, ptr %78, align 8, !tbaa !9
  br label %316

316:                                              ; preds = %315, %313
  br label %318

317:                                              ; preds = %288
  store i64 1, ptr %78, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %317, %316
  %319 = load i64, ptr %78, align 8, !tbaa !9
  %320 = sitofp i64 %319 to double
  %321 = load ptr, ptr %42, align 8, !tbaa !5
  %322 = getelementptr inbounds %struct.doublecomplex, ptr %321, i64 1
  %323 = getelementptr inbounds %struct.doublecomplex, ptr %322, i32 0, i32 0
  store double %320, ptr %323, align 8, !tbaa !11
  %324 = load ptr, ptr %42, align 8, !tbaa !5
  %325 = getelementptr inbounds %struct.doublecomplex, ptr %324, i64 1
  %326 = getelementptr inbounds %struct.doublecomplex, ptr %325, i32 0, i32 1
  store double 0.000000e+00, ptr %326, align 8, !tbaa !14
  %327 = load ptr, ptr %43, align 8, !tbaa !5
  %328 = load i64, ptr %327, align 8, !tbaa !9
  %329 = load i64, ptr %78, align 8, !tbaa !9
  %330 = icmp slt i64 %328, %329
  br i1 %330, label %331, label %336

331:                                              ; preds = %318
  %332 = load i64, ptr %85, align 8, !tbaa !9
  %333 = icmp ne i64 %332, 0
  br i1 %333, label %336, label %334

334:                                              ; preds = %331
  %335 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 -20, ptr %335, align 8, !tbaa !9
  br label %336

336:                                              ; preds = %334, %331, %318
  br label %337

337:                                              ; preds = %336, %284
  %338 = load ptr, ptr %45, align 8, !tbaa !5
  %339 = load i64, ptr %338, align 8, !tbaa !9
  %340 = icmp ne i64 %339, 0
  br i1 %340, label %341, label %346

341:                                              ; preds = %337
  %342 = load ptr, ptr %45, align 8, !tbaa !5
  %343 = load i64, ptr %342, align 8, !tbaa !9
  %344 = sub nsw i64 0, %343
  store i64 %344, ptr %58, align 8, !tbaa !9
  %345 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %58)
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1615

346:                                              ; preds = %337
  %347 = load i64, ptr %85, align 8, !tbaa !9
  %348 = icmp ne i64 %347, 0
  br i1 %348, label %349, label %350

349:                                              ; preds = %346
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1615

350:                                              ; preds = %346
  br label %351

351:                                              ; preds = %350
  %352 = load ptr, ptr %26, align 8, !tbaa !5
  %353 = load i64, ptr %352, align 8, !tbaa !9
  %354 = icmp eq i64 %353, 0
  br i1 %354, label %359, label %355

355:                                              ; preds = %351
  %356 = load ptr, ptr %27, align 8, !tbaa !5
  %357 = load i64, ptr %356, align 8, !tbaa !9
  %358 = icmp eq i64 %357, 0
  br i1 %358, label %359, label %371

359:                                              ; preds = %355, %351
  %360 = load ptr, ptr %40, align 8, !tbaa !5
  store double 1.000000e+00, ptr %360, align 8, !tbaa !15
  %361 = load i64, ptr %83, align 8, !tbaa !9
  %362 = icmp ne i64 %361, 0
  br i1 %362, label %363, label %370

363:                                              ; preds = %359
  %364 = load ptr, ptr %25, align 8, !tbaa !5
  %365 = load i64, ptr %364, align 8, !tbaa !9
  %366 = icmp ne i64 %365, 0
  br i1 %366, label %367, label %369

367:                                              ; preds = %363
  %368 = load ptr, ptr %41, align 8, !tbaa !5
  store double 0.000000e+00, ptr %368, align 8, !tbaa !15
  br label %369

369:                                              ; preds = %367, %363
  br label %370

370:                                              ; preds = %369, %359
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1615

371:                                              ; preds = %355
  %372 = load ptr, ptr %24, align 8, !tbaa !5
  %373 = load ptr, ptr %26, align 8, !tbaa !5
  %374 = load ptr, ptr %27, align 8, !tbaa !5
  %375 = call i64 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.2, ptr noundef %372, ptr noundef %373, ptr noundef %374, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %375, ptr %70, align 8, !tbaa !9
  %376 = load ptr, ptr %24, align 8, !tbaa !5
  %377 = load ptr, ptr %26, align 8, !tbaa !5
  %378 = load ptr, ptr %27, align 8, !tbaa !5
  %379 = call i64 @ilaenv_(ptr noundef @c__5, ptr noundef @.str.2, ptr noundef %376, ptr noundef %377, ptr noundef %378, ptr noundef @c_n1, ptr noundef @c_n1)
  store i64 %379, ptr %71, align 8, !tbaa !9
  store i64 1, ptr %84, align 8, !tbaa !9
  store i64 0, ptr %76, align 8, !tbaa !9
  %380 = load i64, ptr %83, align 8, !tbaa !9
  %381 = icmp ne i64 %380, 0
  br i1 %381, label %382, label %414

382:                                              ; preds = %371
  %383 = load ptr, ptr %25, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = icmp sge i64 %384, 3
  br i1 %385, label %386, label %404

386:                                              ; preds = %382
  %387 = load ptr, ptr %25, align 8, !tbaa !5
  %388 = load i64, ptr %387, align 8, !tbaa !9
  %389 = sub nsw i64 %388, 2
  store i64 %389, ptr %76, align 8, !tbaa !9
  %390 = load ptr, ptr %26, align 8, !tbaa !5
  %391 = load ptr, ptr %27, align 8, !tbaa !5
  %392 = load ptr, ptr %32, align 8, !tbaa !5
  %393 = load i64, ptr %51, align 8, !tbaa !9
  %394 = getelementptr inbounds %struct.doublecomplex, ptr %392, i64 %393
  %395 = load ptr, ptr %33, align 8, !tbaa !5
  %396 = call i32 @zlaset_(ptr noundef @.str.3, ptr noundef %390, ptr noundef %391, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %394, ptr noundef %395)
  %397 = load ptr, ptr %26, align 8, !tbaa !5
  %398 = load ptr, ptr %27, align 8, !tbaa !5
  %399 = load ptr, ptr %38, align 8, !tbaa !5
  %400 = load i64, ptr %57, align 8, !tbaa !9
  %401 = getelementptr inbounds %struct.doublecomplex, ptr %399, i64 %400
  %402 = load ptr, ptr %39, align 8, !tbaa !5
  %403 = call i32 @zlaset_(ptr noundef @.str.3, ptr noundef %397, ptr noundef %398, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %401, ptr noundef %402)
  br label %413

404:                                              ; preds = %382
  %405 = load ptr, ptr %25, align 8, !tbaa !5
  %406 = load i64, ptr %405, align 8, !tbaa !9
  %407 = icmp sge i64 %406, 1
  br i1 %407, label %408, label %412

408:                                              ; preds = %404
  %409 = load i64, ptr %83, align 8, !tbaa !9
  %410 = icmp ne i64 %409, 0
  br i1 %410, label %411, label %412

411:                                              ; preds = %408
  store i64 2, ptr %84, align 8, !tbaa !9
  br label %412

412:                                              ; preds = %411, %408, %404
  br label %413

413:                                              ; preds = %412, %386
  br label %414

414:                                              ; preds = %413, %371
  %415 = load i64, ptr %70, align 8, !tbaa !9
  %416 = icmp sle i64 %415, 1
  br i1 %416, label %417, label %420

417:                                              ; preds = %414
  %418 = load i64, ptr %71, align 8, !tbaa !9
  %419 = icmp sle i64 %418, 1
  br i1 %419, label %430, label %420

420:                                              ; preds = %417, %414
  %421 = load i64, ptr %70, align 8, !tbaa !9
  %422 = load ptr, ptr %26, align 8, !tbaa !5
  %423 = load i64, ptr %422, align 8, !tbaa !9
  %424 = icmp sge i64 %421, %423
  br i1 %424, label %425, label %605

425:                                              ; preds = %420
  %426 = load i64, ptr %71, align 8, !tbaa !9
  %427 = load ptr, ptr %27, align 8, !tbaa !5
  %428 = load i64, ptr %427, align 8, !tbaa !9
  %429 = icmp sge i64 %426, %428
  br i1 %429, label %430, label %605

430:                                              ; preds = %425, %417
  %431 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %431, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %432

432:                                              ; preds = %601, %430
  %433 = load i64, ptr %82, align 8, !tbaa !9
  %434 = load i64, ptr %58, align 8, !tbaa !9
  %435 = icmp sle i64 %433, %434
  br i1 %435, label %436, label %604

436:                                              ; preds = %432
  %437 = load ptr, ptr %40, align 8, !tbaa !5
  store double 1.000000e+00, ptr %437, align 8, !tbaa !15
  store double 0.000000e+00, ptr %80, align 8, !tbaa !15
  store double 1.000000e+00, ptr %75, align 8, !tbaa !15
  %438 = load ptr, ptr %26, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = load ptr, ptr %27, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  %442 = mul nsw i64 %439, %441
  store i64 %442, ptr %74, align 8, !tbaa !9
  %443 = load ptr, ptr %24, align 8, !tbaa !5
  %444 = load ptr, ptr %26, align 8, !tbaa !5
  %445 = load ptr, ptr %27, align 8, !tbaa !5
  %446 = load ptr, ptr %28, align 8, !tbaa !5
  %447 = load i64, ptr %47, align 8, !tbaa !9
  %448 = getelementptr inbounds %struct.doublecomplex, ptr %446, i64 %447
  %449 = load ptr, ptr %29, align 8, !tbaa !5
  %450 = load ptr, ptr %30, align 8, !tbaa !5
  %451 = load i64, ptr %49, align 8, !tbaa !9
  %452 = getelementptr inbounds %struct.doublecomplex, ptr %450, i64 %451
  %453 = load ptr, ptr %31, align 8, !tbaa !5
  %454 = load ptr, ptr %32, align 8, !tbaa !5
  %455 = load i64, ptr %51, align 8, !tbaa !9
  %456 = getelementptr inbounds %struct.doublecomplex, ptr %454, i64 %455
  %457 = load ptr, ptr %33, align 8, !tbaa !5
  %458 = load ptr, ptr %34, align 8, !tbaa !5
  %459 = load i64, ptr %53, align 8, !tbaa !9
  %460 = getelementptr inbounds %struct.doublecomplex, ptr %458, i64 %459
  %461 = load ptr, ptr %35, align 8, !tbaa !5
  %462 = load ptr, ptr %36, align 8, !tbaa !5
  %463 = load i64, ptr %55, align 8, !tbaa !9
  %464 = getelementptr inbounds %struct.doublecomplex, ptr %462, i64 %463
  %465 = load ptr, ptr %37, align 8, !tbaa !5
  %466 = load ptr, ptr %38, align 8, !tbaa !5
  %467 = load i64, ptr %57, align 8, !tbaa !9
  %468 = getelementptr inbounds %struct.doublecomplex, ptr %466, i64 %467
  %469 = load ptr, ptr %39, align 8, !tbaa !5
  %470 = load ptr, ptr %40, align 8, !tbaa !5
  %471 = load ptr, ptr %45, align 8, !tbaa !5
  %472 = call i32 @ztgsy2_(ptr noundef %443, ptr noundef %76, ptr noundef %444, ptr noundef %445, ptr noundef %448, ptr noundef %449, ptr noundef %452, ptr noundef %453, ptr noundef %456, ptr noundef %457, ptr noundef %460, ptr noundef %461, ptr noundef %464, ptr noundef %465, ptr noundef %468, ptr noundef %469, ptr noundef %470, ptr noundef %75, ptr noundef %80, ptr noundef %471)
  %473 = load double, ptr %80, align 8, !tbaa !15
  %474 = fcmp une double %473, 0.000000e+00
  br i1 %474, label %475, label %509

475:                                              ; preds = %436
  %476 = load ptr, ptr %25, align 8, !tbaa !5
  %477 = load i64, ptr %476, align 8, !tbaa !9
  %478 = icmp eq i64 %477, 1
  br i1 %478, label %483, label %479

479:                                              ; preds = %475
  %480 = load ptr, ptr %25, align 8, !tbaa !5
  %481 = load i64, ptr %480, align 8, !tbaa !9
  %482 = icmp eq i64 %481, 3
  br i1 %482, label %483, label %498

483:                                              ; preds = %479, %475
  %484 = load ptr, ptr %26, align 8, !tbaa !5
  %485 = load i64, ptr %484, align 8, !tbaa !9
  %486 = shl i64 %485, 1
  %487 = load ptr, ptr %27, align 8, !tbaa !5
  %488 = load i64, ptr %487, align 8, !tbaa !9
  %489 = mul nsw i64 %486, %488
  %490 = sitofp i64 %489 to double
  %491 = call double @sqrt(double noundef %490) #4
  %492 = load double, ptr %80, align 8, !tbaa !15
  %493 = load double, ptr %75, align 8, !tbaa !15
  %494 = call double @sqrt(double noundef %493) #4
  %495 = fmul double %492, %494
  %496 = fdiv double %491, %495
  %497 = load ptr, ptr %41, align 8, !tbaa !5
  store double %496, ptr %497, align 8, !tbaa !15
  br label %508

498:                                              ; preds = %479
  %499 = load i64, ptr %74, align 8, !tbaa !9
  %500 = sitofp i64 %499 to double
  %501 = call double @sqrt(double noundef %500) #4
  %502 = load double, ptr %80, align 8, !tbaa !15
  %503 = load double, ptr %75, align 8, !tbaa !15
  %504 = call double @sqrt(double noundef %503) #4
  %505 = fmul double %502, %504
  %506 = fdiv double %501, %505
  %507 = load ptr, ptr %41, align 8, !tbaa !5
  store double %506, ptr %507, align 8, !tbaa !15
  br label %508

508:                                              ; preds = %498, %483
  br label %509

509:                                              ; preds = %508, %436
  %510 = load i64, ptr %84, align 8, !tbaa !9
  %511 = icmp eq i64 %510, 2
  br i1 %511, label %512, label %564

512:                                              ; preds = %509
  %513 = load i64, ptr %82, align 8, !tbaa !9
  %514 = icmp eq i64 %513, 1
  br i1 %514, label %515, label %564

515:                                              ; preds = %512
  %516 = load i64, ptr %83, align 8, !tbaa !9
  %517 = icmp ne i64 %516, 0
  br i1 %517, label %518, label %521

518:                                              ; preds = %515
  %519 = load ptr, ptr %25, align 8, !tbaa !5
  %520 = load i64, ptr %519, align 8, !tbaa !9
  store i64 %520, ptr %76, align 8, !tbaa !9
  br label %521

521:                                              ; preds = %518, %515
  %522 = load ptr, ptr %40, align 8, !tbaa !5
  %523 = load double, ptr %522, align 8, !tbaa !15
  store double %523, ptr %79, align 8, !tbaa !15
  %524 = load ptr, ptr %26, align 8, !tbaa !5
  %525 = load ptr, ptr %27, align 8, !tbaa !5
  %526 = load ptr, ptr %32, align 8, !tbaa !5
  %527 = load i64, ptr %51, align 8, !tbaa !9
  %528 = getelementptr inbounds %struct.doublecomplex, ptr %526, i64 %527
  %529 = load ptr, ptr %33, align 8, !tbaa !5
  %530 = load ptr, ptr %42, align 8, !tbaa !5
  %531 = getelementptr inbounds %struct.doublecomplex, ptr %530, i64 1
  %532 = load ptr, ptr %26, align 8, !tbaa !5
  %533 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %524, ptr noundef %525, ptr noundef %528, ptr noundef %529, ptr noundef %531, ptr noundef %532)
  %534 = load ptr, ptr %26, align 8, !tbaa !5
  %535 = load ptr, ptr %27, align 8, !tbaa !5
  %536 = load ptr, ptr %38, align 8, !tbaa !5
  %537 = load i64, ptr %57, align 8, !tbaa !9
  %538 = getelementptr inbounds %struct.doublecomplex, ptr %536, i64 %537
  %539 = load ptr, ptr %39, align 8, !tbaa !5
  %540 = load ptr, ptr %42, align 8, !tbaa !5
  %541 = load ptr, ptr %26, align 8, !tbaa !5
  %542 = load i64, ptr %541, align 8, !tbaa !9
  %543 = load ptr, ptr %27, align 8, !tbaa !5
  %544 = load i64, ptr %543, align 8, !tbaa !9
  %545 = mul nsw i64 %542, %544
  %546 = add nsw i64 %545, 1
  %547 = getelementptr inbounds %struct.doublecomplex, ptr %540, i64 %546
  %548 = load ptr, ptr %26, align 8, !tbaa !5
  %549 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %534, ptr noundef %535, ptr noundef %538, ptr noundef %539, ptr noundef %547, ptr noundef %548)
  %550 = load ptr, ptr %26, align 8, !tbaa !5
  %551 = load ptr, ptr %27, align 8, !tbaa !5
  %552 = load ptr, ptr %32, align 8, !tbaa !5
  %553 = load i64, ptr %51, align 8, !tbaa !9
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %552, i64 %553
  %555 = load ptr, ptr %33, align 8, !tbaa !5
  %556 = call i32 @zlaset_(ptr noundef @.str.3, ptr noundef %550, ptr noundef %551, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %554, ptr noundef %555)
  %557 = load ptr, ptr %26, align 8, !tbaa !5
  %558 = load ptr, ptr %27, align 8, !tbaa !5
  %559 = load ptr, ptr %38, align 8, !tbaa !5
  %560 = load i64, ptr %57, align 8, !tbaa !9
  %561 = getelementptr inbounds %struct.doublecomplex, ptr %559, i64 %560
  %562 = load ptr, ptr %39, align 8, !tbaa !5
  %563 = call i32 @zlaset_(ptr noundef @.str.3, ptr noundef %557, ptr noundef %558, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %561, ptr noundef %562)
  br label %600

564:                                              ; preds = %512, %509
  %565 = load i64, ptr %84, align 8, !tbaa !9
  %566 = icmp eq i64 %565, 2
  br i1 %566, label %567, label %599

567:                                              ; preds = %564
  %568 = load i64, ptr %82, align 8, !tbaa !9
  %569 = icmp eq i64 %568, 2
  br i1 %569, label %570, label %599

570:                                              ; preds = %567
  %571 = load ptr, ptr %26, align 8, !tbaa !5
  %572 = load ptr, ptr %27, align 8, !tbaa !5
  %573 = load ptr, ptr %42, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.doublecomplex, ptr %573, i64 1
  %575 = load ptr, ptr %26, align 8, !tbaa !5
  %576 = load ptr, ptr %32, align 8, !tbaa !5
  %577 = load i64, ptr %51, align 8, !tbaa !9
  %578 = getelementptr inbounds %struct.doublecomplex, ptr %576, i64 %577
  %579 = load ptr, ptr %33, align 8, !tbaa !5
  %580 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %571, ptr noundef %572, ptr noundef %574, ptr noundef %575, ptr noundef %578, ptr noundef %579)
  %581 = load ptr, ptr %26, align 8, !tbaa !5
  %582 = load ptr, ptr %27, align 8, !tbaa !5
  %583 = load ptr, ptr %42, align 8, !tbaa !5
  %584 = load ptr, ptr %26, align 8, !tbaa !5
  %585 = load i64, ptr %584, align 8, !tbaa !9
  %586 = load ptr, ptr %27, align 8, !tbaa !5
  %587 = load i64, ptr %586, align 8, !tbaa !9
  %588 = mul nsw i64 %585, %587
  %589 = add nsw i64 %588, 1
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %583, i64 %589
  %591 = load ptr, ptr %26, align 8, !tbaa !5
  %592 = load ptr, ptr %38, align 8, !tbaa !5
  %593 = load i64, ptr %57, align 8, !tbaa !9
  %594 = getelementptr inbounds %struct.doublecomplex, ptr %592, i64 %593
  %595 = load ptr, ptr %39, align 8, !tbaa !5
  %596 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %581, ptr noundef %582, ptr noundef %590, ptr noundef %591, ptr noundef %594, ptr noundef %595)
  %597 = load double, ptr %79, align 8, !tbaa !15
  %598 = load ptr, ptr %40, align 8, !tbaa !5
  store double %597, ptr %598, align 8, !tbaa !15
  br label %599

599:                                              ; preds = %570, %567, %564
  br label %600

600:                                              ; preds = %599, %521
  br label %601

601:                                              ; preds = %600
  %602 = load i64, ptr %82, align 8, !tbaa !9
  %603 = add nsw i64 %602, 1
  store i64 %603, ptr %82, align 8, !tbaa !9
  br label %432, !llvm.loop !16

604:                                              ; preds = %432
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1615

605:                                              ; preds = %425, %420
  store i64 0, ptr %66, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %606

606:                                              ; preds = %627, %605
  %607 = load i64, ptr %63, align 8, !tbaa !9
  %608 = load ptr, ptr %26, align 8, !tbaa !5
  %609 = load i64, ptr %608, align 8, !tbaa !9
  %610 = icmp sgt i64 %607, %609
  br i1 %610, label %611, label %612

611:                                              ; preds = %606
  br label %628

612:                                              ; preds = %606
  %613 = load i64, ptr %66, align 8, !tbaa !9
  %614 = add nsw i64 %613, 1
  store i64 %614, ptr %66, align 8, !tbaa !9
  %615 = load i64, ptr %63, align 8, !tbaa !9
  %616 = load ptr, ptr %44, align 8, !tbaa !5
  %617 = load i64, ptr %66, align 8, !tbaa !9
  %618 = getelementptr inbounds i64, ptr %616, i64 %617
  store i64 %615, ptr %618, align 8, !tbaa !9
  %619 = load i64, ptr %70, align 8, !tbaa !9
  %620 = load i64, ptr %63, align 8, !tbaa !9
  %621 = add nsw i64 %620, %619
  store i64 %621, ptr %63, align 8, !tbaa !9
  %622 = load i64, ptr %63, align 8, !tbaa !9
  %623 = load ptr, ptr %26, align 8, !tbaa !5
  %624 = load i64, ptr %623, align 8, !tbaa !9
  %625 = icmp sge i64 %622, %624
  br i1 %625, label %626, label %627

626:                                              ; preds = %612
  br label %628

627:                                              ; preds = %612
  br label %606

628:                                              ; preds = %626, %611
  %629 = load ptr, ptr %26, align 8, !tbaa !5
  %630 = load i64, ptr %629, align 8, !tbaa !9
  %631 = add nsw i64 %630, 1
  %632 = load ptr, ptr %44, align 8, !tbaa !5
  %633 = load i64, ptr %66, align 8, !tbaa !9
  %634 = add nsw i64 %633, 1
  %635 = getelementptr inbounds i64, ptr %632, i64 %634
  store i64 %631, ptr %635, align 8, !tbaa !9
  %636 = load ptr, ptr %44, align 8, !tbaa !5
  %637 = load i64, ptr %66, align 8, !tbaa !9
  %638 = getelementptr inbounds i64, ptr %636, i64 %637
  %639 = load i64, ptr %638, align 8, !tbaa !9
  %640 = load ptr, ptr %44, align 8, !tbaa !5
  %641 = load i64, ptr %66, align 8, !tbaa !9
  %642 = add nsw i64 %641, 1
  %643 = getelementptr inbounds i64, ptr %640, i64 %642
  %644 = load i64, ptr %643, align 8, !tbaa !9
  %645 = icmp eq i64 %639, %644
  br i1 %645, label %646, label %649

646:                                              ; preds = %628
  %647 = load i64, ptr %66, align 8, !tbaa !9
  %648 = add nsw i64 %647, -1
  store i64 %648, ptr %66, align 8, !tbaa !9
  br label %649

649:                                              ; preds = %646, %628
  %650 = load i64, ptr %66, align 8, !tbaa !9
  %651 = add nsw i64 %650, 1
  store i64 %651, ptr %67, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %652

652:                                              ; preds = %673, %649
  %653 = load i64, ptr %64, align 8, !tbaa !9
  %654 = load ptr, ptr %27, align 8, !tbaa !5
  %655 = load i64, ptr %654, align 8, !tbaa !9
  %656 = icmp sgt i64 %653, %655
  br i1 %656, label %657, label %658

657:                                              ; preds = %652
  br label %674

658:                                              ; preds = %652
  %659 = load i64, ptr %67, align 8, !tbaa !9
  %660 = add nsw i64 %659, 1
  store i64 %660, ptr %67, align 8, !tbaa !9
  %661 = load i64, ptr %64, align 8, !tbaa !9
  %662 = load ptr, ptr %44, align 8, !tbaa !5
  %663 = load i64, ptr %67, align 8, !tbaa !9
  %664 = getelementptr inbounds i64, ptr %662, i64 %663
  store i64 %661, ptr %664, align 8, !tbaa !9
  %665 = load i64, ptr %71, align 8, !tbaa !9
  %666 = load i64, ptr %64, align 8, !tbaa !9
  %667 = add nsw i64 %666, %665
  store i64 %667, ptr %64, align 8, !tbaa !9
  %668 = load i64, ptr %64, align 8, !tbaa !9
  %669 = load ptr, ptr %27, align 8, !tbaa !5
  %670 = load i64, ptr %669, align 8, !tbaa !9
  %671 = icmp sge i64 %668, %670
  br i1 %671, label %672, label %673

672:                                              ; preds = %658
  br label %674

673:                                              ; preds = %658
  br label %652

674:                                              ; preds = %672, %657
  %675 = load ptr, ptr %27, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  %677 = add nsw i64 %676, 1
  %678 = load ptr, ptr %44, align 8, !tbaa !5
  %679 = load i64, ptr %67, align 8, !tbaa !9
  %680 = add nsw i64 %679, 1
  %681 = getelementptr inbounds i64, ptr %678, i64 %680
  store i64 %677, ptr %681, align 8, !tbaa !9
  %682 = load ptr, ptr %44, align 8, !tbaa !5
  %683 = load i64, ptr %67, align 8, !tbaa !9
  %684 = getelementptr inbounds i64, ptr %682, i64 %683
  %685 = load i64, ptr %684, align 8, !tbaa !9
  %686 = load ptr, ptr %44, align 8, !tbaa !5
  %687 = load i64, ptr %67, align 8, !tbaa !9
  %688 = add nsw i64 %687, 1
  %689 = getelementptr inbounds i64, ptr %686, i64 %688
  %690 = load i64, ptr %689, align 8, !tbaa !9
  %691 = icmp eq i64 %685, %690
  br i1 %691, label %692, label %695

692:                                              ; preds = %674
  %693 = load i64, ptr %67, align 8, !tbaa !9
  %694 = add nsw i64 %693, -1
  store i64 %694, ptr %67, align 8, !tbaa !9
  br label %695

695:                                              ; preds = %692, %674
  %696 = load i64, ptr %83, align 8, !tbaa !9
  %697 = icmp ne i64 %696, 0
  br i1 %697, label %698, label %1223

698:                                              ; preds = %695
  %699 = load i64, ptr %84, align 8, !tbaa !9
  store i64 %699, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %82, align 8, !tbaa !9
  br label %700

700:                                              ; preds = %1219, %698
  %701 = load i64, ptr %82, align 8, !tbaa !9
  %702 = load i64, ptr %58, align 8, !tbaa !9
  %703 = icmp sle i64 %701, %702
  br i1 %703, label %704, label %1222

704:                                              ; preds = %700
  store i64 0, ptr %74, align 8, !tbaa !9
  %705 = load ptr, ptr %40, align 8, !tbaa !5
  store double 1.000000e+00, ptr %705, align 8, !tbaa !15
  store double 0.000000e+00, ptr %80, align 8, !tbaa !15
  store double 1.000000e+00, ptr %75, align 8, !tbaa !15
  %706 = load i64, ptr %67, align 8, !tbaa !9
  store i64 %706, ptr %59, align 8, !tbaa !9
  %707 = load i64, ptr %66, align 8, !tbaa !9
  %708 = add nsw i64 %707, 2
  store i64 %708, ptr %64, align 8, !tbaa !9
  br label %709

709:                                              ; preds = %1087, %704
  %710 = load i64, ptr %64, align 8, !tbaa !9
  %711 = load i64, ptr %59, align 8, !tbaa !9
  %712 = icmp sle i64 %710, %711
  br i1 %712, label %713, label %1090

713:                                              ; preds = %709
  %714 = load ptr, ptr %44, align 8, !tbaa !5
  %715 = load i64, ptr %64, align 8, !tbaa !9
  %716 = getelementptr inbounds i64, ptr %714, i64 %715
  %717 = load i64, ptr %716, align 8, !tbaa !9
  store i64 %717, ptr %73, align 8, !tbaa !9
  %718 = load ptr, ptr %44, align 8, !tbaa !5
  %719 = load i64, ptr %64, align 8, !tbaa !9
  %720 = add nsw i64 %719, 1
  %721 = getelementptr inbounds i64, ptr %718, i64 %720
  %722 = load i64, ptr %721, align 8, !tbaa !9
  %723 = sub nsw i64 %722, 1
  store i64 %723, ptr %69, align 8, !tbaa !9
  %724 = load i64, ptr %69, align 8, !tbaa !9
  %725 = load i64, ptr %73, align 8, !tbaa !9
  %726 = sub nsw i64 %724, %725
  %727 = add nsw i64 %726, 1
  store i64 %727, ptr %71, align 8, !tbaa !9
  %728 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %728, ptr %63, align 8, !tbaa !9
  br label %729

729:                                              ; preds = %1083, %713
  %730 = load i64, ptr %63, align 8, !tbaa !9
  %731 = icmp sge i64 %730, 1
  br i1 %731, label %732, label %1086

732:                                              ; preds = %729
  %733 = load ptr, ptr %44, align 8, !tbaa !5
  %734 = load i64, ptr %63, align 8, !tbaa !9
  %735 = getelementptr inbounds i64, ptr %733, i64 %734
  %736 = load i64, ptr %735, align 8, !tbaa !9
  store i64 %736, ptr %72, align 8, !tbaa !9
  %737 = load ptr, ptr %44, align 8, !tbaa !5
  %738 = load i64, ptr %63, align 8, !tbaa !9
  %739 = add nsw i64 %738, 1
  %740 = getelementptr inbounds i64, ptr %737, i64 %739
  %741 = load i64, ptr %740, align 8, !tbaa !9
  %742 = sub nsw i64 %741, 1
  store i64 %742, ptr %68, align 8, !tbaa !9
  %743 = load i64, ptr %68, align 8, !tbaa !9
  %744 = load i64, ptr %72, align 8, !tbaa !9
  %745 = sub nsw i64 %743, %744
  %746 = add nsw i64 %745, 1
  store i64 %746, ptr %70, align 8, !tbaa !9
  %747 = load ptr, ptr %24, align 8, !tbaa !5
  %748 = load ptr, ptr %28, align 8, !tbaa !5
  %749 = load i64, ptr %72, align 8, !tbaa !9
  %750 = load i64, ptr %72, align 8, !tbaa !9
  %751 = load i64, ptr %46, align 8, !tbaa !9
  %752 = mul nsw i64 %750, %751
  %753 = add nsw i64 %749, %752
  %754 = getelementptr inbounds %struct.doublecomplex, ptr %748, i64 %753
  %755 = load ptr, ptr %29, align 8, !tbaa !5
  %756 = load ptr, ptr %30, align 8, !tbaa !5
  %757 = load i64, ptr %73, align 8, !tbaa !9
  %758 = load i64, ptr %73, align 8, !tbaa !9
  %759 = load i64, ptr %48, align 8, !tbaa !9
  %760 = mul nsw i64 %758, %759
  %761 = add nsw i64 %757, %760
  %762 = getelementptr inbounds %struct.doublecomplex, ptr %756, i64 %761
  %763 = load ptr, ptr %31, align 8, !tbaa !5
  %764 = load ptr, ptr %32, align 8, !tbaa !5
  %765 = load i64, ptr %72, align 8, !tbaa !9
  %766 = load i64, ptr %73, align 8, !tbaa !9
  %767 = load i64, ptr %50, align 8, !tbaa !9
  %768 = mul nsw i64 %766, %767
  %769 = add nsw i64 %765, %768
  %770 = getelementptr inbounds %struct.doublecomplex, ptr %764, i64 %769
  %771 = load ptr, ptr %33, align 8, !tbaa !5
  %772 = load ptr, ptr %34, align 8, !tbaa !5
  %773 = load i64, ptr %72, align 8, !tbaa !9
  %774 = load i64, ptr %72, align 8, !tbaa !9
  %775 = load i64, ptr %52, align 8, !tbaa !9
  %776 = mul nsw i64 %774, %775
  %777 = add nsw i64 %773, %776
  %778 = getelementptr inbounds %struct.doublecomplex, ptr %772, i64 %777
  %779 = load ptr, ptr %35, align 8, !tbaa !5
  %780 = load ptr, ptr %36, align 8, !tbaa !5
  %781 = load i64, ptr %73, align 8, !tbaa !9
  %782 = load i64, ptr %73, align 8, !tbaa !9
  %783 = load i64, ptr %54, align 8, !tbaa !9
  %784 = mul nsw i64 %782, %783
  %785 = add nsw i64 %781, %784
  %786 = getelementptr inbounds %struct.doublecomplex, ptr %780, i64 %785
  %787 = load ptr, ptr %37, align 8, !tbaa !5
  %788 = load ptr, ptr %38, align 8, !tbaa !5
  %789 = load i64, ptr %72, align 8, !tbaa !9
  %790 = load i64, ptr %73, align 8, !tbaa !9
  %791 = load i64, ptr %56, align 8, !tbaa !9
  %792 = mul nsw i64 %790, %791
  %793 = add nsw i64 %789, %792
  %794 = getelementptr inbounds %struct.doublecomplex, ptr %788, i64 %793
  %795 = load ptr, ptr %39, align 8, !tbaa !5
  %796 = call i32 @ztgsy2_(ptr noundef %747, ptr noundef %76, ptr noundef %70, ptr noundef %71, ptr noundef %754, ptr noundef %755, ptr noundef %762, ptr noundef %763, ptr noundef %770, ptr noundef %771, ptr noundef %778, ptr noundef %779, ptr noundef %786, ptr noundef %787, ptr noundef %794, ptr noundef %795, ptr noundef %81, ptr noundef %75, ptr noundef %80, ptr noundef %77)
  %797 = load i64, ptr %77, align 8, !tbaa !9
  %798 = icmp sgt i64 %797, 0
  br i1 %798, label %799, label %802

799:                                              ; preds = %732
  %800 = load i64, ptr %77, align 8, !tbaa !9
  %801 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 %800, ptr %801, align 8, !tbaa !9
  br label %802

802:                                              ; preds = %799, %732
  %803 = load i64, ptr %70, align 8, !tbaa !9
  %804 = load i64, ptr %71, align 8, !tbaa !9
  %805 = mul nsw i64 %803, %804
  %806 = load i64, ptr %74, align 8, !tbaa !9
  %807 = add nsw i64 %806, %805
  store i64 %807, ptr %74, align 8, !tbaa !9
  %808 = load double, ptr %81, align 8, !tbaa !15
  %809 = fcmp une double %808, 1.000000e+00
  br i1 %809, label %810, label %961

810:                                              ; preds = %802
  %811 = load i64, ptr %73, align 8, !tbaa !9
  %812 = sub nsw i64 %811, 1
  store i64 %812, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %813

813:                                              ; preds = %840, %810
  %814 = load i64, ptr %65, align 8, !tbaa !9
  %815 = load i64, ptr %60, align 8, !tbaa !9
  %816 = icmp sle i64 %814, %815
  br i1 %816, label %817, label %843

817:                                              ; preds = %813
  %818 = load double, ptr %81, align 8, !tbaa !15
  %819 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %818, ptr %819, align 8, !tbaa !11
  %820 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %820, align 8, !tbaa !14
  %821 = load ptr, ptr %26, align 8, !tbaa !5
  %822 = load ptr, ptr %32, align 8, !tbaa !5
  %823 = load i64, ptr %65, align 8, !tbaa !9
  %824 = load i64, ptr %50, align 8, !tbaa !9
  %825 = mul nsw i64 %823, %824
  %826 = add nsw i64 %825, 1
  %827 = getelementptr inbounds %struct.doublecomplex, ptr %822, i64 %826
  %828 = call i32 @f2c_zscal(ptr noundef %821, ptr noundef %62, ptr noundef %827, ptr noundef @c__1)
  %829 = load double, ptr %81, align 8, !tbaa !15
  %830 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %829, ptr %830, align 8, !tbaa !11
  %831 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %831, align 8, !tbaa !14
  %832 = load ptr, ptr %26, align 8, !tbaa !5
  %833 = load ptr, ptr %38, align 8, !tbaa !5
  %834 = load i64, ptr %65, align 8, !tbaa !9
  %835 = load i64, ptr %56, align 8, !tbaa !9
  %836 = mul nsw i64 %834, %835
  %837 = add nsw i64 %836, 1
  %838 = getelementptr inbounds %struct.doublecomplex, ptr %833, i64 %837
  %839 = call i32 @f2c_zscal(ptr noundef %832, ptr noundef %62, ptr noundef %838, ptr noundef @c__1)
  br label %840

840:                                              ; preds = %817
  %841 = load i64, ptr %65, align 8, !tbaa !9
  %842 = add nsw i64 %841, 1
  store i64 %842, ptr %65, align 8, !tbaa !9
  br label %813, !llvm.loop !18

843:                                              ; preds = %813
  %844 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %844, ptr %60, align 8, !tbaa !9
  %845 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %845, ptr %65, align 8, !tbaa !9
  br label %846

846:                                              ; preds = %875, %843
  %847 = load i64, ptr %65, align 8, !tbaa !9
  %848 = load i64, ptr %60, align 8, !tbaa !9
  %849 = icmp sle i64 %847, %848
  br i1 %849, label %850, label %878

850:                                              ; preds = %846
  %851 = load i64, ptr %72, align 8, !tbaa !9
  %852 = sub nsw i64 %851, 1
  store i64 %852, ptr %61, align 8, !tbaa !9
  %853 = load double, ptr %81, align 8, !tbaa !15
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %853, ptr %854, align 8, !tbaa !11
  %855 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %855, align 8, !tbaa !14
  %856 = load ptr, ptr %32, align 8, !tbaa !5
  %857 = load i64, ptr %65, align 8, !tbaa !9
  %858 = load i64, ptr %50, align 8, !tbaa !9
  %859 = mul nsw i64 %857, %858
  %860 = add nsw i64 %859, 1
  %861 = getelementptr inbounds %struct.doublecomplex, ptr %856, i64 %860
  %862 = call i32 @f2c_zscal(ptr noundef %61, ptr noundef %62, ptr noundef %861, ptr noundef @c__1)
  %863 = load i64, ptr %72, align 8, !tbaa !9
  %864 = sub nsw i64 %863, 1
  store i64 %864, ptr %61, align 8, !tbaa !9
  %865 = load double, ptr %81, align 8, !tbaa !15
  %866 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %865, ptr %866, align 8, !tbaa !11
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %867, align 8, !tbaa !14
  %868 = load ptr, ptr %38, align 8, !tbaa !5
  %869 = load i64, ptr %65, align 8, !tbaa !9
  %870 = load i64, ptr %56, align 8, !tbaa !9
  %871 = mul nsw i64 %869, %870
  %872 = add nsw i64 %871, 1
  %873 = getelementptr inbounds %struct.doublecomplex, ptr %868, i64 %872
  %874 = call i32 @f2c_zscal(ptr noundef %61, ptr noundef %62, ptr noundef %873, ptr noundef @c__1)
  br label %875

875:                                              ; preds = %850
  %876 = load i64, ptr %65, align 8, !tbaa !9
  %877 = add nsw i64 %876, 1
  store i64 %877, ptr %65, align 8, !tbaa !9
  br label %846, !llvm.loop !19

878:                                              ; preds = %846
  %879 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %879, ptr %60, align 8, !tbaa !9
  %880 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %880, ptr %65, align 8, !tbaa !9
  br label %881

881:                                              ; preds = %918, %878
  %882 = load i64, ptr %65, align 8, !tbaa !9
  %883 = load i64, ptr %60, align 8, !tbaa !9
  %884 = icmp sle i64 %882, %883
  br i1 %884, label %885, label %921

885:                                              ; preds = %881
  %886 = load ptr, ptr %26, align 8, !tbaa !5
  %887 = load i64, ptr %886, align 8, !tbaa !9
  %888 = load i64, ptr %68, align 8, !tbaa !9
  %889 = sub nsw i64 %887, %888
  store i64 %889, ptr %61, align 8, !tbaa !9
  %890 = load double, ptr %81, align 8, !tbaa !15
  %891 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %890, ptr %891, align 8, !tbaa !11
  %892 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %892, align 8, !tbaa !14
  %893 = load ptr, ptr %32, align 8, !tbaa !5
  %894 = load i64, ptr %68, align 8, !tbaa !9
  %895 = add nsw i64 %894, 1
  %896 = load i64, ptr %65, align 8, !tbaa !9
  %897 = load i64, ptr %50, align 8, !tbaa !9
  %898 = mul nsw i64 %896, %897
  %899 = add nsw i64 %895, %898
  %900 = getelementptr inbounds %struct.doublecomplex, ptr %893, i64 %899
  %901 = call i32 @f2c_zscal(ptr noundef %61, ptr noundef %62, ptr noundef %900, ptr noundef @c__1)
  %902 = load ptr, ptr %26, align 8, !tbaa !5
  %903 = load i64, ptr %902, align 8, !tbaa !9
  %904 = load i64, ptr %68, align 8, !tbaa !9
  %905 = sub nsw i64 %903, %904
  store i64 %905, ptr %61, align 8, !tbaa !9
  %906 = load double, ptr %81, align 8, !tbaa !15
  %907 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %906, ptr %907, align 8, !tbaa !11
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %908, align 8, !tbaa !14
  %909 = load ptr, ptr %38, align 8, !tbaa !5
  %910 = load i64, ptr %68, align 8, !tbaa !9
  %911 = add nsw i64 %910, 1
  %912 = load i64, ptr %65, align 8, !tbaa !9
  %913 = load i64, ptr %56, align 8, !tbaa !9
  %914 = mul nsw i64 %912, %913
  %915 = add nsw i64 %911, %914
  %916 = getelementptr inbounds %struct.doublecomplex, ptr %909, i64 %915
  %917 = call i32 @f2c_zscal(ptr noundef %61, ptr noundef %62, ptr noundef %916, ptr noundef @c__1)
  br label %918

918:                                              ; preds = %885
  %919 = load i64, ptr %65, align 8, !tbaa !9
  %920 = add nsw i64 %919, 1
  store i64 %920, ptr %65, align 8, !tbaa !9
  br label %881, !llvm.loop !20

921:                                              ; preds = %881
  %922 = load ptr, ptr %27, align 8, !tbaa !5
  %923 = load i64, ptr %922, align 8, !tbaa !9
  store i64 %923, ptr %60, align 8, !tbaa !9
  %924 = load i64, ptr %69, align 8, !tbaa !9
  %925 = add nsw i64 %924, 1
  store i64 %925, ptr %65, align 8, !tbaa !9
  br label %926

926:                                              ; preds = %953, %921
  %927 = load i64, ptr %65, align 8, !tbaa !9
  %928 = load i64, ptr %60, align 8, !tbaa !9
  %929 = icmp sle i64 %927, %928
  br i1 %929, label %930, label %956

930:                                              ; preds = %926
  %931 = load double, ptr %81, align 8, !tbaa !15
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %931, ptr %932, align 8, !tbaa !11
  %933 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %933, align 8, !tbaa !14
  %934 = load ptr, ptr %26, align 8, !tbaa !5
  %935 = load ptr, ptr %32, align 8, !tbaa !5
  %936 = load i64, ptr %65, align 8, !tbaa !9
  %937 = load i64, ptr %50, align 8, !tbaa !9
  %938 = mul nsw i64 %936, %937
  %939 = add nsw i64 %938, 1
  %940 = getelementptr inbounds %struct.doublecomplex, ptr %935, i64 %939
  %941 = call i32 @f2c_zscal(ptr noundef %934, ptr noundef %62, ptr noundef %940, ptr noundef @c__1)
  %942 = load double, ptr %81, align 8, !tbaa !15
  %943 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %942, ptr %943, align 8, !tbaa !11
  %944 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %944, align 8, !tbaa !14
  %945 = load ptr, ptr %26, align 8, !tbaa !5
  %946 = load ptr, ptr %38, align 8, !tbaa !5
  %947 = load i64, ptr %65, align 8, !tbaa !9
  %948 = load i64, ptr %56, align 8, !tbaa !9
  %949 = mul nsw i64 %947, %948
  %950 = add nsw i64 %949, 1
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %946, i64 %950
  %952 = call i32 @f2c_zscal(ptr noundef %945, ptr noundef %62, ptr noundef %951, ptr noundef @c__1)
  br label %953

953:                                              ; preds = %930
  %954 = load i64, ptr %65, align 8, !tbaa !9
  %955 = add nsw i64 %954, 1
  store i64 %955, ptr %65, align 8, !tbaa !9
  br label %926, !llvm.loop !21

956:                                              ; preds = %926
  %957 = load double, ptr %81, align 8, !tbaa !15
  %958 = load ptr, ptr %40, align 8, !tbaa !5
  %959 = load double, ptr %958, align 8, !tbaa !15
  %960 = fmul double %959, %957
  store double %960, ptr %958, align 8, !tbaa !15
  br label %961

961:                                              ; preds = %956, %802
  %962 = load i64, ptr %63, align 8, !tbaa !9
  %963 = icmp sgt i64 %962, 1
  br i1 %963, label %964, label %1015

964:                                              ; preds = %961
  %965 = load i64, ptr %72, align 8, !tbaa !9
  %966 = sub nsw i64 %965, 1
  store i64 %966, ptr %60, align 8, !tbaa !9
  %967 = load ptr, ptr %28, align 8, !tbaa !5
  %968 = load i64, ptr %72, align 8, !tbaa !9
  %969 = load i64, ptr %46, align 8, !tbaa !9
  %970 = mul nsw i64 %968, %969
  %971 = add nsw i64 %970, 1
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %967, i64 %971
  %973 = load ptr, ptr %29, align 8, !tbaa !5
  %974 = load ptr, ptr %32, align 8, !tbaa !5
  %975 = load i64, ptr %72, align 8, !tbaa !9
  %976 = load i64, ptr %73, align 8, !tbaa !9
  %977 = load i64, ptr %50, align 8, !tbaa !9
  %978 = mul nsw i64 %976, %977
  %979 = add nsw i64 %975, %978
  %980 = getelementptr inbounds %struct.doublecomplex, ptr %974, i64 %979
  %981 = load ptr, ptr %33, align 8, !tbaa !5
  %982 = load ptr, ptr %32, align 8, !tbaa !5
  %983 = load i64, ptr %73, align 8, !tbaa !9
  %984 = load i64, ptr %50, align 8, !tbaa !9
  %985 = mul nsw i64 %983, %984
  %986 = add nsw i64 %985, 1
  %987 = getelementptr inbounds %struct.doublecomplex, ptr %982, i64 %986
  %988 = load ptr, ptr %33, align 8, !tbaa !5
  %989 = call i32 @f2c_zgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %60, ptr noundef %71, ptr noundef %70, ptr noundef @c_b44, ptr noundef %972, ptr noundef %973, ptr noundef %980, ptr noundef %981, ptr noundef @c_b45, ptr noundef %987, ptr noundef %988)
  %990 = load i64, ptr %72, align 8, !tbaa !9
  %991 = sub nsw i64 %990, 1
  store i64 %991, ptr %60, align 8, !tbaa !9
  %992 = load ptr, ptr %34, align 8, !tbaa !5
  %993 = load i64, ptr %72, align 8, !tbaa !9
  %994 = load i64, ptr %52, align 8, !tbaa !9
  %995 = mul nsw i64 %993, %994
  %996 = add nsw i64 %995, 1
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %992, i64 %996
  %998 = load ptr, ptr %35, align 8, !tbaa !5
  %999 = load ptr, ptr %32, align 8, !tbaa !5
  %1000 = load i64, ptr %72, align 8, !tbaa !9
  %1001 = load i64, ptr %73, align 8, !tbaa !9
  %1002 = load i64, ptr %50, align 8, !tbaa !9
  %1003 = mul nsw i64 %1001, %1002
  %1004 = add nsw i64 %1000, %1003
  %1005 = getelementptr inbounds %struct.doublecomplex, ptr %999, i64 %1004
  %1006 = load ptr, ptr %33, align 8, !tbaa !5
  %1007 = load ptr, ptr %38, align 8, !tbaa !5
  %1008 = load i64, ptr %73, align 8, !tbaa !9
  %1009 = load i64, ptr %56, align 8, !tbaa !9
  %1010 = mul nsw i64 %1008, %1009
  %1011 = add nsw i64 %1010, 1
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %1007, i64 %1011
  %1013 = load ptr, ptr %39, align 8, !tbaa !5
  %1014 = call i32 @f2c_zgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %60, ptr noundef %71, ptr noundef %70, ptr noundef @c_b44, ptr noundef %997, ptr noundef %998, ptr noundef %1005, ptr noundef %1006, ptr noundef @c_b45, ptr noundef %1012, ptr noundef %1013)
  br label %1015

1015:                                             ; preds = %964, %961
  %1016 = load i64, ptr %64, align 8, !tbaa !9
  %1017 = load i64, ptr %67, align 8, !tbaa !9
  %1018 = icmp slt i64 %1016, %1017
  br i1 %1018, label %1019, label %1082

1019:                                             ; preds = %1015
  %1020 = load ptr, ptr %27, align 8, !tbaa !5
  %1021 = load i64, ptr %1020, align 8, !tbaa !9
  %1022 = load i64, ptr %69, align 8, !tbaa !9
  %1023 = sub nsw i64 %1021, %1022
  store i64 %1023, ptr %60, align 8, !tbaa !9
  %1024 = load ptr, ptr %38, align 8, !tbaa !5
  %1025 = load i64, ptr %72, align 8, !tbaa !9
  %1026 = load i64, ptr %73, align 8, !tbaa !9
  %1027 = load i64, ptr %56, align 8, !tbaa !9
  %1028 = mul nsw i64 %1026, %1027
  %1029 = add nsw i64 %1025, %1028
  %1030 = getelementptr inbounds %struct.doublecomplex, ptr %1024, i64 %1029
  %1031 = load ptr, ptr %39, align 8, !tbaa !5
  %1032 = load ptr, ptr %30, align 8, !tbaa !5
  %1033 = load i64, ptr %73, align 8, !tbaa !9
  %1034 = load i64, ptr %69, align 8, !tbaa !9
  %1035 = add nsw i64 %1034, 1
  %1036 = load i64, ptr %48, align 8, !tbaa !9
  %1037 = mul nsw i64 %1035, %1036
  %1038 = add nsw i64 %1033, %1037
  %1039 = getelementptr inbounds %struct.doublecomplex, ptr %1032, i64 %1038
  %1040 = load ptr, ptr %31, align 8, !tbaa !5
  %1041 = load ptr, ptr %32, align 8, !tbaa !5
  %1042 = load i64, ptr %72, align 8, !tbaa !9
  %1043 = load i64, ptr %69, align 8, !tbaa !9
  %1044 = add nsw i64 %1043, 1
  %1045 = load i64, ptr %50, align 8, !tbaa !9
  %1046 = mul nsw i64 %1044, %1045
  %1047 = add nsw i64 %1042, %1046
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1041, i64 %1047
  %1049 = load ptr, ptr %33, align 8, !tbaa !5
  %1050 = call i32 @f2c_zgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %70, ptr noundef %60, ptr noundef %71, ptr noundef @c_b45, ptr noundef %1030, ptr noundef %1031, ptr noundef %1039, ptr noundef %1040, ptr noundef @c_b45, ptr noundef %1048, ptr noundef %1049)
  %1051 = load ptr, ptr %27, align 8, !tbaa !5
  %1052 = load i64, ptr %1051, align 8, !tbaa !9
  %1053 = load i64, ptr %69, align 8, !tbaa !9
  %1054 = sub nsw i64 %1052, %1053
  store i64 %1054, ptr %60, align 8, !tbaa !9
  %1055 = load ptr, ptr %38, align 8, !tbaa !5
  %1056 = load i64, ptr %72, align 8, !tbaa !9
  %1057 = load i64, ptr %73, align 8, !tbaa !9
  %1058 = load i64, ptr %56, align 8, !tbaa !9
  %1059 = mul nsw i64 %1057, %1058
  %1060 = add nsw i64 %1056, %1059
  %1061 = getelementptr inbounds %struct.doublecomplex, ptr %1055, i64 %1060
  %1062 = load ptr, ptr %39, align 8, !tbaa !5
  %1063 = load ptr, ptr %36, align 8, !tbaa !5
  %1064 = load i64, ptr %73, align 8, !tbaa !9
  %1065 = load i64, ptr %69, align 8, !tbaa !9
  %1066 = add nsw i64 %1065, 1
  %1067 = load i64, ptr %54, align 8, !tbaa !9
  %1068 = mul nsw i64 %1066, %1067
  %1069 = add nsw i64 %1064, %1068
  %1070 = getelementptr inbounds %struct.doublecomplex, ptr %1063, i64 %1069
  %1071 = load ptr, ptr %37, align 8, !tbaa !5
  %1072 = load ptr, ptr %38, align 8, !tbaa !5
  %1073 = load i64, ptr %72, align 8, !tbaa !9
  %1074 = load i64, ptr %69, align 8, !tbaa !9
  %1075 = add nsw i64 %1074, 1
  %1076 = load i64, ptr %56, align 8, !tbaa !9
  %1077 = mul nsw i64 %1075, %1076
  %1078 = add nsw i64 %1073, %1077
  %1079 = getelementptr inbounds %struct.doublecomplex, ptr %1072, i64 %1078
  %1080 = load ptr, ptr %39, align 8, !tbaa !5
  %1081 = call i32 @f2c_zgemm(ptr noundef @.str, ptr noundef @.str, ptr noundef %70, ptr noundef %60, ptr noundef %71, ptr noundef @c_b45, ptr noundef %1061, ptr noundef %1062, ptr noundef %1070, ptr noundef %1071, ptr noundef @c_b45, ptr noundef %1079, ptr noundef %1080)
  br label %1082

1082:                                             ; preds = %1019, %1015
  br label %1083

1083:                                             ; preds = %1082
  %1084 = load i64, ptr %63, align 8, !tbaa !9
  %1085 = add nsw i64 %1084, -1
  store i64 %1085, ptr %63, align 8, !tbaa !9
  br label %729, !llvm.loop !22

1086:                                             ; preds = %729
  br label %1087

1087:                                             ; preds = %1086
  %1088 = load i64, ptr %64, align 8, !tbaa !9
  %1089 = add nsw i64 %1088, 1
  store i64 %1089, ptr %64, align 8, !tbaa !9
  br label %709, !llvm.loop !23

1090:                                             ; preds = %709
  %1091 = load double, ptr %80, align 8, !tbaa !15
  %1092 = fcmp une double %1091, 0.000000e+00
  br i1 %1092, label %1093, label %1127

1093:                                             ; preds = %1090
  %1094 = load ptr, ptr %25, align 8, !tbaa !5
  %1095 = load i64, ptr %1094, align 8, !tbaa !9
  %1096 = icmp eq i64 %1095, 1
  br i1 %1096, label %1101, label %1097

1097:                                             ; preds = %1093
  %1098 = load ptr, ptr %25, align 8, !tbaa !5
  %1099 = load i64, ptr %1098, align 8, !tbaa !9
  %1100 = icmp eq i64 %1099, 3
  br i1 %1100, label %1101, label %1116

1101:                                             ; preds = %1097, %1093
  %1102 = load ptr, ptr %26, align 8, !tbaa !5
  %1103 = load i64, ptr %1102, align 8, !tbaa !9
  %1104 = shl i64 %1103, 1
  %1105 = load ptr, ptr %27, align 8, !tbaa !5
  %1106 = load i64, ptr %1105, align 8, !tbaa !9
  %1107 = mul nsw i64 %1104, %1106
  %1108 = sitofp i64 %1107 to double
  %1109 = call double @sqrt(double noundef %1108) #4
  %1110 = load double, ptr %80, align 8, !tbaa !15
  %1111 = load double, ptr %75, align 8, !tbaa !15
  %1112 = call double @sqrt(double noundef %1111) #4
  %1113 = fmul double %1110, %1112
  %1114 = fdiv double %1109, %1113
  %1115 = load ptr, ptr %41, align 8, !tbaa !5
  store double %1114, ptr %1115, align 8, !tbaa !15
  br label %1126

1116:                                             ; preds = %1097
  %1117 = load i64, ptr %74, align 8, !tbaa !9
  %1118 = sitofp i64 %1117 to double
  %1119 = call double @sqrt(double noundef %1118) #4
  %1120 = load double, ptr %80, align 8, !tbaa !15
  %1121 = load double, ptr %75, align 8, !tbaa !15
  %1122 = call double @sqrt(double noundef %1121) #4
  %1123 = fmul double %1120, %1122
  %1124 = fdiv double %1119, %1123
  %1125 = load ptr, ptr %41, align 8, !tbaa !5
  store double %1124, ptr %1125, align 8, !tbaa !15
  br label %1126

1126:                                             ; preds = %1116, %1101
  br label %1127

1127:                                             ; preds = %1126, %1090
  %1128 = load i64, ptr %84, align 8, !tbaa !9
  %1129 = icmp eq i64 %1128, 2
  br i1 %1129, label %1130, label %1182

1130:                                             ; preds = %1127
  %1131 = load i64, ptr %82, align 8, !tbaa !9
  %1132 = icmp eq i64 %1131, 1
  br i1 %1132, label %1133, label %1182

1133:                                             ; preds = %1130
  %1134 = load i64, ptr %83, align 8, !tbaa !9
  %1135 = icmp ne i64 %1134, 0
  br i1 %1135, label %1136, label %1139

1136:                                             ; preds = %1133
  %1137 = load ptr, ptr %25, align 8, !tbaa !5
  %1138 = load i64, ptr %1137, align 8, !tbaa !9
  store i64 %1138, ptr %76, align 8, !tbaa !9
  br label %1139

1139:                                             ; preds = %1136, %1133
  %1140 = load ptr, ptr %40, align 8, !tbaa !5
  %1141 = load double, ptr %1140, align 8, !tbaa !15
  store double %1141, ptr %79, align 8, !tbaa !15
  %1142 = load ptr, ptr %26, align 8, !tbaa !5
  %1143 = load ptr, ptr %27, align 8, !tbaa !5
  %1144 = load ptr, ptr %32, align 8, !tbaa !5
  %1145 = load i64, ptr %51, align 8, !tbaa !9
  %1146 = getelementptr inbounds %struct.doublecomplex, ptr %1144, i64 %1145
  %1147 = load ptr, ptr %33, align 8, !tbaa !5
  %1148 = load ptr, ptr %42, align 8, !tbaa !5
  %1149 = getelementptr inbounds %struct.doublecomplex, ptr %1148, i64 1
  %1150 = load ptr, ptr %26, align 8, !tbaa !5
  %1151 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %1142, ptr noundef %1143, ptr noundef %1146, ptr noundef %1147, ptr noundef %1149, ptr noundef %1150)
  %1152 = load ptr, ptr %26, align 8, !tbaa !5
  %1153 = load ptr, ptr %27, align 8, !tbaa !5
  %1154 = load ptr, ptr %38, align 8, !tbaa !5
  %1155 = load i64, ptr %57, align 8, !tbaa !9
  %1156 = getelementptr inbounds %struct.doublecomplex, ptr %1154, i64 %1155
  %1157 = load ptr, ptr %39, align 8, !tbaa !5
  %1158 = load ptr, ptr %42, align 8, !tbaa !5
  %1159 = load ptr, ptr %26, align 8, !tbaa !5
  %1160 = load i64, ptr %1159, align 8, !tbaa !9
  %1161 = load ptr, ptr %27, align 8, !tbaa !5
  %1162 = load i64, ptr %1161, align 8, !tbaa !9
  %1163 = mul nsw i64 %1160, %1162
  %1164 = add nsw i64 %1163, 1
  %1165 = getelementptr inbounds %struct.doublecomplex, ptr %1158, i64 %1164
  %1166 = load ptr, ptr %26, align 8, !tbaa !5
  %1167 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %1152, ptr noundef %1153, ptr noundef %1156, ptr noundef %1157, ptr noundef %1165, ptr noundef %1166)
  %1168 = load ptr, ptr %26, align 8, !tbaa !5
  %1169 = load ptr, ptr %27, align 8, !tbaa !5
  %1170 = load ptr, ptr %32, align 8, !tbaa !5
  %1171 = load i64, ptr %51, align 8, !tbaa !9
  %1172 = getelementptr inbounds %struct.doublecomplex, ptr %1170, i64 %1171
  %1173 = load ptr, ptr %33, align 8, !tbaa !5
  %1174 = call i32 @zlaset_(ptr noundef @.str.3, ptr noundef %1168, ptr noundef %1169, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1172, ptr noundef %1173)
  %1175 = load ptr, ptr %26, align 8, !tbaa !5
  %1176 = load ptr, ptr %27, align 8, !tbaa !5
  %1177 = load ptr, ptr %38, align 8, !tbaa !5
  %1178 = load i64, ptr %57, align 8, !tbaa !9
  %1179 = getelementptr inbounds %struct.doublecomplex, ptr %1177, i64 %1178
  %1180 = load ptr, ptr %39, align 8, !tbaa !5
  %1181 = call i32 @zlaset_(ptr noundef @.str.3, ptr noundef %1175, ptr noundef %1176, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1179, ptr noundef %1180)
  br label %1218

1182:                                             ; preds = %1130, %1127
  %1183 = load i64, ptr %84, align 8, !tbaa !9
  %1184 = icmp eq i64 %1183, 2
  br i1 %1184, label %1185, label %1217

1185:                                             ; preds = %1182
  %1186 = load i64, ptr %82, align 8, !tbaa !9
  %1187 = icmp eq i64 %1186, 2
  br i1 %1187, label %1188, label %1217

1188:                                             ; preds = %1185
  %1189 = load ptr, ptr %26, align 8, !tbaa !5
  %1190 = load ptr, ptr %27, align 8, !tbaa !5
  %1191 = load ptr, ptr %42, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.doublecomplex, ptr %1191, i64 1
  %1193 = load ptr, ptr %26, align 8, !tbaa !5
  %1194 = load ptr, ptr %32, align 8, !tbaa !5
  %1195 = load i64, ptr %51, align 8, !tbaa !9
  %1196 = getelementptr inbounds %struct.doublecomplex, ptr %1194, i64 %1195
  %1197 = load ptr, ptr %33, align 8, !tbaa !5
  %1198 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %1189, ptr noundef %1190, ptr noundef %1192, ptr noundef %1193, ptr noundef %1196, ptr noundef %1197)
  %1199 = load ptr, ptr %26, align 8, !tbaa !5
  %1200 = load ptr, ptr %27, align 8, !tbaa !5
  %1201 = load ptr, ptr %42, align 8, !tbaa !5
  %1202 = load ptr, ptr %26, align 8, !tbaa !5
  %1203 = load i64, ptr %1202, align 8, !tbaa !9
  %1204 = load ptr, ptr %27, align 8, !tbaa !5
  %1205 = load i64, ptr %1204, align 8, !tbaa !9
  %1206 = mul nsw i64 %1203, %1205
  %1207 = add nsw i64 %1206, 1
  %1208 = getelementptr inbounds %struct.doublecomplex, ptr %1201, i64 %1207
  %1209 = load ptr, ptr %26, align 8, !tbaa !5
  %1210 = load ptr, ptr %38, align 8, !tbaa !5
  %1211 = load i64, ptr %57, align 8, !tbaa !9
  %1212 = getelementptr inbounds %struct.doublecomplex, ptr %1210, i64 %1211
  %1213 = load ptr, ptr %39, align 8, !tbaa !5
  %1214 = call i32 @zlacpy_(ptr noundef @.str.3, ptr noundef %1199, ptr noundef %1200, ptr noundef %1208, ptr noundef %1209, ptr noundef %1212, ptr noundef %1213)
  %1215 = load double, ptr %79, align 8, !tbaa !15
  %1216 = load ptr, ptr %40, align 8, !tbaa !5
  store double %1215, ptr %1216, align 8, !tbaa !15
  br label %1217

1217:                                             ; preds = %1188, %1185, %1182
  br label %1218

1218:                                             ; preds = %1217, %1139
  br label %1219

1219:                                             ; preds = %1218
  %1220 = load i64, ptr %82, align 8, !tbaa !9
  %1221 = add nsw i64 %1220, 1
  store i64 %1221, ptr %82, align 8, !tbaa !9
  br label %700, !llvm.loop !24

1222:                                             ; preds = %700
  br label %1606

1223:                                             ; preds = %695
  %1224 = load ptr, ptr %40, align 8, !tbaa !5
  store double 1.000000e+00, ptr %1224, align 8, !tbaa !15
  %1225 = load i64, ptr %66, align 8, !tbaa !9
  store i64 %1225, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %1226

1226:                                             ; preds = %1602, %1223
  %1227 = load i64, ptr %63, align 8, !tbaa !9
  %1228 = load i64, ptr %58, align 8, !tbaa !9
  %1229 = icmp sle i64 %1227, %1228
  br i1 %1229, label %1230, label %1605

1230:                                             ; preds = %1226
  %1231 = load ptr, ptr %44, align 8, !tbaa !5
  %1232 = load i64, ptr %63, align 8, !tbaa !9
  %1233 = getelementptr inbounds i64, ptr %1231, i64 %1232
  %1234 = load i64, ptr %1233, align 8, !tbaa !9
  store i64 %1234, ptr %72, align 8, !tbaa !9
  %1235 = load ptr, ptr %44, align 8, !tbaa !5
  %1236 = load i64, ptr %63, align 8, !tbaa !9
  %1237 = add nsw i64 %1236, 1
  %1238 = getelementptr inbounds i64, ptr %1235, i64 %1237
  %1239 = load i64, ptr %1238, align 8, !tbaa !9
  %1240 = sub nsw i64 %1239, 1
  store i64 %1240, ptr %68, align 8, !tbaa !9
  %1241 = load i64, ptr %68, align 8, !tbaa !9
  %1242 = load i64, ptr %72, align 8, !tbaa !9
  %1243 = sub nsw i64 %1241, %1242
  %1244 = add nsw i64 %1243, 1
  store i64 %1244, ptr %70, align 8, !tbaa !9
  %1245 = load i64, ptr %66, align 8, !tbaa !9
  %1246 = add nsw i64 %1245, 2
  store i64 %1246, ptr %59, align 8, !tbaa !9
  %1247 = load i64, ptr %67, align 8, !tbaa !9
  store i64 %1247, ptr %64, align 8, !tbaa !9
  br label %1248

1248:                                             ; preds = %1598, %1230
  %1249 = load i64, ptr %64, align 8, !tbaa !9
  %1250 = load i64, ptr %59, align 8, !tbaa !9
  %1251 = icmp sge i64 %1249, %1250
  br i1 %1251, label %1252, label %1601

1252:                                             ; preds = %1248
  %1253 = load ptr, ptr %44, align 8, !tbaa !5
  %1254 = load i64, ptr %64, align 8, !tbaa !9
  %1255 = getelementptr inbounds i64, ptr %1253, i64 %1254
  %1256 = load i64, ptr %1255, align 8, !tbaa !9
  store i64 %1256, ptr %73, align 8, !tbaa !9
  %1257 = load ptr, ptr %44, align 8, !tbaa !5
  %1258 = load i64, ptr %64, align 8, !tbaa !9
  %1259 = add nsw i64 %1258, 1
  %1260 = getelementptr inbounds i64, ptr %1257, i64 %1259
  %1261 = load i64, ptr %1260, align 8, !tbaa !9
  %1262 = sub nsw i64 %1261, 1
  store i64 %1262, ptr %69, align 8, !tbaa !9
  %1263 = load i64, ptr %69, align 8, !tbaa !9
  %1264 = load i64, ptr %73, align 8, !tbaa !9
  %1265 = sub nsw i64 %1263, %1264
  %1266 = add nsw i64 %1265, 1
  store i64 %1266, ptr %71, align 8, !tbaa !9
  %1267 = load ptr, ptr %24, align 8, !tbaa !5
  %1268 = load ptr, ptr %28, align 8, !tbaa !5
  %1269 = load i64, ptr %72, align 8, !tbaa !9
  %1270 = load i64, ptr %72, align 8, !tbaa !9
  %1271 = load i64, ptr %46, align 8, !tbaa !9
  %1272 = mul nsw i64 %1270, %1271
  %1273 = add nsw i64 %1269, %1272
  %1274 = getelementptr inbounds %struct.doublecomplex, ptr %1268, i64 %1273
  %1275 = load ptr, ptr %29, align 8, !tbaa !5
  %1276 = load ptr, ptr %30, align 8, !tbaa !5
  %1277 = load i64, ptr %73, align 8, !tbaa !9
  %1278 = load i64, ptr %73, align 8, !tbaa !9
  %1279 = load i64, ptr %48, align 8, !tbaa !9
  %1280 = mul nsw i64 %1278, %1279
  %1281 = add nsw i64 %1277, %1280
  %1282 = getelementptr inbounds %struct.doublecomplex, ptr %1276, i64 %1281
  %1283 = load ptr, ptr %31, align 8, !tbaa !5
  %1284 = load ptr, ptr %32, align 8, !tbaa !5
  %1285 = load i64, ptr %72, align 8, !tbaa !9
  %1286 = load i64, ptr %73, align 8, !tbaa !9
  %1287 = load i64, ptr %50, align 8, !tbaa !9
  %1288 = mul nsw i64 %1286, %1287
  %1289 = add nsw i64 %1285, %1288
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %1284, i64 %1289
  %1291 = load ptr, ptr %33, align 8, !tbaa !5
  %1292 = load ptr, ptr %34, align 8, !tbaa !5
  %1293 = load i64, ptr %72, align 8, !tbaa !9
  %1294 = load i64, ptr %72, align 8, !tbaa !9
  %1295 = load i64, ptr %52, align 8, !tbaa !9
  %1296 = mul nsw i64 %1294, %1295
  %1297 = add nsw i64 %1293, %1296
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %1292, i64 %1297
  %1299 = load ptr, ptr %35, align 8, !tbaa !5
  %1300 = load ptr, ptr %36, align 8, !tbaa !5
  %1301 = load i64, ptr %73, align 8, !tbaa !9
  %1302 = load i64, ptr %73, align 8, !tbaa !9
  %1303 = load i64, ptr %54, align 8, !tbaa !9
  %1304 = mul nsw i64 %1302, %1303
  %1305 = add nsw i64 %1301, %1304
  %1306 = getelementptr inbounds %struct.doublecomplex, ptr %1300, i64 %1305
  %1307 = load ptr, ptr %37, align 8, !tbaa !5
  %1308 = load ptr, ptr %38, align 8, !tbaa !5
  %1309 = load i64, ptr %72, align 8, !tbaa !9
  %1310 = load i64, ptr %73, align 8, !tbaa !9
  %1311 = load i64, ptr %56, align 8, !tbaa !9
  %1312 = mul nsw i64 %1310, %1311
  %1313 = add nsw i64 %1309, %1312
  %1314 = getelementptr inbounds %struct.doublecomplex, ptr %1308, i64 %1313
  %1315 = load ptr, ptr %39, align 8, !tbaa !5
  %1316 = call i32 @ztgsy2_(ptr noundef %1267, ptr noundef %76, ptr noundef %70, ptr noundef %71, ptr noundef %1274, ptr noundef %1275, ptr noundef %1282, ptr noundef %1283, ptr noundef %1290, ptr noundef %1291, ptr noundef %1298, ptr noundef %1299, ptr noundef %1306, ptr noundef %1307, ptr noundef %1314, ptr noundef %1315, ptr noundef %81, ptr noundef %75, ptr noundef %80, ptr noundef %77)
  %1317 = load i64, ptr %77, align 8, !tbaa !9
  %1318 = icmp sgt i64 %1317, 0
  br i1 %1318, label %1319, label %1322

1319:                                             ; preds = %1252
  %1320 = load i64, ptr %77, align 8, !tbaa !9
  %1321 = load ptr, ptr %45, align 8, !tbaa !5
  store i64 %1320, ptr %1321, align 8, !tbaa !9
  br label %1322

1322:                                             ; preds = %1319, %1252
  %1323 = load double, ptr %81, align 8, !tbaa !15
  %1324 = fcmp une double %1323, 1.000000e+00
  br i1 %1324, label %1325, label %1476

1325:                                             ; preds = %1322
  %1326 = load i64, ptr %73, align 8, !tbaa !9
  %1327 = sub nsw i64 %1326, 1
  store i64 %1327, ptr %60, align 8, !tbaa !9
  store i64 1, ptr %65, align 8, !tbaa !9
  br label %1328

1328:                                             ; preds = %1355, %1325
  %1329 = load i64, ptr %65, align 8, !tbaa !9
  %1330 = load i64, ptr %60, align 8, !tbaa !9
  %1331 = icmp sle i64 %1329, %1330
  br i1 %1331, label %1332, label %1358

1332:                                             ; preds = %1328
  %1333 = load double, ptr %81, align 8, !tbaa !15
  %1334 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1333, ptr %1334, align 8, !tbaa !11
  %1335 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %1335, align 8, !tbaa !14
  %1336 = load ptr, ptr %26, align 8, !tbaa !5
  %1337 = load ptr, ptr %32, align 8, !tbaa !5
  %1338 = load i64, ptr %65, align 8, !tbaa !9
  %1339 = load i64, ptr %50, align 8, !tbaa !9
  %1340 = mul nsw i64 %1338, %1339
  %1341 = add nsw i64 %1340, 1
  %1342 = getelementptr inbounds %struct.doublecomplex, ptr %1337, i64 %1341
  %1343 = call i32 @f2c_zscal(ptr noundef %1336, ptr noundef %62, ptr noundef %1342, ptr noundef @c__1)
  %1344 = load double, ptr %81, align 8, !tbaa !15
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1344, ptr %1345, align 8, !tbaa !11
  %1346 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %1346, align 8, !tbaa !14
  %1347 = load ptr, ptr %26, align 8, !tbaa !5
  %1348 = load ptr, ptr %38, align 8, !tbaa !5
  %1349 = load i64, ptr %65, align 8, !tbaa !9
  %1350 = load i64, ptr %56, align 8, !tbaa !9
  %1351 = mul nsw i64 %1349, %1350
  %1352 = add nsw i64 %1351, 1
  %1353 = getelementptr inbounds %struct.doublecomplex, ptr %1348, i64 %1352
  %1354 = call i32 @f2c_zscal(ptr noundef %1347, ptr noundef %62, ptr noundef %1353, ptr noundef @c__1)
  br label %1355

1355:                                             ; preds = %1332
  %1356 = load i64, ptr %65, align 8, !tbaa !9
  %1357 = add nsw i64 %1356, 1
  store i64 %1357, ptr %65, align 8, !tbaa !9
  br label %1328, !llvm.loop !25

1358:                                             ; preds = %1328
  %1359 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %1359, ptr %60, align 8, !tbaa !9
  %1360 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %1360, ptr %65, align 8, !tbaa !9
  br label %1361

1361:                                             ; preds = %1390, %1358
  %1362 = load i64, ptr %65, align 8, !tbaa !9
  %1363 = load i64, ptr %60, align 8, !tbaa !9
  %1364 = icmp sle i64 %1362, %1363
  br i1 %1364, label %1365, label %1393

1365:                                             ; preds = %1361
  %1366 = load i64, ptr %72, align 8, !tbaa !9
  %1367 = sub nsw i64 %1366, 1
  store i64 %1367, ptr %61, align 8, !tbaa !9
  %1368 = load double, ptr %81, align 8, !tbaa !15
  %1369 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1368, ptr %1369, align 8, !tbaa !11
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %1370, align 8, !tbaa !14
  %1371 = load ptr, ptr %32, align 8, !tbaa !5
  %1372 = load i64, ptr %65, align 8, !tbaa !9
  %1373 = load i64, ptr %50, align 8, !tbaa !9
  %1374 = mul nsw i64 %1372, %1373
  %1375 = add nsw i64 %1374, 1
  %1376 = getelementptr inbounds %struct.doublecomplex, ptr %1371, i64 %1375
  %1377 = call i32 @f2c_zscal(ptr noundef %61, ptr noundef %62, ptr noundef %1376, ptr noundef @c__1)
  %1378 = load i64, ptr %72, align 8, !tbaa !9
  %1379 = sub nsw i64 %1378, 1
  store i64 %1379, ptr %61, align 8, !tbaa !9
  %1380 = load double, ptr %81, align 8, !tbaa !15
  %1381 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1380, ptr %1381, align 8, !tbaa !11
  %1382 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %1382, align 8, !tbaa !14
  %1383 = load ptr, ptr %38, align 8, !tbaa !5
  %1384 = load i64, ptr %65, align 8, !tbaa !9
  %1385 = load i64, ptr %56, align 8, !tbaa !9
  %1386 = mul nsw i64 %1384, %1385
  %1387 = add nsw i64 %1386, 1
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %1383, i64 %1387
  %1389 = call i32 @f2c_zscal(ptr noundef %61, ptr noundef %62, ptr noundef %1388, ptr noundef @c__1)
  br label %1390

1390:                                             ; preds = %1365
  %1391 = load i64, ptr %65, align 8, !tbaa !9
  %1392 = add nsw i64 %1391, 1
  store i64 %1392, ptr %65, align 8, !tbaa !9
  br label %1361, !llvm.loop !26

1393:                                             ; preds = %1361
  %1394 = load i64, ptr %69, align 8, !tbaa !9
  store i64 %1394, ptr %60, align 8, !tbaa !9
  %1395 = load i64, ptr %73, align 8, !tbaa !9
  store i64 %1395, ptr %65, align 8, !tbaa !9
  br label %1396

1396:                                             ; preds = %1433, %1393
  %1397 = load i64, ptr %65, align 8, !tbaa !9
  %1398 = load i64, ptr %60, align 8, !tbaa !9
  %1399 = icmp sle i64 %1397, %1398
  br i1 %1399, label %1400, label %1436

1400:                                             ; preds = %1396
  %1401 = load ptr, ptr %26, align 8, !tbaa !5
  %1402 = load i64, ptr %1401, align 8, !tbaa !9
  %1403 = load i64, ptr %68, align 8, !tbaa !9
  %1404 = sub nsw i64 %1402, %1403
  store i64 %1404, ptr %61, align 8, !tbaa !9
  %1405 = load double, ptr %81, align 8, !tbaa !15
  %1406 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1405, ptr %1406, align 8, !tbaa !11
  %1407 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %1407, align 8, !tbaa !14
  %1408 = load ptr, ptr %32, align 8, !tbaa !5
  %1409 = load i64, ptr %68, align 8, !tbaa !9
  %1410 = add nsw i64 %1409, 1
  %1411 = load i64, ptr %65, align 8, !tbaa !9
  %1412 = load i64, ptr %50, align 8, !tbaa !9
  %1413 = mul nsw i64 %1411, %1412
  %1414 = add nsw i64 %1410, %1413
  %1415 = getelementptr inbounds %struct.doublecomplex, ptr %1408, i64 %1414
  %1416 = call i32 @f2c_zscal(ptr noundef %61, ptr noundef %62, ptr noundef %1415, ptr noundef @c__1)
  %1417 = load ptr, ptr %26, align 8, !tbaa !5
  %1418 = load i64, ptr %1417, align 8, !tbaa !9
  %1419 = load i64, ptr %68, align 8, !tbaa !9
  %1420 = sub nsw i64 %1418, %1419
  store i64 %1420, ptr %61, align 8, !tbaa !9
  %1421 = load double, ptr %81, align 8, !tbaa !15
  %1422 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1421, ptr %1422, align 8, !tbaa !11
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %1423, align 8, !tbaa !14
  %1424 = load ptr, ptr %38, align 8, !tbaa !5
  %1425 = load i64, ptr %68, align 8, !tbaa !9
  %1426 = add nsw i64 %1425, 1
  %1427 = load i64, ptr %65, align 8, !tbaa !9
  %1428 = load i64, ptr %56, align 8, !tbaa !9
  %1429 = mul nsw i64 %1427, %1428
  %1430 = add nsw i64 %1426, %1429
  %1431 = getelementptr inbounds %struct.doublecomplex, ptr %1424, i64 %1430
  %1432 = call i32 @f2c_zscal(ptr noundef %61, ptr noundef %62, ptr noundef %1431, ptr noundef @c__1)
  br label %1433

1433:                                             ; preds = %1400
  %1434 = load i64, ptr %65, align 8, !tbaa !9
  %1435 = add nsw i64 %1434, 1
  store i64 %1435, ptr %65, align 8, !tbaa !9
  br label %1396, !llvm.loop !27

1436:                                             ; preds = %1396
  %1437 = load ptr, ptr %27, align 8, !tbaa !5
  %1438 = load i64, ptr %1437, align 8, !tbaa !9
  store i64 %1438, ptr %60, align 8, !tbaa !9
  %1439 = load i64, ptr %69, align 8, !tbaa !9
  %1440 = add nsw i64 %1439, 1
  store i64 %1440, ptr %65, align 8, !tbaa !9
  br label %1441

1441:                                             ; preds = %1468, %1436
  %1442 = load i64, ptr %65, align 8, !tbaa !9
  %1443 = load i64, ptr %60, align 8, !tbaa !9
  %1444 = icmp sle i64 %1442, %1443
  br i1 %1444, label %1445, label %1471

1445:                                             ; preds = %1441
  %1446 = load double, ptr %81, align 8, !tbaa !15
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1446, ptr %1447, align 8, !tbaa !11
  %1448 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %1448, align 8, !tbaa !14
  %1449 = load ptr, ptr %26, align 8, !tbaa !5
  %1450 = load ptr, ptr %32, align 8, !tbaa !5
  %1451 = load i64, ptr %65, align 8, !tbaa !9
  %1452 = load i64, ptr %50, align 8, !tbaa !9
  %1453 = mul nsw i64 %1451, %1452
  %1454 = add nsw i64 %1453, 1
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %1450, i64 %1454
  %1456 = call i32 @f2c_zscal(ptr noundef %1449, ptr noundef %62, ptr noundef %1455, ptr noundef @c__1)
  %1457 = load double, ptr %81, align 8, !tbaa !15
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1457, ptr %1458, align 8, !tbaa !11
  %1459 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double 0.000000e+00, ptr %1459, align 8, !tbaa !14
  %1460 = load ptr, ptr %26, align 8, !tbaa !5
  %1461 = load ptr, ptr %38, align 8, !tbaa !5
  %1462 = load i64, ptr %65, align 8, !tbaa !9
  %1463 = load i64, ptr %56, align 8, !tbaa !9
  %1464 = mul nsw i64 %1462, %1463
  %1465 = add nsw i64 %1464, 1
  %1466 = getelementptr inbounds %struct.doublecomplex, ptr %1461, i64 %1465
  %1467 = call i32 @f2c_zscal(ptr noundef %1460, ptr noundef %62, ptr noundef %1466, ptr noundef @c__1)
  br label %1468

1468:                                             ; preds = %1445
  %1469 = load i64, ptr %65, align 8, !tbaa !9
  %1470 = add nsw i64 %1469, 1
  store i64 %1470, ptr %65, align 8, !tbaa !9
  br label %1441, !llvm.loop !28

1471:                                             ; preds = %1441
  %1472 = load double, ptr %81, align 8, !tbaa !15
  %1473 = load ptr, ptr %40, align 8, !tbaa !5
  %1474 = load double, ptr %1473, align 8, !tbaa !15
  %1475 = fmul double %1474, %1472
  store double %1475, ptr %1473, align 8, !tbaa !15
  br label %1476

1476:                                             ; preds = %1471, %1322
  %1477 = load i64, ptr %64, align 8, !tbaa !9
  %1478 = load i64, ptr %66, align 8, !tbaa !9
  %1479 = add nsw i64 %1478, 2
  %1480 = icmp sgt i64 %1477, %1479
  br i1 %1480, label %1481, label %1530

1481:                                             ; preds = %1476
  %1482 = load i64, ptr %73, align 8, !tbaa !9
  %1483 = sub nsw i64 %1482, 1
  store i64 %1483, ptr %60, align 8, !tbaa !9
  %1484 = load ptr, ptr %32, align 8, !tbaa !5
  %1485 = load i64, ptr %72, align 8, !tbaa !9
  %1486 = load i64, ptr %73, align 8, !tbaa !9
  %1487 = load i64, ptr %50, align 8, !tbaa !9
  %1488 = mul nsw i64 %1486, %1487
  %1489 = add nsw i64 %1485, %1488
  %1490 = getelementptr inbounds %struct.doublecomplex, ptr %1484, i64 %1489
  %1491 = load ptr, ptr %33, align 8, !tbaa !5
  %1492 = load ptr, ptr %30, align 8, !tbaa !5
  %1493 = load i64, ptr %73, align 8, !tbaa !9
  %1494 = load i64, ptr %48, align 8, !tbaa !9
  %1495 = mul nsw i64 %1493, %1494
  %1496 = add nsw i64 %1495, 1
  %1497 = getelementptr inbounds %struct.doublecomplex, ptr %1492, i64 %1496
  %1498 = load ptr, ptr %31, align 8, !tbaa !5
  %1499 = load ptr, ptr %38, align 8, !tbaa !5
  %1500 = load i64, ptr %72, align 8, !tbaa !9
  %1501 = load i64, ptr %56, align 8, !tbaa !9
  %1502 = add nsw i64 %1500, %1501
  %1503 = getelementptr inbounds %struct.doublecomplex, ptr %1499, i64 %1502
  %1504 = load ptr, ptr %39, align 8, !tbaa !5
  %1505 = call i32 @f2c_zgemm(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %70, ptr noundef %60, ptr noundef %71, ptr noundef @c_b45, ptr noundef %1490, ptr noundef %1491, ptr noundef %1497, ptr noundef %1498, ptr noundef @c_b45, ptr noundef %1503, ptr noundef %1504)
  %1506 = load i64, ptr %73, align 8, !tbaa !9
  %1507 = sub nsw i64 %1506, 1
  store i64 %1507, ptr %60, align 8, !tbaa !9
  %1508 = load ptr, ptr %38, align 8, !tbaa !5
  %1509 = load i64, ptr %72, align 8, !tbaa !9
  %1510 = load i64, ptr %73, align 8, !tbaa !9
  %1511 = load i64, ptr %56, align 8, !tbaa !9
  %1512 = mul nsw i64 %1510, %1511
  %1513 = add nsw i64 %1509, %1512
  %1514 = getelementptr inbounds %struct.doublecomplex, ptr %1508, i64 %1513
  %1515 = load ptr, ptr %39, align 8, !tbaa !5
  %1516 = load ptr, ptr %36, align 8, !tbaa !5
  %1517 = load i64, ptr %73, align 8, !tbaa !9
  %1518 = load i64, ptr %54, align 8, !tbaa !9
  %1519 = mul nsw i64 %1517, %1518
  %1520 = add nsw i64 %1519, 1
  %1521 = getelementptr inbounds %struct.doublecomplex, ptr %1516, i64 %1520
  %1522 = load ptr, ptr %37, align 8, !tbaa !5
  %1523 = load ptr, ptr %38, align 8, !tbaa !5
  %1524 = load i64, ptr %72, align 8, !tbaa !9
  %1525 = load i64, ptr %56, align 8, !tbaa !9
  %1526 = add nsw i64 %1524, %1525
  %1527 = getelementptr inbounds %struct.doublecomplex, ptr %1523, i64 %1526
  %1528 = load ptr, ptr %39, align 8, !tbaa !5
  %1529 = call i32 @f2c_zgemm(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %70, ptr noundef %60, ptr noundef %71, ptr noundef @c_b45, ptr noundef %1514, ptr noundef %1515, ptr noundef %1521, ptr noundef %1522, ptr noundef @c_b45, ptr noundef %1527, ptr noundef %1528)
  br label %1530

1530:                                             ; preds = %1481, %1476
  %1531 = load i64, ptr %63, align 8, !tbaa !9
  %1532 = load i64, ptr %66, align 8, !tbaa !9
  %1533 = icmp slt i64 %1531, %1532
  br i1 %1533, label %1534, label %1597

1534:                                             ; preds = %1530
  %1535 = load ptr, ptr %26, align 8, !tbaa !5
  %1536 = load i64, ptr %1535, align 8, !tbaa !9
  %1537 = load i64, ptr %68, align 8, !tbaa !9
  %1538 = sub nsw i64 %1536, %1537
  store i64 %1538, ptr %60, align 8, !tbaa !9
  %1539 = load ptr, ptr %28, align 8, !tbaa !5
  %1540 = load i64, ptr %72, align 8, !tbaa !9
  %1541 = load i64, ptr %68, align 8, !tbaa !9
  %1542 = add nsw i64 %1541, 1
  %1543 = load i64, ptr %46, align 8, !tbaa !9
  %1544 = mul nsw i64 %1542, %1543
  %1545 = add nsw i64 %1540, %1544
  %1546 = getelementptr inbounds %struct.doublecomplex, ptr %1539, i64 %1545
  %1547 = load ptr, ptr %29, align 8, !tbaa !5
  %1548 = load ptr, ptr %32, align 8, !tbaa !5
  %1549 = load i64, ptr %72, align 8, !tbaa !9
  %1550 = load i64, ptr %73, align 8, !tbaa !9
  %1551 = load i64, ptr %50, align 8, !tbaa !9
  %1552 = mul nsw i64 %1550, %1551
  %1553 = add nsw i64 %1549, %1552
  %1554 = getelementptr inbounds %struct.doublecomplex, ptr %1548, i64 %1553
  %1555 = load ptr, ptr %33, align 8, !tbaa !5
  %1556 = load ptr, ptr %32, align 8, !tbaa !5
  %1557 = load i64, ptr %68, align 8, !tbaa !9
  %1558 = add nsw i64 %1557, 1
  %1559 = load i64, ptr %73, align 8, !tbaa !9
  %1560 = load i64, ptr %50, align 8, !tbaa !9
  %1561 = mul nsw i64 %1559, %1560
  %1562 = add nsw i64 %1558, %1561
  %1563 = getelementptr inbounds %struct.doublecomplex, ptr %1556, i64 %1562
  %1564 = load ptr, ptr %33, align 8, !tbaa !5
  %1565 = call i32 @f2c_zgemm(ptr noundef @.str.1, ptr noundef @.str, ptr noundef %60, ptr noundef %71, ptr noundef %70, ptr noundef @c_b44, ptr noundef %1546, ptr noundef %1547, ptr noundef %1554, ptr noundef %1555, ptr noundef @c_b45, ptr noundef %1563, ptr noundef %1564)
  %1566 = load ptr, ptr %26, align 8, !tbaa !5
  %1567 = load i64, ptr %1566, align 8, !tbaa !9
  %1568 = load i64, ptr %68, align 8, !tbaa !9
  %1569 = sub nsw i64 %1567, %1568
  store i64 %1569, ptr %60, align 8, !tbaa !9
  %1570 = load ptr, ptr %34, align 8, !tbaa !5
  %1571 = load i64, ptr %72, align 8, !tbaa !9
  %1572 = load i64, ptr %68, align 8, !tbaa !9
  %1573 = add nsw i64 %1572, 1
  %1574 = load i64, ptr %52, align 8, !tbaa !9
  %1575 = mul nsw i64 %1573, %1574
  %1576 = add nsw i64 %1571, %1575
  %1577 = getelementptr inbounds %struct.doublecomplex, ptr %1570, i64 %1576
  %1578 = load ptr, ptr %35, align 8, !tbaa !5
  %1579 = load ptr, ptr %38, align 8, !tbaa !5
  %1580 = load i64, ptr %72, align 8, !tbaa !9
  %1581 = load i64, ptr %73, align 8, !tbaa !9
  %1582 = load i64, ptr %56, align 8, !tbaa !9
  %1583 = mul nsw i64 %1581, %1582
  %1584 = add nsw i64 %1580, %1583
  %1585 = getelementptr inbounds %struct.doublecomplex, ptr %1579, i64 %1584
  %1586 = load ptr, ptr %39, align 8, !tbaa !5
  %1587 = load ptr, ptr %32, align 8, !tbaa !5
  %1588 = load i64, ptr %68, align 8, !tbaa !9
  %1589 = add nsw i64 %1588, 1
  %1590 = load i64, ptr %73, align 8, !tbaa !9
  %1591 = load i64, ptr %50, align 8, !tbaa !9
  %1592 = mul nsw i64 %1590, %1591
  %1593 = add nsw i64 %1589, %1592
  %1594 = getelementptr inbounds %struct.doublecomplex, ptr %1587, i64 %1593
  %1595 = load ptr, ptr %33, align 8, !tbaa !5
  %1596 = call i32 @f2c_zgemm(ptr noundef @.str.1, ptr noundef @.str, ptr noundef %60, ptr noundef %71, ptr noundef %70, ptr noundef @c_b44, ptr noundef %1577, ptr noundef %1578, ptr noundef %1585, ptr noundef %1586, ptr noundef @c_b45, ptr noundef %1594, ptr noundef %1595)
  br label %1597

1597:                                             ; preds = %1534, %1530
  br label %1598

1598:                                             ; preds = %1597
  %1599 = load i64, ptr %64, align 8, !tbaa !9
  %1600 = add nsw i64 %1599, -1
  store i64 %1600, ptr %64, align 8, !tbaa !9
  br label %1248, !llvm.loop !29

1601:                                             ; preds = %1248
  br label %1602

1602:                                             ; preds = %1601
  %1603 = load i64, ptr %63, align 8, !tbaa !9
  %1604 = add nsw i64 %1603, 1
  store i64 %1604, ptr %63, align 8, !tbaa !9
  br label %1226, !llvm.loop !30

1605:                                             ; preds = %1226
  br label %1606

1606:                                             ; preds = %1605, %1222
  %1607 = load i64, ptr %78, align 8, !tbaa !9
  %1608 = sitofp i64 %1607 to double
  %1609 = load ptr, ptr %42, align 8, !tbaa !5
  %1610 = getelementptr inbounds %struct.doublecomplex, ptr %1609, i64 1
  %1611 = getelementptr inbounds %struct.doublecomplex, ptr %1610, i32 0, i32 0
  store double %1608, ptr %1611, align 8, !tbaa !11
  %1612 = load ptr, ptr %42, align 8, !tbaa !5
  %1613 = getelementptr inbounds %struct.doublecomplex, ptr %1612, i64 1
  %1614 = getelementptr inbounds %struct.doublecomplex, ptr %1613, i32 0, i32 1
  store double 0.000000e+00, ptr %1614, align 8, !tbaa !14
  store i32 0, ptr %23, align 4
  store i32 1, ptr %86, align 4
  br label %1615

1615:                                             ; preds = %1606, %604, %370, %349, %341
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #4
  %1616 = load i32, ptr %23, align 4
  ret i32 %1616
}

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

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

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

declare i64 @ilaenv_(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 @ztgsy2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"long", !7, i64 0}
!11 = !{!12, !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}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}
!29 = distinct !{!29, !17}
!30 = distinct !{!30, !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 }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__2 = external hidden global i64, align 8
@c_n1 = external hidden global i64, align 8
@c__5 = external hidden global i64, align 8
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@c_b1 = external hidden global %struct.doublecomplex, align 8
@c__1 = external hidden global i64, align 8
@c_b44 = external hidden global %struct.doublecomplex, align 8
@c_b45 = external hidden global %struct.doublecomplex, align 8

; Function Attrs: nounwind uwtable
define dso_local noundef i32 @ztgsyl_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9, ptr noundef %10, ptr noundef %11, ptr noundef %12, ptr noundef %13, ptr noundef %14, ptr noundef %15, ptr noundef %16, ptr nocapture noundef writeonly %17, ptr noundef %18, ptr nocapture noundef readonly %19, ptr nocapture noundef %20, ptr noundef %21) local_unnamed_addr #0 {
  %23 = alloca i64, align 8
  %24 = alloca i64, align 8
  %25 = alloca i64, align 8
  %26 = alloca %struct.doublecomplex, align 8
  %27 = alloca i64, align 8
  %28 = alloca i64, align 8
  %29 = alloca double, align 8
  %30 = alloca i64, align 8
  %31 = alloca i64, align 8
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #5
  %34 = load i64, ptr %5, align 8, !tbaa !5
  %35 = xor i64 %34, -1
  %36 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %35
  %37 = load i64, ptr %7, align 8, !tbaa !5
  %38 = xor i64 %37, -1
  %39 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %38
  %40 = load i64, ptr %9, align 8, !tbaa !5
  %41 = xor i64 %40, -1
  %42 = getelementptr inbounds %struct.doublecomplex, ptr %8, i64 %41
  %43 = load i64, ptr %11, align 8, !tbaa !5
  %44 = xor i64 %43, -1
  %45 = getelementptr inbounds %struct.doublecomplex, ptr %10, i64 %44
  %46 = load i64, ptr %13, align 8, !tbaa !5
  %47 = xor i64 %46, -1
  %48 = getelementptr inbounds %struct.doublecomplex, ptr %12, i64 %47
  %49 = load i64, ptr %15, align 8, !tbaa !5
  %50 = xor i64 %49, -1
  %51 = getelementptr inbounds %struct.doublecomplex, ptr %14, i64 %50
  %52 = getelementptr inbounds i8, ptr %20, i64 -8
  store i64 0, ptr %21, align 8, !tbaa !5
  %53 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %54 = load i64, ptr %19, align 8, !tbaa !5
  %55 = icmp eq i64 %54, -1
  %.not = icmp eq i64 %53, 0
  br i1 %.not, label %56, label %.critedge

56:                                               ; preds = %22
  %57 = tail call i64 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #5
  %.not695 = icmp eq i64 %57, 0
  br i1 %.not695, label %.thread734.sink.split, label %59

.critedge:                                        ; preds = %22
  %58 = load i64, ptr %1, align 8, !tbaa !5
  %or.cond716 = icmp ugt i64 %58, 4
  br i1 %or.cond716, label %.thread734.sink.split, label %59

59:                                               ; preds = %56, %.critedge
  %.pr = load i64, ptr %21, align 8, !tbaa !5
  %60 = icmp eq i64 %.pr, 0
  br i1 %60, label %61, label %.thread734

61:                                               ; preds = %59
  %62 = load i64, ptr %2, align 8, !tbaa !5
  %63 = icmp slt i64 %62, 1
  br i1 %63, label %.thread734.sink.split, label %64

64:                                               ; preds = %61
  %65 = load i64, ptr %3, align 8, !tbaa !5
  %66 = icmp slt i64 %65, 1
  br i1 %66, label %.thread734.sink.split, label %67

67:                                               ; preds = %64
  %68 = load i64, ptr %5, align 8, !tbaa !5
  %69 = icmp slt i64 %68, %62
  br i1 %69, label %.thread734.sink.split, label %70

70:                                               ; preds = %67
  %71 = load i64, ptr %7, align 8, !tbaa !5
  %72 = icmp slt i64 %71, %65
  br i1 %72, label %.thread734.sink.split, label %73

73:                                               ; preds = %70
  %74 = load i64, ptr %9, align 8, !tbaa !5
  %75 = icmp slt i64 %74, %62
  br i1 %75, label %.thread734.sink.split, label %76

76:                                               ; preds = %73
  %77 = load i64, ptr %11, align 8, !tbaa !5
  %78 = icmp slt i64 %77, %62
  br i1 %78, label %.thread734.sink.split, label %79

79:                                               ; preds = %76
  %80 = load i64, ptr %13, align 8, !tbaa !5
  %81 = icmp slt i64 %80, %65
  br i1 %81, label %.thread734.sink.split, label %82

82:                                               ; preds = %79
  %83 = load i64, ptr %15, align 8, !tbaa !5
  %84 = icmp slt i64 %83, %62
  br i1 %84, label %.thread734.sink.split, label %.thread

.thread:                                          ; preds = %82
  br i1 %.not, label %91, label %85

85:                                               ; preds = %.thread
  %86 = load i64, ptr %1, align 8, !tbaa !5
  %.off = add i64 %86, -1
  %switch = icmp ult i64 %.off, 2
  br i1 %switch, label %87, label %91

87:                                               ; preds = %85
  %88 = shl nuw i64 %62, 1
  %89 = mul nsw i64 %88, %65
  %90 = tail call i64 @llvm.smax.i64(i64 %89, i64 1)
  br label %91

91:                                               ; preds = %85, %.thread, %87
  %.0658 = phi i64 [ %90, %87 ], [ 1, %85 ], [ 1, %.thread ]
  %92 = uitofp nneg i64 %.0658 to double
  store double %92, ptr %18, align 8, !tbaa !9
  %93 = getelementptr inbounds i8, ptr %18, i64 8
  store double 0.000000e+00, ptr %93, align 8, !tbaa !12
  %94 = load i64, ptr %19, align 8, !tbaa !5
  %95 = icmp sge i64 %94, %.0658
  %or.cond = select i1 %95, i1 true, i1 %55
  br i1 %or.cond, label %.thread729, label %.thread734.sink.split

.thread734.sink.split:                            ; preds = %91, %82, %79, %76, %73, %70, %67, %64, %61, %.critedge, %56
  %.sink = phi i64 [ -1, %56 ], [ -2, %.critedge ], [ -3, %61 ], [ -4, %64 ], [ -6, %67 ], [ -8, %70 ], [ -10, %73 ], [ -12, %76 ], [ -14, %79 ], [ -16, %82 ], [ -20, %91 ]
  store i64 %.sink, ptr %21, align 8, !tbaa !5
  br label %.thread734

.thread734:                                       ; preds = %.thread734.sink.split, %59
  %96 = phi i64 [ %.pr, %59 ], [ %.sink, %.thread734.sink.split ]
  %97 = sub nsw i64 0, %96
  store i64 %97, ptr %23, align 8, !tbaa !5
  %98 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %23) #5
  br label %.loopexit

.thread729:                                       ; preds = %91
  br i1 %55, label %.loopexit, label %99

99:                                               ; preds = %.thread729
  %100 = tail call i64 @ilaenv_(ptr noundef nonnull @c__2, ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i64 %100, ptr %27, align 8, !tbaa !5
  %101 = tail call i64 @ilaenv_(ptr noundef nonnull @c__5, ptr noundef nonnull @.str.2, ptr noundef %0, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1) #5
  store i64 %101, ptr %28, align 8, !tbaa !5
  store i64 0, ptr %30, align 8, !tbaa !5
  br i1 %.not, label %111, label %102

102:                                              ; preds = %99
  %103 = load i64, ptr %1, align 8, !tbaa !5
  %104 = icmp sgt i64 %103, 2
  br i1 %104, label %105, label %109

105:                                              ; preds = %102
  %106 = add nsw i64 %103, -2
  store i64 %106, ptr %30, align 8, !tbaa !5
  %107 = tail call i32 @zlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9) #5
  %108 = tail call i32 @zlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #5
  br label %111

109:                                              ; preds = %102
  %110 = icmp sgt i64 %103, 0
  %spec.select723 = select i1 %110, i64 2, i64 1
  br label %111

111:                                              ; preds = %109, %105, %99
  %112 = phi i1 [ false, %105 ], [ false, %99 ], [ %110, %109 ]
  %113 = phi i64 [ 1, %105 ], [ 1, %99 ], [ %spec.select723, %109 ]
  %114 = icmp slt i64 %100, 2
  %115 = icmp slt i64 %101, 2
  %or.cond5 = select i1 %114, i1 %115, i1 false
  br i1 %or.cond5, label %.lr.ph854.preheader, label %116

116:                                              ; preds = %111
  %117 = load i64, ptr %2, align 8, !tbaa !5
  %.not697 = icmp slt i64 %100, %117
  br i1 %.not697, label %.preheader, label %118

.preheader:                                       ; preds = %118, %116
  br label %179

118:                                              ; preds = %116
  %119 = load i64, ptr %3, align 8, !tbaa !5
  %.not698 = icmp slt i64 %101, %119
  br i1 %.not698, label %.preheader, label %.lr.ph854.preheader

.lr.ph854.preheader:                              ; preds = %118, %111
  store double 1.000000e+00, ptr %16, align 8, !tbaa !13
  store double 0.000000e+00, ptr %32, align 8, !tbaa !13
  store double 1.000000e+00, ptr %29, align 8, !tbaa !13
  %120 = load i64, ptr %2, align 8, !tbaa !5
  %121 = load i64, ptr %3, align 8, !tbaa !5
  %122 = call i32 @ztgsy2_(ptr noundef %0, ptr noundef nonnull %30, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %21) #5
  %123 = load double, ptr %32, align 8, !tbaa !13
  %124 = fcmp une double %123, 0.000000e+00
  br i1 %124, label %125, label %138

125:                                              ; preds = %.lr.ph854.preheader
  %126 = mul nsw i64 %121, %120
  %127 = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %127, label %.sink.split [
    i64 1, label %128
    i64 3, label %128
  ]

128:                                              ; preds = %125, %125
  %129 = load i64, ptr %2, align 8, !tbaa !5
  %130 = shl i64 %129, 1
  %131 = load i64, ptr %3, align 8, !tbaa !5
  %132 = mul nsw i64 %130, %131
  br label %.sink.split

.sink.split:                                      ; preds = %125, %128
  %.sink886 = phi i64 [ %132, %128 ], [ %126, %125 ]
  %133 = sitofp i64 %.sink886 to double
  %134 = call double @sqrt(double noundef %133) #5
  %.sink873 = load double, ptr %32, align 8, !tbaa !13
  %.sink875 = load double, ptr %29, align 8, !tbaa !13
  %135 = call double @sqrt(double noundef %.sink875) #5
  %136 = fmul double %.sink873, %135
  %137 = fdiv double %134, %136
  store double %137, ptr %17, align 8, !tbaa !13
  br label %138

138:                                              ; preds = %.sink.split, %.lr.ph854.preheader
  br i1 %112, label %139, label %152

139:                                              ; preds = %138
  br i1 %.not, label %142, label %140

140:                                              ; preds = %139
  %141 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %141, ptr %30, align 8, !tbaa !5
  br label %142

142:                                              ; preds = %140, %139
  %143 = load double, ptr %16, align 8, !tbaa !13
  %144 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %18, ptr noundef nonnull %2) #5
  %145 = load i64, ptr %2, align 8, !tbaa !5
  %146 = load i64, ptr %3, align 8, !tbaa !5
  %147 = mul nsw i64 %146, %145
  %148 = getelementptr %struct.doublecomplex, ptr %18, i64 %147
  %149 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %148, ptr noundef nonnull %2) #5
  %150 = call i32 @zlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9) #5
  %151 = call i32 @zlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #5
  br label %152

152:                                              ; preds = %138, %142
  %.1657.peel = phi double [ %143, %142 ], [ undef, %138 ]
  %.not714.not.peel = icmp ugt i64 %113, 1
  br i1 %.not714.not.peel, label %.lr.ph854, label %.loopexit

.lr.ph854:                                        ; preds = %152
  store double 1.000000e+00, ptr %16, align 8, !tbaa !13
  store double 0.000000e+00, ptr %32, align 8, !tbaa !13
  store double 1.000000e+00, ptr %29, align 8, !tbaa !13
  %153 = load i64, ptr %2, align 8, !tbaa !5
  %154 = load i64, ptr %3, align 8, !tbaa !5
  %155 = call i32 @ztgsy2_(ptr noundef %0, ptr noundef nonnull %30, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef nonnull %5, ptr noundef %6, ptr noundef nonnull %7, ptr noundef %8, ptr noundef nonnull %9, ptr noundef %10, ptr noundef nonnull %11, ptr noundef %12, ptr noundef nonnull %13, ptr noundef %14, ptr noundef nonnull %15, ptr noundef nonnull %16, ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %21) #5
  %156 = load double, ptr %32, align 8, !tbaa !13
  %157 = fcmp une double %156, 0.000000e+00
  br i1 %157, label %158, label %171

158:                                              ; preds = %.lr.ph854
  %159 = mul nsw i64 %154, %153
  %160 = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %160, label %.sink.split876 [
    i64 1, label %161
    i64 3, label %161
  ]

161:                                              ; preds = %158, %158
  %162 = load i64, ptr %2, align 8, !tbaa !5
  %163 = shl i64 %162, 1
  %164 = load i64, ptr %3, align 8, !tbaa !5
  %165 = mul nsw i64 %163, %164
  br label %.sink.split876

.sink.split876:                                   ; preds = %158, %161
  %.sink888 = phi i64 [ %165, %161 ], [ %159, %158 ]
  %166 = sitofp i64 %.sink888 to double
  %167 = call double @sqrt(double noundef %166) #5
  %.sink880 = load double, ptr %32, align 8, !tbaa !13
  %.sink882 = load double, ptr %29, align 8, !tbaa !13
  %168 = call double @sqrt(double noundef %.sink882) #5
  %169 = fmul double %.sink880, %168
  %170 = fdiv double %167, %169
  store double %170, ptr %17, align 8, !tbaa !13
  br label %171

171:                                              ; preds = %.sink.split876, %.lr.ph854
  br i1 %112, label %172, label %.loopexit

172:                                              ; preds = %171
  %173 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef %8, ptr noundef nonnull %9) #5
  %174 = load i64, ptr %2, align 8, !tbaa !5
  %175 = load i64, ptr %3, align 8, !tbaa !5
  %176 = mul nsw i64 %175, %174
  %177 = getelementptr %struct.doublecomplex, ptr %18, i64 %176
  %178 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %177, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %15) #5
  store double %.1657.peel, ptr %16, align 8, !tbaa !13
  br label %.loopexit

179:                                              ; preds = %.preheader, %182
  %180 = phi i64 [ %186, %182 ], [ %117, %.preheader ]
  %.0675 = phi i64 [ %185, %182 ], [ 1, %.preheader ]
  %.0665 = phi i64 [ %183, %182 ], [ 0, %.preheader ]
  %181 = icmp sgt i64 %.0675, %180
  br i1 %181, label %187, label %182

182:                                              ; preds = %179
  %183 = add nuw nsw i64 %.0665, 1
  %184 = getelementptr i64, ptr %20, i64 %.0665
  store i64 %.0675, ptr %184, align 8, !tbaa !5
  %185 = add nsw i64 %.0675, %100
  %186 = load i64, ptr %2, align 8, !tbaa !5
  %.not699 = icmp slt i64 %185, %186
  br i1 %.not699, label %179, label %187

187:                                              ; preds = %182, %179
  %188 = phi i64 [ %180, %179 ], [ %186, %182 ]
  %.1666 = phi i64 [ %.0665, %179 ], [ %183, %182 ]
  %189 = add nsw i64 %188, 1
  %190 = getelementptr i64, ptr %20, i64 %.1666
  store i64 %189, ptr %190, align 8, !tbaa !5
  %191 = getelementptr inbounds i64, ptr %52, i64 %.1666
  %192 = load i64, ptr %191, align 8, !tbaa !5
  %193 = icmp eq i64 %192, %189
  %194 = sext i1 %193 to i64
  %spec.select724 = add nsw i64 %.1666, %194
  %195 = add nsw i64 %spec.select724, 1
  %.pre = load i64, ptr %3, align 8, !tbaa !5
  br label %196

196:                                              ; preds = %199, %187
  %197 = phi i64 [ %.pre, %187 ], [ %203, %199 ]
  %.0672 = phi i64 [ 1, %187 ], [ %202, %199 ]
  %.0662 = phi i64 [ %195, %187 ], [ %200, %199 ]
  %198 = icmp sgt i64 %.0672, %197
  br i1 %198, label %204, label %199

199:                                              ; preds = %196
  %200 = add nsw i64 %.0662, 1
  %201 = getelementptr i64, ptr %20, i64 %.0662
  store i64 %.0672, ptr %201, align 8, !tbaa !5
  %202 = add nsw i64 %.0672, %101
  %203 = load i64, ptr %3, align 8, !tbaa !5
  %.not700 = icmp slt i64 %202, %203
  br i1 %.not700, label %196, label %204

204:                                              ; preds = %199, %196
  %205 = phi i64 [ %197, %196 ], [ %203, %199 ]
  %.1663 = phi i64 [ %.0662, %196 ], [ %200, %199 ]
  %206 = add nsw i64 %205, 1
  %207 = getelementptr i64, ptr %20, i64 %.1663
  store i64 %206, ptr %207, align 8, !tbaa !5
  %208 = getelementptr inbounds i64, ptr %52, i64 %.1663
  %209 = load i64, ptr %208, align 8, !tbaa !5
  %210 = icmp eq i64 %209, %206
  %211 = sext i1 %210 to i64
  %spec.select725 = add nsw i64 %.1663, %211
  br i1 %.not, label %384, label %.lr.ph

.lr.ph:                                           ; preds = %204
  %212 = add nsw i64 %spec.select724, 2
  %.not708787 = icmp sgt i64 %212, %spec.select725
  %invariant.gep775 = getelementptr i8, ptr %36, i64 16
  %invariant.gep777 = getelementptr i8, ptr %42, i64 16
  %invariant.gep779 = getelementptr i8, ptr %45, i64 16
  %invariant.gep781 = getelementptr i8, ptr %51, i64 16
  %213 = icmp sgt i64 %spec.select724, 0
  %214 = add i64 %37, 1
  %215 = add i64 %46, 1
  %216 = getelementptr inbounds i8, ptr %26, i64 8
  %217 = getelementptr inbounds i64, ptr %52, i64 %spec.select725
  %218 = getelementptr i64, ptr %20, i64 %spec.select725
  br label %219

219:                                              ; preds = %.lr.ph, %382
  %.1802 = phi i64 [ 1, %.lr.ph ], [ %383, %382 ]
  %.2801 = phi double [ undef, %.lr.ph ], [ %.3, %382 ]
  store double 1.000000e+00, ptr %16, align 8, !tbaa !13
  store double 0.000000e+00, ptr %32, align 8, !tbaa !13
  store double 1.000000e+00, ptr %29, align 8, !tbaa !13
  br i1 %.not708787, label %._crit_edge792.thread, label %.lr.ph791

.lr.ph791:                                        ; preds = %219
  br i1 %213, label %.lr.ph786.us, label %.loopexit746.preheader

.loopexit746.preheader:                           ; preds = %.lr.ph791
  %220 = load i64, ptr %217, align 8, !tbaa !5
  %221 = load i64, ptr %218, align 8, !tbaa !5
  %222 = sub i64 %221, %220
  store i64 %222, ptr %28, align 8, !tbaa !5
  br label %._crit_edge792.thread

.lr.ph786.us:                                     ; preds = %.lr.ph791, %..loopexit746_crit_edge.us
  %.0660789.us = phi i64 [ %270, %..loopexit746_crit_edge.us ], [ 0, %.lr.ph791 ]
  %.1673788.us = phi i64 [ %337, %..loopexit746_crit_edge.us ], [ %212, %.lr.ph791 ]
  %223 = getelementptr inbounds i64, ptr %52, i64 %.1673788.us
  %224 = load i64, ptr %223, align 8, !tbaa !5
  %225 = getelementptr i64, ptr %20, i64 %.1673788.us
  %226 = load i64, ptr %225, align 8, !tbaa !5
  %227 = add nsw i64 %226, -1
  %228 = sub i64 %226, %224
  store i64 %228, ptr %28, align 8, !tbaa !5
  %229 = mul i64 %224, %214
  %230 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %229
  %231 = mul nsw i64 %224, %40
  %232 = mul i64 %224, %215
  %233 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %232
  %234 = mul nsw i64 %224, %49
  %235 = add nsw i64 %224, -1
  %gep778.us = getelementptr %struct.doublecomplex, ptr %invariant.gep777, i64 %231
  %gep782.us = getelementptr %struct.doublecomplex, ptr %invariant.gep781, i64 %234
  %236 = icmp slt i64 %.1673788.us, %spec.select725
  %237 = mul nsw i64 %226, %37
  %238 = getelementptr %struct.doublecomplex, ptr %39, i64 %224
  %239 = getelementptr %struct.doublecomplex, ptr %238, i64 %237
  %240 = mul nsw i64 %226, %40
  %241 = mul nsw i64 %226, %46
  %242 = getelementptr %struct.doublecomplex, ptr %48, i64 %224
  %243 = getelementptr %struct.doublecomplex, ptr %242, i64 %241
  %244 = mul nsw i64 %226, %49
  %.not709750.us = icmp slt i64 %224, 2
  %.not710756.us.not = icmp slt i64 %224, %226
  br label %245

245:                                              ; preds = %.backedge867, %.lr.ph786.us
  %.1661784.us = phi i64 [ %.0660789.us, %.lr.ph786.us ], [ %270, %.backedge867 ]
  %.1676783.us = phi i64 [ %spec.select724, %.lr.ph786.us ], [ %.1676783.us.be, %.backedge867 ]
  %246 = getelementptr inbounds i64, ptr %52, i64 %.1676783.us
  %247 = load i64, ptr %246, align 8, !tbaa !5
  %248 = getelementptr i64, ptr %20, i64 %.1676783.us
  %249 = load i64, ptr %248, align 8, !tbaa !5
  %250 = add nsw i64 %249, -1
  %251 = sub i64 %249, %247
  store i64 %251, ptr %27, align 8, !tbaa !5
  %252 = mul nsw i64 %247, %34
  %253 = getelementptr %struct.doublecomplex, ptr %36, i64 %247
  %254 = getelementptr %struct.doublecomplex, ptr %253, i64 %252
  %255 = getelementptr %struct.doublecomplex, ptr %42, i64 %247
  %256 = getelementptr %struct.doublecomplex, ptr %255, i64 %231
  %257 = mul nsw i64 %247, %43
  %258 = getelementptr %struct.doublecomplex, ptr %45, i64 %247
  %259 = getelementptr %struct.doublecomplex, ptr %258, i64 %257
  %260 = getelementptr %struct.doublecomplex, ptr %51, i64 %247
  %261 = getelementptr %struct.doublecomplex, ptr %260, i64 %234
  %262 = call i32 @ztgsy2_(ptr noundef %0, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef %254, ptr noundef nonnull %5, ptr noundef %230, ptr noundef nonnull %7, ptr noundef %256, ptr noundef nonnull %9, ptr noundef %259, ptr noundef nonnull %11, ptr noundef %233, ptr noundef nonnull %13, ptr noundef %261, ptr noundef nonnull %15, ptr noundef nonnull %33, ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %31) #5
  %263 = load i64, ptr %31, align 8, !tbaa !5
  %264 = icmp sgt i64 %263, 0
  br i1 %264, label %265, label %266

265:                                              ; preds = %245
  store i64 %263, ptr %21, align 8, !tbaa !5
  br label %266

266:                                              ; preds = %265, %245
  %267 = load i64, ptr %27, align 8, !tbaa !5
  %268 = load i64, ptr %28, align 8, !tbaa !5
  %269 = mul nsw i64 %268, %267
  %270 = add nsw i64 %269, %.1661784.us
  %271 = load double, ptr %33, align 8, !tbaa !13
  %272 = fcmp une double %271, 1.000000e+00
  br i1 %272, label %273, label %318

273:                                              ; preds = %266
  store i64 %235, ptr %24, align 8, !tbaa !5
  br i1 %.not709750.us, label %._crit_edge.us, label %.lr.ph.us

.lr.ph.us:                                        ; preds = %273, %.lr.ph.us
  %.0668751.us = phi i64 [ %280, %.lr.ph.us ], [ 1, %273 ]
  %274 = load double, ptr %33, align 8, !tbaa !13
  store double %274, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %216, align 8, !tbaa !12
  %275 = mul nsw i64 %.0668751.us, %40
  %gep.us = getelementptr %struct.doublecomplex, ptr %invariant.gep777, i64 %275
  %276 = call i32 @f2c_zscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep.us, ptr noundef nonnull @c__1) #5
  %277 = load double, ptr %33, align 8, !tbaa !13
  store double %277, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %216, align 8, !tbaa !12
  %278 = mul nsw i64 %.0668751.us, %49
  %gep749.us = getelementptr %struct.doublecomplex, ptr %invariant.gep781, i64 %278
  %279 = call i32 @f2c_zscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep749.us, ptr noundef nonnull @c__1) #5
  %280 = add nuw nsw i64 %.0668751.us, 1
  %281 = load i64, ptr %24, align 8, !tbaa !5
  %.not709.us.not = icmp slt i64 %.0668751.us, %281
  br i1 %.not709.us.not, label %.lr.ph.us, label %._crit_edge.us, !llvm.loop !14

._crit_edge.us:                                   ; preds = %.lr.ph.us, %273
  store i64 %227, ptr %24, align 8, !tbaa !5
  br i1 %.not710756.us.not, label %.lr.ph759.us, label %._crit_edge765.us

282:                                              ; preds = %.lr.ph759.us, %282
  %.1669757.us = phi i64 [ %224, %.lr.ph759.us ], [ %289, %282 ]
  store i64 %334, ptr %25, align 8, !tbaa !5
  %283 = load double, ptr %33, align 8, !tbaa !13
  store double %283, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %216, align 8, !tbaa !12
  %284 = mul nsw i64 %.1669757.us, %40
  %gep753.us = getelementptr %struct.doublecomplex, ptr %invariant.gep777, i64 %284
  %285 = call i32 @f2c_zscal(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep753.us, ptr noundef nonnull @c__1) #5
  store i64 %334, ptr %25, align 8, !tbaa !5
  %286 = load double, ptr %33, align 8, !tbaa !13
  store double %286, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %216, align 8, !tbaa !12
  %287 = mul nsw i64 %.1669757.us, %49
  %gep755.us = getelementptr %struct.doublecomplex, ptr %invariant.gep781, i64 %287
  %288 = call i32 @f2c_zscal(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep755.us, ptr noundef nonnull @c__1) #5
  %289 = add nsw i64 %.1669757.us, 1
  %290 = load i64, ptr %24, align 8, !tbaa !5
  %.not710.us.not = icmp slt i64 %.1669757.us, %290
  br i1 %.not710.us.not, label %282, label %._crit_edge760.us, !llvm.loop !16

._crit_edge760.us:                                ; preds = %282
  store i64 %227, ptr %24, align 8, !tbaa !5
  br i1 %.not710756.us.not, label %.lr.ph764.us, label %._crit_edge765.us

291:                                              ; preds = %.lr.ph764.us, %291
  %.2670762.us = phi i64 [ %224, %.lr.ph764.us ], [ %304, %291 ]
  %292 = load i64, ptr %2, align 8, !tbaa !5
  %293 = sub nsw i64 %292, %250
  store i64 %293, ptr %25, align 8, !tbaa !5
  %294 = load double, ptr %33, align 8, !tbaa !13
  store double %294, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %216, align 8, !tbaa !12
  %295 = mul nsw i64 %.2670762.us, %40
  %296 = getelementptr %struct.doublecomplex, ptr %335, i64 %295
  %297 = call i32 @f2c_zscal(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %296, ptr noundef nonnull @c__1) #5
  %298 = load i64, ptr %2, align 8, !tbaa !5
  %299 = sub nsw i64 %298, %250
  store i64 %299, ptr %25, align 8, !tbaa !5
  %300 = load double, ptr %33, align 8, !tbaa !13
  store double %300, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %216, align 8, !tbaa !12
  %301 = mul nsw i64 %.2670762.us, %49
  %302 = getelementptr %struct.doublecomplex, ptr %336, i64 %301
  %303 = call i32 @f2c_zscal(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %302, ptr noundef nonnull @c__1) #5
  %304 = add nsw i64 %.2670762.us, 1
  %305 = load i64, ptr %24, align 8, !tbaa !5
  %.not711.us.not = icmp slt i64 %.2670762.us, %305
  br i1 %.not711.us.not, label %291, label %._crit_edge765.us, !llvm.loop !17

._crit_edge765.us:                                ; preds = %291, %._crit_edge.us, %._crit_edge760.us
  %306 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %306, ptr %24, align 8, !tbaa !5
  %.not712770.us = icmp sgt i64 %226, %306
  br i1 %.not712770.us, label %._crit_edge774.us, label %.lr.ph773.us

.lr.ph773.us:                                     ; preds = %._crit_edge765.us, %.lr.ph773.us
  %.3671771.us = phi i64 [ %313, %.lr.ph773.us ], [ %226, %._crit_edge765.us ]
  %307 = load double, ptr %33, align 8, !tbaa !13
  store double %307, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %216, align 8, !tbaa !12
  %308 = mul nsw i64 %.3671771.us, %40
  %gep767.us = getelementptr %struct.doublecomplex, ptr %invariant.gep777, i64 %308
  %309 = call i32 @f2c_zscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep767.us, ptr noundef nonnull @c__1) #5
  %310 = load double, ptr %33, align 8, !tbaa !13
  store double %310, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %216, align 8, !tbaa !12
  %311 = mul nsw i64 %.3671771.us, %49
  %gep769.us = getelementptr %struct.doublecomplex, ptr %invariant.gep781, i64 %311
  %312 = call i32 @f2c_zscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep769.us, ptr noundef nonnull @c__1) #5
  %313 = add nsw i64 %.3671771.us, 1
  %314 = load i64, ptr %24, align 8, !tbaa !5
  %.not712.us.not = icmp slt i64 %.3671771.us, %314
  br i1 %.not712.us.not, label %.lr.ph773.us, label %._crit_edge774.us, !llvm.loop !18

._crit_edge774.us:                                ; preds = %.lr.ph773.us, %._crit_edge765.us
  %315 = load double, ptr %33, align 8, !tbaa !13
  %316 = load double, ptr %16, align 8, !tbaa !13
  %317 = fmul double %315, %316
  store double %317, ptr %16, align 8, !tbaa !13
  br label %318

318:                                              ; preds = %._crit_edge774.us, %266
  %.not713.us = icmp eq i64 %.1676783.us, 1
  br i1 %.not713.us, label %.thread866, label %319

319:                                              ; preds = %318
  %320 = add nsw i64 %247, -1
  store i64 %320, ptr %24, align 8, !tbaa !5
  %gep776.us = getelementptr %struct.doublecomplex, ptr %invariant.gep775, i64 %252
  %321 = call i32 @f2c_zgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull @c_b44, ptr noundef %gep776.us, ptr noundef nonnull %5, ptr noundef %256, ptr noundef nonnull %9, ptr noundef nonnull @c_b45, ptr noundef %gep778.us, ptr noundef nonnull %9) #5
  store i64 %320, ptr %24, align 8, !tbaa !5
  %gep780.us = getelementptr %struct.doublecomplex, ptr %invariant.gep779, i64 %257
  %322 = call i32 @f2c_zgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull @c_b44, ptr noundef %gep780.us, ptr noundef nonnull %11, ptr noundef %256, ptr noundef nonnull %9, ptr noundef nonnull @c_b45, ptr noundef %gep782.us, ptr noundef nonnull %15) #5
  br i1 %236, label %323, label %.thread862

.thread866:                                       ; preds = %318
  br i1 %236, label %323, label %._crit_edge792

323:                                              ; preds = %.thread866, %319
  %324 = load i64, ptr %3, align 8, !tbaa !5
  %325 = sub nsw i64 %324, %227
  store i64 %325, ptr %24, align 8, !tbaa !5
  %326 = getelementptr %struct.doublecomplex, ptr %255, i64 %240
  %327 = call i32 @f2c_zgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull @c_b45, ptr noundef %261, ptr noundef nonnull %15, ptr noundef %239, ptr noundef nonnull %7, ptr noundef nonnull @c_b45, ptr noundef %326, ptr noundef nonnull %9) #5
  %328 = load i64, ptr %3, align 8, !tbaa !5
  %329 = sub nsw i64 %328, %227
  store i64 %329, ptr %24, align 8, !tbaa !5
  %330 = getelementptr %struct.doublecomplex, ptr %260, i64 %244
  %331 = call i32 @f2c_zgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull @c_b45, ptr noundef %261, ptr noundef nonnull %15, ptr noundef %243, ptr noundef nonnull %13, ptr noundef nonnull @c_b45, ptr noundef %330, ptr noundef nonnull %15) #5
  %332 = icmp sgt i64 %.1676783.us, 1
  br i1 %332, label %.backedge867, label %..loopexit746_crit_edge.us

.backedge867:                                     ; preds = %323, %.thread862
  %.1676783.us.be = add nsw i64 %.1676783.us, -1
  br label %245, !llvm.loop !19

.thread862:                                       ; preds = %319
  %333 = icmp sgt i64 %.1676783.us, 1
  br i1 %333, label %.backedge867, label %._crit_edge792

.lr.ph759.us:                                     ; preds = %._crit_edge.us
  %334 = add nsw i64 %247, -1
  br label %282

.lr.ph764.us:                                     ; preds = %._crit_edge760.us
  %335 = getelementptr %struct.doublecomplex, ptr %42, i64 %249
  %336 = getelementptr %struct.doublecomplex, ptr %51, i64 %249
  br label %291

..loopexit746_crit_edge.us:                       ; preds = %323
  %337 = add nuw nsw i64 %.1673788.us, 1
  br label %.lr.ph786.us

._crit_edge792:                                   ; preds = %.thread866, %.thread862
  %.pre860 = load double, ptr %32, align 8, !tbaa !13
  %338 = fcmp une double %.pre860, 0.000000e+00
  br i1 %338, label %339, label %._crit_edge792.thread

339:                                              ; preds = %._crit_edge792
  %340 = load i64, ptr %1, align 8, !tbaa !5
  switch i64 %340, label %353 [
    i64 1, label %341
    i64 3, label %341
  ]

341:                                              ; preds = %339, %339
  %342 = load i64, ptr %2, align 8, !tbaa !5
  %343 = shl i64 %342, 1
  %344 = load i64, ptr %3, align 8, !tbaa !5
  %345 = mul nsw i64 %343, %344
  %346 = sitofp i64 %345 to double
  %347 = call double @sqrt(double noundef %346) #5
  %348 = load double, ptr %32, align 8, !tbaa !13
  %349 = load double, ptr %29, align 8, !tbaa !13
  %350 = call double @sqrt(double noundef %349) #5
  %351 = fmul double %348, %350
  %352 = fdiv double %347, %351
  store double %352, ptr %17, align 8, !tbaa !13
  br label %._crit_edge792.thread

353:                                              ; preds = %339
  %354 = sitofp i64 %270 to double
  %355 = call double @sqrt(double noundef %354) #5
  %356 = load double, ptr %32, align 8, !tbaa !13
  %357 = load double, ptr %29, align 8, !tbaa !13
  %358 = call double @sqrt(double noundef %357) #5
  %359 = fmul double %356, %358
  %360 = fdiv double %355, %359
  store double %360, ptr %17, align 8, !tbaa !13
  br label %._crit_edge792.thread

._crit_edge792.thread:                            ; preds = %.loopexit746.preheader, %219, %341, %353, %._crit_edge792
  %361 = icmp eq i64 %.1802, 1
  %or.cond11 = and i1 %112, %361
  br i1 %or.cond11, label %362, label %373

362:                                              ; preds = %._crit_edge792.thread
  %363 = load i64, ptr %1, align 8, !tbaa !5
  store i64 %363, ptr %30, align 8, !tbaa !5
  %364 = load double, ptr %16, align 8, !tbaa !13
  %365 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %8, ptr noundef nonnull %9, ptr noundef nonnull %18, ptr noundef nonnull %2) #5
  %366 = load i64, ptr %2, align 8, !tbaa !5
  %367 = load i64, ptr %3, align 8, !tbaa !5
  %368 = mul nsw i64 %367, %366
  %369 = getelementptr %struct.doublecomplex, ptr %18, i64 %368
  %370 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %369, ptr noundef nonnull %2) #5
  %371 = call i32 @zlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %8, ptr noundef nonnull %9) #5
  %372 = call i32 @zlaset_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %14, ptr noundef nonnull %15) #5
  br label %382

373:                                              ; preds = %._crit_edge792.thread
  %374 = icmp eq i64 %.1802, 2
  %or.cond13 = and i1 %112, %374
  br i1 %or.cond13, label %375, label %382

375:                                              ; preds = %373
  %376 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef nonnull %18, ptr noundef nonnull %2, ptr noundef %8, ptr noundef nonnull %9) #5
  %377 = load i64, ptr %2, align 8, !tbaa !5
  %378 = load i64, ptr %3, align 8, !tbaa !5
  %379 = mul nsw i64 %378, %377
  %380 = getelementptr %struct.doublecomplex, ptr %18, i64 %379
  %381 = call i32 @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %380, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %15) #5
  store double %.2801, ptr %16, align 8, !tbaa !13
  br label %382

382:                                              ; preds = %362, %375, %373
  %.3 = phi double [ %364, %362 ], [ %.2801, %375 ], [ %.2801, %373 ]
  %383 = add nuw nsw i64 %.1802, 1
  %.not707.not = icmp ult i64 %.1802, %113
  br i1 %.not707.not, label %219, label %.loopexit745, !llvm.loop !20

384:                                              ; preds = %204
  store double 1.000000e+00, ptr %16, align 8, !tbaa !13
  %.not701840 = icmp slt i64 %spec.select724, 1
  br i1 %.not701840, label %.loopexit745, label %.lr.ph843

.lr.ph843:                                        ; preds = %384
  %385 = add nuw nsw i64 %spec.select724, 2
  %invariant.gep832 = getelementptr i8, ptr %39, i64 16
  %invariant.gep834 = getelementptr i8, ptr %48, i64 16
  %.not702836 = icmp slt i64 %spec.select725, %385
  %386 = add i64 %34, 1
  %387 = add i64 %43, 1
  %invariant.gep803 = getelementptr i8, ptr %42, i64 16
  %invariant.gep804 = getelementptr i8, ptr %51, i64 16
  %388 = getelementptr inbounds i8, ptr %26, i64 8
  br i1 %.not702836, label %.loopexit745, label %.lr.ph839

..loopexit744_crit_edge:                          ; preds = %487
  %389 = add nuw nsw i64 %.2677841, 1
  br label %.lr.ph839

.lr.ph839:                                        ; preds = %.lr.ph843, %..loopexit744_crit_edge
  %.2677841 = phi i64 [ %389, %..loopexit744_crit_edge ], [ 1, %.lr.ph843 ]
  %390 = getelementptr inbounds i64, ptr %52, i64 %.2677841
  %391 = load i64, ptr %390, align 8, !tbaa !5
  %392 = getelementptr i64, ptr %20, i64 %.2677841
  %393 = load i64, ptr %392, align 8, !tbaa !5
  %394 = add nsw i64 %393, -1
  %395 = sub i64 %393, %391
  store i64 %395, ptr %27, align 8, !tbaa !5
  %396 = mul i64 %391, %386
  %397 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %396
  %398 = getelementptr %struct.doublecomplex, ptr %42, i64 %391
  %399 = mul i64 %391, %387
  %400 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %399
  %401 = getelementptr %struct.doublecomplex, ptr %51, i64 %391
  %402 = add nsw i64 %391, -1
  %403 = getelementptr %struct.doublecomplex, ptr %42, i64 %393
  %404 = getelementptr %struct.doublecomplex, ptr %51, i64 %393
  %405 = getelementptr %struct.doublecomplex, ptr %401, i64 %49
  %406 = icmp slt i64 %.2677841, %spec.select724
  %407 = mul nsw i64 %393, %34
  %408 = getelementptr %struct.doublecomplex, ptr %36, i64 %391
  %409 = getelementptr %struct.doublecomplex, ptr %408, i64 %407
  %410 = mul nsw i64 %393, %43
  %411 = getelementptr %struct.doublecomplex, ptr %45, i64 %391
  %412 = getelementptr %struct.doublecomplex, ptr %411, i64 %410
  br label %413

413:                                              ; preds = %.backedge, %.lr.ph839
  %.2674837 = phi i64 [ %spec.select725, %.lr.ph839 ], [ %.2674837.be, %.backedge ]
  %414 = getelementptr inbounds i64, ptr %52, i64 %.2674837
  %415 = load i64, ptr %414, align 8, !tbaa !5
  %416 = getelementptr i64, ptr %20, i64 %.2674837
  %417 = load i64, ptr %416, align 8, !tbaa !5
  %418 = add nsw i64 %417, -1
  %419 = sub i64 %417, %415
  store i64 %419, ptr %28, align 8, !tbaa !5
  %420 = mul nsw i64 %415, %37
  %421 = getelementptr %struct.doublecomplex, ptr %39, i64 %415
  %422 = getelementptr %struct.doublecomplex, ptr %421, i64 %420
  %423 = mul nsw i64 %415, %40
  %424 = getelementptr %struct.doublecomplex, ptr %398, i64 %423
  %425 = mul nsw i64 %415, %46
  %426 = getelementptr %struct.doublecomplex, ptr %48, i64 %415
  %427 = getelementptr %struct.doublecomplex, ptr %426, i64 %425
  %428 = mul nsw i64 %415, %49
  %429 = getelementptr %struct.doublecomplex, ptr %401, i64 %428
  %430 = call i32 @ztgsy2_(ptr noundef %0, ptr noundef nonnull %30, ptr noundef nonnull %27, ptr noundef nonnull %28, ptr noundef %397, ptr noundef nonnull %5, ptr noundef %422, ptr noundef nonnull %7, ptr noundef %424, ptr noundef nonnull %9, ptr noundef %400, ptr noundef nonnull %11, ptr noundef %427, ptr noundef nonnull %13, ptr noundef %429, ptr noundef nonnull %15, ptr noundef nonnull %33, ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %31) #5
  %431 = load i64, ptr %31, align 8, !tbaa !5
  %432 = icmp sgt i64 %431, 0
  br i1 %432, label %433, label %434

433:                                              ; preds = %413
  store i64 %431, ptr %21, align 8, !tbaa !5
  br label %434

434:                                              ; preds = %433, %413
  %435 = load double, ptr %33, align 8, !tbaa !13
  %436 = fcmp une double %435, 1.000000e+00
  br i1 %436, label %437, label %481

437:                                              ; preds = %434
  %438 = add nsw i64 %415, -1
  store i64 %438, ptr %24, align 8, !tbaa !5
  %.not703806 = icmp slt i64 %415, 2
  br i1 %.not703806, label %._crit_edge, label %.lr.ph808

.lr.ph808:                                        ; preds = %437, %.lr.ph808
  %.4807 = phi i64 [ %445, %.lr.ph808 ], [ 1, %437 ]
  %439 = load double, ptr %33, align 8, !tbaa !13
  store double %439, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %388, align 8, !tbaa !12
  %440 = mul nsw i64 %.4807, %40
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep803, i64 %440
  %441 = call i32 @f2c_zscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %442 = load double, ptr %33, align 8, !tbaa !13
  store double %442, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %388, align 8, !tbaa !12
  %443 = mul nsw i64 %.4807, %49
  %gep805 = getelementptr %struct.doublecomplex, ptr %invariant.gep804, i64 %443
  %444 = call i32 @f2c_zscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep805, ptr noundef nonnull @c__1) #5
  %445 = add nuw nsw i64 %.4807, 1
  %446 = load i64, ptr %24, align 8, !tbaa !5
  %.not703.not = icmp slt i64 %.4807, %446
  br i1 %.not703.not, label %.lr.ph808, label %._crit_edge, !llvm.loop !21

._crit_edge:                                      ; preds = %.lr.ph808, %437
  store i64 %418, ptr %24, align 8, !tbaa !5
  %.not704813.not = icmp slt i64 %415, %417
  br i1 %.not704813.not, label %.lr.ph816, label %._crit_edge822

.lr.ph816:                                        ; preds = %._crit_edge, %.lr.ph816
  %.5814 = phi i64 [ %453, %.lr.ph816 ], [ %415, %._crit_edge ]
  store i64 %402, ptr %25, align 8, !tbaa !5
  %447 = load double, ptr %33, align 8, !tbaa !13
  store double %447, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %388, align 8, !tbaa !12
  %448 = mul nsw i64 %.5814, %40
  %gep810 = getelementptr %struct.doublecomplex, ptr %invariant.gep803, i64 %448
  %449 = call i32 @f2c_zscal(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep810, ptr noundef nonnull @c__1) #5
  store i64 %402, ptr %25, align 8, !tbaa !5
  %450 = load double, ptr %33, align 8, !tbaa !13
  store double %450, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %388, align 8, !tbaa !12
  %451 = mul nsw i64 %.5814, %49
  %gep812 = getelementptr %struct.doublecomplex, ptr %invariant.gep804, i64 %451
  %452 = call i32 @f2c_zscal(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep812, ptr noundef nonnull @c__1) #5
  %453 = add nsw i64 %.5814, 1
  %454 = load i64, ptr %24, align 8, !tbaa !5
  %.not704.not = icmp slt i64 %.5814, %454
  br i1 %.not704.not, label %.lr.ph816, label %._crit_edge817, !llvm.loop !22

._crit_edge817:                                   ; preds = %.lr.ph816
  store i64 %418, ptr %24, align 8, !tbaa !5
  br i1 %.not704813.not, label %.lr.ph821, label %._crit_edge822

.lr.ph821:                                        ; preds = %._crit_edge817, %.lr.ph821
  %.6819 = phi i64 [ %467, %.lr.ph821 ], [ %415, %._crit_edge817 ]
  %455 = load i64, ptr %2, align 8, !tbaa !5
  %456 = sub nsw i64 %455, %394
  store i64 %456, ptr %25, align 8, !tbaa !5
  %457 = load double, ptr %33, align 8, !tbaa !13
  store double %457, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %388, align 8, !tbaa !12
  %458 = mul nsw i64 %.6819, %40
  %459 = getelementptr %struct.doublecomplex, ptr %403, i64 %458
  %460 = call i32 @f2c_zscal(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %459, ptr noundef nonnull @c__1) #5
  %461 = load i64, ptr %2, align 8, !tbaa !5
  %462 = sub nsw i64 %461, %394
  store i64 %462, ptr %25, align 8, !tbaa !5
  %463 = load double, ptr %33, align 8, !tbaa !13
  store double %463, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %388, align 8, !tbaa !12
  %464 = mul nsw i64 %.6819, %49
  %465 = getelementptr %struct.doublecomplex, ptr %404, i64 %464
  %466 = call i32 @f2c_zscal(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %465, ptr noundef nonnull @c__1) #5
  %467 = add nsw i64 %.6819, 1
  %468 = load i64, ptr %24, align 8, !tbaa !5
  %.not705.not = icmp slt i64 %.6819, %468
  br i1 %.not705.not, label %.lr.ph821, label %._crit_edge822, !llvm.loop !23

._crit_edge822:                                   ; preds = %.lr.ph821, %._crit_edge, %._crit_edge817
  %469 = load i64, ptr %3, align 8, !tbaa !5
  store i64 %469, ptr %24, align 8, !tbaa !5
  %.not706827 = icmp sgt i64 %417, %469
  br i1 %.not706827, label %._crit_edge831, label %.lr.ph830

.lr.ph830:                                        ; preds = %._crit_edge822, %.lr.ph830
  %.7828 = phi i64 [ %476, %.lr.ph830 ], [ %417, %._crit_edge822 ]
  %470 = load double, ptr %33, align 8, !tbaa !13
  store double %470, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %388, align 8, !tbaa !12
  %471 = mul nsw i64 %.7828, %40
  %gep824 = getelementptr %struct.doublecomplex, ptr %invariant.gep803, i64 %471
  %472 = call i32 @f2c_zscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep824, ptr noundef nonnull @c__1) #5
  %473 = load double, ptr %33, align 8, !tbaa !13
  store double %473, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %388, align 8, !tbaa !12
  %474 = mul nsw i64 %.7828, %49
  %gep826 = getelementptr %struct.doublecomplex, ptr %invariant.gep804, i64 %474
  %475 = call i32 @f2c_zscal(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep826, ptr noundef nonnull @c__1) #5
  %476 = add nsw i64 %.7828, 1
  %477 = load i64, ptr %24, align 8, !tbaa !5
  %.not706.not = icmp slt i64 %.7828, %477
  br i1 %.not706.not, label %.lr.ph830, label %._crit_edge831, !llvm.loop !24

._crit_edge831:                                   ; preds = %.lr.ph830, %._crit_edge822
  %478 = load double, ptr %33, align 8, !tbaa !13
  %479 = load double, ptr %16, align 8, !tbaa !13
  %480 = fmul double %478, %479
  store double %480, ptr %16, align 8, !tbaa !13
  br label %481

481:                                              ; preds = %._crit_edge831, %434
  %482 = icmp sgt i64 %.2674837, %385
  br i1 %482, label %483, label %.thread865

483:                                              ; preds = %481
  %484 = add nsw i64 %415, -1
  store i64 %484, ptr %24, align 8, !tbaa !5
  %gep833 = getelementptr %struct.doublecomplex, ptr %invariant.gep832, i64 %420
  %485 = call i32 @f2c_zgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull @c_b45, ptr noundef %424, ptr noundef nonnull %9, ptr noundef %gep833, ptr noundef nonnull %7, ptr noundef nonnull @c_b45, ptr noundef %405, ptr noundef nonnull %15) #5
  store i64 %484, ptr %24, align 8, !tbaa !5
  %gep835 = getelementptr %struct.doublecomplex, ptr %invariant.gep834, i64 %425
  %486 = call i32 @f2c_zgemm(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %27, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull @c_b45, ptr noundef %429, ptr noundef nonnull %15, ptr noundef %gep835, ptr noundef nonnull %13, ptr noundef nonnull @c_b45, ptr noundef %405, ptr noundef nonnull %15) #5
  br i1 %406, label %487, label %.backedge

.thread865:                                       ; preds = %481
  br i1 %406, label %487, label %.loopexit745

487:                                              ; preds = %.thread865, %483
  %488 = load i64, ptr %2, align 8, !tbaa !5
  %489 = sub nsw i64 %488, %394
  store i64 %489, ptr %24, align 8, !tbaa !5
  %490 = getelementptr %struct.doublecomplex, ptr %403, i64 %423
  %491 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull @c_b44, ptr noundef %409, ptr noundef nonnull %5, ptr noundef %424, ptr noundef nonnull %9, ptr noundef nonnull @c_b45, ptr noundef %490, ptr noundef nonnull %9) #5
  %492 = load i64, ptr %2, align 8, !tbaa !5
  %493 = sub nsw i64 %492, %394
  store i64 %493, ptr %24, align 8, !tbaa !5
  %494 = call i32 @f2c_zgemm(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %28, ptr noundef nonnull %27, ptr noundef nonnull @c_b44, ptr noundef %412, ptr noundef nonnull %11, ptr noundef %429, ptr noundef nonnull %15, ptr noundef nonnull @c_b45, ptr noundef %490, ptr noundef nonnull %9) #5
  br i1 %482, label %.backedge, label %..loopexit744_crit_edge

.backedge:                                        ; preds = %483, %487
  %.2674837.be = add nsw i64 %.2674837, -1
  br label %413, !llvm.loop !25

.loopexit745:                                     ; preds = %382, %.thread865, %.lr.ph843, %384
  store double %92, ptr %18, align 8, !tbaa !9
  store double 0.000000e+00, ptr %93, align 8, !tbaa !12
  br label %.loopexit

.loopexit:                                        ; preds = %152, %171, %172, %.thread729, %.loopexit745, %.thread734
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #5
  ret i32 0
}

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

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

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

declare i64 @ilaenv_(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 @ztgsy2_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #3

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

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

; 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) #4

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


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