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

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

163:                                              ; preds = %159
  %164 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -1, ptr %164, align 4, !tbaa !9
  br label %180

165:                                              ; preds = %159, %22
  %166 = load i32, ptr %82, align 4, !tbaa !9
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %179

168:                                              ; preds = %165
  %169 = load ptr, ptr %24, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = icmp slt i32 %170, 0
  br i1 %171, label %176, label %172

172:                                              ; preds = %168
  %173 = load ptr, ptr %24, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = icmp sgt i32 %174, 4
  br i1 %175, label %176, label %178

176:                                              ; preds = %172, %168
  %177 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -2, ptr %177, align 4, !tbaa !9
  br label %178

178:                                              ; preds = %176, %172
  br label %179

179:                                              ; preds = %178, %165
  br label %180

180:                                              ; preds = %179, %163
  %181 = load ptr, ptr %44, align 8, !tbaa !5
  %182 = load i32, ptr %181, align 4, !tbaa !9
  %183 = icmp eq i32 %182, 0
  br i1 %183, label %184, label %294

184:                                              ; preds = %180
  %185 = load ptr, ptr %25, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = icmp sle i32 %186, 0
  br i1 %187, label %188, label %190

188:                                              ; preds = %184
  %189 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -3, ptr %189, align 4, !tbaa !9
  br label %293

190:                                              ; preds = %184
  %191 = load ptr, ptr %26, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  %193 = icmp sle i32 %192, 0
  br i1 %193, label %194, label %196

194:                                              ; preds = %190
  %195 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -4, ptr %195, align 4, !tbaa !9
  br label %292

196:                                              ; preds = %190
  %197 = load ptr, ptr %28, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = load ptr, ptr %25, align 8, !tbaa !5
  %200 = load i32, ptr %199, align 4, !tbaa !9
  %201 = icmp sge i32 1, %200
  br i1 %201, label %202, label %203

202:                                              ; preds = %196
  br label %206

203:                                              ; preds = %196
  %204 = load ptr, ptr %25, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  br label %206

206:                                              ; preds = %203, %202
  %207 = phi i32 [ 1, %202 ], [ %205, %203 ]
  %208 = icmp slt i32 %198, %207
  br i1 %208, label %209, label %211

209:                                              ; preds = %206
  %210 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -6, ptr %210, align 4, !tbaa !9
  br label %291

211:                                              ; preds = %206
  %212 = load ptr, ptr %30, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = load ptr, ptr %26, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  %216 = icmp sge i32 1, %215
  br i1 %216, label %217, label %218

217:                                              ; preds = %211
  br label %221

218:                                              ; preds = %211
  %219 = load ptr, ptr %26, align 8, !tbaa !5
  %220 = load i32, ptr %219, align 4, !tbaa !9
  br label %221

221:                                              ; preds = %218, %217
  %222 = phi i32 [ 1, %217 ], [ %220, %218 ]
  %223 = icmp slt i32 %213, %222
  br i1 %223, label %224, label %226

224:                                              ; preds = %221
  %225 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -8, ptr %225, align 4, !tbaa !9
  br label %290

226:                                              ; preds = %221
  %227 = load ptr, ptr %32, align 8, !tbaa !5
  %228 = load i32, ptr %227, align 4, !tbaa !9
  %229 = load ptr, ptr %25, align 8, !tbaa !5
  %230 = load i32, ptr %229, align 4, !tbaa !9
  %231 = icmp sge i32 1, %230
  br i1 %231, label %232, label %233

232:                                              ; preds = %226
  br label %236

233:                                              ; preds = %226
  %234 = load ptr, ptr %25, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  br label %236

236:                                              ; preds = %233, %232
  %237 = phi i32 [ 1, %232 ], [ %235, %233 ]
  %238 = icmp slt i32 %228, %237
  br i1 %238, label %239, label %241

239:                                              ; preds = %236
  %240 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -10, ptr %240, align 4, !tbaa !9
  br label %289

241:                                              ; preds = %236
  %242 = load ptr, ptr %34, align 8, !tbaa !5
  %243 = load i32, ptr %242, align 4, !tbaa !9
  %244 = load ptr, ptr %25, align 8, !tbaa !5
  %245 = load i32, ptr %244, align 4, !tbaa !9
  %246 = icmp sge i32 1, %245
  br i1 %246, label %247, label %248

247:                                              ; preds = %241
  br label %251

248:                                              ; preds = %241
  %249 = load ptr, ptr %25, align 8, !tbaa !5
  %250 = load i32, ptr %249, align 4, !tbaa !9
  br label %251

251:                                              ; preds = %248, %247
  %252 = phi i32 [ 1, %247 ], [ %250, %248 ]
  %253 = icmp slt i32 %243, %252
  br i1 %253, label %254, label %256

254:                                              ; preds = %251
  %255 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -12, ptr %255, align 4, !tbaa !9
  br label %288

256:                                              ; preds = %251
  %257 = load ptr, ptr %36, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = load ptr, ptr %26, align 8, !tbaa !5
  %260 = load i32, ptr %259, align 4, !tbaa !9
  %261 = icmp sge i32 1, %260
  br i1 %261, label %262, label %263

262:                                              ; preds = %256
  br label %266

263:                                              ; preds = %256
  %264 = load ptr, ptr %26, align 8, !tbaa !5
  %265 = load i32, ptr %264, align 4, !tbaa !9
  br label %266

266:                                              ; preds = %263, %262
  %267 = phi i32 [ 1, %262 ], [ %265, %263 ]
  %268 = icmp slt i32 %258, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %266
  %270 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -14, ptr %270, align 4, !tbaa !9
  br label %287

271:                                              ; preds = %266
  %272 = load ptr, ptr %38, align 8, !tbaa !5
  %273 = load i32, ptr %272, align 4, !tbaa !9
  %274 = load ptr, ptr %25, align 8, !tbaa !5
  %275 = load i32, ptr %274, align 4, !tbaa !9
  %276 = icmp sge i32 1, %275
  br i1 %276, label %277, label %278

277:                                              ; preds = %271
  br label %281

278:                                              ; preds = %271
  %279 = load ptr, ptr %25, align 8, !tbaa !5
  %280 = load i32, ptr %279, align 4, !tbaa !9
  br label %281

281:                                              ; preds = %278, %277
  %282 = phi i32 [ 1, %277 ], [ %280, %278 ]
  %283 = icmp slt i32 %273, %282
  br i1 %283, label %284, label %286

284:                                              ; preds = %281
  %285 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -16, ptr %285, align 4, !tbaa !9
  br label %286

286:                                              ; preds = %284, %281
  br label %287

287:                                              ; preds = %286, %269
  br label %288

288:                                              ; preds = %287, %254
  br label %289

289:                                              ; preds = %288, %239
  br label %290

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

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

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

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

294:                                              ; preds = %293, %180
  %295 = load ptr, ptr %44, align 8, !tbaa !5
  %296 = load i32, ptr %295, align 4, !tbaa !9
  %297 = icmp eq i32 %296, 0
  br i1 %297, label %298, label %347

298:                                              ; preds = %294
  %299 = load i32, ptr %82, align 4, !tbaa !9
  %300 = icmp ne i32 %299, 0
  br i1 %300, label %301, label %327

301:                                              ; preds = %298
  %302 = load ptr, ptr %24, align 8, !tbaa !5
  %303 = load i32, ptr %302, align 4, !tbaa !9
  %304 = icmp eq i32 %303, 1
  br i1 %304, label %309, label %305

305:                                              ; preds = %301
  %306 = load ptr, ptr %24, align 8, !tbaa !5
  %307 = load i32, ptr %306, align 4, !tbaa !9
  %308 = icmp eq i32 %307, 2
  br i1 %308, label %309, label %325

309:                                              ; preds = %305, %301
  store i32 1, ptr %57, align 4, !tbaa !9
  %310 = load ptr, ptr %25, align 8, !tbaa !5
  %311 = load i32, ptr %310, align 4, !tbaa !9
  %312 = shl i32 %311, 1
  %313 = load ptr, ptr %26, align 8, !tbaa !5
  %314 = load i32, ptr %313, align 4, !tbaa !9
  %315 = mul nsw i32 %312, %314
  store i32 %315, ptr %58, align 4, !tbaa !9
  %316 = load i32, ptr %57, align 4, !tbaa !9
  %317 = load i32, ptr %58, align 4, !tbaa !9
  %318 = icmp sge i32 %316, %317
  br i1 %318, label %319, label %321

319:                                              ; preds = %309
  %320 = load i32, ptr %57, align 4, !tbaa !9
  br label %323

321:                                              ; preds = %309
  %322 = load i32, ptr %58, align 4, !tbaa !9
  br label %323

323:                                              ; preds = %321, %319
  %324 = phi i32 [ %320, %319 ], [ %322, %321 ]
  store i32 %324, ptr %70, align 4, !tbaa !9
  br label %326

325:                                              ; preds = %305
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %326

326:                                              ; preds = %325, %323
  br label %328

327:                                              ; preds = %298
  store i32 1, ptr %70, align 4, !tbaa !9
  br label %328

328:                                              ; preds = %327, %326
  %329 = load i32, ptr %70, align 4, !tbaa !9
  %330 = sitofp i32 %329 to double
  %331 = load ptr, ptr %41, align 8, !tbaa !5
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %331, i64 1
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %332, i32 0, i32 0
  store double %330, ptr %333, align 8, !tbaa !11
  %334 = load ptr, ptr %41, align 8, !tbaa !5
  %335 = getelementptr inbounds %struct.doublecomplex, ptr %334, i64 1
  %336 = getelementptr inbounds %struct.doublecomplex, ptr %335, i32 0, i32 1
  store double 0.000000e+00, ptr %336, align 8, !tbaa !14
  %337 = load ptr, ptr %42, align 8, !tbaa !5
  %338 = load i32, ptr %337, align 4, !tbaa !9
  %339 = load i32, ptr %70, align 4, !tbaa !9
  %340 = icmp slt i32 %338, %339
  br i1 %340, label %341, label %346

341:                                              ; preds = %328
  %342 = load i32, ptr %84, align 4, !tbaa !9
  %343 = icmp ne i32 %342, 0
  br i1 %343, label %346, label %344

344:                                              ; preds = %341
  %345 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 -20, ptr %345, align 4, !tbaa !9
  br label %346

346:                                              ; preds = %344, %341, %328
  br label %347

347:                                              ; preds = %346, %294
  %348 = load ptr, ptr %44, align 8, !tbaa !5
  %349 = load i32, ptr %348, align 4, !tbaa !9
  %350 = icmp ne i32 %349, 0
  br i1 %350, label %351, label %356

351:                                              ; preds = %347
  %352 = load ptr, ptr %44, align 8, !tbaa !5
  %353 = load i32, ptr %352, align 4, !tbaa !9
  %354 = sub nsw i32 0, %353
  store i32 %354, ptr %57, align 4, !tbaa !9
  %355 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %57, i32 noundef 6)
  store i32 1, ptr %85, align 4
  br label %1676

356:                                              ; preds = %347
  %357 = load i32, ptr %84, align 4, !tbaa !9
  %358 = icmp ne i32 %357, 0
  br i1 %358, label %359, label %360

359:                                              ; preds = %356
  store i32 1, ptr %85, align 4
  br label %1676

360:                                              ; preds = %356
  br label %361

361:                                              ; preds = %360
  %362 = load ptr, ptr %25, align 8, !tbaa !5
  %363 = load i32, ptr %362, align 4, !tbaa !9
  %364 = icmp eq i32 %363, 0
  br i1 %364, label %369, label %365

365:                                              ; preds = %361
  %366 = load ptr, ptr %26, align 8, !tbaa !5
  %367 = load i32, ptr %366, align 4, !tbaa !9
  %368 = icmp eq i32 %367, 0
  br i1 %368, label %369, label %381

369:                                              ; preds = %365, %361
  %370 = load ptr, ptr %39, align 8, !tbaa !5
  store double 1.000000e+00, ptr %370, align 8, !tbaa !15
  %371 = load i32, ptr %82, align 4, !tbaa !9
  %372 = icmp ne i32 %371, 0
  br i1 %372, label %373, label %380

373:                                              ; preds = %369
  %374 = load ptr, ptr %24, align 8, !tbaa !5
  %375 = load i32, ptr %374, align 4, !tbaa !9
  %376 = icmp ne i32 %375, 0
  br i1 %376, label %377, label %379

377:                                              ; preds = %373
  %378 = load ptr, ptr %40, align 8, !tbaa !5
  store double 0.000000e+00, ptr %378, align 8, !tbaa !15
  br label %379

379:                                              ; preds = %377, %373
  br label %380

380:                                              ; preds = %379, %369
  store i32 1, ptr %85, align 4
  br label %1676

381:                                              ; preds = %365
  %382 = load ptr, ptr %23, align 8, !tbaa !5
  %383 = load ptr, ptr %25, align 8, !tbaa !5
  %384 = load ptr, ptr %26, align 8, !tbaa !5
  %385 = call i32 @ilaenv_(ptr noundef @c__2, ptr noundef @.str.2, ptr noundef %382, ptr noundef %383, ptr noundef %384, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %385, ptr %74, align 4, !tbaa !9
  %386 = load ptr, ptr %23, align 8, !tbaa !5
  %387 = load ptr, ptr %25, align 8, !tbaa !5
  %388 = load ptr, ptr %26, align 8, !tbaa !5
  %389 = call i32 @ilaenv_(ptr noundef @c__5, ptr noundef @.str.2, ptr noundef %386, ptr noundef %387, ptr noundef %388, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %389, ptr %75, align 4, !tbaa !9
  store i32 1, ptr %83, align 4, !tbaa !9
  store i32 0, ptr %68, align 4, !tbaa !9
  %390 = load i32, ptr %82, align 4, !tbaa !9
  %391 = icmp ne i32 %390, 0
  br i1 %391, label %392, label %424

392:                                              ; preds = %381
  %393 = load ptr, ptr %24, align 8, !tbaa !5
  %394 = load i32, ptr %393, align 4, !tbaa !9
  %395 = icmp sge i32 %394, 3
  br i1 %395, label %396, label %414

396:                                              ; preds = %392
  %397 = load ptr, ptr %24, align 8, !tbaa !5
  %398 = load i32, ptr %397, align 4, !tbaa !9
  %399 = sub nsw i32 %398, 2
  store i32 %399, ptr %68, align 4, !tbaa !9
  %400 = load ptr, ptr %25, align 8, !tbaa !5
  %401 = load ptr, ptr %26, align 8, !tbaa !5
  %402 = load ptr, ptr %31, align 8, !tbaa !5
  %403 = load i32, ptr %50, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds %struct.doublecomplex, ptr %402, i64 %404
  %406 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.3, ptr noundef %400, ptr noundef %401, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %405, ptr noundef %406)
  %407 = load ptr, ptr %25, align 8, !tbaa !5
  %408 = load ptr, ptr %26, align 8, !tbaa !5
  %409 = load ptr, ptr %37, align 8, !tbaa !5
  %410 = load i32, ptr %56, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.doublecomplex, ptr %409, i64 %411
  %413 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.3, ptr noundef %407, ptr noundef %408, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %412, ptr noundef %413)
  br label %423

414:                                              ; preds = %392
  %415 = load ptr, ptr %24, align 8, !tbaa !5
  %416 = load i32, ptr %415, align 4, !tbaa !9
  %417 = icmp sge i32 %416, 1
  br i1 %417, label %418, label %422

418:                                              ; preds = %414
  %419 = load i32, ptr %82, align 4, !tbaa !9
  %420 = icmp ne i32 %419, 0
  br i1 %420, label %421, label %422

421:                                              ; preds = %418
  store i32 2, ptr %83, align 4, !tbaa !9
  br label %422

422:                                              ; preds = %421, %418, %414
  br label %423

423:                                              ; preds = %422, %396
  br label %424

424:                                              ; preds = %423, %381
  %425 = load i32, ptr %74, align 4, !tbaa !9
  %426 = icmp sle i32 %425, 1
  br i1 %426, label %427, label %430

427:                                              ; preds = %424
  %428 = load i32, ptr %75, align 4, !tbaa !9
  %429 = icmp sle i32 %428, 1
  br i1 %429, label %440, label %430

430:                                              ; preds = %427, %424
  %431 = load i32, ptr %74, align 4, !tbaa !9
  %432 = load ptr, ptr %25, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = icmp sge i32 %431, %433
  br i1 %434, label %435, label %622

435:                                              ; preds = %430
  %436 = load i32, ptr %75, align 4, !tbaa !9
  %437 = load ptr, ptr %26, align 8, !tbaa !5
  %438 = load i32, ptr %437, align 4, !tbaa !9
  %439 = icmp sge i32 %436, %438
  br i1 %439, label %440, label %622

440:                                              ; preds = %435, %427
  %441 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %441, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %442

442:                                              ; preds = %618, %440
  %443 = load i32, ptr %81, align 4, !tbaa !9
  %444 = load i32, ptr %57, align 4, !tbaa !9
  %445 = icmp sle i32 %443, %444
  br i1 %445, label %446, label %621

446:                                              ; preds = %442
  %447 = load ptr, ptr %39, align 8, !tbaa !5
  store double 1.000000e+00, ptr %447, align 8, !tbaa !15
  store double 0.000000e+00, ptr %76, align 8, !tbaa !15
  store double 1.000000e+00, ptr %62, align 8, !tbaa !15
  %448 = load ptr, ptr %25, align 8, !tbaa !5
  %449 = load i32, ptr %448, align 4, !tbaa !9
  %450 = load ptr, ptr %26, align 8, !tbaa !5
  %451 = load i32, ptr %450, align 4, !tbaa !9
  %452 = mul nsw i32 %449, %451
  store i32 %452, ptr %79, align 4, !tbaa !9
  %453 = load ptr, ptr %23, align 8, !tbaa !5
  %454 = load ptr, ptr %25, align 8, !tbaa !5
  %455 = load ptr, ptr %26, align 8, !tbaa !5
  %456 = load ptr, ptr %27, align 8, !tbaa !5
  %457 = load i32, ptr %46, align 4, !tbaa !9
  %458 = sext i32 %457 to i64
  %459 = getelementptr inbounds %struct.doublecomplex, ptr %456, i64 %458
  %460 = load ptr, ptr %28, align 8, !tbaa !5
  %461 = load ptr, ptr %29, align 8, !tbaa !5
  %462 = load i32, ptr %48, align 4, !tbaa !9
  %463 = sext i32 %462 to i64
  %464 = getelementptr inbounds %struct.doublecomplex, ptr %461, i64 %463
  %465 = load ptr, ptr %30, align 8, !tbaa !5
  %466 = load ptr, ptr %31, align 8, !tbaa !5
  %467 = load i32, ptr %50, align 4, !tbaa !9
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds %struct.doublecomplex, ptr %466, i64 %468
  %470 = load ptr, ptr %32, align 8, !tbaa !5
  %471 = load ptr, ptr %33, align 8, !tbaa !5
  %472 = load i32, ptr %52, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds %struct.doublecomplex, ptr %471, i64 %473
  %475 = load ptr, ptr %34, align 8, !tbaa !5
  %476 = load ptr, ptr %35, align 8, !tbaa !5
  %477 = load i32, ptr %54, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.doublecomplex, ptr %476, i64 %478
  %480 = load ptr, ptr %36, align 8, !tbaa !5
  %481 = load ptr, ptr %37, align 8, !tbaa !5
  %482 = load i32, ptr %56, align 4, !tbaa !9
  %483 = sext i32 %482 to i64
  %484 = getelementptr inbounds %struct.doublecomplex, ptr %481, i64 %483
  %485 = load ptr, ptr %38, align 8, !tbaa !5
  %486 = load ptr, ptr %39, align 8, !tbaa !5
  %487 = load ptr, ptr %44, align 8, !tbaa !5
  call void @ztgsy2_(ptr noundef %453, ptr noundef %68, ptr noundef %454, ptr noundef %455, ptr noundef %459, ptr noundef %460, ptr noundef %464, ptr noundef %465, ptr noundef %469, ptr noundef %470, ptr noundef %474, ptr noundef %475, ptr noundef %479, ptr noundef %480, ptr noundef %484, ptr noundef %485, ptr noundef %486, ptr noundef %62, ptr noundef %76, ptr noundef %487)
  %488 = load double, ptr %76, align 8, !tbaa !15
  %489 = fcmp une double %488, 0.000000e+00
  br i1 %489, label %490, label %524

490:                                              ; preds = %446
  %491 = load ptr, ptr %24, align 8, !tbaa !5
  %492 = load i32, ptr %491, align 4, !tbaa !9
  %493 = icmp eq i32 %492, 1
  br i1 %493, label %498, label %494

494:                                              ; preds = %490
  %495 = load ptr, ptr %24, align 8, !tbaa !5
  %496 = load i32, ptr %495, align 4, !tbaa !9
  %497 = icmp eq i32 %496, 3
  br i1 %497, label %498, label %513

498:                                              ; preds = %494, %490
  %499 = load ptr, ptr %25, align 8, !tbaa !5
  %500 = load i32, ptr %499, align 4, !tbaa !9
  %501 = shl i32 %500, 1
  %502 = load ptr, ptr %26, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = mul nsw i32 %501, %503
  %505 = sitofp i32 %504 to double
  %506 = call double @sqrt(double noundef %505) #4
  %507 = load double, ptr %76, align 8, !tbaa !15
  %508 = load double, ptr %62, align 8, !tbaa !15
  %509 = call double @sqrt(double noundef %508) #4
  %510 = fmul double %507, %509
  %511 = fdiv double %506, %510
  %512 = load ptr, ptr %40, align 8, !tbaa !5
  store double %511, ptr %512, align 8, !tbaa !15
  br label %523

513:                                              ; preds = %494
  %514 = load i32, ptr %79, align 4, !tbaa !9
  %515 = sitofp i32 %514 to double
  %516 = call double @sqrt(double noundef %515) #4
  %517 = load double, ptr %76, align 8, !tbaa !15
  %518 = load double, ptr %62, align 8, !tbaa !15
  %519 = call double @sqrt(double noundef %518) #4
  %520 = fmul double %517, %519
  %521 = fdiv double %516, %520
  %522 = load ptr, ptr %40, align 8, !tbaa !5
  store double %521, ptr %522, align 8, !tbaa !15
  br label %523

523:                                              ; preds = %513, %498
  br label %524

524:                                              ; preds = %523, %446
  %525 = load i32, ptr %83, align 4, !tbaa !9
  %526 = icmp eq i32 %525, 2
  br i1 %526, label %527, label %580

527:                                              ; preds = %524
  %528 = load i32, ptr %81, align 4, !tbaa !9
  %529 = icmp eq i32 %528, 1
  br i1 %529, label %530, label %580

530:                                              ; preds = %527
  %531 = load i32, ptr %82, align 4, !tbaa !9
  %532 = icmp ne i32 %531, 0
  br i1 %532, label %533, label %536

533:                                              ; preds = %530
  %534 = load ptr, ptr %24, align 8, !tbaa !5
  %535 = load i32, ptr %534, align 4, !tbaa !9
  store i32 %535, ptr %68, align 4, !tbaa !9
  br label %536

536:                                              ; preds = %533, %530
  %537 = load ptr, ptr %39, align 8, !tbaa !5
  %538 = load double, ptr %537, align 8, !tbaa !15
  store double %538, ptr %71, align 8, !tbaa !15
  %539 = load ptr, ptr %25, align 8, !tbaa !5
  %540 = load ptr, ptr %26, align 8, !tbaa !5
  %541 = load ptr, ptr %31, align 8, !tbaa !5
  %542 = load i32, ptr %50, align 4, !tbaa !9
  %543 = sext i32 %542 to i64
  %544 = getelementptr inbounds %struct.doublecomplex, ptr %541, i64 %543
  %545 = load ptr, ptr %32, align 8, !tbaa !5
  %546 = load ptr, ptr %41, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.doublecomplex, ptr %546, i64 1
  %548 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %539, ptr noundef %540, ptr noundef %544, ptr noundef %545, ptr noundef %547, ptr noundef %548)
  %549 = load ptr, ptr %25, align 8, !tbaa !5
  %550 = load ptr, ptr %26, align 8, !tbaa !5
  %551 = load ptr, ptr %37, align 8, !tbaa !5
  %552 = load i32, ptr %56, align 4, !tbaa !9
  %553 = sext i32 %552 to i64
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %551, i64 %553
  %555 = load ptr, ptr %38, align 8, !tbaa !5
  %556 = load ptr, ptr %41, align 8, !tbaa !5
  %557 = load ptr, ptr %25, align 8, !tbaa !5
  %558 = load i32, ptr %557, align 4, !tbaa !9
  %559 = load ptr, ptr %26, align 8, !tbaa !5
  %560 = load i32, ptr %559, align 4, !tbaa !9
  %561 = mul nsw i32 %558, %560
  %562 = add nsw i32 %561, 1
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds %struct.doublecomplex, ptr %556, i64 %563
  %565 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %549, ptr noundef %550, ptr noundef %554, ptr noundef %555, ptr noundef %564, ptr noundef %565)
  %566 = load ptr, ptr %25, align 8, !tbaa !5
  %567 = load ptr, ptr %26, align 8, !tbaa !5
  %568 = load ptr, ptr %31, align 8, !tbaa !5
  %569 = load i32, ptr %50, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds %struct.doublecomplex, ptr %568, i64 %570
  %572 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.3, ptr noundef %566, ptr noundef %567, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %571, ptr noundef %572)
  %573 = load ptr, ptr %25, align 8, !tbaa !5
  %574 = load ptr, ptr %26, align 8, !tbaa !5
  %575 = load ptr, ptr %37, align 8, !tbaa !5
  %576 = load i32, ptr %56, align 4, !tbaa !9
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds %struct.doublecomplex, ptr %575, i64 %577
  %579 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.3, ptr noundef %573, ptr noundef %574, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %578, ptr noundef %579)
  br label %617

580:                                              ; preds = %527, %524
  %581 = load i32, ptr %83, align 4, !tbaa !9
  %582 = icmp eq i32 %581, 2
  br i1 %582, label %583, label %616

583:                                              ; preds = %580
  %584 = load i32, ptr %81, align 4, !tbaa !9
  %585 = icmp eq i32 %584, 2
  br i1 %585, label %586, label %616

586:                                              ; preds = %583
  %587 = load ptr, ptr %25, align 8, !tbaa !5
  %588 = load ptr, ptr %26, align 8, !tbaa !5
  %589 = load ptr, ptr %41, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %589, i64 1
  %591 = load ptr, ptr %25, align 8, !tbaa !5
  %592 = load ptr, ptr %31, align 8, !tbaa !5
  %593 = load i32, ptr %50, align 4, !tbaa !9
  %594 = sext i32 %593 to i64
  %595 = getelementptr inbounds %struct.doublecomplex, ptr %592, i64 %594
  %596 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %587, ptr noundef %588, ptr noundef %590, ptr noundef %591, ptr noundef %595, ptr noundef %596)
  %597 = load ptr, ptr %25, align 8, !tbaa !5
  %598 = load ptr, ptr %26, align 8, !tbaa !5
  %599 = load ptr, ptr %41, align 8, !tbaa !5
  %600 = load ptr, ptr %25, align 8, !tbaa !5
  %601 = load i32, ptr %600, align 4, !tbaa !9
  %602 = load ptr, ptr %26, align 8, !tbaa !5
  %603 = load i32, ptr %602, align 4, !tbaa !9
  %604 = mul nsw i32 %601, %603
  %605 = add nsw i32 %604, 1
  %606 = sext i32 %605 to i64
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %599, i64 %606
  %608 = load ptr, ptr %25, align 8, !tbaa !5
  %609 = load ptr, ptr %37, align 8, !tbaa !5
  %610 = load i32, ptr %56, align 4, !tbaa !9
  %611 = sext i32 %610 to i64
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %609, i64 %611
  %613 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %597, ptr noundef %598, ptr noundef %607, ptr noundef %608, ptr noundef %612, ptr noundef %613)
  %614 = load double, ptr %71, align 8, !tbaa !15
  %615 = load ptr, ptr %39, align 8, !tbaa !5
  store double %614, ptr %615, align 8, !tbaa !15
  br label %616

616:                                              ; preds = %586, %583, %580
  br label %617

617:                                              ; preds = %616, %536
  br label %618

618:                                              ; preds = %617
  %619 = load i32, ptr %81, align 4, !tbaa !9
  %620 = add nsw i32 %619, 1
  store i32 %620, ptr %81, align 4, !tbaa !9
  br label %442, !llvm.loop !16

621:                                              ; preds = %442
  store i32 1, ptr %85, align 4
  br label %1676

622:                                              ; preds = %435, %430
  store i32 0, ptr %66, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %623

623:                                              ; preds = %645, %622
  %624 = load i32, ptr %63, align 4, !tbaa !9
  %625 = load ptr, ptr %25, align 8, !tbaa !5
  %626 = load i32, ptr %625, align 4, !tbaa !9
  %627 = icmp sgt i32 %624, %626
  br i1 %627, label %628, label %629

628:                                              ; preds = %623
  br label %646

629:                                              ; preds = %623
  %630 = load i32, ptr %66, align 4, !tbaa !9
  %631 = add nsw i32 %630, 1
  store i32 %631, ptr %66, align 4, !tbaa !9
  %632 = load i32, ptr %63, align 4, !tbaa !9
  %633 = load ptr, ptr %43, align 8, !tbaa !5
  %634 = load i32, ptr %66, align 4, !tbaa !9
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds i32, ptr %633, i64 %635
  store i32 %632, ptr %636, align 4, !tbaa !9
  %637 = load i32, ptr %74, align 4, !tbaa !9
  %638 = load i32, ptr %63, align 4, !tbaa !9
  %639 = add nsw i32 %638, %637
  store i32 %639, ptr %63, align 4, !tbaa !9
  %640 = load i32, ptr %63, align 4, !tbaa !9
  %641 = load ptr, ptr %25, align 8, !tbaa !5
  %642 = load i32, ptr %641, align 4, !tbaa !9
  %643 = icmp sge i32 %640, %642
  br i1 %643, label %644, label %645

644:                                              ; preds = %629
  br label %646

645:                                              ; preds = %629
  br label %623

646:                                              ; preds = %644, %628
  %647 = load ptr, ptr %25, align 8, !tbaa !5
  %648 = load i32, ptr %647, align 4, !tbaa !9
  %649 = add nsw i32 %648, 1
  %650 = load ptr, ptr %43, align 8, !tbaa !5
  %651 = load i32, ptr %66, align 4, !tbaa !9
  %652 = add nsw i32 %651, 1
  %653 = sext i32 %652 to i64
  %654 = getelementptr inbounds i32, ptr %650, i64 %653
  store i32 %649, ptr %654, align 4, !tbaa !9
  %655 = load ptr, ptr %43, align 8, !tbaa !5
  %656 = load i32, ptr %66, align 4, !tbaa !9
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds i32, ptr %655, i64 %657
  %659 = load i32, ptr %658, align 4, !tbaa !9
  %660 = load ptr, ptr %43, align 8, !tbaa !5
  %661 = load i32, ptr %66, align 4, !tbaa !9
  %662 = add nsw i32 %661, 1
  %663 = sext i32 %662 to i64
  %664 = getelementptr inbounds i32, ptr %660, i64 %663
  %665 = load i32, ptr %664, align 4, !tbaa !9
  %666 = icmp eq i32 %659, %665
  br i1 %666, label %667, label %670

667:                                              ; preds = %646
  %668 = load i32, ptr %66, align 4, !tbaa !9
  %669 = add nsw i32 %668, -1
  store i32 %669, ptr %66, align 4, !tbaa !9
  br label %670

670:                                              ; preds = %667, %646
  %671 = load i32, ptr %66, align 4, !tbaa !9
  %672 = add nsw i32 %671, 1
  store i32 %672, ptr %67, align 4, !tbaa !9
  store i32 1, ptr %64, align 4, !tbaa !9
  br label %673

673:                                              ; preds = %695, %670
  %674 = load i32, ptr %64, align 4, !tbaa !9
  %675 = load ptr, ptr %26, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = icmp sgt i32 %674, %676
  br i1 %677, label %678, label %679

678:                                              ; preds = %673
  br label %696

679:                                              ; preds = %673
  %680 = load i32, ptr %67, align 4, !tbaa !9
  %681 = add nsw i32 %680, 1
  store i32 %681, ptr %67, align 4, !tbaa !9
  %682 = load i32, ptr %64, align 4, !tbaa !9
  %683 = load ptr, ptr %43, align 8, !tbaa !5
  %684 = load i32, ptr %67, align 4, !tbaa !9
  %685 = sext i32 %684 to i64
  %686 = getelementptr inbounds i32, ptr %683, i64 %685
  store i32 %682, ptr %686, align 4, !tbaa !9
  %687 = load i32, ptr %75, align 4, !tbaa !9
  %688 = load i32, ptr %64, align 4, !tbaa !9
  %689 = add nsw i32 %688, %687
  store i32 %689, ptr %64, align 4, !tbaa !9
  %690 = load i32, ptr %64, align 4, !tbaa !9
  %691 = load ptr, ptr %26, align 8, !tbaa !5
  %692 = load i32, ptr %691, align 4, !tbaa !9
  %693 = icmp sge i32 %690, %692
  br i1 %693, label %694, label %695

694:                                              ; preds = %679
  br label %696

695:                                              ; preds = %679
  br label %673

696:                                              ; preds = %694, %678
  %697 = load ptr, ptr %26, align 8, !tbaa !5
  %698 = load i32, ptr %697, align 4, !tbaa !9
  %699 = add nsw i32 %698, 1
  %700 = load ptr, ptr %43, align 8, !tbaa !5
  %701 = load i32, ptr %67, align 4, !tbaa !9
  %702 = add nsw i32 %701, 1
  %703 = sext i32 %702 to i64
  %704 = getelementptr inbounds i32, ptr %700, i64 %703
  store i32 %699, ptr %704, align 4, !tbaa !9
  %705 = load ptr, ptr %43, align 8, !tbaa !5
  %706 = load i32, ptr %67, align 4, !tbaa !9
  %707 = sext i32 %706 to i64
  %708 = getelementptr inbounds i32, ptr %705, i64 %707
  %709 = load i32, ptr %708, align 4, !tbaa !9
  %710 = load ptr, ptr %43, align 8, !tbaa !5
  %711 = load i32, ptr %67, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  %713 = sext i32 %712 to i64
  %714 = getelementptr inbounds i32, ptr %710, i64 %713
  %715 = load i32, ptr %714, align 4, !tbaa !9
  %716 = icmp eq i32 %709, %715
  br i1 %716, label %717, label %720

717:                                              ; preds = %696
  %718 = load i32, ptr %67, align 4, !tbaa !9
  %719 = add nsw i32 %718, -1
  store i32 %719, ptr %67, align 4, !tbaa !9
  br label %720

720:                                              ; preds = %717, %696
  %721 = load i32, ptr %82, align 4, !tbaa !9
  %722 = icmp ne i32 %721, 0
  br i1 %722, label %723, label %1267

723:                                              ; preds = %720
  %724 = load i32, ptr %83, align 4, !tbaa !9
  store i32 %724, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %81, align 4, !tbaa !9
  br label %725

725:                                              ; preds = %1263, %723
  %726 = load i32, ptr %81, align 4, !tbaa !9
  %727 = load i32, ptr %57, align 4, !tbaa !9
  %728 = icmp sle i32 %726, %727
  br i1 %728, label %729, label %1266

729:                                              ; preds = %725
  store i32 0, ptr %79, align 4, !tbaa !9
  %730 = load ptr, ptr %39, align 8, !tbaa !5
  store double 1.000000e+00, ptr %730, align 8, !tbaa !15
  store double 0.000000e+00, ptr %76, align 8, !tbaa !15
  store double 1.000000e+00, ptr %62, align 8, !tbaa !15
  %731 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %731, ptr %58, align 4, !tbaa !9
  %732 = load i32, ptr %66, align 4, !tbaa !9
  %733 = add nsw i32 %732, 2
  store i32 %733, ptr %64, align 4, !tbaa !9
  br label %734

734:                                              ; preds = %1129, %729
  %735 = load i32, ptr %64, align 4, !tbaa !9
  %736 = load i32, ptr %58, align 4, !tbaa !9
  %737 = icmp sle i32 %735, %736
  br i1 %737, label %738, label %1132

738:                                              ; preds = %734
  %739 = load ptr, ptr %43, align 8, !tbaa !5
  %740 = load i32, ptr %64, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds i32, ptr %739, i64 %741
  %743 = load i32, ptr %742, align 4, !tbaa !9
  store i32 %743, ptr %78, align 4, !tbaa !9
  %744 = load ptr, ptr %43, align 8, !tbaa !5
  %745 = load i32, ptr %64, align 4, !tbaa !9
  %746 = add nsw i32 %745, 1
  %747 = sext i32 %746 to i64
  %748 = getelementptr inbounds i32, ptr %744, i64 %747
  %749 = load i32, ptr %748, align 4, !tbaa !9
  %750 = sub nsw i32 %749, 1
  store i32 %750, ptr %73, align 4, !tbaa !9
  %751 = load i32, ptr %73, align 4, !tbaa !9
  %752 = load i32, ptr %78, align 4, !tbaa !9
  %753 = sub nsw i32 %751, %752
  %754 = add nsw i32 %753, 1
  store i32 %754, ptr %75, align 4, !tbaa !9
  %755 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %755, ptr %63, align 4, !tbaa !9
  br label %756

756:                                              ; preds = %1125, %738
  %757 = load i32, ptr %63, align 4, !tbaa !9
  %758 = icmp sge i32 %757, 1
  br i1 %758, label %759, label %1128

759:                                              ; preds = %756
  %760 = load ptr, ptr %43, align 8, !tbaa !5
  %761 = load i32, ptr %63, align 4, !tbaa !9
  %762 = sext i32 %761 to i64
  %763 = getelementptr inbounds i32, ptr %760, i64 %762
  %764 = load i32, ptr %763, align 4, !tbaa !9
  store i32 %764, ptr %77, align 4, !tbaa !9
  %765 = load ptr, ptr %43, align 8, !tbaa !5
  %766 = load i32, ptr %63, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  %768 = sext i32 %767 to i64
  %769 = getelementptr inbounds i32, ptr %765, i64 %768
  %770 = load i32, ptr %769, align 4, !tbaa !9
  %771 = sub nsw i32 %770, 1
  store i32 %771, ptr %72, align 4, !tbaa !9
  %772 = load i32, ptr %72, align 4, !tbaa !9
  %773 = load i32, ptr %77, align 4, !tbaa !9
  %774 = sub nsw i32 %772, %773
  %775 = add nsw i32 %774, 1
  store i32 %775, ptr %74, align 4, !tbaa !9
  %776 = load ptr, ptr %23, align 8, !tbaa !5
  %777 = load ptr, ptr %27, align 8, !tbaa !5
  %778 = load i32, ptr %77, align 4, !tbaa !9
  %779 = load i32, ptr %77, align 4, !tbaa !9
  %780 = load i32, ptr %45, align 4, !tbaa !9
  %781 = mul nsw i32 %779, %780
  %782 = add nsw i32 %778, %781
  %783 = sext i32 %782 to i64
  %784 = getelementptr inbounds %struct.doublecomplex, ptr %777, i64 %783
  %785 = load ptr, ptr %28, align 8, !tbaa !5
  %786 = load ptr, ptr %29, align 8, !tbaa !5
  %787 = load i32, ptr %78, align 4, !tbaa !9
  %788 = load i32, ptr %78, align 4, !tbaa !9
  %789 = load i32, ptr %47, align 4, !tbaa !9
  %790 = mul nsw i32 %788, %789
  %791 = add nsw i32 %787, %790
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.doublecomplex, ptr %786, i64 %792
  %794 = load ptr, ptr %30, align 8, !tbaa !5
  %795 = load ptr, ptr %31, align 8, !tbaa !5
  %796 = load i32, ptr %77, align 4, !tbaa !9
  %797 = load i32, ptr %78, align 4, !tbaa !9
  %798 = load i32, ptr %49, align 4, !tbaa !9
  %799 = mul nsw i32 %797, %798
  %800 = add nsw i32 %796, %799
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %795, i64 %801
  %803 = load ptr, ptr %32, align 8, !tbaa !5
  %804 = load ptr, ptr %33, align 8, !tbaa !5
  %805 = load i32, ptr %77, align 4, !tbaa !9
  %806 = load i32, ptr %77, align 4, !tbaa !9
  %807 = load i32, ptr %51, align 4, !tbaa !9
  %808 = mul nsw i32 %806, %807
  %809 = add nsw i32 %805, %808
  %810 = sext i32 %809 to i64
  %811 = getelementptr inbounds %struct.doublecomplex, ptr %804, i64 %810
  %812 = load ptr, ptr %34, align 8, !tbaa !5
  %813 = load ptr, ptr %35, align 8, !tbaa !5
  %814 = load i32, ptr %78, align 4, !tbaa !9
  %815 = load i32, ptr %78, align 4, !tbaa !9
  %816 = load i32, ptr %53, align 4, !tbaa !9
  %817 = mul nsw i32 %815, %816
  %818 = add nsw i32 %814, %817
  %819 = sext i32 %818 to i64
  %820 = getelementptr inbounds %struct.doublecomplex, ptr %813, i64 %819
  %821 = load ptr, ptr %36, align 8, !tbaa !5
  %822 = load ptr, ptr %37, align 8, !tbaa !5
  %823 = load i32, ptr %77, align 4, !tbaa !9
  %824 = load i32, ptr %78, align 4, !tbaa !9
  %825 = load i32, ptr %55, align 4, !tbaa !9
  %826 = mul nsw i32 %824, %825
  %827 = add nsw i32 %823, %826
  %828 = sext i32 %827 to i64
  %829 = getelementptr inbounds %struct.doublecomplex, ptr %822, i64 %828
  %830 = load ptr, ptr %38, align 8, !tbaa !5
  call void @ztgsy2_(ptr noundef %776, ptr noundef %68, ptr noundef %74, ptr noundef %75, ptr noundef %784, ptr noundef %785, ptr noundef %793, ptr noundef %794, ptr noundef %802, ptr noundef %803, ptr noundef %811, ptr noundef %812, ptr noundef %820, ptr noundef %821, ptr noundef %829, ptr noundef %830, ptr noundef %80, ptr noundef %62, ptr noundef %76, ptr noundef %69)
  %831 = load i32, ptr %69, align 4, !tbaa !9
  %832 = icmp sgt i32 %831, 0
  br i1 %832, label %833, label %836

833:                                              ; preds = %759
  %834 = load i32, ptr %69, align 4, !tbaa !9
  %835 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 %834, ptr %835, align 4, !tbaa !9
  br label %836

836:                                              ; preds = %833, %759
  %837 = load i32, ptr %74, align 4, !tbaa !9
  %838 = load i32, ptr %75, align 4, !tbaa !9
  %839 = mul nsw i32 %837, %838
  %840 = load i32, ptr %79, align 4, !tbaa !9
  %841 = add nsw i32 %840, %839
  store i32 %841, ptr %79, align 4, !tbaa !9
  %842 = load double, ptr %80, align 8, !tbaa !15
  %843 = fcmp une double %842, 1.000000e+00
  br i1 %843, label %844, label %995

844:                                              ; preds = %836
  %845 = load i32, ptr %78, align 4, !tbaa !9
  %846 = sub nsw i32 %845, 1
  store i32 %846, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %847

847:                                              ; preds = %874, %844
  %848 = load i32, ptr %65, align 4, !tbaa !9
  %849 = load i32, ptr %59, align 4, !tbaa !9
  %850 = icmp sle i32 %848, %849
  br i1 %850, label %851, label %877

851:                                              ; preds = %847
  %852 = load double, ptr %80, align 8, !tbaa !15
  %853 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %852, ptr %853, align 8, !tbaa !11
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %854, align 8, !tbaa !14
  %855 = load ptr, ptr %25, align 8, !tbaa !5
  %856 = load ptr, ptr %31, align 8, !tbaa !5
  %857 = load i32, ptr %65, align 4, !tbaa !9
  %858 = load i32, ptr %49, align 4, !tbaa !9
  %859 = mul nsw i32 %857, %858
  %860 = add nsw i32 %859, 1
  %861 = sext i32 %860 to i64
  %862 = getelementptr inbounds %struct.doublecomplex, ptr %856, i64 %861
  call void @zscal_(ptr noundef %855, ptr noundef %61, ptr noundef %862, ptr noundef @c__1)
  %863 = load double, ptr %80, align 8, !tbaa !15
  %864 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %863, ptr %864, align 8, !tbaa !11
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %865, align 8, !tbaa !14
  %866 = load ptr, ptr %25, align 8, !tbaa !5
  %867 = load ptr, ptr %37, align 8, !tbaa !5
  %868 = load i32, ptr %65, align 4, !tbaa !9
  %869 = load i32, ptr %55, align 4, !tbaa !9
  %870 = mul nsw i32 %868, %869
  %871 = add nsw i32 %870, 1
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds %struct.doublecomplex, ptr %867, i64 %872
  call void @zscal_(ptr noundef %866, ptr noundef %61, ptr noundef %873, ptr noundef @c__1)
  br label %874

874:                                              ; preds = %851
  %875 = load i32, ptr %65, align 4, !tbaa !9
  %876 = add nsw i32 %875, 1
  store i32 %876, ptr %65, align 4, !tbaa !9
  br label %847, !llvm.loop !18

877:                                              ; preds = %847
  %878 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %878, ptr %59, align 4, !tbaa !9
  %879 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %879, ptr %65, align 4, !tbaa !9
  br label %880

880:                                              ; preds = %909, %877
  %881 = load i32, ptr %65, align 4, !tbaa !9
  %882 = load i32, ptr %59, align 4, !tbaa !9
  %883 = icmp sle i32 %881, %882
  br i1 %883, label %884, label %912

884:                                              ; preds = %880
  %885 = load i32, ptr %77, align 4, !tbaa !9
  %886 = sub nsw i32 %885, 1
  store i32 %886, ptr %60, align 4, !tbaa !9
  %887 = load double, ptr %80, align 8, !tbaa !15
  %888 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %887, ptr %888, align 8, !tbaa !11
  %889 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %889, align 8, !tbaa !14
  %890 = load ptr, ptr %31, align 8, !tbaa !5
  %891 = load i32, ptr %65, align 4, !tbaa !9
  %892 = load i32, ptr %49, align 4, !tbaa !9
  %893 = mul nsw i32 %891, %892
  %894 = add nsw i32 %893, 1
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %890, i64 %895
  call void @zscal_(ptr noundef %60, ptr noundef %61, ptr noundef %896, ptr noundef @c__1)
  %897 = load i32, ptr %77, align 4, !tbaa !9
  %898 = sub nsw i32 %897, 1
  store i32 %898, ptr %60, align 4, !tbaa !9
  %899 = load double, ptr %80, align 8, !tbaa !15
  %900 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %899, ptr %900, align 8, !tbaa !11
  %901 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %901, align 8, !tbaa !14
  %902 = load ptr, ptr %37, align 8, !tbaa !5
  %903 = load i32, ptr %65, align 4, !tbaa !9
  %904 = load i32, ptr %55, align 4, !tbaa !9
  %905 = mul nsw i32 %903, %904
  %906 = add nsw i32 %905, 1
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %902, i64 %907
  call void @zscal_(ptr noundef %60, ptr noundef %61, ptr noundef %908, ptr noundef @c__1)
  br label %909

909:                                              ; preds = %884
  %910 = load i32, ptr %65, align 4, !tbaa !9
  %911 = add nsw i32 %910, 1
  store i32 %911, ptr %65, align 4, !tbaa !9
  br label %880, !llvm.loop !19

912:                                              ; preds = %880
  %913 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %913, ptr %59, align 4, !tbaa !9
  %914 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %914, ptr %65, align 4, !tbaa !9
  br label %915

915:                                              ; preds = %952, %912
  %916 = load i32, ptr %65, align 4, !tbaa !9
  %917 = load i32, ptr %59, align 4, !tbaa !9
  %918 = icmp sle i32 %916, %917
  br i1 %918, label %919, label %955

919:                                              ; preds = %915
  %920 = load ptr, ptr %25, align 8, !tbaa !5
  %921 = load i32, ptr %920, align 4, !tbaa !9
  %922 = load i32, ptr %72, align 4, !tbaa !9
  %923 = sub nsw i32 %921, %922
  store i32 %923, ptr %60, align 4, !tbaa !9
  %924 = load double, ptr %80, align 8, !tbaa !15
  %925 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %924, ptr %925, align 8, !tbaa !11
  %926 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %926, align 8, !tbaa !14
  %927 = load ptr, ptr %31, align 8, !tbaa !5
  %928 = load i32, ptr %72, align 4, !tbaa !9
  %929 = add nsw i32 %928, 1
  %930 = load i32, ptr %65, align 4, !tbaa !9
  %931 = load i32, ptr %49, align 4, !tbaa !9
  %932 = mul nsw i32 %930, %931
  %933 = add nsw i32 %929, %932
  %934 = sext i32 %933 to i64
  %935 = getelementptr inbounds %struct.doublecomplex, ptr %927, i64 %934
  call void @zscal_(ptr noundef %60, ptr noundef %61, ptr noundef %935, ptr noundef @c__1)
  %936 = load ptr, ptr %25, align 8, !tbaa !5
  %937 = load i32, ptr %936, align 4, !tbaa !9
  %938 = load i32, ptr %72, align 4, !tbaa !9
  %939 = sub nsw i32 %937, %938
  store i32 %939, ptr %60, align 4, !tbaa !9
  %940 = load double, ptr %80, align 8, !tbaa !15
  %941 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %940, ptr %941, align 8, !tbaa !11
  %942 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %942, align 8, !tbaa !14
  %943 = load ptr, ptr %37, align 8, !tbaa !5
  %944 = load i32, ptr %72, align 4, !tbaa !9
  %945 = add nsw i32 %944, 1
  %946 = load i32, ptr %65, align 4, !tbaa !9
  %947 = load i32, ptr %55, align 4, !tbaa !9
  %948 = mul nsw i32 %946, %947
  %949 = add nsw i32 %945, %948
  %950 = sext i32 %949 to i64
  %951 = getelementptr inbounds %struct.doublecomplex, ptr %943, i64 %950
  call void @zscal_(ptr noundef %60, ptr noundef %61, ptr noundef %951, ptr noundef @c__1)
  br label %952

952:                                              ; preds = %919
  %953 = load i32, ptr %65, align 4, !tbaa !9
  %954 = add nsw i32 %953, 1
  store i32 %954, ptr %65, align 4, !tbaa !9
  br label %915, !llvm.loop !20

955:                                              ; preds = %915
  %956 = load ptr, ptr %26, align 8, !tbaa !5
  %957 = load i32, ptr %956, align 4, !tbaa !9
  store i32 %957, ptr %59, align 4, !tbaa !9
  %958 = load i32, ptr %73, align 4, !tbaa !9
  %959 = add nsw i32 %958, 1
  store i32 %959, ptr %65, align 4, !tbaa !9
  br label %960

960:                                              ; preds = %987, %955
  %961 = load i32, ptr %65, align 4, !tbaa !9
  %962 = load i32, ptr %59, align 4, !tbaa !9
  %963 = icmp sle i32 %961, %962
  br i1 %963, label %964, label %990

964:                                              ; preds = %960
  %965 = load double, ptr %80, align 8, !tbaa !15
  %966 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %965, ptr %966, align 8, !tbaa !11
  %967 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %967, align 8, !tbaa !14
  %968 = load ptr, ptr %25, align 8, !tbaa !5
  %969 = load ptr, ptr %31, align 8, !tbaa !5
  %970 = load i32, ptr %65, align 4, !tbaa !9
  %971 = load i32, ptr %49, align 4, !tbaa !9
  %972 = mul nsw i32 %970, %971
  %973 = add nsw i32 %972, 1
  %974 = sext i32 %973 to i64
  %975 = getelementptr inbounds %struct.doublecomplex, ptr %969, i64 %974
  call void @zscal_(ptr noundef %968, ptr noundef %61, ptr noundef %975, ptr noundef @c__1)
  %976 = load double, ptr %80, align 8, !tbaa !15
  %977 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %976, ptr %977, align 8, !tbaa !11
  %978 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %978, align 8, !tbaa !14
  %979 = load ptr, ptr %25, align 8, !tbaa !5
  %980 = load ptr, ptr %37, align 8, !tbaa !5
  %981 = load i32, ptr %65, align 4, !tbaa !9
  %982 = load i32, ptr %55, align 4, !tbaa !9
  %983 = mul nsw i32 %981, %982
  %984 = add nsw i32 %983, 1
  %985 = sext i32 %984 to i64
  %986 = getelementptr inbounds %struct.doublecomplex, ptr %980, i64 %985
  call void @zscal_(ptr noundef %979, ptr noundef %61, ptr noundef %986, ptr noundef @c__1)
  br label %987

987:                                              ; preds = %964
  %988 = load i32, ptr %65, align 4, !tbaa !9
  %989 = add nsw i32 %988, 1
  store i32 %989, ptr %65, align 4, !tbaa !9
  br label %960, !llvm.loop !21

990:                                              ; preds = %960
  %991 = load double, ptr %80, align 8, !tbaa !15
  %992 = load ptr, ptr %39, align 8, !tbaa !5
  %993 = load double, ptr %992, align 8, !tbaa !15
  %994 = fmul double %993, %991
  store double %994, ptr %992, align 8, !tbaa !15
  br label %995

995:                                              ; preds = %990, %836
  %996 = load i32, ptr %63, align 4, !tbaa !9
  %997 = icmp sgt i32 %996, 1
  br i1 %997, label %998, label %1053

998:                                              ; preds = %995
  %999 = load i32, ptr %77, align 4, !tbaa !9
  %1000 = sub nsw i32 %999, 1
  store i32 %1000, ptr %59, align 4, !tbaa !9
  %1001 = load ptr, ptr %27, align 8, !tbaa !5
  %1002 = load i32, ptr %77, align 4, !tbaa !9
  %1003 = load i32, ptr %45, align 4, !tbaa !9
  %1004 = mul nsw i32 %1002, %1003
  %1005 = add nsw i32 %1004, 1
  %1006 = sext i32 %1005 to i64
  %1007 = getelementptr inbounds %struct.doublecomplex, ptr %1001, i64 %1006
  %1008 = load ptr, ptr %28, align 8, !tbaa !5
  %1009 = load ptr, ptr %31, align 8, !tbaa !5
  %1010 = load i32, ptr %77, align 4, !tbaa !9
  %1011 = load i32, ptr %78, align 4, !tbaa !9
  %1012 = load i32, ptr %49, align 4, !tbaa !9
  %1013 = mul nsw i32 %1011, %1012
  %1014 = add nsw i32 %1010, %1013
  %1015 = sext i32 %1014 to i64
  %1016 = getelementptr inbounds %struct.doublecomplex, ptr %1009, i64 %1015
  %1017 = load ptr, ptr %32, align 8, !tbaa !5
  %1018 = load ptr, ptr %31, align 8, !tbaa !5
  %1019 = load i32, ptr %78, align 4, !tbaa !9
  %1020 = load i32, ptr %49, align 4, !tbaa !9
  %1021 = mul nsw i32 %1019, %1020
  %1022 = add nsw i32 %1021, 1
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds %struct.doublecomplex, ptr %1018, i64 %1023
  %1025 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str, ptr noundef @.str, ptr noundef %59, ptr noundef %75, ptr noundef %74, ptr noundef @c_b44, ptr noundef %1007, ptr noundef %1008, ptr noundef %1016, ptr noundef %1017, ptr noundef @c_b45, ptr noundef %1024, ptr noundef %1025)
  %1026 = load i32, ptr %77, align 4, !tbaa !9
  %1027 = sub nsw i32 %1026, 1
  store i32 %1027, ptr %59, align 4, !tbaa !9
  %1028 = load ptr, ptr %33, align 8, !tbaa !5
  %1029 = load i32, ptr %77, align 4, !tbaa !9
  %1030 = load i32, ptr %51, align 4, !tbaa !9
  %1031 = mul nsw i32 %1029, %1030
  %1032 = add nsw i32 %1031, 1
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds %struct.doublecomplex, ptr %1028, i64 %1033
  %1035 = load ptr, ptr %34, align 8, !tbaa !5
  %1036 = load ptr, ptr %31, align 8, !tbaa !5
  %1037 = load i32, ptr %77, align 4, !tbaa !9
  %1038 = load i32, ptr %78, align 4, !tbaa !9
  %1039 = load i32, ptr %49, align 4, !tbaa !9
  %1040 = mul nsw i32 %1038, %1039
  %1041 = add nsw i32 %1037, %1040
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds %struct.doublecomplex, ptr %1036, i64 %1042
  %1044 = load ptr, ptr %32, align 8, !tbaa !5
  %1045 = load ptr, ptr %37, align 8, !tbaa !5
  %1046 = load i32, ptr %78, align 4, !tbaa !9
  %1047 = load i32, ptr %55, align 4, !tbaa !9
  %1048 = mul nsw i32 %1046, %1047
  %1049 = add nsw i32 %1048, 1
  %1050 = sext i32 %1049 to i64
  %1051 = getelementptr inbounds %struct.doublecomplex, ptr %1045, i64 %1050
  %1052 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str, ptr noundef @.str, ptr noundef %59, ptr noundef %75, ptr noundef %74, ptr noundef @c_b44, ptr noundef %1034, ptr noundef %1035, ptr noundef %1043, ptr noundef %1044, ptr noundef @c_b45, ptr noundef %1051, ptr noundef %1052)
  br label %1053

1053:                                             ; preds = %998, %995
  %1054 = load i32, ptr %64, align 4, !tbaa !9
  %1055 = load i32, ptr %67, align 4, !tbaa !9
  %1056 = icmp slt i32 %1054, %1055
  br i1 %1056, label %1057, label %1124

1057:                                             ; preds = %1053
  %1058 = load ptr, ptr %26, align 8, !tbaa !5
  %1059 = load i32, ptr %1058, align 4, !tbaa !9
  %1060 = load i32, ptr %73, align 4, !tbaa !9
  %1061 = sub nsw i32 %1059, %1060
  store i32 %1061, ptr %59, align 4, !tbaa !9
  %1062 = load ptr, ptr %37, align 8, !tbaa !5
  %1063 = load i32, ptr %77, align 4, !tbaa !9
  %1064 = load i32, ptr %78, align 4, !tbaa !9
  %1065 = load i32, ptr %55, align 4, !tbaa !9
  %1066 = mul nsw i32 %1064, %1065
  %1067 = add nsw i32 %1063, %1066
  %1068 = sext i32 %1067 to i64
  %1069 = getelementptr inbounds %struct.doublecomplex, ptr %1062, i64 %1068
  %1070 = load ptr, ptr %38, align 8, !tbaa !5
  %1071 = load ptr, ptr %29, align 8, !tbaa !5
  %1072 = load i32, ptr %78, align 4, !tbaa !9
  %1073 = load i32, ptr %73, align 4, !tbaa !9
  %1074 = add nsw i32 %1073, 1
  %1075 = load i32, ptr %47, align 4, !tbaa !9
  %1076 = mul nsw i32 %1074, %1075
  %1077 = add nsw i32 %1072, %1076
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds %struct.doublecomplex, ptr %1071, i64 %1078
  %1080 = load ptr, ptr %30, align 8, !tbaa !5
  %1081 = load ptr, ptr %31, align 8, !tbaa !5
  %1082 = load i32, ptr %77, align 4, !tbaa !9
  %1083 = load i32, ptr %73, align 4, !tbaa !9
  %1084 = add nsw i32 %1083, 1
  %1085 = load i32, ptr %49, align 4, !tbaa !9
  %1086 = mul nsw i32 %1084, %1085
  %1087 = add nsw i32 %1082, %1086
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds %struct.doublecomplex, ptr %1081, i64 %1088
  %1090 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str, ptr noundef @.str, ptr noundef %74, ptr noundef %59, ptr noundef %75, ptr noundef @c_b45, ptr noundef %1069, ptr noundef %1070, ptr noundef %1079, ptr noundef %1080, ptr noundef @c_b45, ptr noundef %1089, ptr noundef %1090)
  %1091 = load ptr, ptr %26, align 8, !tbaa !5
  %1092 = load i32, ptr %1091, align 4, !tbaa !9
  %1093 = load i32, ptr %73, align 4, !tbaa !9
  %1094 = sub nsw i32 %1092, %1093
  store i32 %1094, ptr %59, align 4, !tbaa !9
  %1095 = load ptr, ptr %37, align 8, !tbaa !5
  %1096 = load i32, ptr %77, align 4, !tbaa !9
  %1097 = load i32, ptr %78, align 4, !tbaa !9
  %1098 = load i32, ptr %55, align 4, !tbaa !9
  %1099 = mul nsw i32 %1097, %1098
  %1100 = add nsw i32 %1096, %1099
  %1101 = sext i32 %1100 to i64
  %1102 = getelementptr inbounds %struct.doublecomplex, ptr %1095, i64 %1101
  %1103 = load ptr, ptr %38, align 8, !tbaa !5
  %1104 = load ptr, ptr %35, align 8, !tbaa !5
  %1105 = load i32, ptr %78, align 4, !tbaa !9
  %1106 = load i32, ptr %73, align 4, !tbaa !9
  %1107 = add nsw i32 %1106, 1
  %1108 = load i32, ptr %53, align 4, !tbaa !9
  %1109 = mul nsw i32 %1107, %1108
  %1110 = add nsw i32 %1105, %1109
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds %struct.doublecomplex, ptr %1104, i64 %1111
  %1113 = load ptr, ptr %36, align 8, !tbaa !5
  %1114 = load ptr, ptr %37, align 8, !tbaa !5
  %1115 = load i32, ptr %77, align 4, !tbaa !9
  %1116 = load i32, ptr %73, align 4, !tbaa !9
  %1117 = add nsw i32 %1116, 1
  %1118 = load i32, ptr %55, align 4, !tbaa !9
  %1119 = mul nsw i32 %1117, %1118
  %1120 = add nsw i32 %1115, %1119
  %1121 = sext i32 %1120 to i64
  %1122 = getelementptr inbounds %struct.doublecomplex, ptr %1114, i64 %1121
  %1123 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str, ptr noundef @.str, ptr noundef %74, ptr noundef %59, ptr noundef %75, ptr noundef @c_b45, ptr noundef %1102, ptr noundef %1103, ptr noundef %1112, ptr noundef %1113, ptr noundef @c_b45, ptr noundef %1122, ptr noundef %1123)
  br label %1124

1124:                                             ; preds = %1057, %1053
  br label %1125

1125:                                             ; preds = %1124
  %1126 = load i32, ptr %63, align 4, !tbaa !9
  %1127 = add nsw i32 %1126, -1
  store i32 %1127, ptr %63, align 4, !tbaa !9
  br label %756, !llvm.loop !22

1128:                                             ; preds = %756
  br label %1129

1129:                                             ; preds = %1128
  %1130 = load i32, ptr %64, align 4, !tbaa !9
  %1131 = add nsw i32 %1130, 1
  store i32 %1131, ptr %64, align 4, !tbaa !9
  br label %734, !llvm.loop !23

1132:                                             ; preds = %734
  %1133 = load double, ptr %76, align 8, !tbaa !15
  %1134 = fcmp une double %1133, 0.000000e+00
  br i1 %1134, label %1135, label %1169

1135:                                             ; preds = %1132
  %1136 = load ptr, ptr %24, align 8, !tbaa !5
  %1137 = load i32, ptr %1136, align 4, !tbaa !9
  %1138 = icmp eq i32 %1137, 1
  br i1 %1138, label %1143, label %1139

1139:                                             ; preds = %1135
  %1140 = load ptr, ptr %24, align 8, !tbaa !5
  %1141 = load i32, ptr %1140, align 4, !tbaa !9
  %1142 = icmp eq i32 %1141, 3
  br i1 %1142, label %1143, label %1158

1143:                                             ; preds = %1139, %1135
  %1144 = load ptr, ptr %25, align 8, !tbaa !5
  %1145 = load i32, ptr %1144, align 4, !tbaa !9
  %1146 = shl i32 %1145, 1
  %1147 = load ptr, ptr %26, align 8, !tbaa !5
  %1148 = load i32, ptr %1147, align 4, !tbaa !9
  %1149 = mul nsw i32 %1146, %1148
  %1150 = sitofp i32 %1149 to double
  %1151 = call double @sqrt(double noundef %1150) #4
  %1152 = load double, ptr %76, align 8, !tbaa !15
  %1153 = load double, ptr %62, align 8, !tbaa !15
  %1154 = call double @sqrt(double noundef %1153) #4
  %1155 = fmul double %1152, %1154
  %1156 = fdiv double %1151, %1155
  %1157 = load ptr, ptr %40, align 8, !tbaa !5
  store double %1156, ptr %1157, align 8, !tbaa !15
  br label %1168

1158:                                             ; preds = %1139
  %1159 = load i32, ptr %79, align 4, !tbaa !9
  %1160 = sitofp i32 %1159 to double
  %1161 = call double @sqrt(double noundef %1160) #4
  %1162 = load double, ptr %76, align 8, !tbaa !15
  %1163 = load double, ptr %62, align 8, !tbaa !15
  %1164 = call double @sqrt(double noundef %1163) #4
  %1165 = fmul double %1162, %1164
  %1166 = fdiv double %1161, %1165
  %1167 = load ptr, ptr %40, align 8, !tbaa !5
  store double %1166, ptr %1167, align 8, !tbaa !15
  br label %1168

1168:                                             ; preds = %1158, %1143
  br label %1169

1169:                                             ; preds = %1168, %1132
  %1170 = load i32, ptr %83, align 4, !tbaa !9
  %1171 = icmp eq i32 %1170, 2
  br i1 %1171, label %1172, label %1225

1172:                                             ; preds = %1169
  %1173 = load i32, ptr %81, align 4, !tbaa !9
  %1174 = icmp eq i32 %1173, 1
  br i1 %1174, label %1175, label %1225

1175:                                             ; preds = %1172
  %1176 = load i32, ptr %82, align 4, !tbaa !9
  %1177 = icmp ne i32 %1176, 0
  br i1 %1177, label %1178, label %1181

1178:                                             ; preds = %1175
  %1179 = load ptr, ptr %24, align 8, !tbaa !5
  %1180 = load i32, ptr %1179, align 4, !tbaa !9
  store i32 %1180, ptr %68, align 4, !tbaa !9
  br label %1181

1181:                                             ; preds = %1178, %1175
  %1182 = load ptr, ptr %39, align 8, !tbaa !5
  %1183 = load double, ptr %1182, align 8, !tbaa !15
  store double %1183, ptr %71, align 8, !tbaa !15
  %1184 = load ptr, ptr %25, align 8, !tbaa !5
  %1185 = load ptr, ptr %26, align 8, !tbaa !5
  %1186 = load ptr, ptr %31, align 8, !tbaa !5
  %1187 = load i32, ptr %50, align 4, !tbaa !9
  %1188 = sext i32 %1187 to i64
  %1189 = getelementptr inbounds %struct.doublecomplex, ptr %1186, i64 %1188
  %1190 = load ptr, ptr %32, align 8, !tbaa !5
  %1191 = load ptr, ptr %41, align 8, !tbaa !5
  %1192 = getelementptr inbounds %struct.doublecomplex, ptr %1191, i64 1
  %1193 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %1184, ptr noundef %1185, ptr noundef %1189, ptr noundef %1190, ptr noundef %1192, ptr noundef %1193)
  %1194 = load ptr, ptr %25, align 8, !tbaa !5
  %1195 = load ptr, ptr %26, align 8, !tbaa !5
  %1196 = load ptr, ptr %37, align 8, !tbaa !5
  %1197 = load i32, ptr %56, align 4, !tbaa !9
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.doublecomplex, ptr %1196, i64 %1198
  %1200 = load ptr, ptr %38, align 8, !tbaa !5
  %1201 = load ptr, ptr %41, align 8, !tbaa !5
  %1202 = load ptr, ptr %25, align 8, !tbaa !5
  %1203 = load i32, ptr %1202, align 4, !tbaa !9
  %1204 = load ptr, ptr %26, align 8, !tbaa !5
  %1205 = load i32, ptr %1204, align 4, !tbaa !9
  %1206 = mul nsw i32 %1203, %1205
  %1207 = add nsw i32 %1206, 1
  %1208 = sext i32 %1207 to i64
  %1209 = getelementptr inbounds %struct.doublecomplex, ptr %1201, i64 %1208
  %1210 = load ptr, ptr %25, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %1194, ptr noundef %1195, ptr noundef %1199, ptr noundef %1200, ptr noundef %1209, ptr noundef %1210)
  %1211 = load ptr, ptr %25, align 8, !tbaa !5
  %1212 = load ptr, ptr %26, align 8, !tbaa !5
  %1213 = load ptr, ptr %31, align 8, !tbaa !5
  %1214 = load i32, ptr %50, align 4, !tbaa !9
  %1215 = sext i32 %1214 to i64
  %1216 = getelementptr inbounds %struct.doublecomplex, ptr %1213, i64 %1215
  %1217 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.3, ptr noundef %1211, ptr noundef %1212, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1216, ptr noundef %1217)
  %1218 = load ptr, ptr %25, align 8, !tbaa !5
  %1219 = load ptr, ptr %26, align 8, !tbaa !5
  %1220 = load ptr, ptr %37, align 8, !tbaa !5
  %1221 = load i32, ptr %56, align 4, !tbaa !9
  %1222 = sext i32 %1221 to i64
  %1223 = getelementptr inbounds %struct.doublecomplex, ptr %1220, i64 %1222
  %1224 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zlaset_(ptr noundef @.str.3, ptr noundef %1218, ptr noundef %1219, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1223, ptr noundef %1224)
  br label %1262

1225:                                             ; preds = %1172, %1169
  %1226 = load i32, ptr %83, align 4, !tbaa !9
  %1227 = icmp eq i32 %1226, 2
  br i1 %1227, label %1228, label %1261

1228:                                             ; preds = %1225
  %1229 = load i32, ptr %81, align 4, !tbaa !9
  %1230 = icmp eq i32 %1229, 2
  br i1 %1230, label %1231, label %1261

1231:                                             ; preds = %1228
  %1232 = load ptr, ptr %25, align 8, !tbaa !5
  %1233 = load ptr, ptr %26, align 8, !tbaa !5
  %1234 = load ptr, ptr %41, align 8, !tbaa !5
  %1235 = getelementptr inbounds %struct.doublecomplex, ptr %1234, i64 1
  %1236 = load ptr, ptr %25, align 8, !tbaa !5
  %1237 = load ptr, ptr %31, align 8, !tbaa !5
  %1238 = load i32, ptr %50, align 4, !tbaa !9
  %1239 = sext i32 %1238 to i64
  %1240 = getelementptr inbounds %struct.doublecomplex, ptr %1237, i64 %1239
  %1241 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %1232, ptr noundef %1233, ptr noundef %1235, ptr noundef %1236, ptr noundef %1240, ptr noundef %1241)
  %1242 = load ptr, ptr %25, align 8, !tbaa !5
  %1243 = load ptr, ptr %26, align 8, !tbaa !5
  %1244 = load ptr, ptr %41, align 8, !tbaa !5
  %1245 = load ptr, ptr %25, align 8, !tbaa !5
  %1246 = load i32, ptr %1245, align 4, !tbaa !9
  %1247 = load ptr, ptr %26, align 8, !tbaa !5
  %1248 = load i32, ptr %1247, align 4, !tbaa !9
  %1249 = mul nsw i32 %1246, %1248
  %1250 = add nsw i32 %1249, 1
  %1251 = sext i32 %1250 to i64
  %1252 = getelementptr inbounds %struct.doublecomplex, ptr %1244, i64 %1251
  %1253 = load ptr, ptr %25, align 8, !tbaa !5
  %1254 = load ptr, ptr %37, align 8, !tbaa !5
  %1255 = load i32, ptr %56, align 4, !tbaa !9
  %1256 = sext i32 %1255 to i64
  %1257 = getelementptr inbounds %struct.doublecomplex, ptr %1254, i64 %1256
  %1258 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zlacpy_(ptr noundef @.str.3, ptr noundef %1242, ptr noundef %1243, ptr noundef %1252, ptr noundef %1253, ptr noundef %1257, ptr noundef %1258)
  %1259 = load double, ptr %71, align 8, !tbaa !15
  %1260 = load ptr, ptr %39, align 8, !tbaa !5
  store double %1259, ptr %1260, align 8, !tbaa !15
  br label %1261

1261:                                             ; preds = %1231, %1228, %1225
  br label %1262

1262:                                             ; preds = %1261, %1181
  br label %1263

1263:                                             ; preds = %1262
  %1264 = load i32, ptr %81, align 4, !tbaa !9
  %1265 = add nsw i32 %1264, 1
  store i32 %1265, ptr %81, align 4, !tbaa !9
  br label %725, !llvm.loop !24

1266:                                             ; preds = %725
  br label %1667

1267:                                             ; preds = %720
  %1268 = load ptr, ptr %39, align 8, !tbaa !5
  store double 1.000000e+00, ptr %1268, align 8, !tbaa !15
  %1269 = load i32, ptr %66, align 4, !tbaa !9
  store i32 %1269, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %63, align 4, !tbaa !9
  br label %1270

1270:                                             ; preds = %1663, %1267
  %1271 = load i32, ptr %63, align 4, !tbaa !9
  %1272 = load i32, ptr %57, align 4, !tbaa !9
  %1273 = icmp sle i32 %1271, %1272
  br i1 %1273, label %1274, label %1666

1274:                                             ; preds = %1270
  %1275 = load ptr, ptr %43, align 8, !tbaa !5
  %1276 = load i32, ptr %63, align 4, !tbaa !9
  %1277 = sext i32 %1276 to i64
  %1278 = getelementptr inbounds i32, ptr %1275, i64 %1277
  %1279 = load i32, ptr %1278, align 4, !tbaa !9
  store i32 %1279, ptr %77, align 4, !tbaa !9
  %1280 = load ptr, ptr %43, align 8, !tbaa !5
  %1281 = load i32, ptr %63, align 4, !tbaa !9
  %1282 = add nsw i32 %1281, 1
  %1283 = sext i32 %1282 to i64
  %1284 = getelementptr inbounds i32, ptr %1280, i64 %1283
  %1285 = load i32, ptr %1284, align 4, !tbaa !9
  %1286 = sub nsw i32 %1285, 1
  store i32 %1286, ptr %72, align 4, !tbaa !9
  %1287 = load i32, ptr %72, align 4, !tbaa !9
  %1288 = load i32, ptr %77, align 4, !tbaa !9
  %1289 = sub nsw i32 %1287, %1288
  %1290 = add nsw i32 %1289, 1
  store i32 %1290, ptr %74, align 4, !tbaa !9
  %1291 = load i32, ptr %66, align 4, !tbaa !9
  %1292 = add nsw i32 %1291, 2
  store i32 %1292, ptr %58, align 4, !tbaa !9
  %1293 = load i32, ptr %67, align 4, !tbaa !9
  store i32 %1293, ptr %64, align 4, !tbaa !9
  br label %1294

1294:                                             ; preds = %1659, %1274
  %1295 = load i32, ptr %64, align 4, !tbaa !9
  %1296 = load i32, ptr %58, align 4, !tbaa !9
  %1297 = icmp sge i32 %1295, %1296
  br i1 %1297, label %1298, label %1662

1298:                                             ; preds = %1294
  %1299 = load ptr, ptr %43, align 8, !tbaa !5
  %1300 = load i32, ptr %64, align 4, !tbaa !9
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds i32, ptr %1299, i64 %1301
  %1303 = load i32, ptr %1302, align 4, !tbaa !9
  store i32 %1303, ptr %78, align 4, !tbaa !9
  %1304 = load ptr, ptr %43, align 8, !tbaa !5
  %1305 = load i32, ptr %64, align 4, !tbaa !9
  %1306 = add nsw i32 %1305, 1
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds i32, ptr %1304, i64 %1307
  %1309 = load i32, ptr %1308, align 4, !tbaa !9
  %1310 = sub nsw i32 %1309, 1
  store i32 %1310, ptr %73, align 4, !tbaa !9
  %1311 = load i32, ptr %73, align 4, !tbaa !9
  %1312 = load i32, ptr %78, align 4, !tbaa !9
  %1313 = sub nsw i32 %1311, %1312
  %1314 = add nsw i32 %1313, 1
  store i32 %1314, ptr %75, align 4, !tbaa !9
  %1315 = load ptr, ptr %23, align 8, !tbaa !5
  %1316 = load ptr, ptr %27, align 8, !tbaa !5
  %1317 = load i32, ptr %77, align 4, !tbaa !9
  %1318 = load i32, ptr %77, align 4, !tbaa !9
  %1319 = load i32, ptr %45, align 4, !tbaa !9
  %1320 = mul nsw i32 %1318, %1319
  %1321 = add nsw i32 %1317, %1320
  %1322 = sext i32 %1321 to i64
  %1323 = getelementptr inbounds %struct.doublecomplex, ptr %1316, i64 %1322
  %1324 = load ptr, ptr %28, align 8, !tbaa !5
  %1325 = load ptr, ptr %29, align 8, !tbaa !5
  %1326 = load i32, ptr %78, align 4, !tbaa !9
  %1327 = load i32, ptr %78, align 4, !tbaa !9
  %1328 = load i32, ptr %47, align 4, !tbaa !9
  %1329 = mul nsw i32 %1327, %1328
  %1330 = add nsw i32 %1326, %1329
  %1331 = sext i32 %1330 to i64
  %1332 = getelementptr inbounds %struct.doublecomplex, ptr %1325, i64 %1331
  %1333 = load ptr, ptr %30, align 8, !tbaa !5
  %1334 = load ptr, ptr %31, align 8, !tbaa !5
  %1335 = load i32, ptr %77, align 4, !tbaa !9
  %1336 = load i32, ptr %78, align 4, !tbaa !9
  %1337 = load i32, ptr %49, align 4, !tbaa !9
  %1338 = mul nsw i32 %1336, %1337
  %1339 = add nsw i32 %1335, %1338
  %1340 = sext i32 %1339 to i64
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %1334, i64 %1340
  %1342 = load ptr, ptr %32, align 8, !tbaa !5
  %1343 = load ptr, ptr %33, align 8, !tbaa !5
  %1344 = load i32, ptr %77, align 4, !tbaa !9
  %1345 = load i32, ptr %77, align 4, !tbaa !9
  %1346 = load i32, ptr %51, align 4, !tbaa !9
  %1347 = mul nsw i32 %1345, %1346
  %1348 = add nsw i32 %1344, %1347
  %1349 = sext i32 %1348 to i64
  %1350 = getelementptr inbounds %struct.doublecomplex, ptr %1343, i64 %1349
  %1351 = load ptr, ptr %34, align 8, !tbaa !5
  %1352 = load ptr, ptr %35, align 8, !tbaa !5
  %1353 = load i32, ptr %78, align 4, !tbaa !9
  %1354 = load i32, ptr %78, align 4, !tbaa !9
  %1355 = load i32, ptr %53, align 4, !tbaa !9
  %1356 = mul nsw i32 %1354, %1355
  %1357 = add nsw i32 %1353, %1356
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds %struct.doublecomplex, ptr %1352, i64 %1358
  %1360 = load ptr, ptr %36, align 8, !tbaa !5
  %1361 = load ptr, ptr %37, align 8, !tbaa !5
  %1362 = load i32, ptr %77, align 4, !tbaa !9
  %1363 = load i32, ptr %78, align 4, !tbaa !9
  %1364 = load i32, ptr %55, align 4, !tbaa !9
  %1365 = mul nsw i32 %1363, %1364
  %1366 = add nsw i32 %1362, %1365
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds %struct.doublecomplex, ptr %1361, i64 %1367
  %1369 = load ptr, ptr %38, align 8, !tbaa !5
  call void @ztgsy2_(ptr noundef %1315, ptr noundef %68, ptr noundef %74, ptr noundef %75, ptr noundef %1323, ptr noundef %1324, ptr noundef %1332, ptr noundef %1333, ptr noundef %1341, ptr noundef %1342, ptr noundef %1350, ptr noundef %1351, ptr noundef %1359, ptr noundef %1360, ptr noundef %1368, ptr noundef %1369, ptr noundef %80, ptr noundef %62, ptr noundef %76, ptr noundef %69)
  %1370 = load i32, ptr %69, align 4, !tbaa !9
  %1371 = icmp sgt i32 %1370, 0
  br i1 %1371, label %1372, label %1375

1372:                                             ; preds = %1298
  %1373 = load i32, ptr %69, align 4, !tbaa !9
  %1374 = load ptr, ptr %44, align 8, !tbaa !5
  store i32 %1373, ptr %1374, align 4, !tbaa !9
  br label %1375

1375:                                             ; preds = %1372, %1298
  %1376 = load double, ptr %80, align 8, !tbaa !15
  %1377 = fcmp une double %1376, 1.000000e+00
  br i1 %1377, label %1378, label %1529

1378:                                             ; preds = %1375
  %1379 = load i32, ptr %78, align 4, !tbaa !9
  %1380 = sub nsw i32 %1379, 1
  store i32 %1380, ptr %59, align 4, !tbaa !9
  store i32 1, ptr %65, align 4, !tbaa !9
  br label %1381

1381:                                             ; preds = %1408, %1378
  %1382 = load i32, ptr %65, align 4, !tbaa !9
  %1383 = load i32, ptr %59, align 4, !tbaa !9
  %1384 = icmp sle i32 %1382, %1383
  br i1 %1384, label %1385, label %1411

1385:                                             ; preds = %1381
  %1386 = load double, ptr %80, align 8, !tbaa !15
  %1387 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1386, ptr %1387, align 8, !tbaa !11
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1388, align 8, !tbaa !14
  %1389 = load ptr, ptr %25, align 8, !tbaa !5
  %1390 = load ptr, ptr %31, align 8, !tbaa !5
  %1391 = load i32, ptr %65, align 4, !tbaa !9
  %1392 = load i32, ptr %49, align 4, !tbaa !9
  %1393 = mul nsw i32 %1391, %1392
  %1394 = add nsw i32 %1393, 1
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds %struct.doublecomplex, ptr %1390, i64 %1395
  call void @zscal_(ptr noundef %1389, ptr noundef %61, ptr noundef %1396, ptr noundef @c__1)
  %1397 = load double, ptr %80, align 8, !tbaa !15
  %1398 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1397, ptr %1398, align 8, !tbaa !11
  %1399 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1399, align 8, !tbaa !14
  %1400 = load ptr, ptr %25, align 8, !tbaa !5
  %1401 = load ptr, ptr %37, align 8, !tbaa !5
  %1402 = load i32, ptr %65, align 4, !tbaa !9
  %1403 = load i32, ptr %55, align 4, !tbaa !9
  %1404 = mul nsw i32 %1402, %1403
  %1405 = add nsw i32 %1404, 1
  %1406 = sext i32 %1405 to i64
  %1407 = getelementptr inbounds %struct.doublecomplex, ptr %1401, i64 %1406
  call void @zscal_(ptr noundef %1400, ptr noundef %61, ptr noundef %1407, ptr noundef @c__1)
  br label %1408

1408:                                             ; preds = %1385
  %1409 = load i32, ptr %65, align 4, !tbaa !9
  %1410 = add nsw i32 %1409, 1
  store i32 %1410, ptr %65, align 4, !tbaa !9
  br label %1381, !llvm.loop !25

1411:                                             ; preds = %1381
  %1412 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1412, ptr %59, align 4, !tbaa !9
  %1413 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %1413, ptr %65, align 4, !tbaa !9
  br label %1414

1414:                                             ; preds = %1443, %1411
  %1415 = load i32, ptr %65, align 4, !tbaa !9
  %1416 = load i32, ptr %59, align 4, !tbaa !9
  %1417 = icmp sle i32 %1415, %1416
  br i1 %1417, label %1418, label %1446

1418:                                             ; preds = %1414
  %1419 = load i32, ptr %77, align 4, !tbaa !9
  %1420 = sub nsw i32 %1419, 1
  store i32 %1420, ptr %60, align 4, !tbaa !9
  %1421 = load double, ptr %80, align 8, !tbaa !15
  %1422 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1421, ptr %1422, align 8, !tbaa !11
  %1423 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1423, align 8, !tbaa !14
  %1424 = load ptr, ptr %31, align 8, !tbaa !5
  %1425 = load i32, ptr %65, align 4, !tbaa !9
  %1426 = load i32, ptr %49, align 4, !tbaa !9
  %1427 = mul nsw i32 %1425, %1426
  %1428 = add nsw i32 %1427, 1
  %1429 = sext i32 %1428 to i64
  %1430 = getelementptr inbounds %struct.doublecomplex, ptr %1424, i64 %1429
  call void @zscal_(ptr noundef %60, ptr noundef %61, ptr noundef %1430, ptr noundef @c__1)
  %1431 = load i32, ptr %77, align 4, !tbaa !9
  %1432 = sub nsw i32 %1431, 1
  store i32 %1432, ptr %60, align 4, !tbaa !9
  %1433 = load double, ptr %80, align 8, !tbaa !15
  %1434 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1433, ptr %1434, align 8, !tbaa !11
  %1435 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1435, align 8, !tbaa !14
  %1436 = load ptr, ptr %37, align 8, !tbaa !5
  %1437 = load i32, ptr %65, align 4, !tbaa !9
  %1438 = load i32, ptr %55, align 4, !tbaa !9
  %1439 = mul nsw i32 %1437, %1438
  %1440 = add nsw i32 %1439, 1
  %1441 = sext i32 %1440 to i64
  %1442 = getelementptr inbounds %struct.doublecomplex, ptr %1436, i64 %1441
  call void @zscal_(ptr noundef %60, ptr noundef %61, ptr noundef %1442, ptr noundef @c__1)
  br label %1443

1443:                                             ; preds = %1418
  %1444 = load i32, ptr %65, align 4, !tbaa !9
  %1445 = add nsw i32 %1444, 1
  store i32 %1445, ptr %65, align 4, !tbaa !9
  br label %1414, !llvm.loop !26

1446:                                             ; preds = %1414
  %1447 = load i32, ptr %73, align 4, !tbaa !9
  store i32 %1447, ptr %59, align 4, !tbaa !9
  %1448 = load i32, ptr %78, align 4, !tbaa !9
  store i32 %1448, ptr %65, align 4, !tbaa !9
  br label %1449

1449:                                             ; preds = %1486, %1446
  %1450 = load i32, ptr %65, align 4, !tbaa !9
  %1451 = load i32, ptr %59, align 4, !tbaa !9
  %1452 = icmp sle i32 %1450, %1451
  br i1 %1452, label %1453, label %1489

1453:                                             ; preds = %1449
  %1454 = load ptr, ptr %25, align 8, !tbaa !5
  %1455 = load i32, ptr %1454, align 4, !tbaa !9
  %1456 = load i32, ptr %72, align 4, !tbaa !9
  %1457 = sub nsw i32 %1455, %1456
  store i32 %1457, ptr %60, align 4, !tbaa !9
  %1458 = load double, ptr %80, align 8, !tbaa !15
  %1459 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1458, ptr %1459, align 8, !tbaa !11
  %1460 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1460, align 8, !tbaa !14
  %1461 = load ptr, ptr %31, align 8, !tbaa !5
  %1462 = load i32, ptr %72, align 4, !tbaa !9
  %1463 = add nsw i32 %1462, 1
  %1464 = load i32, ptr %65, align 4, !tbaa !9
  %1465 = load i32, ptr %49, align 4, !tbaa !9
  %1466 = mul nsw i32 %1464, %1465
  %1467 = add nsw i32 %1463, %1466
  %1468 = sext i32 %1467 to i64
  %1469 = getelementptr inbounds %struct.doublecomplex, ptr %1461, i64 %1468
  call void @zscal_(ptr noundef %60, ptr noundef %61, ptr noundef %1469, ptr noundef @c__1)
  %1470 = load ptr, ptr %25, align 8, !tbaa !5
  %1471 = load i32, ptr %1470, align 4, !tbaa !9
  %1472 = load i32, ptr %72, align 4, !tbaa !9
  %1473 = sub nsw i32 %1471, %1472
  store i32 %1473, ptr %60, align 4, !tbaa !9
  %1474 = load double, ptr %80, align 8, !tbaa !15
  %1475 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1474, ptr %1475, align 8, !tbaa !11
  %1476 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1476, align 8, !tbaa !14
  %1477 = load ptr, ptr %37, align 8, !tbaa !5
  %1478 = load i32, ptr %72, align 4, !tbaa !9
  %1479 = add nsw i32 %1478, 1
  %1480 = load i32, ptr %65, align 4, !tbaa !9
  %1481 = load i32, ptr %55, align 4, !tbaa !9
  %1482 = mul nsw i32 %1480, %1481
  %1483 = add nsw i32 %1479, %1482
  %1484 = sext i32 %1483 to i64
  %1485 = getelementptr inbounds %struct.doublecomplex, ptr %1477, i64 %1484
  call void @zscal_(ptr noundef %60, ptr noundef %61, ptr noundef %1485, ptr noundef @c__1)
  br label %1486

1486:                                             ; preds = %1453
  %1487 = load i32, ptr %65, align 4, !tbaa !9
  %1488 = add nsw i32 %1487, 1
  store i32 %1488, ptr %65, align 4, !tbaa !9
  br label %1449, !llvm.loop !27

1489:                                             ; preds = %1449
  %1490 = load ptr, ptr %26, align 8, !tbaa !5
  %1491 = load i32, ptr %1490, align 4, !tbaa !9
  store i32 %1491, ptr %59, align 4, !tbaa !9
  %1492 = load i32, ptr %73, align 4, !tbaa !9
  %1493 = add nsw i32 %1492, 1
  store i32 %1493, ptr %65, align 4, !tbaa !9
  br label %1494

1494:                                             ; preds = %1521, %1489
  %1495 = load i32, ptr %65, align 4, !tbaa !9
  %1496 = load i32, ptr %59, align 4, !tbaa !9
  %1497 = icmp sle i32 %1495, %1496
  br i1 %1497, label %1498, label %1524

1498:                                             ; preds = %1494
  %1499 = load double, ptr %80, align 8, !tbaa !15
  %1500 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1499, ptr %1500, align 8, !tbaa !11
  %1501 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1501, align 8, !tbaa !14
  %1502 = load ptr, ptr %25, align 8, !tbaa !5
  %1503 = load ptr, ptr %31, align 8, !tbaa !5
  %1504 = load i32, ptr %65, align 4, !tbaa !9
  %1505 = load i32, ptr %49, align 4, !tbaa !9
  %1506 = mul nsw i32 %1504, %1505
  %1507 = add nsw i32 %1506, 1
  %1508 = sext i32 %1507 to i64
  %1509 = getelementptr inbounds %struct.doublecomplex, ptr %1503, i64 %1508
  call void @zscal_(ptr noundef %1502, ptr noundef %61, ptr noundef %1509, ptr noundef @c__1)
  %1510 = load double, ptr %80, align 8, !tbaa !15
  %1511 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1510, ptr %1511, align 8, !tbaa !11
  %1512 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double 0.000000e+00, ptr %1512, align 8, !tbaa !14
  %1513 = load ptr, ptr %25, align 8, !tbaa !5
  %1514 = load ptr, ptr %37, align 8, !tbaa !5
  %1515 = load i32, ptr %65, align 4, !tbaa !9
  %1516 = load i32, ptr %55, align 4, !tbaa !9
  %1517 = mul nsw i32 %1515, %1516
  %1518 = add nsw i32 %1517, 1
  %1519 = sext i32 %1518 to i64
  %1520 = getelementptr inbounds %struct.doublecomplex, ptr %1514, i64 %1519
  call void @zscal_(ptr noundef %1513, ptr noundef %61, ptr noundef %1520, ptr noundef @c__1)
  br label %1521

1521:                                             ; preds = %1498
  %1522 = load i32, ptr %65, align 4, !tbaa !9
  %1523 = add nsw i32 %1522, 1
  store i32 %1523, ptr %65, align 4, !tbaa !9
  br label %1494, !llvm.loop !28

1524:                                             ; preds = %1494
  %1525 = load double, ptr %80, align 8, !tbaa !15
  %1526 = load ptr, ptr %39, align 8, !tbaa !5
  %1527 = load double, ptr %1526, align 8, !tbaa !15
  %1528 = fmul double %1527, %1525
  store double %1528, ptr %1526, align 8, !tbaa !15
  br label %1529

1529:                                             ; preds = %1524, %1375
  %1530 = load i32, ptr %64, align 4, !tbaa !9
  %1531 = load i32, ptr %66, align 4, !tbaa !9
  %1532 = add nsw i32 %1531, 2
  %1533 = icmp sgt i32 %1530, %1532
  br i1 %1533, label %1534, label %1587

1534:                                             ; preds = %1529
  %1535 = load i32, ptr %78, align 4, !tbaa !9
  %1536 = sub nsw i32 %1535, 1
  store i32 %1536, ptr %59, align 4, !tbaa !9
  %1537 = load ptr, ptr %31, align 8, !tbaa !5
  %1538 = load i32, ptr %77, align 4, !tbaa !9
  %1539 = load i32, ptr %78, align 4, !tbaa !9
  %1540 = load i32, ptr %49, align 4, !tbaa !9
  %1541 = mul nsw i32 %1539, %1540
  %1542 = add nsw i32 %1538, %1541
  %1543 = sext i32 %1542 to i64
  %1544 = getelementptr inbounds %struct.doublecomplex, ptr %1537, i64 %1543
  %1545 = load ptr, ptr %32, align 8, !tbaa !5
  %1546 = load ptr, ptr %29, align 8, !tbaa !5
  %1547 = load i32, ptr %78, align 4, !tbaa !9
  %1548 = load i32, ptr %47, align 4, !tbaa !9
  %1549 = mul nsw i32 %1547, %1548
  %1550 = add nsw i32 %1549, 1
  %1551 = sext i32 %1550 to i64
  %1552 = getelementptr inbounds %struct.doublecomplex, ptr %1546, i64 %1551
  %1553 = load ptr, ptr %30, align 8, !tbaa !5
  %1554 = load ptr, ptr %37, align 8, !tbaa !5
  %1555 = load i32, ptr %77, align 4, !tbaa !9
  %1556 = load i32, ptr %55, align 4, !tbaa !9
  %1557 = add nsw i32 %1555, %1556
  %1558 = sext i32 %1557 to i64
  %1559 = getelementptr inbounds %struct.doublecomplex, ptr %1554, i64 %1558
  %1560 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %74, ptr noundef %59, ptr noundef %75, ptr noundef @c_b45, ptr noundef %1544, ptr noundef %1545, ptr noundef %1552, ptr noundef %1553, ptr noundef @c_b45, ptr noundef %1559, ptr noundef %1560)
  %1561 = load i32, ptr %78, align 4, !tbaa !9
  %1562 = sub nsw i32 %1561, 1
  store i32 %1562, ptr %59, align 4, !tbaa !9
  %1563 = load ptr, ptr %37, align 8, !tbaa !5
  %1564 = load i32, ptr %77, align 4, !tbaa !9
  %1565 = load i32, ptr %78, align 4, !tbaa !9
  %1566 = load i32, ptr %55, align 4, !tbaa !9
  %1567 = mul nsw i32 %1565, %1566
  %1568 = add nsw i32 %1564, %1567
  %1569 = sext i32 %1568 to i64
  %1570 = getelementptr inbounds %struct.doublecomplex, ptr %1563, i64 %1569
  %1571 = load ptr, ptr %38, align 8, !tbaa !5
  %1572 = load ptr, ptr %35, align 8, !tbaa !5
  %1573 = load i32, ptr %78, align 4, !tbaa !9
  %1574 = load i32, ptr %53, align 4, !tbaa !9
  %1575 = mul nsw i32 %1573, %1574
  %1576 = add nsw i32 %1575, 1
  %1577 = sext i32 %1576 to i64
  %1578 = getelementptr inbounds %struct.doublecomplex, ptr %1572, i64 %1577
  %1579 = load ptr, ptr %36, align 8, !tbaa !5
  %1580 = load ptr, ptr %37, align 8, !tbaa !5
  %1581 = load i32, ptr %77, align 4, !tbaa !9
  %1582 = load i32, ptr %55, align 4, !tbaa !9
  %1583 = add nsw i32 %1581, %1582
  %1584 = sext i32 %1583 to i64
  %1585 = getelementptr inbounds %struct.doublecomplex, ptr %1580, i64 %1584
  %1586 = load ptr, ptr %38, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str, ptr noundef @.str.1, ptr noundef %74, ptr noundef %59, ptr noundef %75, ptr noundef @c_b45, ptr noundef %1570, ptr noundef %1571, ptr noundef %1578, ptr noundef %1579, ptr noundef @c_b45, ptr noundef %1585, ptr noundef %1586)
  br label %1587

1587:                                             ; preds = %1534, %1529
  %1588 = load i32, ptr %63, align 4, !tbaa !9
  %1589 = load i32, ptr %66, align 4, !tbaa !9
  %1590 = icmp slt i32 %1588, %1589
  br i1 %1590, label %1591, label %1658

1591:                                             ; preds = %1587
  %1592 = load ptr, ptr %25, align 8, !tbaa !5
  %1593 = load i32, ptr %1592, align 4, !tbaa !9
  %1594 = load i32, ptr %72, align 4, !tbaa !9
  %1595 = sub nsw i32 %1593, %1594
  store i32 %1595, ptr %59, align 4, !tbaa !9
  %1596 = load ptr, ptr %27, align 8, !tbaa !5
  %1597 = load i32, ptr %77, align 4, !tbaa !9
  %1598 = load i32, ptr %72, align 4, !tbaa !9
  %1599 = add nsw i32 %1598, 1
  %1600 = load i32, ptr %45, align 4, !tbaa !9
  %1601 = mul nsw i32 %1599, %1600
  %1602 = add nsw i32 %1597, %1601
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %1596, i64 %1603
  %1605 = load ptr, ptr %28, align 8, !tbaa !5
  %1606 = load ptr, ptr %31, align 8, !tbaa !5
  %1607 = load i32, ptr %77, align 4, !tbaa !9
  %1608 = load i32, ptr %78, align 4, !tbaa !9
  %1609 = load i32, ptr %49, align 4, !tbaa !9
  %1610 = mul nsw i32 %1608, %1609
  %1611 = add nsw i32 %1607, %1610
  %1612 = sext i32 %1611 to i64
  %1613 = getelementptr inbounds %struct.doublecomplex, ptr %1606, i64 %1612
  %1614 = load ptr, ptr %32, align 8, !tbaa !5
  %1615 = load ptr, ptr %31, align 8, !tbaa !5
  %1616 = load i32, ptr %72, align 4, !tbaa !9
  %1617 = add nsw i32 %1616, 1
  %1618 = load i32, ptr %78, align 4, !tbaa !9
  %1619 = load i32, ptr %49, align 4, !tbaa !9
  %1620 = mul nsw i32 %1618, %1619
  %1621 = add nsw i32 %1617, %1620
  %1622 = sext i32 %1621 to i64
  %1623 = getelementptr inbounds %struct.doublecomplex, ptr %1615, i64 %1622
  %1624 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str.1, ptr noundef @.str, ptr noundef %59, ptr noundef %75, ptr noundef %74, ptr noundef @c_b44, ptr noundef %1604, ptr noundef %1605, ptr noundef %1613, ptr noundef %1614, ptr noundef @c_b45, ptr noundef %1623, ptr noundef %1624)
  %1625 = load ptr, ptr %25, align 8, !tbaa !5
  %1626 = load i32, ptr %1625, align 4, !tbaa !9
  %1627 = load i32, ptr %72, align 4, !tbaa !9
  %1628 = sub nsw i32 %1626, %1627
  store i32 %1628, ptr %59, align 4, !tbaa !9
  %1629 = load ptr, ptr %33, align 8, !tbaa !5
  %1630 = load i32, ptr %77, align 4, !tbaa !9
  %1631 = load i32, ptr %72, align 4, !tbaa !9
  %1632 = add nsw i32 %1631, 1
  %1633 = load i32, ptr %51, align 4, !tbaa !9
  %1634 = mul nsw i32 %1632, %1633
  %1635 = add nsw i32 %1630, %1634
  %1636 = sext i32 %1635 to i64
  %1637 = getelementptr inbounds %struct.doublecomplex, ptr %1629, i64 %1636
  %1638 = load ptr, ptr %34, align 8, !tbaa !5
  %1639 = load ptr, ptr %37, align 8, !tbaa !5
  %1640 = load i32, ptr %77, align 4, !tbaa !9
  %1641 = load i32, ptr %78, align 4, !tbaa !9
  %1642 = load i32, ptr %55, align 4, !tbaa !9
  %1643 = mul nsw i32 %1641, %1642
  %1644 = add nsw i32 %1640, %1643
  %1645 = sext i32 %1644 to i64
  %1646 = getelementptr inbounds %struct.doublecomplex, ptr %1639, i64 %1645
  %1647 = load ptr, ptr %38, align 8, !tbaa !5
  %1648 = load ptr, ptr %31, align 8, !tbaa !5
  %1649 = load i32, ptr %72, align 4, !tbaa !9
  %1650 = add nsw i32 %1649, 1
  %1651 = load i32, ptr %78, align 4, !tbaa !9
  %1652 = load i32, ptr %49, align 4, !tbaa !9
  %1653 = mul nsw i32 %1651, %1652
  %1654 = add nsw i32 %1650, %1653
  %1655 = sext i32 %1654 to i64
  %1656 = getelementptr inbounds %struct.doublecomplex, ptr %1648, i64 %1655
  %1657 = load ptr, ptr %32, align 8, !tbaa !5
  call void @zgemm_(ptr noundef @.str.1, ptr noundef @.str, ptr noundef %59, ptr noundef %75, ptr noundef %74, ptr noundef @c_b44, ptr noundef %1637, ptr noundef %1638, ptr noundef %1646, ptr noundef %1647, ptr noundef @c_b45, ptr noundef %1656, ptr noundef %1657)
  br label %1658

1658:                                             ; preds = %1591, %1587
  br label %1659

1659:                                             ; preds = %1658
  %1660 = load i32, ptr %64, align 4, !tbaa !9
  %1661 = add nsw i32 %1660, -1
  store i32 %1661, ptr %64, align 4, !tbaa !9
  br label %1294, !llvm.loop !29

1662:                                             ; preds = %1294
  br label %1663

1663:                                             ; preds = %1662
  %1664 = load i32, ptr %63, align 4, !tbaa !9
  %1665 = add nsw i32 %1664, 1
  store i32 %1665, ptr %63, align 4, !tbaa !9
  br label %1270, !llvm.loop !30

1666:                                             ; preds = %1270
  br label %1667

1667:                                             ; preds = %1666, %1266
  %1668 = load i32, ptr %70, align 4, !tbaa !9
  %1669 = sitofp i32 %1668 to double
  %1670 = load ptr, ptr %41, align 8, !tbaa !5
  %1671 = getelementptr inbounds %struct.doublecomplex, ptr %1670, i64 1
  %1672 = getelementptr inbounds %struct.doublecomplex, ptr %1671, i32 0, i32 0
  store double %1669, ptr %1672, align 8, !tbaa !11
  %1673 = load ptr, ptr %41, align 8, !tbaa !5
  %1674 = getelementptr inbounds %struct.doublecomplex, ptr %1673, i64 1
  %1675 = getelementptr inbounds %struct.doublecomplex, ptr %1674, i32 0, i32 1
  store double 0.000000e+00, ptr %1675, align 8, !tbaa !14
  store i32 1, ptr %85, align 4
  br label %1676

1676:                                             ; preds = %1667, %621, %380, %359, %351
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #4
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #4
  ret void
}

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

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

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

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

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

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

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

declare void @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 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 8}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !13, i64 8}
!15 = !{!13, !13, i64 0}
!16 = 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 i32, align 4
@c_n1 = external hidden global i32, align 4
@c__5 = external hidden global i32, align 4
@.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 i32, align 4
@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 void @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 i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca %struct.doublecomplex, align 8
  %27 = alloca double, align 8
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca double, align 8
  %33 = alloca double, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %26) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.start.p0(i64 4, 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 i32, ptr %5, align 4, !tbaa !5
  %narrow = xor i32 %34, -1
  %35 = sext i32 %narrow to i64
  %36 = getelementptr inbounds %struct.doublecomplex, ptr %4, i64 %35
  %37 = load i32, ptr %7, align 4, !tbaa !5
  %narrow714 = xor i32 %37, -1
  %38 = sext i32 %narrow714 to i64
  %39 = getelementptr inbounds %struct.doublecomplex, ptr %6, i64 %38
  %40 = load i32, ptr %9, align 4, !tbaa !5
  %narrow715 = xor i32 %40, -1
  %41 = sext i32 %narrow715 to i64
  %42 = getelementptr inbounds %struct.doublecomplex, ptr %8, i64 %41
  %43 = load i32, ptr %11, align 4, !tbaa !5
  %narrow716 = xor i32 %43, -1
  %44 = sext i32 %narrow716 to i64
  %45 = getelementptr inbounds %struct.doublecomplex, ptr %10, i64 %44
  %46 = load i32, ptr %13, align 4, !tbaa !5
  %narrow717 = xor i32 %46, -1
  %47 = sext i32 %narrow717 to i64
  %48 = getelementptr inbounds %struct.doublecomplex, ptr %12, i64 %47
  %49 = load i32, ptr %15, align 4, !tbaa !5
  %narrow718 = xor i32 %49, -1
  %50 = sext i32 %narrow718 to i64
  %51 = getelementptr inbounds %struct.doublecomplex, ptr %14, i64 %50
  %52 = getelementptr inbounds i8, ptr %20, i64 -4
  store i32 0, ptr %21, align 4, !tbaa !5
  %53 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #5
  %54 = load i32, ptr %19, align 4, !tbaa !5
  %55 = icmp eq i32 %54, -1
  %.not = icmp eq i32 %53, 0
  br i1 %.not, label %56, label %.critedge

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

.critedge:                                        ; preds = %22
  %58 = load i32, ptr %1, align 4, !tbaa !5
  %or.cond720 = icmp ugt i32 %58, 4
  br i1 %or.cond720, label %.thread738.sink.split, label %59

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

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

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

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

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

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

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

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

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

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

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

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

91:                                               ; preds = %85, %.thread, %87
  %.0658 = phi i32 [ %90, %87 ], [ 1, %85 ], [ 1, %.thread ]
  %92 = uitofp nneg i32 %.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 i32, ptr %19, align 4, !tbaa !5
  %95 = icmp sge i32 %94, %.0658
  %or.cond = select i1 %95, i1 true, i1 %55
  br i1 %or.cond, label %.thread733, label %.thread738.sink.split

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

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

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

99:                                               ; preds = %.thread733
  %100 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  store i32 %100, ptr %30, align 4, !tbaa !5
  %101 = tail call i32 @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, i32 noundef 6, i32 noundef 1) #5
  store i32 %101, ptr %31, align 4, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !5
  br i1 %.not, label %109, label %102

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

105:                                              ; preds = %102
  %106 = add nsw i32 %103, -2
  store i32 %106, ptr %28, align 4, !tbaa !5
  tail call void @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
  tail call void @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 %109

107:                                              ; preds = %102
  %108 = icmp sgt i32 %103, 0
  %spec.select727 = select i1 %108, i32 2, i32 1
  br label %109

109:                                              ; preds = %107, %105, %99
  %110 = phi i1 [ false, %105 ], [ false, %99 ], [ %108, %107 ]
  %111 = phi i32 [ 1, %105 ], [ 1, %99 ], [ %spec.select727, %107 ]
  %112 = icmp slt i32 %100, 2
  %113 = icmp slt i32 %101, 2
  %or.cond5 = select i1 %112, i1 %113, i1 false
  br i1 %or.cond5, label %.lr.ph868.preheader, label %114

114:                                              ; preds = %109
  %115 = load i32, ptr %2, align 4, !tbaa !5
  %.not696 = icmp slt i32 %100, %115
  br i1 %.not696, label %.preheader, label %116

.preheader:                                       ; preds = %116, %114
  br label %169

116:                                              ; preds = %114
  %117 = load i32, ptr %3, align 4, !tbaa !5
  %.not697 = icmp slt i32 %101, %117
  br i1 %.not697, label %.preheader, label %.lr.ph868.preheader

.lr.ph868.preheader:                              ; preds = %116, %109
  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 %27, align 8, !tbaa !13
  %118 = load i32, ptr %2, align 4, !tbaa !5
  %119 = load i32, ptr %3, align 4, !tbaa !5
  call void @ztgsy2_(ptr noundef %0, ptr noundef nonnull %28, 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 %27, ptr noundef nonnull %32, ptr noundef nonnull %21) #5
  %120 = load double, ptr %32, align 8, !tbaa !13
  %121 = fcmp une double %120, 0.000000e+00
  br i1 %121, label %122, label %135

122:                                              ; preds = %.lr.ph868.preheader
  %123 = mul nsw i32 %119, %118
  %124 = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %124, label %.sink.split [
    i32 1, label %125
    i32 3, label %125
  ]

125:                                              ; preds = %122, %122
  %126 = load i32, ptr %2, align 4, !tbaa !5
  %127 = shl i32 %126, 1
  %128 = load i32, ptr %3, align 4, !tbaa !5
  %129 = mul nsw i32 %127, %128
  br label %.sink.split

.sink.split:                                      ; preds = %122, %125
  %.sink965 = phi i32 [ %129, %125 ], [ %123, %122 ]
  %130 = sitofp i32 %.sink965 to double
  %131 = call double @sqrt(double noundef %130) #5
  %.sink952 = load double, ptr %32, align 8, !tbaa !13
  %.sink954 = load double, ptr %27, align 8, !tbaa !13
  %132 = call double @sqrt(double noundef %.sink954) #5
  %133 = fmul double %.sink952, %132
  %134 = fdiv double %131, %133
  store double %134, ptr %17, align 8, !tbaa !13
  br label %135

135:                                              ; preds = %.sink.split, %.lr.ph868.preheader
  br i1 %110, label %136, label %145

136:                                              ; preds = %135
  br i1 %.not, label %139, label %137

137:                                              ; preds = %136
  %138 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %138, ptr %28, align 4, !tbaa !5
  br label %139

139:                                              ; preds = %137, %136
  %140 = load double, ptr %16, align 8, !tbaa !13
  call void @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
  %141 = load i32, ptr %2, align 4, !tbaa !5
  %142 = load i32, ptr %3, align 4, !tbaa !5
  %143 = mul nsw i32 %142, %141
  %144 = sext i32 %143 to i64
  %gep863.peel = getelementptr %struct.doublecomplex, ptr %18, i64 %144
  call void @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %gep863.peel, ptr noundef nonnull %2) #5
  call void @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
  call void @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 %145

145:                                              ; preds = %135, %139
  %.1657.peel = phi double [ %140, %139 ], [ undef, %135 ]
  %.not713.not.peel = icmp ugt i32 %111, 1
  br i1 %.not713.not.peel, label %.lr.ph868, label %.loopexit

.lr.ph868:                                        ; preds = %145
  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 %27, align 8, !tbaa !13
  %146 = load i32, ptr %2, align 4, !tbaa !5
  %147 = load i32, ptr %3, align 4, !tbaa !5
  call void @ztgsy2_(ptr noundef %0, ptr noundef nonnull %28, 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 %27, ptr noundef nonnull %32, ptr noundef nonnull %21) #5
  %148 = load double, ptr %32, align 8, !tbaa !13
  %149 = fcmp une double %148, 0.000000e+00
  br i1 %149, label %150, label %163

150:                                              ; preds = %.lr.ph868
  %151 = mul nsw i32 %147, %146
  %152 = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %152, label %.sink.split955 [
    i32 1, label %153
    i32 3, label %153
  ]

153:                                              ; preds = %150, %150
  %154 = load i32, ptr %2, align 4, !tbaa !5
  %155 = shl i32 %154, 1
  %156 = load i32, ptr %3, align 4, !tbaa !5
  %157 = mul nsw i32 %155, %156
  br label %.sink.split955

.sink.split955:                                   ; preds = %150, %153
  %.sink967 = phi i32 [ %157, %153 ], [ %151, %150 ]
  %158 = sitofp i32 %.sink967 to double
  %159 = call double @sqrt(double noundef %158) #5
  %.sink959 = load double, ptr %32, align 8, !tbaa !13
  %.sink961 = load double, ptr %27, align 8, !tbaa !13
  %160 = call double @sqrt(double noundef %.sink961) #5
  %161 = fmul double %.sink959, %160
  %162 = fdiv double %159, %161
  store double %162, ptr %17, align 8, !tbaa !13
  br label %163

163:                                              ; preds = %.sink.split955, %.lr.ph868
  br i1 %110, label %164, label %.loopexit

164:                                              ; preds = %163
  call void @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
  %165 = load i32, ptr %2, align 4, !tbaa !5
  %166 = load i32, ptr %3, align 4, !tbaa !5
  %167 = mul nsw i32 %166, %165
  %168 = sext i32 %167 to i64
  %gep861 = getelementptr %struct.doublecomplex, ptr %18, i64 %168
  call void @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %gep861, 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

169:                                              ; preds = %.preheader, %172
  %170 = phi i32 [ %175, %172 ], [ %115, %.preheader ]
  %indvars.iv = phi i64 [ %indvars.iv.next, %172 ], [ 0, %.preheader ]
  %.0673 = phi i32 [ %174, %172 ], [ 1, %.preheader ]
  %171 = icmp sgt i32 %.0673, %170
  br i1 %171, label %176, label %172

172:                                              ; preds = %169
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %173 = getelementptr i32, ptr %20, i64 %indvars.iv
  store i32 %.0673, ptr %173, align 4, !tbaa !5
  %174 = add nsw i32 %.0673, %100
  %175 = load i32, ptr %2, align 4, !tbaa !5
  %.not698 = icmp slt i32 %174, %175
  br i1 %.not698, label %169, label %176

176:                                              ; preds = %172, %169
  %177 = phi i32 [ %170, %169 ], [ %175, %172 ]
  %.1664.in = phi i64 [ %indvars.iv, %169 ], [ %indvars.iv.next, %172 ]
  %.1664 = trunc i64 %.1664.in to i32
  %178 = add nsw i32 %177, 1
  %sext = shl i64 %.1664.in, 32
  %179 = ashr exact i64 %sext, 30
  %180 = getelementptr i8, ptr %52, i64 %179
  %181 = getelementptr i8, ptr %180, i64 4
  store i32 %178, ptr %181, align 4, !tbaa !5
  %182 = load i32, ptr %180, align 4, !tbaa !5
  %183 = icmp eq i32 %182, %178
  %184 = sext i1 %183 to i32
  %spec.select728 = add i32 %.1664, %184
  %185 = add i32 %spec.select728, 1
  %186 = sext i32 %185 to i64
  %.pre = load i32, ptr %3, align 4, !tbaa !5
  br label %187

187:                                              ; preds = %190, %176
  %188 = phi i32 [ %193, %190 ], [ %.pre, %176 ]
  %indvars.iv873 = phi i64 [ %indvars.iv.next874, %190 ], [ %186, %176 ]
  %.0670 = phi i32 [ %192, %190 ], [ 1, %176 ]
  %189 = icmp sgt i32 %.0670, %188
  br i1 %189, label %194, label %190

190:                                              ; preds = %187
  %indvars.iv.next874 = add nsw i64 %indvars.iv873, 1
  %191 = getelementptr i32, ptr %20, i64 %indvars.iv873
  store i32 %.0670, ptr %191, align 4, !tbaa !5
  %192 = add nsw i32 %.0670, %101
  %193 = load i32, ptr %3, align 4, !tbaa !5
  %.not699 = icmp slt i32 %192, %193
  br i1 %.not699, label %187, label %194

194:                                              ; preds = %190, %187
  %195 = phi i32 [ %188, %187 ], [ %193, %190 ]
  %.1661.in = phi i64 [ %indvars.iv873, %187 ], [ %indvars.iv.next874, %190 ]
  %.1661 = trunc i64 %.1661.in to i32
  %196 = add nsw i32 %195, 1
  %sext931 = shl i64 %.1661.in, 32
  %197 = ashr exact i64 %sext931, 30
  %198 = getelementptr i8, ptr %52, i64 %197
  %199 = getelementptr i8, ptr %198, i64 4
  store i32 %196, ptr %199, align 4, !tbaa !5
  %200 = load i32, ptr %198, align 4, !tbaa !5
  %201 = icmp eq i32 %200, %196
  %202 = sext i1 %201 to i32
  %spec.select729 = add i32 %.1661, %202
  br i1 %.not, label %379, label %.lr.ph

.lr.ph:                                           ; preds = %194
  %203 = add i32 %spec.select728, 2
  %.not707791 = icmp sgt i32 %203, %spec.select729
  %invariant.gep779 = getelementptr i8, ptr %36, i64 16
  %invariant.gep781 = getelementptr i8, ptr %42, i64 16
  %invariant.gep783 = getelementptr i8, ptr %45, i64 16
  %invariant.gep785 = getelementptr i8, ptr %51, i64 16
  %204 = icmp sgt i32 %spec.select728, 0
  %205 = add i32 %37, 1
  %206 = add i32 %46, 1
  %207 = getelementptr inbounds i8, ptr %26, i64 8
  %208 = add i32 %spec.select729, 1
  %209 = sext i32 %40 to i64
  %210 = sext i32 %49 to i64
  %211 = zext i32 %spec.select728 to i64
  %212 = sext i32 %203 to i64
  %213 = sext i32 %spec.select729 to i64
  %214 = getelementptr inbounds i32, ptr %52, i64 %213
  %215 = sext i32 %208 to i64
  %216 = getelementptr inbounds i32, ptr %52, i64 %215
  br label %217

217:                                              ; preds = %.lr.ph, %377
  %.1810 = phi i32 [ 1, %.lr.ph ], [ %378, %377 ]
  %.2809 = phi double [ undef, %.lr.ph ], [ %.3, %377 ]
  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 %27, align 8, !tbaa !13
  br i1 %.not707791, label %._crit_edge796.thread, label %.lr.ph795

.lr.ph795:                                        ; preds = %217
  br i1 %204, label %.lr.ph790.us, label %.loopexit750.preheader

.loopexit750.preheader:                           ; preds = %.lr.ph795
  %218 = load i32, ptr %214, align 4, !tbaa !5
  %219 = load i32, ptr %216, align 4, !tbaa !5
  %220 = sub i32 %219, %218
  store i32 %220, ptr %31, align 4, !tbaa !5
  br label %._crit_edge796.thread

.lr.ph790.us:                                     ; preds = %323, %.lr.ph795
  %indvars.iv897 = phi i64 [ %212, %.lr.ph795 ], [ %indvars.iv.next898, %323 ]
  %.0654793.us = phi i32 [ 0, %.lr.ph795 ], [ %279, %323 ]
  %221 = getelementptr inbounds i32, ptr %52, i64 %indvars.iv897
  %222 = load i32, ptr %221, align 4, !tbaa !5
  %indvars.iv.next898 = add nsw i64 %indvars.iv897, 1
  %223 = getelementptr i32, ptr %20, i64 %indvars.iv897
  %224 = load i32, ptr %223, align 4, !tbaa !5
  %225 = add nsw i32 %224, -1
  %226 = sub i32 %224, %222
  store i32 %226, ptr %31, align 4, !tbaa !5
  %227 = mul i32 %222, %205
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %228
  %230 = mul nsw i32 %222, %40
  %231 = mul i32 %222, %206
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %232
  %234 = mul nsw i32 %222, %49
  %235 = add nsw i32 %222, -1
  %236 = sext i32 %230 to i64
  %gep782.us = getelementptr %struct.doublecomplex, ptr %invariant.gep781, i64 %236
  %237 = sext i32 %234 to i64
  %gep786.us = getelementptr %struct.doublecomplex, ptr %invariant.gep785, i64 %237
  %238 = icmp slt i64 %indvars.iv897, %213
  %239 = mul nsw i32 %224, %37
  %240 = add nsw i32 %239, %222
  %241 = sext i32 %240 to i64
  %242 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %241
  %243 = mul nsw i32 %224, %40
  %244 = mul nsw i32 %224, %46
  %245 = add nsw i32 %244, %222
  %246 = sext i32 %245 to i64
  %247 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %246
  %248 = mul nsw i32 %224, %49
  %249 = sext i32 %222 to i64
  %250 = sext i32 %224 to i64
  %.not708754.us = icmp slt i32 %222, 2
  %.not709760.us.not = icmp slt i32 %222, %224
  br label %251

251:                                              ; preds = %.backedge939, %.lr.ph790.us
  %indvars.iv893 = phi i64 [ %211, %.lr.ph790.us ], [ %indvars.iv893.be, %.backedge939 ]
  %.1655788.us = phi i32 [ %.0654793.us, %.lr.ph790.us ], [ %279, %.backedge939 ]
  %252 = getelementptr inbounds i32, ptr %52, i64 %indvars.iv893
  %253 = load i32, ptr %252, align 4, !tbaa !5
  %254 = getelementptr inbounds i8, ptr %252, i64 4
  %255 = load i32, ptr %254, align 4, !tbaa !5
  %256 = add nsw i32 %255, -1
  %257 = sub i32 %255, %253
  store i32 %257, ptr %30, align 4, !tbaa !5
  %258 = mul nsw i32 %253, %34
  %259 = add nsw i32 %258, %253
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %260
  %262 = add nsw i32 %253, %230
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %263
  %265 = mul nsw i32 %253, %43
  %266 = add nsw i32 %265, %253
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %267
  %269 = add nsw i32 %253, %234
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %270
  call void @ztgsy2_(ptr noundef %0, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %261, ptr noundef nonnull %5, ptr noundef %229, ptr noundef nonnull %7, ptr noundef %264, ptr noundef nonnull %9, ptr noundef %268, ptr noundef nonnull %11, ptr noundef %233, ptr noundef nonnull %13, ptr noundef %271, ptr noundef nonnull %15, ptr noundef nonnull %33, ptr noundef nonnull %27, ptr noundef nonnull %32, ptr noundef nonnull %29) #5
  %272 = load i32, ptr %29, align 4, !tbaa !5
  %273 = icmp sgt i32 %272, 0
  br i1 %273, label %274, label %275

274:                                              ; preds = %251
  store i32 %272, ptr %21, align 4, !tbaa !5
  br label %275

275:                                              ; preds = %274, %251
  %276 = load i32, ptr %30, align 4, !tbaa !5
  %277 = load i32, ptr %31, align 4, !tbaa !5
  %278 = mul nsw i32 %277, %276
  %279 = add nsw i32 %278, %.1655788.us
  %280 = load double, ptr %33, align 8, !tbaa !13
  %281 = fcmp une double %280, 1.000000e+00
  br i1 %281, label %282, label %317

282:                                              ; preds = %275
  store i32 %235, ptr %24, align 4, !tbaa !5
  br i1 %.not708754.us, label %._crit_edge.us, label %.lr.ph.us

.lr.ph.us:                                        ; preds = %282, %.lr.ph.us
  %indvars.iv877 = phi i64 [ %indvars.iv.next878, %.lr.ph.us ], [ 1, %282 ]
  %283 = load double, ptr %33, align 8, !tbaa !13
  store double %283, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %207, align 8, !tbaa !12
  %284 = mul nsw i64 %indvars.iv877, %209
  %gep.us = getelementptr %struct.doublecomplex, ptr %invariant.gep781, i64 %284
  call void @zscal_(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep.us, ptr noundef nonnull @c__1) #5
  %285 = load double, ptr %33, align 8, !tbaa !13
  store double %285, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %207, align 8, !tbaa !12
  %286 = mul nsw i64 %indvars.iv877, %210
  %gep753.us = getelementptr %struct.doublecomplex, ptr %invariant.gep785, i64 %286
  call void @zscal_(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep753.us, ptr noundef nonnull @c__1) #5
  %indvars.iv.next878 = add nuw nsw i64 %indvars.iv877, 1
  %287 = load i32, ptr %24, align 4, !tbaa !5
  %288 = sext i32 %287 to i64
  %.not708.us.not = icmp slt i64 %indvars.iv877, %288
  br i1 %.not708.us.not, label %.lr.ph.us, label %._crit_edge.us, !llvm.loop !14

._crit_edge.us:                                   ; preds = %.lr.ph.us, %282
  store i32 %225, ptr %24, align 4, !tbaa !5
  br i1 %.not709760.us.not, label %.lr.ph763.us, label %._crit_edge769.us

289:                                              ; preds = %.lr.ph763.us, %289
  %indvars.iv881 = phi i64 [ %249, %.lr.ph763.us ], [ %indvars.iv.next882, %289 ]
  store i32 %338, ptr %25, align 4, !tbaa !5
  %290 = load double, ptr %33, align 8, !tbaa !13
  store double %290, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %207, align 8, !tbaa !12
  %291 = mul nsw i64 %indvars.iv881, %209
  %gep757.us = getelementptr %struct.doublecomplex, ptr %invariant.gep781, i64 %291
  call void @zscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep757.us, ptr noundef nonnull @c__1) #5
  store i32 %338, ptr %25, align 4, !tbaa !5
  %292 = load double, ptr %33, align 8, !tbaa !13
  store double %292, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %207, align 8, !tbaa !12
  %293 = mul nsw i64 %indvars.iv881, %210
  %gep759.us = getelementptr %struct.doublecomplex, ptr %invariant.gep785, i64 %293
  call void @zscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep759.us, ptr noundef nonnull @c__1) #5
  %indvars.iv.next882 = add nsw i64 %indvars.iv881, 1
  %294 = load i32, ptr %24, align 4, !tbaa !5
  %295 = sext i32 %294 to i64
  %.not709.us.not = icmp slt i64 %indvars.iv881, %295
  br i1 %.not709.us.not, label %289, label %._crit_edge764.us, !llvm.loop !16

._crit_edge764.us:                                ; preds = %289
  store i32 %225, ptr %24, align 4, !tbaa !5
  br i1 %.not709760.us.not, label %.lr.ph768.us.preheader, label %._crit_edge769.us

.lr.ph768.us.preheader:                           ; preds = %._crit_edge764.us
  %296 = sext i32 %255 to i64
  %invariant.gep = getelementptr %struct.doublecomplex, ptr %42, i64 %296
  %invariant.gep943 = getelementptr %struct.doublecomplex, ptr %51, i64 %296
  br label %.lr.ph768.us

.lr.ph768.us:                                     ; preds = %.lr.ph768.us.preheader, %.lr.ph768.us
  %indvars.iv885 = phi i64 [ %249, %.lr.ph768.us.preheader ], [ %indvars.iv.next886, %.lr.ph768.us ]
  %297 = load i32, ptr %2, align 4, !tbaa !5
  %298 = sub nsw i32 %297, %256
  store i32 %298, ptr %25, align 4, !tbaa !5
  %299 = load double, ptr %33, align 8, !tbaa !13
  store double %299, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %207, align 8, !tbaa !12
  %300 = mul nsw i64 %indvars.iv885, %209
  %gep942 = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %300
  call void @zscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep942, ptr noundef nonnull @c__1) #5
  %301 = load i32, ptr %2, align 4, !tbaa !5
  %302 = sub nsw i32 %301, %256
  store i32 %302, ptr %25, align 4, !tbaa !5
  %303 = load double, ptr %33, align 8, !tbaa !13
  store double %303, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %207, align 8, !tbaa !12
  %304 = mul nsw i64 %indvars.iv885, %210
  %gep944 = getelementptr %struct.doublecomplex, ptr %invariant.gep943, i64 %304
  call void @zscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep944, ptr noundef nonnull @c__1) #5
  %indvars.iv.next886 = add nsw i64 %indvars.iv885, 1
  %305 = load i32, ptr %24, align 4, !tbaa !5
  %306 = sext i32 %305 to i64
  %.not710.us.not = icmp slt i64 %indvars.iv885, %306
  br i1 %.not710.us.not, label %.lr.ph768.us, label %._crit_edge769.us, !llvm.loop !17

._crit_edge769.us:                                ; preds = %.lr.ph768.us, %._crit_edge.us, %._crit_edge764.us
  %307 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %307, ptr %24, align 4, !tbaa !5
  %.not711774.us = icmp sgt i32 %224, %307
  br i1 %.not711774.us, label %._crit_edge778.us, label %.lr.ph777.us

.lr.ph777.us:                                     ; preds = %._crit_edge769.us, %.lr.ph777.us
  %indvars.iv889 = phi i64 [ %indvars.iv.next890, %.lr.ph777.us ], [ %250, %._crit_edge769.us ]
  %308 = load double, ptr %33, align 8, !tbaa !13
  store double %308, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %207, align 8, !tbaa !12
  %309 = mul nsw i64 %indvars.iv889, %209
  %gep771.us = getelementptr %struct.doublecomplex, ptr %invariant.gep781, i64 %309
  call void @zscal_(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep771.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 %207, align 8, !tbaa !12
  %311 = mul nsw i64 %indvars.iv889, %210
  %gep773.us = getelementptr %struct.doublecomplex, ptr %invariant.gep785, i64 %311
  call void @zscal_(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep773.us, ptr noundef nonnull @c__1) #5
  %indvars.iv.next890 = add nsw i64 %indvars.iv889, 1
  %312 = load i32, ptr %24, align 4, !tbaa !5
  %313 = sext i32 %312 to i64
  %.not711.us.not = icmp slt i64 %indvars.iv889, %313
  br i1 %.not711.us.not, label %.lr.ph777.us, label %._crit_edge778.us, !llvm.loop !18

._crit_edge778.us:                                ; preds = %.lr.ph777.us, %._crit_edge769.us
  %314 = load double, ptr %33, align 8, !tbaa !13
  %315 = load double, ptr %16, align 8, !tbaa !13
  %316 = fmul double %314, %315
  store double %316, ptr %16, align 8, !tbaa !13
  br label %317

317:                                              ; preds = %._crit_edge778.us, %275
  %.not712.us = icmp eq i64 %indvars.iv893, 1
  br i1 %.not712.us, label %322, label %318

318:                                              ; preds = %317
  %319 = add nsw i32 %253, -1
  store i32 %319, ptr %24, align 4, !tbaa !5
  %320 = sext i32 %258 to i64
  %gep780.us = getelementptr %struct.doublecomplex, ptr %invariant.gep779, i64 %320
  call void @zgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_b44, ptr noundef %gep780.us, ptr noundef nonnull %5, ptr noundef %264, ptr noundef nonnull %9, ptr noundef nonnull @c_b45, ptr noundef %gep782.us, ptr noundef nonnull %9) #5
  store i32 %319, ptr %24, align 4, !tbaa !5
  %321 = sext i32 %265 to i64
  %gep784.us = getelementptr %struct.doublecomplex, ptr %invariant.gep783, i64 %321
  call void @zgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_b44, ptr noundef %gep784.us, ptr noundef nonnull %11, ptr noundef %264, ptr noundef nonnull %9, ptr noundef nonnull @c_b45, ptr noundef %gep786.us, ptr noundef nonnull %15) #5
  br label %322

322:                                              ; preds = %318, %317
  br i1 %238, label %323, label %.thread932

323:                                              ; preds = %322
  %324 = load i32, ptr %3, align 4, !tbaa !5
  %325 = sub nsw i32 %324, %225
  store i32 %325, ptr %24, align 4, !tbaa !5
  %326 = add nsw i32 %253, %243
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %327
  call void @zgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c_b45, ptr noundef %271, ptr noundef nonnull %15, ptr noundef %242, ptr noundef nonnull %7, ptr noundef nonnull @c_b45, ptr noundef %328, ptr noundef nonnull %9) #5
  %329 = load i32, ptr %3, align 4, !tbaa !5
  %330 = sub nsw i32 %329, %225
  store i32 %330, ptr %24, align 4, !tbaa !5
  %331 = add nsw i32 %253, %248
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %332
  call void @zgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str, ptr noundef nonnull %30, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c_b45, ptr noundef %271, ptr noundef nonnull %15, ptr noundef %247, ptr noundef nonnull %13, ptr noundef nonnull @c_b45, ptr noundef %333, ptr noundef nonnull %15) #5
  %334 = trunc nuw i64 %indvars.iv893 to i32
  %335 = icmp sgt i32 %334, 1
  br i1 %335, label %.backedge939, label %.lr.ph790.us

.backedge939:                                     ; preds = %323, %.thread932
  %indvars.iv893.be = add nsw i64 %indvars.iv893, -1
  br label %251, !llvm.loop !19

.thread932:                                       ; preds = %322
  %336 = trunc nuw i64 %indvars.iv893 to i32
  %337 = icmp sgt i32 %336, 1
  br i1 %337, label %.backedge939, label %._crit_edge796

.lr.ph763.us:                                     ; preds = %._crit_edge.us
  %338 = add nsw i32 %253, -1
  br label %289

._crit_edge796:                                   ; preds = %.thread932
  %.pre929 = load double, ptr %32, align 8, !tbaa !13
  %339 = fcmp une double %.pre929, 0.000000e+00
  br i1 %339, label %340, label %._crit_edge796.thread

340:                                              ; preds = %._crit_edge796
  %341 = load i32, ptr %1, align 4, !tbaa !5
  switch i32 %341, label %354 [
    i32 1, label %342
    i32 3, label %342
  ]

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

354:                                              ; preds = %340
  %355 = sitofp i32 %279 to double
  %356 = call double @sqrt(double noundef %355) #5
  %357 = load double, ptr %32, align 8, !tbaa !13
  %358 = load double, ptr %27, align 8, !tbaa !13
  %359 = call double @sqrt(double noundef %358) #5
  %360 = fmul double %357, %359
  %361 = fdiv double %356, %360
  store double %361, ptr %17, align 8, !tbaa !13
  br label %._crit_edge796.thread

._crit_edge796.thread:                            ; preds = %.loopexit750.preheader, %217, %342, %354, %._crit_edge796
  %362 = icmp eq i32 %.1810, 1
  %or.cond11 = and i1 %110, %362
  br i1 %or.cond11, label %363, label %370

363:                                              ; preds = %._crit_edge796.thread
  %364 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %364, ptr %28, align 4, !tbaa !5
  %365 = load double, ptr %16, align 8, !tbaa !13
  call void @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 i32, ptr %2, align 4, !tbaa !5
  %367 = load i32, ptr %3, align 4, !tbaa !5
  %368 = mul nsw i32 %367, %366
  %369 = sext i32 %368 to i64
  %gep807 = getelementptr %struct.doublecomplex, ptr %18, i64 %369
  call void @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %14, ptr noundef nonnull %15, ptr noundef %gep807, ptr noundef nonnull %2) #5
  call void @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
  call void @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 %377

370:                                              ; preds = %._crit_edge796.thread
  %371 = icmp eq i32 %.1810, 2
  %or.cond13 = and i1 %110, %371
  br i1 %or.cond13, label %372, label %377

372:                                              ; preds = %370
  call void @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
  %373 = load i32, ptr %2, align 4, !tbaa !5
  %374 = load i32, ptr %3, align 4, !tbaa !5
  %375 = mul nsw i32 %374, %373
  %376 = sext i32 %375 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %18, i64 %376
  call void @zlacpy_(ptr noundef nonnull @.str.3, ptr noundef nonnull %2, ptr noundef nonnull %3, ptr noundef %gep, ptr noundef nonnull %2, ptr noundef %14, ptr noundef nonnull %15) #5
  store double %.2809, ptr %16, align 8, !tbaa !13
  br label %377

377:                                              ; preds = %363, %372, %370
  %.3 = phi double [ %365, %363 ], [ %.2809, %372 ], [ %.2809, %370 ]
  %378 = add nuw nsw i32 %.1810, 1
  %.not706.not = icmp ult i32 %.1810, %111
  br i1 %.not706.not, label %217, label %.loopexit749, !llvm.loop !20

379:                                              ; preds = %194
  store double 1.000000e+00, ptr %16, align 8, !tbaa !13
  %.not700849 = icmp slt i32 %spec.select728, 1
  br i1 %.not700849, label %.loopexit749, label %.lr.ph852

.lr.ph852:                                        ; preds = %379
  %380 = add nuw nsw i32 %spec.select728, 2
  %invariant.gep841 = getelementptr i8, ptr %39, i64 16
  %invariant.gep843 = getelementptr i8, ptr %48, i64 16
  %.not701845 = icmp slt i32 %spec.select729, %380
  %381 = add i32 %34, 1
  %382 = add i32 %43, 1
  %invariant.gep811 = getelementptr i8, ptr %42, i64 16
  %invariant.gep813 = getelementptr i8, ptr %51, i64 16
  %383 = getelementptr inbounds i8, ptr %26, i64 8
  br i1 %.not701845, label %.loopexit749, label %.lr.ph848.preheader

.lr.ph848.preheader:                              ; preds = %.lr.ph852
  %384 = sext i32 %40 to i64
  %385 = sext i32 %49 to i64
  %386 = zext nneg i32 %spec.select729 to i64
  %387 = zext nneg i32 %380 to i64
  %388 = zext nneg i32 %spec.select728 to i64
  br label %.lr.ph848

.lr.ph848:                                        ; preds = %487, %.lr.ph848.preheader
  %indvars.iv921 = phi i64 [ 1, %.lr.ph848.preheader ], [ %indvars.iv.next922, %487 ]
  %389 = getelementptr inbounds i32, ptr %52, i64 %indvars.iv921
  %390 = load i32, ptr %389, align 4, !tbaa !5
  %indvars.iv.next922 = add nuw nsw i64 %indvars.iv921, 1
  %391 = getelementptr i32, ptr %20, i64 %indvars.iv921
  %392 = load i32, ptr %391, align 4, !tbaa !5
  %393 = add nsw i32 %392, -1
  %394 = sub i32 %392, %390
  store i32 %394, ptr %30, align 4, !tbaa !5
  %395 = mul i32 %390, %381
  %396 = sext i32 %395 to i64
  %397 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %396
  %398 = mul i32 %390, %382
  %399 = sext i32 %398 to i64
  %400 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %399
  %401 = add nsw i32 %390, -1
  %402 = add nsw i32 %390, %49
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %403
  %405 = icmp ult i64 %indvars.iv921, %388
  %406 = mul nsw i32 %392, %34
  %407 = add nsw i32 %406, %390
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds %struct.doublecomplex, ptr %36, i64 %408
  %410 = mul nsw i32 %392, %43
  %411 = add nsw i32 %410, %390
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds %struct.doublecomplex, ptr %45, i64 %412
  %414 = sext i32 %392 to i64
  %invariant.gep945 = getelementptr %struct.doublecomplex, ptr %42, i64 %414
  %invariant.gep947 = getelementptr %struct.doublecomplex, ptr %51, i64 %414
  br label %415

415:                                              ; preds = %.backedge, %.lr.ph848
  %indvars.iv917 = phi i64 [ %386, %.lr.ph848 ], [ %indvars.iv917.be, %.backedge ]
  %416 = getelementptr inbounds i32, ptr %52, i64 %indvars.iv917
  %417 = load i32, ptr %416, align 4, !tbaa !5
  %418 = getelementptr i8, ptr %416, i64 4
  %419 = load i32, ptr %418, align 4, !tbaa !5
  %420 = add nsw i32 %419, -1
  %421 = sub i32 %419, %417
  store i32 %421, ptr %31, align 4, !tbaa !5
  %422 = mul nsw i32 %417, %37
  %423 = add nsw i32 %422, %417
  %424 = sext i32 %423 to i64
  %425 = getelementptr inbounds %struct.doublecomplex, ptr %39, i64 %424
  %426 = mul nsw i32 %417, %40
  %427 = add nsw i32 %426, %390
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %428
  %430 = mul nsw i32 %417, %46
  %431 = add nsw i32 %430, %417
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds %struct.doublecomplex, ptr %48, i64 %432
  %434 = mul nsw i32 %417, %49
  %435 = add nsw i32 %434, %390
  %436 = sext i32 %435 to i64
  %437 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %436
  call void @ztgsy2_(ptr noundef %0, ptr noundef nonnull %28, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %397, ptr noundef nonnull %5, ptr noundef %425, ptr noundef nonnull %7, ptr noundef %429, ptr noundef nonnull %9, ptr noundef %400, ptr noundef nonnull %11, ptr noundef %433, ptr noundef nonnull %13, ptr noundef %437, ptr noundef nonnull %15, ptr noundef nonnull %33, ptr noundef nonnull %27, ptr noundef nonnull %32, ptr noundef nonnull %29) #5
  %438 = load i32, ptr %29, align 4, !tbaa !5
  %439 = icmp sgt i32 %438, 0
  br i1 %439, label %440, label %441

440:                                              ; preds = %415
  store i32 %438, ptr %21, align 4, !tbaa !5
  br label %441

441:                                              ; preds = %440, %415
  %442 = load double, ptr %33, align 8, !tbaa !13
  %443 = fcmp une double %442, 1.000000e+00
  br i1 %443, label %444, label %481

444:                                              ; preds = %441
  %445 = add nsw i32 %417, -1
  store i32 %445, ptr %24, align 4, !tbaa !5
  %.not702815 = icmp slt i32 %417, 2
  br i1 %.not702815, label %._crit_edge, label %.lr.ph817

.lr.ph817:                                        ; preds = %444, %.lr.ph817
  %indvars.iv901 = phi i64 [ %indvars.iv.next902, %.lr.ph817 ], [ 1, %444 ]
  %446 = load double, ptr %33, align 8, !tbaa !13
  store double %446, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %383, align 8, !tbaa !12
  %447 = mul nsw i64 %indvars.iv901, %384
  %gep812 = getelementptr %struct.doublecomplex, ptr %invariant.gep811, i64 %447
  call void @zscal_(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep812, ptr noundef nonnull @c__1) #5
  %448 = load double, ptr %33, align 8, !tbaa !13
  store double %448, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %383, align 8, !tbaa !12
  %449 = mul nsw i64 %indvars.iv901, %385
  %gep814 = getelementptr %struct.doublecomplex, ptr %invariant.gep813, i64 %449
  call void @zscal_(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep814, ptr noundef nonnull @c__1) #5
  %indvars.iv.next902 = add nuw nsw i64 %indvars.iv901, 1
  %450 = load i32, ptr %24, align 4, !tbaa !5
  %451 = sext i32 %450 to i64
  %.not702.not = icmp slt i64 %indvars.iv901, %451
  br i1 %.not702.not, label %.lr.ph817, label %._crit_edge, !llvm.loop !21

._crit_edge:                                      ; preds = %.lr.ph817, %444
  store i32 %420, ptr %24, align 4, !tbaa !5
  %.not703822.not = icmp slt i32 %417, %419
  br i1 %.not703822.not, label %.lr.ph825.preheader, label %._crit_edge831

.lr.ph825.preheader:                              ; preds = %._crit_edge
  %452 = sext i32 %417 to i64
  br label %.lr.ph825

.lr.ph825:                                        ; preds = %.lr.ph825.preheader, %.lr.ph825
  %indvars.iv905 = phi i64 [ %452, %.lr.ph825.preheader ], [ %indvars.iv.next906, %.lr.ph825 ]
  store i32 %401, ptr %25, align 4, !tbaa !5
  %453 = load double, ptr %33, align 8, !tbaa !13
  store double %453, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %383, align 8, !tbaa !12
  %454 = mul nsw i64 %indvars.iv905, %384
  %gep819 = getelementptr %struct.doublecomplex, ptr %invariant.gep811, i64 %454
  call void @zscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep819, ptr noundef nonnull @c__1) #5
  store i32 %401, ptr %25, align 4, !tbaa !5
  %455 = load double, ptr %33, align 8, !tbaa !13
  store double %455, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %383, align 8, !tbaa !12
  %456 = mul nsw i64 %indvars.iv905, %385
  %gep821 = getelementptr %struct.doublecomplex, ptr %invariant.gep813, i64 %456
  call void @zscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep821, ptr noundef nonnull @c__1) #5
  %indvars.iv.next906 = add nsw i64 %indvars.iv905, 1
  %457 = load i32, ptr %24, align 4, !tbaa !5
  %458 = sext i32 %457 to i64
  %.not703.not = icmp slt i64 %indvars.iv905, %458
  br i1 %.not703.not, label %.lr.ph825, label %._crit_edge826, !llvm.loop !22

._crit_edge826:                                   ; preds = %.lr.ph825
  store i32 %420, ptr %24, align 4, !tbaa !5
  br i1 %.not703822.not, label %.lr.ph830.preheader, label %._crit_edge831

.lr.ph830.preheader:                              ; preds = %._crit_edge826
  %459 = sext i32 %417 to i64
  br label %.lr.ph830

.lr.ph830:                                        ; preds = %.lr.ph830.preheader, %.lr.ph830
  %indvars.iv909 = phi i64 [ %459, %.lr.ph830.preheader ], [ %indvars.iv.next910, %.lr.ph830 ]
  %460 = load i32, ptr %2, align 4, !tbaa !5
  %461 = sub nsw i32 %460, %393
  store i32 %461, ptr %25, align 4, !tbaa !5
  %462 = load double, ptr %33, align 8, !tbaa !13
  store double %462, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %383, align 8, !tbaa !12
  %463 = mul nsw i64 %indvars.iv909, %384
  %gep946 = getelementptr %struct.doublecomplex, ptr %invariant.gep945, i64 %463
  call void @zscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep946, ptr noundef nonnull @c__1) #5
  %464 = load i32, ptr %2, align 4, !tbaa !5
  %465 = sub nsw i32 %464, %393
  store i32 %465, ptr %25, align 4, !tbaa !5
  %466 = load double, ptr %33, align 8, !tbaa !13
  store double %466, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %383, align 8, !tbaa !12
  %467 = mul nsw i64 %indvars.iv909, %385
  %gep948 = getelementptr %struct.doublecomplex, ptr %invariant.gep947, i64 %467
  call void @zscal_(ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef %gep948, ptr noundef nonnull @c__1) #5
  %indvars.iv.next910 = add nsw i64 %indvars.iv909, 1
  %468 = load i32, ptr %24, align 4, !tbaa !5
  %469 = sext i32 %468 to i64
  %.not704.not = icmp slt i64 %indvars.iv909, %469
  br i1 %.not704.not, label %.lr.ph830, label %._crit_edge831, !llvm.loop !23

._crit_edge831:                                   ; preds = %.lr.ph830, %._crit_edge, %._crit_edge826
  %470 = load i32, ptr %3, align 4, !tbaa !5
  store i32 %470, ptr %24, align 4, !tbaa !5
  %.not705836 = icmp sgt i32 %419, %470
  br i1 %.not705836, label %._crit_edge840, label %.lr.ph839.preheader

.lr.ph839.preheader:                              ; preds = %._crit_edge831
  %471 = sext i32 %419 to i64
  br label %.lr.ph839

.lr.ph839:                                        ; preds = %.lr.ph839.preheader, %.lr.ph839
  %indvars.iv913 = phi i64 [ %471, %.lr.ph839.preheader ], [ %indvars.iv.next914, %.lr.ph839 ]
  %472 = load double, ptr %33, align 8, !tbaa !13
  store double %472, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %383, align 8, !tbaa !12
  %473 = mul nsw i64 %indvars.iv913, %384
  %gep833 = getelementptr %struct.doublecomplex, ptr %invariant.gep811, i64 %473
  call void @zscal_(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep833, ptr noundef nonnull @c__1) #5
  %474 = load double, ptr %33, align 8, !tbaa !13
  store double %474, ptr %26, align 8, !tbaa !9
  store double 0.000000e+00, ptr %383, align 8, !tbaa !12
  %475 = mul nsw i64 %indvars.iv913, %385
  %gep835 = getelementptr %struct.doublecomplex, ptr %invariant.gep813, i64 %475
  call void @zscal_(ptr noundef nonnull %2, ptr noundef nonnull %26, ptr noundef %gep835, ptr noundef nonnull @c__1) #5
  %indvars.iv.next914 = add nsw i64 %indvars.iv913, 1
  %476 = load i32, ptr %24, align 4, !tbaa !5
  %477 = sext i32 %476 to i64
  %.not705.not = icmp slt i64 %indvars.iv913, %477
  br i1 %.not705.not, label %.lr.ph839, label %._crit_edge840, !llvm.loop !24

._crit_edge840:                                   ; preds = %.lr.ph839, %._crit_edge831
  %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_edge840, %441
  %482 = icmp sgt i64 %indvars.iv917, %387
  br i1 %482, label %483, label %.thread937

483:                                              ; preds = %481
  %484 = add nsw i32 %417, -1
  store i32 %484, ptr %24, align 4, !tbaa !5
  %485 = sext i32 %422 to i64
  %gep842 = getelementptr %struct.doublecomplex, ptr %invariant.gep841, i64 %485
  call void @zgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %30, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c_b45, ptr noundef %429, ptr noundef nonnull %9, ptr noundef %gep842, ptr noundef nonnull %7, ptr noundef nonnull @c_b45, ptr noundef %404, ptr noundef nonnull %15) #5
  store i32 %484, ptr %24, align 4, !tbaa !5
  %486 = sext i32 %430 to i64
  %gep844 = getelementptr %struct.doublecomplex, ptr %invariant.gep843, i64 %486
  call void @zgemm_(ptr noundef nonnull @.str, ptr noundef nonnull @.str.1, ptr noundef nonnull %30, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull @c_b45, ptr noundef %437, ptr noundef nonnull %15, ptr noundef %gep844, ptr noundef nonnull %13, ptr noundef nonnull @c_b45, ptr noundef %404, ptr noundef nonnull %15) #5
  br i1 %405, label %487, label %.backedge

.thread937:                                       ; preds = %481
  br i1 %405, label %487, label %.loopexit749

487:                                              ; preds = %.thread937, %483
  %488 = load i32, ptr %2, align 4, !tbaa !5
  %489 = sub nsw i32 %488, %393
  store i32 %489, ptr %24, align 4, !tbaa !5
  %490 = add nsw i32 %426, %392
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %42, i64 %491
  call void @zgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_b44, ptr noundef %409, ptr noundef nonnull %5, ptr noundef %429, ptr noundef nonnull %9, ptr noundef nonnull @c_b45, ptr noundef %492, ptr noundef nonnull %9) #5
  %493 = load i32, ptr %2, align 4, !tbaa !5
  %494 = sub nsw i32 %493, %393
  store i32 %494, ptr %24, align 4, !tbaa !5
  call void @zgemm_(ptr noundef nonnull @.str.1, ptr noundef nonnull @.str, ptr noundef nonnull %24, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef nonnull @c_b44, ptr noundef %413, ptr noundef nonnull %11, ptr noundef %437, ptr noundef nonnull %15, ptr noundef nonnull @c_b45, ptr noundef %492, ptr noundef nonnull %9) #5
  br i1 %482, label %.backedge, label %.lr.ph848

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

.loopexit749:                                     ; preds = %377, %.thread937, %.lr.ph852, %379
  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 = %145, %163, %164, %.thread733, %.loopexit749, %.thread738
  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 4, ptr nonnull %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %28) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #5
  ret void
}

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

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

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

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

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

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

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

declare void @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 i32 @llvm.smax.i32(i32, i32) #4

attributes #0 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { 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 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 8}
!11 = !{!"double", !7, i64 0}
!12 = !{!10, !11, i64 8}
!13 = !{!11, !11, i64 0}
!14 = 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