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

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

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

136:                                              ; preds = %24
  %137 = load ptr, ptr %48, align 8, !tbaa !5
  %138 = load i64, ptr %137, align 8, !tbaa !9
  %139 = icmp eq i64 %138, -1
  br label %140

140:                                              ; preds = %136, %24
  %141 = phi i1 [ true, %24 ], [ %139, %136 ]
  %142 = zext i1 %141 to i32
  %143 = sext i32 %142 to i64
  store i64 %143, ptr %86, align 8, !tbaa !9
  %144 = load ptr, ptr %26, align 8, !tbaa !5
  %145 = load i64, ptr %144, align 8, !tbaa !9
  %146 = icmp slt i64 %145, 0
  br i1 %146, label %151, label %147

147:                                              ; preds = %140
  %148 = load ptr, ptr %26, align 8, !tbaa !5
  %149 = load i64, ptr %148, align 8, !tbaa !9
  %150 = icmp sgt i64 %149, 5
  br i1 %150, label %151, label %153

151:                                              ; preds = %147, %140
  %152 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -1, ptr %152, align 8, !tbaa !9
  br label %226

153:                                              ; preds = %147
  %154 = load ptr, ptr %30, align 8, !tbaa !5
  %155 = load i64, ptr %154, align 8, !tbaa !9
  %156 = icmp slt i64 %155, 0
  br i1 %156, label %157, label %159

157:                                              ; preds = %153
  %158 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -5, ptr %158, align 8, !tbaa !9
  br label %225

159:                                              ; preds = %153
  %160 = load ptr, ptr %32, align 8, !tbaa !5
  %161 = load i64, ptr %160, align 8, !tbaa !9
  %162 = load ptr, ptr %30, align 8, !tbaa !5
  %163 = load i64, ptr %162, align 8, !tbaa !9
  %164 = icmp sge i64 1, %163
  br i1 %164, label %165, label %166

165:                                              ; preds = %159
  br label %169

166:                                              ; preds = %159
  %167 = load ptr, ptr %30, align 8, !tbaa !5
  %168 = load i64, ptr %167, align 8, !tbaa !9
  br label %169

169:                                              ; preds = %166, %165
  %170 = phi i64 [ 1, %165 ], [ %168, %166 ]
  %171 = icmp slt i64 %161, %170
  br i1 %171, label %172, label %174

172:                                              ; preds = %169
  %173 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -7, ptr %173, align 8, !tbaa !9
  br label %224

174:                                              ; preds = %169
  %175 = load ptr, ptr %34, align 8, !tbaa !5
  %176 = load i64, ptr %175, align 8, !tbaa !9
  %177 = load ptr, ptr %30, align 8, !tbaa !5
  %178 = load i64, ptr %177, align 8, !tbaa !9
  %179 = icmp sge i64 1, %178
  br i1 %179, label %180, label %181

180:                                              ; preds = %174
  br label %184

181:                                              ; preds = %174
  %182 = load ptr, ptr %30, align 8, !tbaa !5
  %183 = load i64, ptr %182, align 8, !tbaa !9
  br label %184

184:                                              ; preds = %181, %180
  %185 = phi i64 [ 1, %180 ], [ %183, %181 ]
  %186 = icmp slt i64 %176, %185
  br i1 %186, label %187, label %189

187:                                              ; preds = %184
  %188 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -9, ptr %188, align 8, !tbaa !9
  br label %223

189:                                              ; preds = %184
  %190 = load ptr, ptr %38, align 8, !tbaa !5
  %191 = load i64, ptr %190, align 8, !tbaa !9
  %192 = icmp slt i64 %191, 1
  br i1 %192, label %203, label %193

193:                                              ; preds = %189
  %194 = load ptr, ptr %27, align 8, !tbaa !5
  %195 = load i64, ptr %194, align 8, !tbaa !9
  %196 = icmp ne i64 %195, 0
  br i1 %196, label %197, label %205

197:                                              ; preds = %193
  %198 = load ptr, ptr %38, align 8, !tbaa !5
  %199 = load i64, ptr %198, align 8, !tbaa !9
  %200 = load ptr, ptr %30, align 8, !tbaa !5
  %201 = load i64, ptr %200, align 8, !tbaa !9
  %202 = icmp slt i64 %199, %201
  br i1 %202, label %203, label %205

203:                                              ; preds = %197, %189
  %204 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -13, ptr %204, align 8, !tbaa !9
  br label %222

205:                                              ; preds = %197, %193
  %206 = load ptr, ptr %40, align 8, !tbaa !5
  %207 = load i64, ptr %206, align 8, !tbaa !9
  %208 = icmp slt i64 %207, 1
  br i1 %208, label %219, label %209

209:                                              ; preds = %205
  %210 = load ptr, ptr %28, align 8, !tbaa !5
  %211 = load i64, ptr %210, align 8, !tbaa !9
  %212 = icmp ne i64 %211, 0
  br i1 %212, label %213, label %221

213:                                              ; preds = %209
  %214 = load ptr, ptr %40, align 8, !tbaa !5
  %215 = load i64, ptr %214, align 8, !tbaa !9
  %216 = load ptr, ptr %30, align 8, !tbaa !5
  %217 = load i64, ptr %216, align 8, !tbaa !9
  %218 = icmp slt i64 %215, %217
  br i1 %218, label %219, label %221

219:                                              ; preds = %213, %205
  %220 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -15, ptr %220, align 8, !tbaa !9
  br label %221

221:                                              ; preds = %219, %213, %209
  br label %222

222:                                              ; preds = %221, %203
  br label %223

223:                                              ; preds = %222, %187
  br label %224

224:                                              ; preds = %223, %172
  br label %225

225:                                              ; preds = %224, %157
  br label %226

226:                                              ; preds = %225, %151
  %227 = load ptr, ptr %49, align 8, !tbaa !5
  %228 = load i64, ptr %227, align 8, !tbaa !9
  %229 = icmp ne i64 %228, 0
  br i1 %229, label %230, label %235

230:                                              ; preds = %226
  %231 = load ptr, ptr %49, align 8, !tbaa !5
  %232 = load i64, ptr %231, align 8, !tbaa !9
  %233 = sub nsw i64 0, %232
  store i64 %233, ptr %58, align 8, !tbaa !9
  %234 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %58)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %87, align 4
  br label %1399

235:                                              ; preds = %226
  store i64 0, ptr %71, align 8, !tbaa !9
  %236 = load ptr, ptr %26, align 8, !tbaa !5
  %237 = load i64, ptr %236, align 8, !tbaa !9
  %238 = icmp eq i64 %237, 1
  br i1 %238, label %243, label %239

239:                                              ; preds = %235
  %240 = load ptr, ptr %26, align 8, !tbaa !5
  %241 = load i64, ptr %240, align 8, !tbaa !9
  %242 = icmp sge i64 %241, 4
  br label %243

243:                                              ; preds = %239, %235
  %244 = phi i1 [ true, %235 ], [ %242, %239 ]
  %245 = zext i1 %244 to i32
  %246 = sext i32 %245 to i64
  store i64 %246, ptr %79, align 8, !tbaa !9
  %247 = load ptr, ptr %26, align 8, !tbaa !5
  %248 = load i64, ptr %247, align 8, !tbaa !9
  %249 = icmp eq i64 %248, 2
  br i1 %249, label %254, label %250

250:                                              ; preds = %243
  %251 = load ptr, ptr %26, align 8, !tbaa !5
  %252 = load i64, ptr %251, align 8, !tbaa !9
  %253 = icmp eq i64 %252, 4
  br label %254

254:                                              ; preds = %250, %243
  %255 = phi i1 [ true, %243 ], [ %253, %250 ]
  %256 = zext i1 %255 to i32
  %257 = sext i32 %256 to i64
  store i64 %257, ptr %80, align 8, !tbaa !9
  %258 = load ptr, ptr %26, align 8, !tbaa !5
  %259 = load i64, ptr %258, align 8, !tbaa !9
  %260 = icmp eq i64 %259, 3
  br i1 %260, label %265, label %261

261:                                              ; preds = %254
  %262 = load ptr, ptr %26, align 8, !tbaa !5
  %263 = load i64, ptr %262, align 8, !tbaa !9
  %264 = icmp eq i64 %263, 5
  br label %265

265:                                              ; preds = %261, %254
  %266 = phi i1 [ true, %254 ], [ %264, %261 ]
  %267 = zext i1 %266 to i32
  %268 = sext i32 %267 to i64
  store i64 %268, ptr %81, align 8, !tbaa !9
  %269 = load i64, ptr %80, align 8, !tbaa !9
  %270 = icmp ne i64 %269, 0
  br i1 %270, label %274, label %271

271:                                              ; preds = %265
  %272 = load i64, ptr %81, align 8, !tbaa !9
  %273 = icmp ne i64 %272, 0
  br label %274

274:                                              ; preds = %271, %265
  %275 = phi i1 [ true, %265 ], [ %273, %271 ]
  %276 = zext i1 %275 to i32
  %277 = sext i32 %276 to i64
  store i64 %277, ptr %77, align 8, !tbaa !9
  %278 = load ptr, ptr %41, align 8, !tbaa !5
  store i64 0, ptr %278, align 8, !tbaa !9
  %279 = load ptr, ptr %30, align 8, !tbaa !5
  %280 = load i64, ptr %279, align 8, !tbaa !9
  store i64 %280, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %281

281:                                              ; preds = %362, %274
  %282 = load i64, ptr %64, align 8, !tbaa !9
  %283 = load i64, ptr %58, align 8, !tbaa !9
  %284 = icmp sle i64 %282, %283
  br i1 %284, label %285, label %365

285:                                              ; preds = %281
  %286 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %286, ptr %59, align 8, !tbaa !9
  %287 = load i64, ptr %64, align 8, !tbaa !9
  %288 = load i64, ptr %64, align 8, !tbaa !9
  %289 = load i64, ptr %50, align 8, !tbaa !9
  %290 = mul nsw i64 %288, %289
  %291 = add nsw i64 %287, %290
  store i64 %291, ptr %60, align 8, !tbaa !9
  %292 = load ptr, ptr %31, align 8, !tbaa !5
  %293 = load i64, ptr %60, align 8, !tbaa !9
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %292, i64 %293
  %295 = getelementptr inbounds %struct.doublecomplex, ptr %294, i32 0, i32 0
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = load ptr, ptr %35, align 8, !tbaa !5
  %298 = load i64, ptr %59, align 8, !tbaa !9
  %299 = getelementptr inbounds %struct.doublecomplex, ptr %297, i64 %298
  %300 = getelementptr inbounds %struct.doublecomplex, ptr %299, i32 0, i32 0
  store double %296, ptr %300, align 8, !tbaa !11
  %301 = load ptr, ptr %31, align 8, !tbaa !5
  %302 = load i64, ptr %60, align 8, !tbaa !9
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %301, i64 %302
  %304 = getelementptr inbounds %struct.doublecomplex, ptr %303, i32 0, i32 1
  %305 = load double, ptr %304, align 8, !tbaa !14
  %306 = load ptr, ptr %35, align 8, !tbaa !5
  %307 = load i64, ptr %59, align 8, !tbaa !9
  %308 = getelementptr inbounds %struct.doublecomplex, ptr %306, i64 %307
  %309 = getelementptr inbounds %struct.doublecomplex, ptr %308, i32 0, i32 1
  store double %305, ptr %309, align 8, !tbaa !14
  %310 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %310, ptr %59, align 8, !tbaa !9
  %311 = load i64, ptr %64, align 8, !tbaa !9
  %312 = load i64, ptr %64, align 8, !tbaa !9
  %313 = load i64, ptr %52, align 8, !tbaa !9
  %314 = mul nsw i64 %312, %313
  %315 = add nsw i64 %311, %314
  store i64 %315, ptr %60, align 8, !tbaa !9
  %316 = load ptr, ptr %33, align 8, !tbaa !5
  %317 = load i64, ptr %60, align 8, !tbaa !9
  %318 = getelementptr inbounds %struct.doublecomplex, ptr %316, i64 %317
  %319 = getelementptr inbounds %struct.doublecomplex, ptr %318, i32 0, i32 0
  %320 = load double, ptr %319, align 8, !tbaa !11
  %321 = load ptr, ptr %36, align 8, !tbaa !5
  %322 = load i64, ptr %59, align 8, !tbaa !9
  %323 = getelementptr inbounds %struct.doublecomplex, ptr %321, i64 %322
  %324 = getelementptr inbounds %struct.doublecomplex, ptr %323, i32 0, i32 0
  store double %320, ptr %324, align 8, !tbaa !11
  %325 = load ptr, ptr %33, align 8, !tbaa !5
  %326 = load i64, ptr %60, align 8, !tbaa !9
  %327 = getelementptr inbounds %struct.doublecomplex, ptr %325, i64 %326
  %328 = getelementptr inbounds %struct.doublecomplex, ptr %327, i32 0, i32 1
  %329 = load double, ptr %328, align 8, !tbaa !14
  %330 = load ptr, ptr %36, align 8, !tbaa !5
  %331 = load i64, ptr %59, align 8, !tbaa !9
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %330, i64 %331
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %332, i32 0, i32 1
  store double %329, ptr %333, align 8, !tbaa !14
  %334 = load i64, ptr %64, align 8, !tbaa !9
  %335 = load ptr, ptr %30, align 8, !tbaa !5
  %336 = load i64, ptr %335, align 8, !tbaa !9
  %337 = icmp slt i64 %334, %336
  br i1 %337, label %338, label %349

338:                                              ; preds = %285
  %339 = load ptr, ptr %29, align 8, !tbaa !5
  %340 = load i64, ptr %64, align 8, !tbaa !9
  %341 = getelementptr inbounds i64, ptr %339, i64 %340
  %342 = load i64, ptr %341, align 8, !tbaa !9
  %343 = icmp ne i64 %342, 0
  br i1 %343, label %344, label %348

344:                                              ; preds = %338
  %345 = load ptr, ptr %41, align 8, !tbaa !5
  %346 = load i64, ptr %345, align 8, !tbaa !9
  %347 = add nsw i64 %346, 1
  store i64 %347, ptr %345, align 8, !tbaa !9
  br label %348

348:                                              ; preds = %344, %338
  br label %361

349:                                              ; preds = %285
  %350 = load ptr, ptr %29, align 8, !tbaa !5
  %351 = load ptr, ptr %30, align 8, !tbaa !5
  %352 = load i64, ptr %351, align 8, !tbaa !9
  %353 = getelementptr inbounds i64, ptr %350, i64 %352
  %354 = load i64, ptr %353, align 8, !tbaa !9
  %355 = icmp ne i64 %354, 0
  br i1 %355, label %356, label %360

356:                                              ; preds = %349
  %357 = load ptr, ptr %41, align 8, !tbaa !5
  %358 = load i64, ptr %357, align 8, !tbaa !9
  %359 = add nsw i64 %358, 1
  store i64 %359, ptr %357, align 8, !tbaa !9
  br label %360

360:                                              ; preds = %356, %349
  br label %361

361:                                              ; preds = %360, %348
  br label %362

362:                                              ; preds = %361
  %363 = load i64, ptr %64, align 8, !tbaa !9
  %364 = add nsw i64 %363, 1
  store i64 %364, ptr %64, align 8, !tbaa !9
  br label %281, !llvm.loop !15

365:                                              ; preds = %281
  %366 = load ptr, ptr %26, align 8, !tbaa !5
  %367 = load i64, ptr %366, align 8, !tbaa !9
  %368 = icmp eq i64 %367, 1
  br i1 %368, label %377, label %369

369:                                              ; preds = %365
  %370 = load ptr, ptr %26, align 8, !tbaa !5
  %371 = load i64, ptr %370, align 8, !tbaa !9
  %372 = icmp eq i64 %371, 2
  br i1 %372, label %377, label %373

373:                                              ; preds = %369
  %374 = load ptr, ptr %26, align 8, !tbaa !5
  %375 = load i64, ptr %374, align 8, !tbaa !9
  %376 = icmp eq i64 %375, 4
  br i1 %376, label %377, label %408

377:                                              ; preds = %373, %369, %365
  store i64 1, ptr %58, align 8, !tbaa !9
  %378 = load ptr, ptr %41, align 8, !tbaa !5
  %379 = load i64, ptr %378, align 8, !tbaa !9
  %380 = shl i64 %379, 1
  %381 = load ptr, ptr %30, align 8, !tbaa !5
  %382 = load i64, ptr %381, align 8, !tbaa !9
  %383 = load ptr, ptr %41, align 8, !tbaa !5
  %384 = load i64, ptr %383, align 8, !tbaa !9
  %385 = sub nsw i64 %382, %384
  %386 = mul nsw i64 %380, %385
  store i64 %386, ptr %59, align 8, !tbaa !9
  %387 = load i64, ptr %58, align 8, !tbaa !9
  %388 = load i64, ptr %59, align 8, !tbaa !9
  %389 = icmp sge i64 %387, %388
  br i1 %389, label %390, label %392

390:                                              ; preds = %377
  %391 = load i64, ptr %58, align 8, !tbaa !9
  br label %394

392:                                              ; preds = %377
  %393 = load i64, ptr %59, align 8, !tbaa !9
  br label %394

394:                                              ; preds = %392, %390
  %395 = phi i64 [ %391, %390 ], [ %393, %392 ]
  store i64 %395, ptr %78, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  %396 = load ptr, ptr %30, align 8, !tbaa !5
  %397 = load i64, ptr %396, align 8, !tbaa !9
  %398 = add nsw i64 %397, 2
  store i64 %398, ptr %59, align 8, !tbaa !9
  %399 = load i64, ptr %58, align 8, !tbaa !9
  %400 = load i64, ptr %59, align 8, !tbaa !9
  %401 = icmp sge i64 %399, %400
  br i1 %401, label %402, label %404

402:                                              ; preds = %394
  %403 = load i64, ptr %58, align 8, !tbaa !9
  br label %406

404:                                              ; preds = %394
  %405 = load i64, ptr %59, align 8, !tbaa !9
  br label %406

406:                                              ; preds = %404, %402
  %407 = phi i64 [ %403, %402 ], [ %405, %404 ]
  store i64 %407, ptr %85, align 8, !tbaa !9
  br label %467

408:                                              ; preds = %373
  %409 = load ptr, ptr %26, align 8, !tbaa !5
  %410 = load i64, ptr %409, align 8, !tbaa !9
  %411 = icmp eq i64 %410, 3
  br i1 %411, label %416, label %412

412:                                              ; preds = %408
  %413 = load ptr, ptr %26, align 8, !tbaa !5
  %414 = load i64, ptr %413, align 8, !tbaa !9
  %415 = icmp eq i64 %414, 5
  br i1 %415, label %416, label %465

416:                                              ; preds = %412, %408
  store i64 1, ptr %58, align 8, !tbaa !9
  %417 = load ptr, ptr %41, align 8, !tbaa !5
  %418 = load i64, ptr %417, align 8, !tbaa !9
  %419 = shl i64 %418, 2
  %420 = load ptr, ptr %30, align 8, !tbaa !5
  %421 = load i64, ptr %420, align 8, !tbaa !9
  %422 = load ptr, ptr %41, align 8, !tbaa !5
  %423 = load i64, ptr %422, align 8, !tbaa !9
  %424 = sub nsw i64 %421, %423
  %425 = mul nsw i64 %419, %424
  store i64 %425, ptr %59, align 8, !tbaa !9
  %426 = load i64, ptr %58, align 8, !tbaa !9
  %427 = load i64, ptr %59, align 8, !tbaa !9
  %428 = icmp sge i64 %426, %427
  br i1 %428, label %429, label %431

429:                                              ; preds = %416
  %430 = load i64, ptr %58, align 8, !tbaa !9
  br label %433

431:                                              ; preds = %416
  %432 = load i64, ptr %59, align 8, !tbaa !9
  br label %433

433:                                              ; preds = %431, %429
  %434 = phi i64 [ %430, %429 ], [ %432, %431 ]
  store i64 %434, ptr %78, align 8, !tbaa !9
  store i64 1, ptr %58, align 8, !tbaa !9
  %435 = load ptr, ptr %41, align 8, !tbaa !5
  %436 = load i64, ptr %435, align 8, !tbaa !9
  %437 = shl i64 %436, 1
  %438 = load ptr, ptr %30, align 8, !tbaa !5
  %439 = load i64, ptr %438, align 8, !tbaa !9
  %440 = load ptr, ptr %41, align 8, !tbaa !5
  %441 = load i64, ptr %440, align 8, !tbaa !9
  %442 = sub nsw i64 %439, %441
  %443 = mul nsw i64 %437, %442
  store i64 %443, ptr %59, align 8, !tbaa !9
  %444 = load i64, ptr %58, align 8, !tbaa !9
  %445 = load i64, ptr %59, align 8, !tbaa !9
  %446 = icmp sge i64 %444, %445
  br i1 %446, label %447, label %449

447:                                              ; preds = %433
  %448 = load i64, ptr %58, align 8, !tbaa !9
  br label %451

449:                                              ; preds = %433
  %450 = load i64, ptr %59, align 8, !tbaa !9
  br label %451

451:                                              ; preds = %449, %447
  %452 = phi i64 [ %448, %447 ], [ %450, %449 ]
  store i64 %452, ptr %58, align 8, !tbaa !9
  %453 = load ptr, ptr %30, align 8, !tbaa !5
  %454 = load i64, ptr %453, align 8, !tbaa !9
  %455 = add nsw i64 %454, 2
  store i64 %455, ptr %59, align 8, !tbaa !9
  %456 = load i64, ptr %58, align 8, !tbaa !9
  %457 = load i64, ptr %59, align 8, !tbaa !9
  %458 = icmp sge i64 %456, %457
  br i1 %458, label %459, label %461

459:                                              ; preds = %451
  %460 = load i64, ptr %58, align 8, !tbaa !9
  br label %463

461:                                              ; preds = %451
  %462 = load i64, ptr %59, align 8, !tbaa !9
  br label %463

463:                                              ; preds = %461, %459
  %464 = phi i64 [ %460, %459 ], [ %462, %461 ]
  store i64 %464, ptr %85, align 8, !tbaa !9
  br label %466

465:                                              ; preds = %412
  store i64 1, ptr %78, align 8, !tbaa !9
  store i64 1, ptr %85, align 8, !tbaa !9
  br label %466

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

467:                                              ; preds = %466, %406
  %468 = load i64, ptr %78, align 8, !tbaa !9
  %469 = sitofp i64 %468 to double
  %470 = load ptr, ptr %45, align 8, !tbaa !5
  %471 = getelementptr inbounds %struct.doublecomplex, ptr %470, i64 1
  %472 = getelementptr inbounds %struct.doublecomplex, ptr %471, i32 0, i32 0
  store double %469, ptr %472, align 8, !tbaa !11
  %473 = load ptr, ptr %45, align 8, !tbaa !5
  %474 = getelementptr inbounds %struct.doublecomplex, ptr %473, i64 1
  %475 = getelementptr inbounds %struct.doublecomplex, ptr %474, i32 0, i32 1
  store double 0.000000e+00, ptr %475, align 8, !tbaa !14
  %476 = load i64, ptr %85, align 8, !tbaa !9
  %477 = load ptr, ptr %47, align 8, !tbaa !5
  %478 = getelementptr inbounds i64, ptr %477, i64 1
  store i64 %476, ptr %478, align 8, !tbaa !9
  %479 = load ptr, ptr %46, align 8, !tbaa !5
  %480 = load i64, ptr %479, align 8, !tbaa !9
  %481 = load i64, ptr %78, align 8, !tbaa !9
  %482 = icmp slt i64 %480, %481
  br i1 %482, label %483, label %488

483:                                              ; preds = %467
  %484 = load i64, ptr %86, align 8, !tbaa !9
  %485 = icmp ne i64 %484, 0
  br i1 %485, label %488, label %486

486:                                              ; preds = %483
  %487 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -21, ptr %487, align 8, !tbaa !9
  br label %499

488:                                              ; preds = %483, %467
  %489 = load ptr, ptr %48, align 8, !tbaa !5
  %490 = load i64, ptr %489, align 8, !tbaa !9
  %491 = load i64, ptr %85, align 8, !tbaa !9
  %492 = icmp slt i64 %490, %491
  br i1 %492, label %493, label %498

493:                                              ; preds = %488
  %494 = load i64, ptr %86, align 8, !tbaa !9
  %495 = icmp ne i64 %494, 0
  br i1 %495, label %498, label %496

496:                                              ; preds = %493
  %497 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 -23, ptr %497, align 8, !tbaa !9
  br label %498

498:                                              ; preds = %496, %493, %488
  br label %499

499:                                              ; preds = %498, %486
  %500 = load ptr, ptr %49, align 8, !tbaa !5
  %501 = load i64, ptr %500, align 8, !tbaa !9
  %502 = icmp ne i64 %501, 0
  br i1 %502, label %503, label %508

503:                                              ; preds = %499
  %504 = load ptr, ptr %49, align 8, !tbaa !5
  %505 = load i64, ptr %504, align 8, !tbaa !9
  %506 = sub nsw i64 0, %505
  store i64 %506, ptr %58, align 8, !tbaa !9
  %507 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %58)
  store i32 0, ptr %25, align 4
  store i32 1, ptr %87, align 4
  br label %1399

508:                                              ; preds = %499
  %509 = load i64, ptr %86, align 8, !tbaa !9
  %510 = icmp ne i64 %509, 0
  br i1 %510, label %511, label %512

511:                                              ; preds = %508
  store i32 0, ptr %25, align 4
  store i32 1, ptr %87, align 4
  br label %1399

512:                                              ; preds = %508
  br label %513

513:                                              ; preds = %512
  %514 = load ptr, ptr %41, align 8, !tbaa !5
  %515 = load i64, ptr %514, align 8, !tbaa !9
  %516 = load ptr, ptr %30, align 8, !tbaa !5
  %517 = load i64, ptr %516, align 8, !tbaa !9
  %518 = icmp eq i64 %515, %517
  br i1 %518, label %523, label %519

519:                                              ; preds = %513
  %520 = load ptr, ptr %41, align 8, !tbaa !5
  %521 = load i64, ptr %520, align 8, !tbaa !9
  %522 = icmp eq i64 %521, 0
  br i1 %522, label %523, label %572

523:                                              ; preds = %519, %513
  %524 = load i64, ptr %79, align 8, !tbaa !9
  %525 = icmp ne i64 %524, 0
  br i1 %525, label %526, label %529

526:                                              ; preds = %523
  %527 = load ptr, ptr %42, align 8, !tbaa !5
  store double 1.000000e+00, ptr %527, align 8, !tbaa !17
  %528 = load ptr, ptr %43, align 8, !tbaa !5
  store double 1.000000e+00, ptr %528, align 8, !tbaa !17
  br label %529

529:                                              ; preds = %526, %523
  %530 = load i64, ptr %77, align 8, !tbaa !9
  %531 = icmp ne i64 %530, 0
  br i1 %531, label %532, label %571

532:                                              ; preds = %529
  store double 0.000000e+00, ptr %82, align 8, !tbaa !17
  store double 1.000000e+00, ptr %72, align 8, !tbaa !17
  %533 = load ptr, ptr %30, align 8, !tbaa !5
  %534 = load i64, ptr %533, align 8, !tbaa !9
  store i64 %534, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %63, align 8, !tbaa !9
  br label %535

535:                                              ; preds = %556, %532
  %536 = load i64, ptr %63, align 8, !tbaa !9
  %537 = load i64, ptr %58, align 8, !tbaa !9
  %538 = icmp sle i64 %536, %537
  br i1 %538, label %539, label %559

539:                                              ; preds = %535
  %540 = load ptr, ptr %30, align 8, !tbaa !5
  %541 = load ptr, ptr %31, align 8, !tbaa !5
  %542 = load i64, ptr %63, align 8, !tbaa !9
  %543 = load i64, ptr %50, align 8, !tbaa !9
  %544 = mul nsw i64 %542, %543
  %545 = add nsw i64 %544, 1
  %546 = getelementptr inbounds %struct.doublecomplex, ptr %541, i64 %545
  %547 = call i32 @zlassq_(ptr noundef %540, ptr noundef %546, ptr noundef @c__1, ptr noundef %82, ptr noundef %72)
  %548 = load ptr, ptr %30, align 8, !tbaa !5
  %549 = load ptr, ptr %33, align 8, !tbaa !5
  %550 = load i64, ptr %63, align 8, !tbaa !9
  %551 = load i64, ptr %52, align 8, !tbaa !9
  %552 = mul nsw i64 %550, %551
  %553 = add nsw i64 %552, 1
  %554 = getelementptr inbounds %struct.doublecomplex, ptr %549, i64 %553
  %555 = call i32 @zlassq_(ptr noundef %548, ptr noundef %554, ptr noundef @c__1, ptr noundef %82, ptr noundef %72)
  br label %556

556:                                              ; preds = %539
  %557 = load i64, ptr %63, align 8, !tbaa !9
  %558 = add nsw i64 %557, 1
  store i64 %558, ptr %63, align 8, !tbaa !9
  br label %535, !llvm.loop !18

559:                                              ; preds = %535
  %560 = load double, ptr %82, align 8, !tbaa !17
  %561 = load double, ptr %72, align 8, !tbaa !17
  %562 = call double @sqrt(double noundef %561) #4
  %563 = fmul double %560, %562
  %564 = load ptr, ptr %44, align 8, !tbaa !5
  %565 = getelementptr inbounds double, ptr %564, i64 1
  store double %563, ptr %565, align 8, !tbaa !17
  %566 = load ptr, ptr %44, align 8, !tbaa !5
  %567 = getelementptr inbounds double, ptr %566, i64 1
  %568 = load double, ptr %567, align 8, !tbaa !17
  %569 = load ptr, ptr %44, align 8, !tbaa !5
  %570 = getelementptr inbounds double, ptr %569, i64 2
  store double %568, ptr %570, align 8, !tbaa !17
  br label %571

571:                                              ; preds = %559, %529
  br label %1387

572:                                              ; preds = %519
  %573 = call double @dlamch_(ptr noundef @.str.1)
  store double %573, ptr %84, align 8, !tbaa !17
  store i64 0, ptr %67, align 8, !tbaa !9
  %574 = load ptr, ptr %30, align 8, !tbaa !5
  %575 = load i64, ptr %574, align 8, !tbaa !9
  store i64 %575, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %576

576:                                              ; preds = %635, %572
  %577 = load i64, ptr %64, align 8, !tbaa !9
  %578 = load i64, ptr %58, align 8, !tbaa !9
  %579 = icmp sle i64 %577, %578
  br i1 %579, label %580, label %638

580:                                              ; preds = %576
  %581 = load ptr, ptr %29, align 8, !tbaa !5
  %582 = load i64, ptr %64, align 8, !tbaa !9
  %583 = getelementptr inbounds i64, ptr %581, i64 %582
  %584 = load i64, ptr %583, align 8, !tbaa !9
  store i64 %584, ptr %73, align 8, !tbaa !9
  %585 = load i64, ptr %73, align 8, !tbaa !9
  %586 = icmp ne i64 %585, 0
  br i1 %586, label %587, label %634

587:                                              ; preds = %580
  %588 = load i64, ptr %67, align 8, !tbaa !9
  %589 = add nsw i64 %588, 1
  store i64 %589, ptr %67, align 8, !tbaa !9
  %590 = load i64, ptr %64, align 8, !tbaa !9
  %591 = load i64, ptr %67, align 8, !tbaa !9
  %592 = icmp ne i64 %590, %591
  br i1 %592, label %593, label %614

593:                                              ; preds = %587
  %594 = load ptr, ptr %27, align 8, !tbaa !5
  %595 = load ptr, ptr %28, align 8, !tbaa !5
  %596 = load ptr, ptr %30, align 8, !tbaa !5
  %597 = load ptr, ptr %31, align 8, !tbaa !5
  %598 = load i64, ptr %51, align 8, !tbaa !9
  %599 = getelementptr inbounds %struct.doublecomplex, ptr %597, i64 %598
  %600 = load ptr, ptr %32, align 8, !tbaa !5
  %601 = load ptr, ptr %33, align 8, !tbaa !5
  %602 = load i64, ptr %53, align 8, !tbaa !9
  %603 = getelementptr inbounds %struct.doublecomplex, ptr %601, i64 %602
  %604 = load ptr, ptr %34, align 8, !tbaa !5
  %605 = load ptr, ptr %37, align 8, !tbaa !5
  %606 = load i64, ptr %55, align 8, !tbaa !9
  %607 = getelementptr inbounds %struct.doublecomplex, ptr %605, i64 %606
  %608 = load ptr, ptr %38, align 8, !tbaa !5
  %609 = load ptr, ptr %39, align 8, !tbaa !5
  %610 = load i64, ptr %57, align 8, !tbaa !9
  %611 = getelementptr inbounds %struct.doublecomplex, ptr %609, i64 %610
  %612 = load ptr, ptr %40, align 8, !tbaa !5
  %613 = call i32 @ztgexc_(ptr noundef %594, ptr noundef %595, ptr noundef %596, ptr noundef %599, ptr noundef %600, ptr noundef %603, ptr noundef %604, ptr noundef %607, ptr noundef %608, ptr noundef %611, ptr noundef %612, ptr noundef %64, ptr noundef %67, ptr noundef %71)
  br label %614

614:                                              ; preds = %593, %587
  %615 = load i64, ptr %71, align 8, !tbaa !9
  %616 = icmp sgt i64 %615, 0
  br i1 %616, label %617, label %633

617:                                              ; preds = %614
  %618 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 1, ptr %618, align 8, !tbaa !9
  %619 = load i64, ptr %79, align 8, !tbaa !9
  %620 = icmp ne i64 %619, 0
  br i1 %620, label %621, label %624

621:                                              ; preds = %617
  %622 = load ptr, ptr %42, align 8, !tbaa !5
  store double 0.000000e+00, ptr %622, align 8, !tbaa !17
  %623 = load ptr, ptr %43, align 8, !tbaa !5
  store double 0.000000e+00, ptr %623, align 8, !tbaa !17
  br label %624

624:                                              ; preds = %621, %617
  %625 = load i64, ptr %77, align 8, !tbaa !9
  %626 = icmp ne i64 %625, 0
  br i1 %626, label %627, label %632

627:                                              ; preds = %624
  %628 = load ptr, ptr %44, align 8, !tbaa !5
  %629 = getelementptr inbounds double, ptr %628, i64 1
  store double 0.000000e+00, ptr %629, align 8, !tbaa !17
  %630 = load ptr, ptr %44, align 8, !tbaa !5
  %631 = getelementptr inbounds double, ptr %630, i64 2
  store double 0.000000e+00, ptr %631, align 8, !tbaa !17
  br label %632

632:                                              ; preds = %627, %624
  br label %1387

633:                                              ; preds = %614
  br label %634

634:                                              ; preds = %633, %580
  br label %635

635:                                              ; preds = %634
  %636 = load i64, ptr %64, align 8, !tbaa !9
  %637 = add nsw i64 %636, 1
  store i64 %637, ptr %64, align 8, !tbaa !9
  br label %576, !llvm.loop !19

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

641:                                              ; preds = %638
  %642 = load ptr, ptr %41, align 8, !tbaa !5
  %643 = load i64, ptr %642, align 8, !tbaa !9
  store i64 %643, ptr %65, align 8, !tbaa !9
  %644 = load ptr, ptr %30, align 8, !tbaa !5
  %645 = load i64, ptr %644, align 8, !tbaa !9
  %646 = load ptr, ptr %41, align 8, !tbaa !5
  %647 = load i64, ptr %646, align 8, !tbaa !9
  %648 = sub nsw i64 %645, %647
  store i64 %648, ptr %66, align 8, !tbaa !9
  %649 = load i64, ptr %65, align 8, !tbaa !9
  %650 = add nsw i64 %649, 1
  store i64 %650, ptr %63, align 8, !tbaa !9
  %651 = load ptr, ptr %31, align 8, !tbaa !5
  %652 = load i64, ptr %63, align 8, !tbaa !9
  %653 = load i64, ptr %50, align 8, !tbaa !9
  %654 = mul nsw i64 %652, %653
  %655 = add nsw i64 %654, 1
  %656 = getelementptr inbounds %struct.doublecomplex, ptr %651, i64 %655
  %657 = load ptr, ptr %32, align 8, !tbaa !5
  %658 = load ptr, ptr %45, align 8, !tbaa !5
  %659 = getelementptr inbounds %struct.doublecomplex, ptr %658, i64 1
  %660 = call i32 @zlacpy_(ptr noundef @.str.2, ptr noundef %65, ptr noundef %66, ptr noundef %656, ptr noundef %657, ptr noundef %659, ptr noundef %65)
  %661 = load ptr, ptr %33, align 8, !tbaa !5
  %662 = load i64, ptr %63, align 8, !tbaa !9
  %663 = load i64, ptr %52, align 8, !tbaa !9
  %664 = mul nsw i64 %662, %663
  %665 = add nsw i64 %664, 1
  %666 = getelementptr inbounds %struct.doublecomplex, ptr %661, i64 %665
  %667 = load ptr, ptr %34, align 8, !tbaa !5
  %668 = load ptr, ptr %45, align 8, !tbaa !5
  %669 = load i64, ptr %65, align 8, !tbaa !9
  %670 = load i64, ptr %66, align 8, !tbaa !9
  %671 = mul nsw i64 %669, %670
  %672 = add nsw i64 %671, 1
  %673 = getelementptr inbounds %struct.doublecomplex, ptr %668, i64 %672
  %674 = call i32 @zlacpy_(ptr noundef @.str.2, ptr noundef %65, ptr noundef %66, ptr noundef %666, ptr noundef %667, ptr noundef %673, ptr noundef %65)
  store i64 0, ptr %69, align 8, !tbaa !9
  %675 = load ptr, ptr %46, align 8, !tbaa !5
  %676 = load i64, ptr %675, align 8, !tbaa !9
  %677 = load i64, ptr %65, align 8, !tbaa !9
  %678 = shl i64 %677, 1
  %679 = load i64, ptr %66, align 8, !tbaa !9
  %680 = mul nsw i64 %678, %679
  %681 = sub nsw i64 %676, %680
  store i64 %681, ptr %58, align 8, !tbaa !9
  %682 = load ptr, ptr %31, align 8, !tbaa !5
  %683 = load i64, ptr %51, align 8, !tbaa !9
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %682, i64 %683
  %685 = load ptr, ptr %32, align 8, !tbaa !5
  %686 = load ptr, ptr %31, align 8, !tbaa !5
  %687 = load i64, ptr %63, align 8, !tbaa !9
  %688 = load i64, ptr %63, align 8, !tbaa !9
  %689 = load i64, ptr %50, align 8, !tbaa !9
  %690 = mul nsw i64 %688, %689
  %691 = add nsw i64 %687, %690
  %692 = getelementptr inbounds %struct.doublecomplex, ptr %686, i64 %691
  %693 = load ptr, ptr %32, align 8, !tbaa !5
  %694 = load ptr, ptr %45, align 8, !tbaa !5
  %695 = getelementptr inbounds %struct.doublecomplex, ptr %694, i64 1
  %696 = load ptr, ptr %33, align 8, !tbaa !5
  %697 = load i64, ptr %53, align 8, !tbaa !9
  %698 = getelementptr inbounds %struct.doublecomplex, ptr %696, i64 %697
  %699 = load ptr, ptr %34, align 8, !tbaa !5
  %700 = load ptr, ptr %33, align 8, !tbaa !5
  %701 = load i64, ptr %63, align 8, !tbaa !9
  %702 = load i64, ptr %63, align 8, !tbaa !9
  %703 = load i64, ptr %52, align 8, !tbaa !9
  %704 = mul nsw i64 %702, %703
  %705 = add nsw i64 %701, %704
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %700, i64 %705
  %707 = load ptr, ptr %34, align 8, !tbaa !5
  %708 = load ptr, ptr %45, align 8, !tbaa !5
  %709 = load i64, ptr %65, align 8, !tbaa !9
  %710 = load i64, ptr %66, align 8, !tbaa !9
  %711 = mul nsw i64 %709, %710
  %712 = add nsw i64 %711, 1
  %713 = getelementptr inbounds %struct.doublecomplex, ptr %708, i64 %712
  %714 = load ptr, ptr %44, align 8, !tbaa !5
  %715 = getelementptr inbounds double, ptr %714, i64 1
  %716 = load ptr, ptr %45, align 8, !tbaa !5
  %717 = load i64, ptr %65, align 8, !tbaa !9
  %718 = load i64, ptr %66, align 8, !tbaa !9
  %719 = mul nsw i64 %717, %718
  %720 = shl i64 %719, 1
  %721 = add nsw i64 %720, 1
  %722 = getelementptr inbounds %struct.doublecomplex, ptr %716, i64 %721
  %723 = load ptr, ptr %47, align 8, !tbaa !5
  %724 = getelementptr inbounds i64, ptr %723, i64 1
  %725 = call i32 @ztgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %65, ptr noundef %66, ptr noundef %684, ptr noundef %685, ptr noundef %692, ptr noundef %693, ptr noundef %695, ptr noundef %65, ptr noundef %698, ptr noundef %699, ptr noundef %706, ptr noundef %707, ptr noundef %713, ptr noundef %65, ptr noundef %82, ptr noundef %715, ptr noundef %722, ptr noundef %58, ptr noundef %724, ptr noundef %71)
  store double 0.000000e+00, ptr %83, align 8, !tbaa !17
  store double 1.000000e+00, ptr %72, align 8, !tbaa !17
  %726 = load i64, ptr %65, align 8, !tbaa !9
  %727 = load i64, ptr %66, align 8, !tbaa !9
  %728 = mul nsw i64 %726, %727
  store i64 %728, ptr %58, align 8, !tbaa !9
  %729 = load ptr, ptr %45, align 8, !tbaa !5
  %730 = getelementptr inbounds %struct.doublecomplex, ptr %729, i64 1
  %731 = call i32 @zlassq_(ptr noundef %58, ptr noundef %730, ptr noundef @c__1, ptr noundef %83, ptr noundef %72)
  %732 = load double, ptr %83, align 8, !tbaa !17
  %733 = load double, ptr %72, align 8, !tbaa !17
  %734 = call double @sqrt(double noundef %733) #4
  %735 = fmul double %732, %734
  %736 = load ptr, ptr %42, align 8, !tbaa !5
  store double %735, ptr %736, align 8, !tbaa !17
  %737 = load ptr, ptr %42, align 8, !tbaa !5
  %738 = load double, ptr %737, align 8, !tbaa !17
  %739 = fcmp oeq double %738, 0.000000e+00
  br i1 %739, label %740, label %742

740:                                              ; preds = %641
  %741 = load ptr, ptr %42, align 8, !tbaa !5
  store double 1.000000e+00, ptr %741, align 8, !tbaa !17
  br label %760

742:                                              ; preds = %641
  %743 = load double, ptr %82, align 8, !tbaa !17
  %744 = load double, ptr %82, align 8, !tbaa !17
  %745 = load double, ptr %82, align 8, !tbaa !17
  %746 = fmul double %744, %745
  %747 = load ptr, ptr %42, align 8, !tbaa !5
  %748 = load double, ptr %747, align 8, !tbaa !17
  %749 = fdiv double %746, %748
  %750 = load ptr, ptr %42, align 8, !tbaa !5
  %751 = load double, ptr %750, align 8, !tbaa !17
  %752 = fadd double %749, %751
  %753 = call double @sqrt(double noundef %752) #4
  %754 = load ptr, ptr %42, align 8, !tbaa !5
  %755 = load double, ptr %754, align 8, !tbaa !17
  %756 = call double @sqrt(double noundef %755) #4
  %757 = fmul double %753, %756
  %758 = fdiv double %743, %757
  %759 = load ptr, ptr %42, align 8, !tbaa !5
  store double %758, ptr %759, align 8, !tbaa !17
  br label %760

760:                                              ; preds = %742, %740
  store double 0.000000e+00, ptr %83, align 8, !tbaa !17
  store double 1.000000e+00, ptr %72, align 8, !tbaa !17
  %761 = load i64, ptr %65, align 8, !tbaa !9
  %762 = load i64, ptr %66, align 8, !tbaa !9
  %763 = mul nsw i64 %761, %762
  store i64 %763, ptr %58, align 8, !tbaa !9
  %764 = load ptr, ptr %45, align 8, !tbaa !5
  %765 = load i64, ptr %65, align 8, !tbaa !9
  %766 = load i64, ptr %66, align 8, !tbaa !9
  %767 = mul nsw i64 %765, %766
  %768 = add nsw i64 %767, 1
  %769 = getelementptr inbounds %struct.doublecomplex, ptr %764, i64 %768
  %770 = call i32 @zlassq_(ptr noundef %58, ptr noundef %769, ptr noundef @c__1, ptr noundef %83, ptr noundef %72)
  %771 = load double, ptr %83, align 8, !tbaa !17
  %772 = load double, ptr %72, align 8, !tbaa !17
  %773 = call double @sqrt(double noundef %772) #4
  %774 = fmul double %771, %773
  %775 = load ptr, ptr %43, align 8, !tbaa !5
  store double %774, ptr %775, align 8, !tbaa !17
  %776 = load ptr, ptr %43, align 8, !tbaa !5
  %777 = load double, ptr %776, align 8, !tbaa !17
  %778 = fcmp oeq double %777, 0.000000e+00
  br i1 %778, label %779, label %781

779:                                              ; preds = %760
  %780 = load ptr, ptr %43, align 8, !tbaa !5
  store double 1.000000e+00, ptr %780, align 8, !tbaa !17
  br label %799

781:                                              ; preds = %760
  %782 = load double, ptr %82, align 8, !tbaa !17
  %783 = load double, ptr %82, align 8, !tbaa !17
  %784 = load double, ptr %82, align 8, !tbaa !17
  %785 = fmul double %783, %784
  %786 = load ptr, ptr %43, align 8, !tbaa !5
  %787 = load double, ptr %786, align 8, !tbaa !17
  %788 = fdiv double %785, %787
  %789 = load ptr, ptr %43, align 8, !tbaa !5
  %790 = load double, ptr %789, align 8, !tbaa !17
  %791 = fadd double %788, %790
  %792 = call double @sqrt(double noundef %791) #4
  %793 = load ptr, ptr %43, align 8, !tbaa !5
  %794 = load double, ptr %793, align 8, !tbaa !17
  %795 = call double @sqrt(double noundef %794) #4
  %796 = fmul double %792, %795
  %797 = fdiv double %782, %796
  %798 = load ptr, ptr %43, align 8, !tbaa !5
  store double %797, ptr %798, align 8, !tbaa !17
  br label %799

799:                                              ; preds = %781, %779
  br label %800

800:                                              ; preds = %799, %638
  %801 = load i64, ptr %77, align 8, !tbaa !9
  %802 = icmp ne i64 %801, 0
  br i1 %802, label %803, label %1191

803:                                              ; preds = %800
  %804 = load i64, ptr %80, align 8, !tbaa !9
  %805 = icmp ne i64 %804, 0
  br i1 %805, label %806, label %918

806:                                              ; preds = %803
  %807 = load ptr, ptr %41, align 8, !tbaa !5
  %808 = load i64, ptr %807, align 8, !tbaa !9
  store i64 %808, ptr %65, align 8, !tbaa !9
  %809 = load ptr, ptr %30, align 8, !tbaa !5
  %810 = load i64, ptr %809, align 8, !tbaa !9
  %811 = load ptr, ptr %41, align 8, !tbaa !5
  %812 = load i64, ptr %811, align 8, !tbaa !9
  %813 = sub nsw i64 %810, %812
  store i64 %813, ptr %66, align 8, !tbaa !9
  %814 = load i64, ptr %65, align 8, !tbaa !9
  %815 = add nsw i64 %814, 1
  store i64 %815, ptr %63, align 8, !tbaa !9
  store i64 3, ptr %69, align 8, !tbaa !9
  %816 = load ptr, ptr %46, align 8, !tbaa !5
  %817 = load i64, ptr %816, align 8, !tbaa !9
  %818 = load i64, ptr %65, align 8, !tbaa !9
  %819 = shl i64 %818, 1
  %820 = load i64, ptr %66, align 8, !tbaa !9
  %821 = mul nsw i64 %819, %820
  %822 = sub nsw i64 %817, %821
  store i64 %822, ptr %58, align 8, !tbaa !9
  %823 = load ptr, ptr %31, align 8, !tbaa !5
  %824 = load i64, ptr %51, align 8, !tbaa !9
  %825 = getelementptr inbounds %struct.doublecomplex, ptr %823, i64 %824
  %826 = load ptr, ptr %32, align 8, !tbaa !5
  %827 = load ptr, ptr %31, align 8, !tbaa !5
  %828 = load i64, ptr %63, align 8, !tbaa !9
  %829 = load i64, ptr %63, align 8, !tbaa !9
  %830 = load i64, ptr %50, align 8, !tbaa !9
  %831 = mul nsw i64 %829, %830
  %832 = add nsw i64 %828, %831
  %833 = getelementptr inbounds %struct.doublecomplex, ptr %827, i64 %832
  %834 = load ptr, ptr %32, align 8, !tbaa !5
  %835 = load ptr, ptr %45, align 8, !tbaa !5
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %835, i64 1
  %837 = load ptr, ptr %33, align 8, !tbaa !5
  %838 = load i64, ptr %53, align 8, !tbaa !9
  %839 = getelementptr inbounds %struct.doublecomplex, ptr %837, i64 %838
  %840 = load ptr, ptr %34, align 8, !tbaa !5
  %841 = load ptr, ptr %33, align 8, !tbaa !5
  %842 = load i64, ptr %63, align 8, !tbaa !9
  %843 = load i64, ptr %63, align 8, !tbaa !9
  %844 = load i64, ptr %52, align 8, !tbaa !9
  %845 = mul nsw i64 %843, %844
  %846 = add nsw i64 %842, %845
  %847 = getelementptr inbounds %struct.doublecomplex, ptr %841, i64 %846
  %848 = load ptr, ptr %34, align 8, !tbaa !5
  %849 = load ptr, ptr %45, align 8, !tbaa !5
  %850 = load i64, ptr %65, align 8, !tbaa !9
  %851 = load i64, ptr %66, align 8, !tbaa !9
  %852 = mul nsw i64 %850, %851
  %853 = add nsw i64 %852, 1
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %849, i64 %853
  %855 = load ptr, ptr %44, align 8, !tbaa !5
  %856 = getelementptr inbounds double, ptr %855, i64 1
  %857 = load ptr, ptr %45, align 8, !tbaa !5
  %858 = load i64, ptr %65, align 8, !tbaa !9
  %859 = load i64, ptr %66, align 8, !tbaa !9
  %860 = mul nsw i64 %858, %859
  %861 = shl i64 %860, 1
  %862 = add nsw i64 %861, 1
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %857, i64 %862
  %864 = load ptr, ptr %47, align 8, !tbaa !5
  %865 = getelementptr inbounds i64, ptr %864, i64 1
  %866 = call i32 @ztgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %65, ptr noundef %66, ptr noundef %825, ptr noundef %826, ptr noundef %833, ptr noundef %834, ptr noundef %836, ptr noundef %65, ptr noundef %839, ptr noundef %840, ptr noundef %847, ptr noundef %848, ptr noundef %854, ptr noundef %65, ptr noundef %82, ptr noundef %856, ptr noundef %863, ptr noundef %58, ptr noundef %865, ptr noundef %71)
  %867 = load ptr, ptr %46, align 8, !tbaa !5
  %868 = load i64, ptr %867, align 8, !tbaa !9
  %869 = load i64, ptr %65, align 8, !tbaa !9
  %870 = shl i64 %869, 1
  %871 = load i64, ptr %66, align 8, !tbaa !9
  %872 = mul nsw i64 %870, %871
  %873 = sub nsw i64 %868, %872
  store i64 %873, ptr %58, align 8, !tbaa !9
  %874 = load ptr, ptr %31, align 8, !tbaa !5
  %875 = load i64, ptr %63, align 8, !tbaa !9
  %876 = load i64, ptr %63, align 8, !tbaa !9
  %877 = load i64, ptr %50, align 8, !tbaa !9
  %878 = mul nsw i64 %876, %877
  %879 = add nsw i64 %875, %878
  %880 = getelementptr inbounds %struct.doublecomplex, ptr %874, i64 %879
  %881 = load ptr, ptr %32, align 8, !tbaa !5
  %882 = load ptr, ptr %31, align 8, !tbaa !5
  %883 = load i64, ptr %51, align 8, !tbaa !9
  %884 = getelementptr inbounds %struct.doublecomplex, ptr %882, i64 %883
  %885 = load ptr, ptr %32, align 8, !tbaa !5
  %886 = load ptr, ptr %45, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.doublecomplex, ptr %886, i64 1
  %888 = load ptr, ptr %33, align 8, !tbaa !5
  %889 = load i64, ptr %63, align 8, !tbaa !9
  %890 = load i64, ptr %63, align 8, !tbaa !9
  %891 = load i64, ptr %52, align 8, !tbaa !9
  %892 = mul nsw i64 %890, %891
  %893 = add nsw i64 %889, %892
  %894 = getelementptr inbounds %struct.doublecomplex, ptr %888, i64 %893
  %895 = load ptr, ptr %34, align 8, !tbaa !5
  %896 = load ptr, ptr %33, align 8, !tbaa !5
  %897 = load i64, ptr %53, align 8, !tbaa !9
  %898 = getelementptr inbounds %struct.doublecomplex, ptr %896, i64 %897
  %899 = load ptr, ptr %34, align 8, !tbaa !5
  %900 = load ptr, ptr %45, align 8, !tbaa !5
  %901 = load i64, ptr %65, align 8, !tbaa !9
  %902 = load i64, ptr %66, align 8, !tbaa !9
  %903 = mul nsw i64 %901, %902
  %904 = add nsw i64 %903, 1
  %905 = getelementptr inbounds %struct.doublecomplex, ptr %900, i64 %904
  %906 = load ptr, ptr %44, align 8, !tbaa !5
  %907 = getelementptr inbounds double, ptr %906, i64 2
  %908 = load ptr, ptr %45, align 8, !tbaa !5
  %909 = load i64, ptr %65, align 8, !tbaa !9
  %910 = load i64, ptr %66, align 8, !tbaa !9
  %911 = mul nsw i64 %909, %910
  %912 = shl i64 %911, 1
  %913 = add nsw i64 %912, 1
  %914 = getelementptr inbounds %struct.doublecomplex, ptr %908, i64 %913
  %915 = load ptr, ptr %47, align 8, !tbaa !5
  %916 = getelementptr inbounds i64, ptr %915, i64 1
  %917 = call i32 @ztgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %66, ptr noundef %65, ptr noundef %880, ptr noundef %881, ptr noundef %884, ptr noundef %885, ptr noundef %887, ptr noundef %66, ptr noundef %894, ptr noundef %895, ptr noundef %898, ptr noundef %899, ptr noundef %905, ptr noundef %66, ptr noundef %82, ptr noundef %907, ptr noundef %914, ptr noundef %58, ptr noundef %916, ptr noundef %71)
  br label %1190

918:                                              ; preds = %803
  store i64 0, ptr %70, align 8, !tbaa !9
  %919 = load ptr, ptr %41, align 8, !tbaa !5
  %920 = load i64, ptr %919, align 8, !tbaa !9
  store i64 %920, ptr %65, align 8, !tbaa !9
  %921 = load ptr, ptr %30, align 8, !tbaa !5
  %922 = load i64, ptr %921, align 8, !tbaa !9
  %923 = load ptr, ptr %41, align 8, !tbaa !5
  %924 = load i64, ptr %923, align 8, !tbaa !9
  %925 = sub nsw i64 %922, %924
  store i64 %925, ptr %66, align 8, !tbaa !9
  %926 = load i64, ptr %65, align 8, !tbaa !9
  %927 = add nsw i64 %926, 1
  store i64 %927, ptr %63, align 8, !tbaa !9
  store i64 0, ptr %69, align 8, !tbaa !9
  %928 = load i64, ptr %65, align 8, !tbaa !9
  %929 = shl i64 %928, 1
  %930 = load i64, ptr %66, align 8, !tbaa !9
  %931 = mul nsw i64 %929, %930
  store i64 %931, ptr %68, align 8, !tbaa !9
  br label %932

932:                                              ; preds = %1052, %918
  %933 = load ptr, ptr %45, align 8, !tbaa !5
  %934 = load i64, ptr %68, align 8, !tbaa !9
  %935 = add nsw i64 %934, 1
  %936 = getelementptr inbounds %struct.doublecomplex, ptr %933, i64 %935
  %937 = load ptr, ptr %45, align 8, !tbaa !5
  %938 = getelementptr inbounds %struct.doublecomplex, ptr %937, i64 1
  %939 = load ptr, ptr %44, align 8, !tbaa !5
  %940 = getelementptr inbounds double, ptr %939, i64 1
  %941 = getelementptr inbounds [3 x i64], ptr %76, i64 0, i64 0
  %942 = call i32 @zlacn2_(ptr noundef %68, ptr noundef %936, ptr noundef %938, ptr noundef %940, ptr noundef %70, ptr noundef %941)
  %943 = load i64, ptr %70, align 8, !tbaa !9
  %944 = icmp ne i64 %943, 0
  br i1 %944, label %945, label %1053

945:                                              ; preds = %932
  %946 = load i64, ptr %70, align 8, !tbaa !9
  %947 = icmp eq i64 %946, 1
  br i1 %947, label %948, label %1000

948:                                              ; preds = %945
  %949 = load ptr, ptr %46, align 8, !tbaa !5
  %950 = load i64, ptr %949, align 8, !tbaa !9
  %951 = load i64, ptr %65, align 8, !tbaa !9
  %952 = shl i64 %951, 1
  %953 = load i64, ptr %66, align 8, !tbaa !9
  %954 = mul nsw i64 %952, %953
  %955 = sub nsw i64 %950, %954
  store i64 %955, ptr %58, align 8, !tbaa !9
  %956 = load ptr, ptr %31, align 8, !tbaa !5
  %957 = load i64, ptr %51, align 8, !tbaa !9
  %958 = getelementptr inbounds %struct.doublecomplex, ptr %956, i64 %957
  %959 = load ptr, ptr %32, align 8, !tbaa !5
  %960 = load ptr, ptr %31, align 8, !tbaa !5
  %961 = load i64, ptr %63, align 8, !tbaa !9
  %962 = load i64, ptr %63, align 8, !tbaa !9
  %963 = load i64, ptr %50, align 8, !tbaa !9
  %964 = mul nsw i64 %962, %963
  %965 = add nsw i64 %961, %964
  %966 = getelementptr inbounds %struct.doublecomplex, ptr %960, i64 %965
  %967 = load ptr, ptr %32, align 8, !tbaa !5
  %968 = load ptr, ptr %45, align 8, !tbaa !5
  %969 = getelementptr inbounds %struct.doublecomplex, ptr %968, i64 1
  %970 = load ptr, ptr %33, align 8, !tbaa !5
  %971 = load i64, ptr %53, align 8, !tbaa !9
  %972 = getelementptr inbounds %struct.doublecomplex, ptr %970, i64 %971
  %973 = load ptr, ptr %34, align 8, !tbaa !5
  %974 = load ptr, ptr %33, align 8, !tbaa !5
  %975 = load i64, ptr %63, align 8, !tbaa !9
  %976 = load i64, ptr %63, align 8, !tbaa !9
  %977 = load i64, ptr %52, align 8, !tbaa !9
  %978 = mul nsw i64 %976, %977
  %979 = add nsw i64 %975, %978
  %980 = getelementptr inbounds %struct.doublecomplex, ptr %974, i64 %979
  %981 = load ptr, ptr %34, align 8, !tbaa !5
  %982 = load ptr, ptr %45, align 8, !tbaa !5
  %983 = load i64, ptr %65, align 8, !tbaa !9
  %984 = load i64, ptr %66, align 8, !tbaa !9
  %985 = mul nsw i64 %983, %984
  %986 = add nsw i64 %985, 1
  %987 = getelementptr inbounds %struct.doublecomplex, ptr %982, i64 %986
  %988 = load ptr, ptr %44, align 8, !tbaa !5
  %989 = getelementptr inbounds double, ptr %988, i64 1
  %990 = load ptr, ptr %45, align 8, !tbaa !5
  %991 = load i64, ptr %65, align 8, !tbaa !9
  %992 = load i64, ptr %66, align 8, !tbaa !9
  %993 = mul nsw i64 %991, %992
  %994 = shl i64 %993, 1
  %995 = add nsw i64 %994, 1
  %996 = getelementptr inbounds %struct.doublecomplex, ptr %990, i64 %995
  %997 = load ptr, ptr %47, align 8, !tbaa !5
  %998 = getelementptr inbounds i64, ptr %997, i64 1
  %999 = call i32 @ztgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %65, ptr noundef %66, ptr noundef %958, ptr noundef %959, ptr noundef %966, ptr noundef %967, ptr noundef %969, ptr noundef %65, ptr noundef %972, ptr noundef %973, ptr noundef %980, ptr noundef %981, ptr noundef %987, ptr noundef %65, ptr noundef %82, ptr noundef %989, ptr noundef %996, ptr noundef %58, ptr noundef %998, ptr noundef %71)
  br label %1052

1000:                                             ; preds = %945
  %1001 = load ptr, ptr %46, align 8, !tbaa !5
  %1002 = load i64, ptr %1001, align 8, !tbaa !9
  %1003 = load i64, ptr %65, align 8, !tbaa !9
  %1004 = shl i64 %1003, 1
  %1005 = load i64, ptr %66, align 8, !tbaa !9
  %1006 = mul nsw i64 %1004, %1005
  %1007 = sub nsw i64 %1002, %1006
  store i64 %1007, ptr %58, align 8, !tbaa !9
  %1008 = load ptr, ptr %31, align 8, !tbaa !5
  %1009 = load i64, ptr %51, align 8, !tbaa !9
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %1008, i64 %1009
  %1011 = load ptr, ptr %32, align 8, !tbaa !5
  %1012 = load ptr, ptr %31, align 8, !tbaa !5
  %1013 = load i64, ptr %63, align 8, !tbaa !9
  %1014 = load i64, ptr %63, align 8, !tbaa !9
  %1015 = load i64, ptr %50, align 8, !tbaa !9
  %1016 = mul nsw i64 %1014, %1015
  %1017 = add nsw i64 %1013, %1016
  %1018 = getelementptr inbounds %struct.doublecomplex, ptr %1012, i64 %1017
  %1019 = load ptr, ptr %32, align 8, !tbaa !5
  %1020 = load ptr, ptr %45, align 8, !tbaa !5
  %1021 = getelementptr inbounds %struct.doublecomplex, ptr %1020, i64 1
  %1022 = load ptr, ptr %33, align 8, !tbaa !5
  %1023 = load i64, ptr %53, align 8, !tbaa !9
  %1024 = getelementptr inbounds %struct.doublecomplex, ptr %1022, i64 %1023
  %1025 = load ptr, ptr %34, align 8, !tbaa !5
  %1026 = load ptr, ptr %33, align 8, !tbaa !5
  %1027 = load i64, ptr %63, align 8, !tbaa !9
  %1028 = load i64, ptr %63, align 8, !tbaa !9
  %1029 = load i64, ptr %52, align 8, !tbaa !9
  %1030 = mul nsw i64 %1028, %1029
  %1031 = add nsw i64 %1027, %1030
  %1032 = getelementptr inbounds %struct.doublecomplex, ptr %1026, i64 %1031
  %1033 = load ptr, ptr %34, align 8, !tbaa !5
  %1034 = load ptr, ptr %45, align 8, !tbaa !5
  %1035 = load i64, ptr %65, align 8, !tbaa !9
  %1036 = load i64, ptr %66, align 8, !tbaa !9
  %1037 = mul nsw i64 %1035, %1036
  %1038 = add nsw i64 %1037, 1
  %1039 = getelementptr inbounds %struct.doublecomplex, ptr %1034, i64 %1038
  %1040 = load ptr, ptr %44, align 8, !tbaa !5
  %1041 = getelementptr inbounds double, ptr %1040, i64 1
  %1042 = load ptr, ptr %45, align 8, !tbaa !5
  %1043 = load i64, ptr %65, align 8, !tbaa !9
  %1044 = load i64, ptr %66, align 8, !tbaa !9
  %1045 = mul nsw i64 %1043, %1044
  %1046 = shl i64 %1045, 1
  %1047 = add nsw i64 %1046, 1
  %1048 = getelementptr inbounds %struct.doublecomplex, ptr %1042, i64 %1047
  %1049 = load ptr, ptr %47, align 8, !tbaa !5
  %1050 = getelementptr inbounds i64, ptr %1049, i64 1
  %1051 = call i32 @ztgsyl_(ptr noundef @.str.4, ptr noundef %69, ptr noundef %65, ptr noundef %66, ptr noundef %1010, ptr noundef %1011, ptr noundef %1018, ptr noundef %1019, ptr noundef %1021, ptr noundef %65, ptr noundef %1024, ptr noundef %1025, ptr noundef %1032, ptr noundef %1033, ptr noundef %1039, ptr noundef %65, ptr noundef %82, ptr noundef %1041, ptr noundef %1048, ptr noundef %58, ptr noundef %1050, ptr noundef %71)
  br label %1052

1052:                                             ; preds = %1000, %948
  br label %932

1053:                                             ; preds = %932
  %1054 = load double, ptr %82, align 8, !tbaa !17
  %1055 = load ptr, ptr %44, align 8, !tbaa !5
  %1056 = getelementptr inbounds double, ptr %1055, i64 1
  %1057 = load double, ptr %1056, align 8, !tbaa !17
  %1058 = fdiv double %1054, %1057
  %1059 = load ptr, ptr %44, align 8, !tbaa !5
  %1060 = getelementptr inbounds double, ptr %1059, i64 1
  store double %1058, ptr %1060, align 8, !tbaa !17
  br label %1061

1061:                                             ; preds = %1181, %1053
  %1062 = load ptr, ptr %45, align 8, !tbaa !5
  %1063 = load i64, ptr %68, align 8, !tbaa !9
  %1064 = add nsw i64 %1063, 1
  %1065 = getelementptr inbounds %struct.doublecomplex, ptr %1062, i64 %1064
  %1066 = load ptr, ptr %45, align 8, !tbaa !5
  %1067 = getelementptr inbounds %struct.doublecomplex, ptr %1066, i64 1
  %1068 = load ptr, ptr %44, align 8, !tbaa !5
  %1069 = getelementptr inbounds double, ptr %1068, i64 2
  %1070 = getelementptr inbounds [3 x i64], ptr %76, i64 0, i64 0
  %1071 = call i32 @zlacn2_(ptr noundef %68, ptr noundef %1065, ptr noundef %1067, ptr noundef %1069, ptr noundef %70, ptr noundef %1070)
  %1072 = load i64, ptr %70, align 8, !tbaa !9
  %1073 = icmp ne i64 %1072, 0
  br i1 %1073, label %1074, label %1182

1074:                                             ; preds = %1061
  %1075 = load i64, ptr %70, align 8, !tbaa !9
  %1076 = icmp eq i64 %1075, 1
  br i1 %1076, label %1077, label %1129

1077:                                             ; preds = %1074
  %1078 = load ptr, ptr %46, align 8, !tbaa !5
  %1079 = load i64, ptr %1078, align 8, !tbaa !9
  %1080 = load i64, ptr %65, align 8, !tbaa !9
  %1081 = shl i64 %1080, 1
  %1082 = load i64, ptr %66, align 8, !tbaa !9
  %1083 = mul nsw i64 %1081, %1082
  %1084 = sub nsw i64 %1079, %1083
  store i64 %1084, ptr %58, align 8, !tbaa !9
  %1085 = load ptr, ptr %31, align 8, !tbaa !5
  %1086 = load i64, ptr %63, align 8, !tbaa !9
  %1087 = load i64, ptr %63, align 8, !tbaa !9
  %1088 = load i64, ptr %50, align 8, !tbaa !9
  %1089 = mul nsw i64 %1087, %1088
  %1090 = add nsw i64 %1086, %1089
  %1091 = getelementptr inbounds %struct.doublecomplex, ptr %1085, i64 %1090
  %1092 = load ptr, ptr %32, align 8, !tbaa !5
  %1093 = load ptr, ptr %31, align 8, !tbaa !5
  %1094 = load i64, ptr %51, align 8, !tbaa !9
  %1095 = getelementptr inbounds %struct.doublecomplex, ptr %1093, i64 %1094
  %1096 = load ptr, ptr %32, align 8, !tbaa !5
  %1097 = load ptr, ptr %45, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.doublecomplex, ptr %1097, i64 1
  %1099 = load ptr, ptr %33, align 8, !tbaa !5
  %1100 = load i64, ptr %63, align 8, !tbaa !9
  %1101 = load i64, ptr %63, align 8, !tbaa !9
  %1102 = load i64, ptr %52, align 8, !tbaa !9
  %1103 = mul nsw i64 %1101, %1102
  %1104 = add nsw i64 %1100, %1103
  %1105 = getelementptr inbounds %struct.doublecomplex, ptr %1099, i64 %1104
  %1106 = load ptr, ptr %34, align 8, !tbaa !5
  %1107 = load ptr, ptr %33, align 8, !tbaa !5
  %1108 = load i64, ptr %53, align 8, !tbaa !9
  %1109 = getelementptr inbounds %struct.doublecomplex, ptr %1107, i64 %1108
  %1110 = load ptr, ptr %34, align 8, !tbaa !5
  %1111 = load ptr, ptr %45, align 8, !tbaa !5
  %1112 = load i64, ptr %65, align 8, !tbaa !9
  %1113 = load i64, ptr %66, align 8, !tbaa !9
  %1114 = mul nsw i64 %1112, %1113
  %1115 = add nsw i64 %1114, 1
  %1116 = getelementptr inbounds %struct.doublecomplex, ptr %1111, i64 %1115
  %1117 = load ptr, ptr %44, align 8, !tbaa !5
  %1118 = getelementptr inbounds double, ptr %1117, i64 2
  %1119 = load ptr, ptr %45, align 8, !tbaa !5
  %1120 = load i64, ptr %65, align 8, !tbaa !9
  %1121 = load i64, ptr %66, align 8, !tbaa !9
  %1122 = mul nsw i64 %1120, %1121
  %1123 = shl i64 %1122, 1
  %1124 = add nsw i64 %1123, 1
  %1125 = getelementptr inbounds %struct.doublecomplex, ptr %1119, i64 %1124
  %1126 = load ptr, ptr %47, align 8, !tbaa !5
  %1127 = getelementptr inbounds i64, ptr %1126, i64 1
  %1128 = call i32 @ztgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %66, ptr noundef %65, ptr noundef %1091, ptr noundef %1092, ptr noundef %1095, ptr noundef %1096, ptr noundef %1098, ptr noundef %66, ptr noundef %1105, ptr noundef %1106, ptr noundef %1109, ptr noundef %1110, ptr noundef %1116, ptr noundef %66, ptr noundef %82, ptr noundef %1118, ptr noundef %1125, ptr noundef %58, ptr noundef %1127, ptr noundef %71)
  br label %1181

1129:                                             ; preds = %1074
  %1130 = load ptr, ptr %46, align 8, !tbaa !5
  %1131 = load i64, ptr %1130, align 8, !tbaa !9
  %1132 = load i64, ptr %65, align 8, !tbaa !9
  %1133 = shl i64 %1132, 1
  %1134 = load i64, ptr %66, align 8, !tbaa !9
  %1135 = mul nsw i64 %1133, %1134
  %1136 = sub nsw i64 %1131, %1135
  store i64 %1136, ptr %58, align 8, !tbaa !9
  %1137 = load ptr, ptr %31, align 8, !tbaa !5
  %1138 = load i64, ptr %63, align 8, !tbaa !9
  %1139 = load i64, ptr %63, align 8, !tbaa !9
  %1140 = load i64, ptr %50, align 8, !tbaa !9
  %1141 = mul nsw i64 %1139, %1140
  %1142 = add nsw i64 %1138, %1141
  %1143 = getelementptr inbounds %struct.doublecomplex, ptr %1137, i64 %1142
  %1144 = load ptr, ptr %32, align 8, !tbaa !5
  %1145 = load ptr, ptr %31, align 8, !tbaa !5
  %1146 = load i64, ptr %51, align 8, !tbaa !9
  %1147 = getelementptr inbounds %struct.doublecomplex, ptr %1145, i64 %1146
  %1148 = load ptr, ptr %32, align 8, !tbaa !5
  %1149 = load ptr, ptr %45, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.doublecomplex, ptr %1149, i64 1
  %1151 = load ptr, ptr %33, align 8, !tbaa !5
  %1152 = load i64, ptr %53, align 8, !tbaa !9
  %1153 = getelementptr inbounds %struct.doublecomplex, ptr %1151, i64 %1152
  %1154 = load ptr, ptr %34, align 8, !tbaa !5
  %1155 = load ptr, ptr %33, align 8, !tbaa !5
  %1156 = load i64, ptr %63, align 8, !tbaa !9
  %1157 = load i64, ptr %63, align 8, !tbaa !9
  %1158 = load i64, ptr %52, align 8, !tbaa !9
  %1159 = mul nsw i64 %1157, %1158
  %1160 = add nsw i64 %1156, %1159
  %1161 = getelementptr inbounds %struct.doublecomplex, ptr %1155, i64 %1160
  %1162 = load ptr, ptr %34, align 8, !tbaa !5
  %1163 = load ptr, ptr %45, align 8, !tbaa !5
  %1164 = load i64, ptr %65, align 8, !tbaa !9
  %1165 = load i64, ptr %66, align 8, !tbaa !9
  %1166 = mul nsw i64 %1164, %1165
  %1167 = add nsw i64 %1166, 1
  %1168 = getelementptr inbounds %struct.doublecomplex, ptr %1163, i64 %1167
  %1169 = load ptr, ptr %44, align 8, !tbaa !5
  %1170 = getelementptr inbounds double, ptr %1169, i64 2
  %1171 = load ptr, ptr %45, align 8, !tbaa !5
  %1172 = load i64, ptr %65, align 8, !tbaa !9
  %1173 = load i64, ptr %66, align 8, !tbaa !9
  %1174 = mul nsw i64 %1172, %1173
  %1175 = shl i64 %1174, 1
  %1176 = add nsw i64 %1175, 1
  %1177 = getelementptr inbounds %struct.doublecomplex, ptr %1171, i64 %1176
  %1178 = load ptr, ptr %47, align 8, !tbaa !5
  %1179 = getelementptr inbounds i64, ptr %1178, i64 1
  %1180 = call i32 @ztgsyl_(ptr noundef @.str.4, ptr noundef %69, ptr noundef %66, ptr noundef %65, ptr noundef %1143, ptr noundef %1144, ptr noundef %1147, ptr noundef %1148, ptr noundef %1150, ptr noundef %66, ptr noundef %1153, ptr noundef %1154, ptr noundef %1161, ptr noundef %1162, ptr noundef %1168, ptr noundef %66, ptr noundef %82, ptr noundef %1170, ptr noundef %1177, ptr noundef %58, ptr noundef %1179, ptr noundef %71)
  br label %1181

1181:                                             ; preds = %1129, %1077
  br label %1061

1182:                                             ; preds = %1061
  %1183 = load double, ptr %82, align 8, !tbaa !17
  %1184 = load ptr, ptr %44, align 8, !tbaa !5
  %1185 = getelementptr inbounds double, ptr %1184, i64 2
  %1186 = load double, ptr %1185, align 8, !tbaa !17
  %1187 = fdiv double %1183, %1186
  %1188 = load ptr, ptr %44, align 8, !tbaa !5
  %1189 = getelementptr inbounds double, ptr %1188, i64 2
  store double %1187, ptr %1189, align 8, !tbaa !17
  br label %1190

1190:                                             ; preds = %1182, %806
  br label %1191

1191:                                             ; preds = %1190, %800
  %1192 = load ptr, ptr %30, align 8, !tbaa !5
  %1193 = load i64, ptr %1192, align 8, !tbaa !9
  store i64 %1193, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %1194

1194:                                             ; preds = %1383, %1191
  %1195 = load i64, ptr %64, align 8, !tbaa !9
  %1196 = load i64, ptr %58, align 8, !tbaa !9
  %1197 = icmp sle i64 %1195, %1196
  br i1 %1197, label %1198, label %1386

1198:                                             ; preds = %1194
  %1199 = load ptr, ptr %33, align 8, !tbaa !5
  %1200 = load i64, ptr %64, align 8, !tbaa !9
  %1201 = load i64, ptr %64, align 8, !tbaa !9
  %1202 = load i64, ptr %52, align 8, !tbaa !9
  %1203 = mul nsw i64 %1201, %1202
  %1204 = add nsw i64 %1200, %1203
  %1205 = getelementptr inbounds %struct.doublecomplex, ptr %1199, i64 %1204
  %1206 = call double @z_abs(ptr noundef %1205)
  store double %1206, ptr %82, align 8, !tbaa !17
  %1207 = load double, ptr %82, align 8, !tbaa !17
  %1208 = load double, ptr %84, align 8, !tbaa !17
  %1209 = fcmp ogt double %1207, %1208
  br i1 %1209, label %1210, label %1320

1210:                                             ; preds = %1198
  %1211 = load i64, ptr %64, align 8, !tbaa !9
  %1212 = load i64, ptr %64, align 8, !tbaa !9
  %1213 = load i64, ptr %52, align 8, !tbaa !9
  %1214 = mul nsw i64 %1212, %1213
  %1215 = add nsw i64 %1211, %1214
  store i64 %1215, ptr %59, align 8, !tbaa !9
  %1216 = load ptr, ptr %33, align 8, !tbaa !5
  %1217 = load i64, ptr %59, align 8, !tbaa !9
  %1218 = getelementptr inbounds %struct.doublecomplex, ptr %1216, i64 %1217
  %1219 = getelementptr inbounds %struct.doublecomplex, ptr %1218, i32 0, i32 0
  %1220 = load double, ptr %1219, align 8, !tbaa !11
  %1221 = load double, ptr %82, align 8, !tbaa !17
  %1222 = fdiv double %1220, %1221
  %1223 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 0
  store double %1222, ptr %1223, align 8, !tbaa !11
  %1224 = load ptr, ptr %33, align 8, !tbaa !5
  %1225 = load i64, ptr %59, align 8, !tbaa !9
  %1226 = getelementptr inbounds %struct.doublecomplex, ptr %1224, i64 %1225
  %1227 = getelementptr inbounds %struct.doublecomplex, ptr %1226, i32 0, i32 1
  %1228 = load double, ptr %1227, align 8, !tbaa !14
  %1229 = load double, ptr %82, align 8, !tbaa !17
  %1230 = fdiv double %1228, %1229
  %1231 = getelementptr inbounds %struct.doublecomplex, ptr %62, i32 0, i32 1
  store double %1230, ptr %1231, align 8, !tbaa !14
  call void @d_cnjg(ptr noundef %61, ptr noundef %62)
  %1232 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %1233 = load double, ptr %1232, align 8, !tbaa !11
  %1234 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 0
  store double %1233, ptr %1234, align 8, !tbaa !11
  %1235 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %1236 = load double, ptr %1235, align 8, !tbaa !14
  %1237 = getelementptr inbounds %struct.doublecomplex, ptr %74, i32 0, i32 1
  store double %1236, ptr %1237, align 8, !tbaa !14
  %1238 = load i64, ptr %64, align 8, !tbaa !9
  %1239 = load i64, ptr %64, align 8, !tbaa !9
  %1240 = load i64, ptr %52, align 8, !tbaa !9
  %1241 = mul nsw i64 %1239, %1240
  %1242 = add nsw i64 %1238, %1241
  store i64 %1242, ptr %59, align 8, !tbaa !9
  %1243 = load ptr, ptr %33, align 8, !tbaa !5
  %1244 = load i64, ptr %59, align 8, !tbaa !9
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %1243, i64 %1244
  %1246 = getelementptr inbounds %struct.doublecomplex, ptr %1245, i32 0, i32 0
  %1247 = load double, ptr %1246, align 8, !tbaa !11
  %1248 = load double, ptr %82, align 8, !tbaa !17
  %1249 = fdiv double %1247, %1248
  %1250 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1249, ptr %1250, align 8, !tbaa !11
  %1251 = load ptr, ptr %33, align 8, !tbaa !5
  %1252 = load i64, ptr %59, align 8, !tbaa !9
  %1253 = getelementptr inbounds %struct.doublecomplex, ptr %1251, i64 %1252
  %1254 = getelementptr inbounds %struct.doublecomplex, ptr %1253, i32 0, i32 1
  %1255 = load double, ptr %1254, align 8, !tbaa !14
  %1256 = load double, ptr %82, align 8, !tbaa !17
  %1257 = fdiv double %1255, %1256
  %1258 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %1257, ptr %1258, align 8, !tbaa !14
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  %1260 = load double, ptr %1259, align 8, !tbaa !11
  %1261 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 0
  store double %1260, ptr %1261, align 8, !tbaa !11
  %1262 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  %1263 = load double, ptr %1262, align 8, !tbaa !14
  %1264 = getelementptr inbounds %struct.doublecomplex, ptr %75, i32 0, i32 1
  store double %1263, ptr %1264, align 8, !tbaa !14
  %1265 = load i64, ptr %64, align 8, !tbaa !9
  %1266 = load i64, ptr %64, align 8, !tbaa !9
  %1267 = load i64, ptr %52, align 8, !tbaa !9
  %1268 = mul nsw i64 %1266, %1267
  %1269 = add nsw i64 %1265, %1268
  store i64 %1269, ptr %59, align 8, !tbaa !9
  %1270 = load double, ptr %82, align 8, !tbaa !17
  %1271 = load ptr, ptr %33, align 8, !tbaa !5
  %1272 = load i64, ptr %59, align 8, !tbaa !9
  %1273 = getelementptr inbounds %struct.doublecomplex, ptr %1271, i64 %1272
  %1274 = getelementptr inbounds %struct.doublecomplex, ptr %1273, i32 0, i32 0
  store double %1270, ptr %1274, align 8, !tbaa !11
  %1275 = load ptr, ptr %33, align 8, !tbaa !5
  %1276 = load i64, ptr %59, align 8, !tbaa !9
  %1277 = getelementptr inbounds %struct.doublecomplex, ptr %1275, i64 %1276
  %1278 = getelementptr inbounds %struct.doublecomplex, ptr %1277, i32 0, i32 1
  store double 0.000000e+00, ptr %1278, align 8, !tbaa !14
  %1279 = load ptr, ptr %30, align 8, !tbaa !5
  %1280 = load i64, ptr %1279, align 8, !tbaa !9
  %1281 = load i64, ptr %64, align 8, !tbaa !9
  %1282 = sub nsw i64 %1280, %1281
  store i64 %1282, ptr %59, align 8, !tbaa !9
  %1283 = load ptr, ptr %33, align 8, !tbaa !5
  %1284 = load i64, ptr %64, align 8, !tbaa !9
  %1285 = load i64, ptr %64, align 8, !tbaa !9
  %1286 = add nsw i64 %1285, 1
  %1287 = load i64, ptr %52, align 8, !tbaa !9
  %1288 = mul nsw i64 %1286, %1287
  %1289 = add nsw i64 %1284, %1288
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %1283, i64 %1289
  %1291 = load ptr, ptr %34, align 8, !tbaa !5
  %1292 = call i32 @f2c_zscal(ptr noundef %59, ptr noundef %74, ptr noundef %1290, ptr noundef %1291)
  %1293 = load ptr, ptr %30, align 8, !tbaa !5
  %1294 = load i64, ptr %1293, align 8, !tbaa !9
  %1295 = load i64, ptr %64, align 8, !tbaa !9
  %1296 = sub nsw i64 %1294, %1295
  %1297 = add nsw i64 %1296, 1
  store i64 %1297, ptr %59, align 8, !tbaa !9
  %1298 = load ptr, ptr %31, align 8, !tbaa !5
  %1299 = load i64, ptr %64, align 8, !tbaa !9
  %1300 = load i64, ptr %64, align 8, !tbaa !9
  %1301 = load i64, ptr %50, align 8, !tbaa !9
  %1302 = mul nsw i64 %1300, %1301
  %1303 = add nsw i64 %1299, %1302
  %1304 = getelementptr inbounds %struct.doublecomplex, ptr %1298, i64 %1303
  %1305 = load ptr, ptr %32, align 8, !tbaa !5
  %1306 = call i32 @f2c_zscal(ptr noundef %59, ptr noundef %74, ptr noundef %1304, ptr noundef %1305)
  %1307 = load ptr, ptr %27, align 8, !tbaa !5
  %1308 = load i64, ptr %1307, align 8, !tbaa !9
  %1309 = icmp ne i64 %1308, 0
  br i1 %1309, label %1310, label %1319

1310:                                             ; preds = %1210
  %1311 = load ptr, ptr %30, align 8, !tbaa !5
  %1312 = load ptr, ptr %37, align 8, !tbaa !5
  %1313 = load i64, ptr %64, align 8, !tbaa !9
  %1314 = load i64, ptr %54, align 8, !tbaa !9
  %1315 = mul nsw i64 %1313, %1314
  %1316 = add nsw i64 %1315, 1
  %1317 = getelementptr inbounds %struct.doublecomplex, ptr %1312, i64 %1316
  %1318 = call i32 @f2c_zscal(ptr noundef %1311, ptr noundef %75, ptr noundef %1317, ptr noundef @c__1)
  br label %1319

1319:                                             ; preds = %1310, %1210
  br label %1334

1320:                                             ; preds = %1198
  %1321 = load i64, ptr %64, align 8, !tbaa !9
  %1322 = load i64, ptr %64, align 8, !tbaa !9
  %1323 = load i64, ptr %52, align 8, !tbaa !9
  %1324 = mul nsw i64 %1322, %1323
  %1325 = add nsw i64 %1321, %1324
  store i64 %1325, ptr %59, align 8, !tbaa !9
  %1326 = load ptr, ptr %33, align 8, !tbaa !5
  %1327 = load i64, ptr %59, align 8, !tbaa !9
  %1328 = getelementptr inbounds %struct.doublecomplex, ptr %1326, i64 %1327
  %1329 = getelementptr inbounds %struct.doublecomplex, ptr %1328, i32 0, i32 0
  store double 0.000000e+00, ptr %1329, align 8, !tbaa !11
  %1330 = load ptr, ptr %33, align 8, !tbaa !5
  %1331 = load i64, ptr %59, align 8, !tbaa !9
  %1332 = getelementptr inbounds %struct.doublecomplex, ptr %1330, i64 %1331
  %1333 = getelementptr inbounds %struct.doublecomplex, ptr %1332, i32 0, i32 1
  store double 0.000000e+00, ptr %1333, align 8, !tbaa !14
  br label %1334

1334:                                             ; preds = %1320, %1319
  %1335 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1335, ptr %59, align 8, !tbaa !9
  %1336 = load i64, ptr %64, align 8, !tbaa !9
  %1337 = load i64, ptr %64, align 8, !tbaa !9
  %1338 = load i64, ptr %50, align 8, !tbaa !9
  %1339 = mul nsw i64 %1337, %1338
  %1340 = add nsw i64 %1336, %1339
  store i64 %1340, ptr %60, align 8, !tbaa !9
  %1341 = load ptr, ptr %31, align 8, !tbaa !5
  %1342 = load i64, ptr %60, align 8, !tbaa !9
  %1343 = getelementptr inbounds %struct.doublecomplex, ptr %1341, i64 %1342
  %1344 = getelementptr inbounds %struct.doublecomplex, ptr %1343, i32 0, i32 0
  %1345 = load double, ptr %1344, align 8, !tbaa !11
  %1346 = load ptr, ptr %35, align 8, !tbaa !5
  %1347 = load i64, ptr %59, align 8, !tbaa !9
  %1348 = getelementptr inbounds %struct.doublecomplex, ptr %1346, i64 %1347
  %1349 = getelementptr inbounds %struct.doublecomplex, ptr %1348, i32 0, i32 0
  store double %1345, ptr %1349, align 8, !tbaa !11
  %1350 = load ptr, ptr %31, align 8, !tbaa !5
  %1351 = load i64, ptr %60, align 8, !tbaa !9
  %1352 = getelementptr inbounds %struct.doublecomplex, ptr %1350, i64 %1351
  %1353 = getelementptr inbounds %struct.doublecomplex, ptr %1352, i32 0, i32 1
  %1354 = load double, ptr %1353, align 8, !tbaa !14
  %1355 = load ptr, ptr %35, align 8, !tbaa !5
  %1356 = load i64, ptr %59, align 8, !tbaa !9
  %1357 = getelementptr inbounds %struct.doublecomplex, ptr %1355, i64 %1356
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %1357, i32 0, i32 1
  store double %1354, ptr %1358, align 8, !tbaa !14
  %1359 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1359, ptr %59, align 8, !tbaa !9
  %1360 = load i64, ptr %64, align 8, !tbaa !9
  %1361 = load i64, ptr %64, align 8, !tbaa !9
  %1362 = load i64, ptr %52, align 8, !tbaa !9
  %1363 = mul nsw i64 %1361, %1362
  %1364 = add nsw i64 %1360, %1363
  store i64 %1364, ptr %60, align 8, !tbaa !9
  %1365 = load ptr, ptr %33, align 8, !tbaa !5
  %1366 = load i64, ptr %60, align 8, !tbaa !9
  %1367 = getelementptr inbounds %struct.doublecomplex, ptr %1365, i64 %1366
  %1368 = getelementptr inbounds %struct.doublecomplex, ptr %1367, i32 0, i32 0
  %1369 = load double, ptr %1368, align 8, !tbaa !11
  %1370 = load ptr, ptr %36, align 8, !tbaa !5
  %1371 = load i64, ptr %59, align 8, !tbaa !9
  %1372 = getelementptr inbounds %struct.doublecomplex, ptr %1370, i64 %1371
  %1373 = getelementptr inbounds %struct.doublecomplex, ptr %1372, i32 0, i32 0
  store double %1369, ptr %1373, align 8, !tbaa !11
  %1374 = load ptr, ptr %33, align 8, !tbaa !5
  %1375 = load i64, ptr %60, align 8, !tbaa !9
  %1376 = getelementptr inbounds %struct.doublecomplex, ptr %1374, i64 %1375
  %1377 = getelementptr inbounds %struct.doublecomplex, ptr %1376, i32 0, i32 1
  %1378 = load double, ptr %1377, align 8, !tbaa !14
  %1379 = load ptr, ptr %36, align 8, !tbaa !5
  %1380 = load i64, ptr %59, align 8, !tbaa !9
  %1381 = getelementptr inbounds %struct.doublecomplex, ptr %1379, i64 %1380
  %1382 = getelementptr inbounds %struct.doublecomplex, ptr %1381, i32 0, i32 1
  store double %1378, ptr %1382, align 8, !tbaa !14
  br label %1383

1383:                                             ; preds = %1334
  %1384 = load i64, ptr %64, align 8, !tbaa !9
  %1385 = add nsw i64 %1384, 1
  store i64 %1385, ptr %64, align 8, !tbaa !9
  br label %1194, !llvm.loop !20

1386:                                             ; preds = %1194
  br label %1387

1387:                                             ; preds = %1386, %632, %571
  %1388 = load i64, ptr %78, align 8, !tbaa !9
  %1389 = sitofp i64 %1388 to double
  %1390 = load ptr, ptr %45, align 8, !tbaa !5
  %1391 = getelementptr inbounds %struct.doublecomplex, ptr %1390, i64 1
  %1392 = getelementptr inbounds %struct.doublecomplex, ptr %1391, i32 0, i32 0
  store double %1389, ptr %1392, align 8, !tbaa !11
  %1393 = load ptr, ptr %45, align 8, !tbaa !5
  %1394 = getelementptr inbounds %struct.doublecomplex, ptr %1393, i64 1
  %1395 = getelementptr inbounds %struct.doublecomplex, ptr %1394, i32 0, i32 1
  store double 0.000000e+00, ptr %1395, align 8, !tbaa !14
  %1396 = load i64, ptr %85, align 8, !tbaa !9
  %1397 = load ptr, ptr %47, align 8, !tbaa !5
  %1398 = getelementptr inbounds i64, ptr %1397, i64 1
  store i64 %1396, ptr %1398, align 8, !tbaa !9
  store i32 0, ptr %25, align 4
  store i32 1, ptr %87, align 4
  br label %1399

1399:                                             ; preds = %1387, %511, %503, %230
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #4
  call void @llvm.lifetime.end.p0(i64 24, ptr %76) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %75) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %74) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #4
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #4
  %1400 = load i32, ptr %25, align 4
  ret i32 %1400
}

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

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

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

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

declare double @dlamch_(ptr noundef) #2

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

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

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

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

declare double @z_abs(ptr noundef) #2

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

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

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

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

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

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


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

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

57:                                               ; preds = %24
  %58 = load i64, ptr %22, align 8, !tbaa !5
  %59 = icmp eq i64 %58, -1
  br label %60

60:                                               ; preds = %57, %24
  %61 = phi i1 [ true, %24 ], [ %59, %57 ]
  %62 = load i64, ptr %0, align 8, !tbaa !5
  %or.cond460 = icmp ugt i64 %62, 5
  br i1 %or.cond460, label %.thread, label %63

63:                                               ; preds = %60
  %64 = load i64, ptr %4, align 8, !tbaa !5
  %65 = icmp slt i64 %64, 0
  br i1 %65, label %.thread, label %66

66:                                               ; preds = %63
  %67 = load i64, ptr %6, align 8, !tbaa !5
  %spec.select = tail call i64 @llvm.umax.i64(i64 %64, i64 1)
  %68 = icmp slt i64 %67, %spec.select
  br i1 %68, label %.thread, label %69

69:                                               ; preds = %66
  %70 = load i64, ptr %8, align 8, !tbaa !5
  %71 = icmp slt i64 %70, %spec.select
  br i1 %71, label %.thread, label %72

72:                                               ; preds = %69
  %73 = load i64, ptr %12, align 8, !tbaa !5
  %74 = icmp slt i64 %73, 1
  br i1 %74, label %.thread, label %75

75:                                               ; preds = %72
  %76 = load i64, ptr %1, align 8, !tbaa !5
  %.not = icmp ne i64 %76, 0
  %77 = icmp ult i64 %73, %64
  %or.cond471 = and i1 %77, %.not
  br i1 %or.cond471, label %.thread, label %78

78:                                               ; preds = %75
  %79 = load i64, ptr %14, align 8, !tbaa !5
  %80 = icmp slt i64 %79, 1
  br i1 %80, label %.thread, label %81

81:                                               ; preds = %78
  %82 = load i64, ptr %2, align 8, !tbaa !5
  %.not433 = icmp ne i64 %82, 0
  %83 = icmp ult i64 %79, %64
  %or.cond472 = and i1 %83, %.not433
  br i1 %or.cond472, label %.thread, label %85

.thread:                                          ; preds = %78, %81, %72, %75, %69, %66, %63, %60
  %.sink = phi i64 [ -1, %60 ], [ -5, %63 ], [ -7, %66 ], [ -9, %69 ], [ -13, %75 ], [ -13, %72 ], [ -15, %81 ], [ -15, %78 ]
  %.neg = phi i64 [ 1, %60 ], [ 5, %63 ], [ 7, %66 ], [ 9, %69 ], [ 13, %75 ], [ 13, %72 ], [ 15, %81 ], [ 15, %78 ]
  store i64 %.sink, ptr %23, align 8, !tbaa !5
  store i64 %.neg, ptr %25, align 8, !tbaa !5
  %84 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %25) #6
  br label %427

85:                                               ; preds = %81
  store i64 0, ptr %36, align 8, !tbaa !5
  %86 = icmp eq i64 %62, 1
  %87 = icmp ugt i64 %62, 3
  %spec.select462 = or i1 %86, %87
  store i64 0, ptr %15, align 8, !tbaa !5
  %88 = load i64, ptr %4, align 8, !tbaa !5
  %.not435476 = icmp slt i64 %88, 1
  br i1 %.not435476, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %85
  %89 = add i64 %44, 1
  %90 = add i64 %47, 1
  br label %91

91:                                               ; preds = %.lr.ph, %110
  %92 = phi i64 [ 0, %.lr.ph ], [ %111, %110 ]
  %storemerge477 = phi i64 [ 1, %.lr.ph ], [ %112, %110 ]
  %93 = mul i64 %storemerge477, %89
  %94 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %93
  %95 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %storemerge477
  %96 = load <2 x double>, ptr %94, align 8, !tbaa !9
  store <2 x double> %96, ptr %95, align 8, !tbaa !9
  %97 = mul i64 %storemerge477, %90
  %98 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %97
  %99 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %storemerge477
  %100 = load <2 x double>, ptr %98, align 8, !tbaa !9
  store <2 x double> %100, ptr %99, align 8, !tbaa !9
  %101 = load i64, ptr %4, align 8, !tbaa !5
  %102 = icmp slt i64 %storemerge477, %101
  br i1 %102, label %103, label %106

103:                                              ; preds = %91
  %104 = getelementptr inbounds i64, ptr %43, i64 %storemerge477
  %105 = load i64, ptr %104, align 8, !tbaa !5
  %.not459 = icmp eq i64 %105, 0
  br i1 %.not459, label %110, label %.sink.split

106:                                              ; preds = %91
  %107 = getelementptr inbounds i64, ptr %43, i64 %101
  %108 = load i64, ptr %107, align 8, !tbaa !5
  %.not458 = icmp eq i64 %108, 0
  br i1 %.not458, label %110, label %.sink.split

.sink.split:                                      ; preds = %106, %103
  %109 = add nsw i64 %92, 1
  store i64 %109, ptr %15, align 8, !tbaa !5
  br label %110

110:                                              ; preds = %.sink.split, %103, %106
  %111 = phi i64 [ %92, %103 ], [ %92, %106 ], [ %109, %.sink.split ]
  %112 = add nuw i64 %storemerge477, 1
  %exitcond.not = icmp eq i64 %storemerge477, %88
  br i1 %exitcond.not, label %._crit_edge, label %91, !llvm.loop !11

._crit_edge:                                      ; preds = %110, %85
  %113 = phi i64 [ 0, %85 ], [ %111, %110 ]
  store i64 %88, ptr %26, align 8, !tbaa !5
  %114 = load i64, ptr %0, align 8, !tbaa !5
  switch i64 %114, label %135 [
    i64 1, label %115
    i64 2, label %115
    i64 4, label %115
    i64 3, label %124
    i64 5, label %124
  ]

115:                                              ; preds = %._crit_edge, %._crit_edge, %._crit_edge
  %116 = shl i64 %113, 1
  %117 = load i64, ptr %4, align 8, !tbaa !5
  %118 = sub nsw i64 %117, %113
  %119 = mul nsw i64 %118, %116
  %120 = tail call i64 @llvm.smax.i64(i64 %119, i64 1)
  %121 = add nsw i64 %117, 2
  store i64 %121, ptr %26, align 8, !tbaa !5
  %122 = icmp slt i64 %117, 0
  %123 = select i1 %122, i64 1, i64 %121
  br label %135

124:                                              ; preds = %._crit_edge, %._crit_edge
  %125 = shl i64 %113, 2
  %126 = load i64, ptr %4, align 8, !tbaa !5
  %127 = sub nsw i64 %126, %113
  %128 = mul nsw i64 %127, %125
  %129 = tail call i64 @llvm.smax.i64(i64 %128, i64 1)
  store i64 1, ptr %25, align 8, !tbaa !5
  %130 = shl i64 %113, 1
  %131 = mul nsw i64 %127, %130
  %132 = add nsw i64 %126, 2
  store i64 %132, ptr %26, align 8, !tbaa !5
  %133 = tail call i64 @llvm.smax.i64(i64 %131, i64 %132)
  %134 = tail call i64 @llvm.smax.i64(i64 %133, i64 1)
  br label %135

135:                                              ; preds = %._crit_edge, %124, %115
  %.0411 = phi i64 [ %120, %115 ], [ %129, %124 ], [ 1, %._crit_edge ]
  %.0410 = phi i64 [ %123, %115 ], [ %134, %124 ], [ 1, %._crit_edge ]
  %136 = uitofp nneg i64 %.0411 to double
  store double %136, ptr %19, align 8, !tbaa !13
  %137 = getelementptr inbounds i8, ptr %19, i64 8
  store double 0.000000e+00, ptr %137, align 8, !tbaa !15
  store i64 %.0410, ptr %21, align 8, !tbaa !5
  %138 = load i64, ptr %20, align 8, !tbaa !5
  %139 = icmp sge i64 %138, %.0411
  %or.cond = select i1 %139, i1 true, i1 %61
  br i1 %or.cond, label %140, label %.thread469.sink.split

140:                                              ; preds = %135
  %141 = load i64, ptr %22, align 8, !tbaa !5
  %142 = icmp sge i64 %141, %.0410
  %or.cond3 = select i1 %142, i1 true, i1 %61
  br i1 %or.cond3, label %143, label %.thread469.sink.split

143:                                              ; preds = %140
  %.pr466 = load i64, ptr %23, align 8, !tbaa !5
  %.not440 = icmp eq i64 %.pr466, 0
  br i1 %.not440, label %147, label %.thread469

.thread469.sink.split:                            ; preds = %140, %135
  %.sink506 = phi i64 [ -21, %135 ], [ -23, %140 ]
  store i64 %.sink506, ptr %23, align 8, !tbaa !5
  br label %.thread469

.thread469:                                       ; preds = %.thread469.sink.split, %143
  %144 = phi i64 [ %.pr466, %143 ], [ %.sink506, %.thread469.sink.split ]
  %145 = sub nsw i64 0, %144
  store i64 %145, ptr %25, align 8, !tbaa !5
  %146 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %25) #6
  br label %427

147:                                              ; preds = %143
  br i1 %61, label %427, label %148

148:                                              ; preds = %147
  %149 = load i64, ptr %15, align 8, !tbaa !5
  %150 = load i64, ptr %4, align 8, !tbaa !5
  %151 = icmp eq i64 %149, %150
  %152 = icmp eq i64 %149, 0
  %or.cond463 = or i1 %152, %151
  br i1 %or.cond463, label %153, label %168

153:                                              ; preds = %148
  br i1 %spec.select462, label %154, label %155

154:                                              ; preds = %153
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  br label %155

155:                                              ; preds = %154, %153
  %.off = add nsw i64 %62, -2
  %switch = icmp ult i64 %.off, 4
  br i1 %switch, label %156, label %.loopexit

156:                                              ; preds = %155
  store double 0.000000e+00, ptr %41, align 8, !tbaa !9
  store double 1.000000e+00, ptr %37, align 8, !tbaa !9
  store i64 %150, ptr %25, align 8, !tbaa !5
  %invariant.gep488 = getelementptr i8, ptr %46, i64 16
  %invariant.gep490 = getelementptr i8, ptr %49, i64 16
  %.not457492 = icmp slt i64 %150, 1
  br i1 %.not457492, label %._crit_edge496, label %.lr.ph495

.lr.ph495:                                        ; preds = %156, %.lr.ph495
  %.0412493 = phi i64 [ %161, %.lr.ph495 ], [ 1, %156 ]
  %157 = mul nsw i64 %.0412493, %44
  %gep489 = getelementptr %struct.doublecomplex, ptr %invariant.gep488, i64 %157
  %158 = call i32 @zlassq_(ptr noundef nonnull %4, ptr noundef %gep489, ptr noundef nonnull @c__1, ptr noundef nonnull %41, ptr noundef nonnull %37) #6
  %159 = mul nsw i64 %.0412493, %47
  %gep491 = getelementptr %struct.doublecomplex, ptr %invariant.gep490, i64 %159
  %160 = call i32 @zlassq_(ptr noundef nonnull %4, ptr noundef %gep491, ptr noundef nonnull @c__1, ptr noundef nonnull %41, ptr noundef nonnull %37) #6
  %161 = add nuw nsw i64 %.0412493, 1
  %162 = load i64, ptr %25, align 8, !tbaa !5
  %.not457.not = icmp slt i64 %.0412493, %162
  br i1 %.not457.not, label %.lr.ph495, label %._crit_edge496.loopexit, !llvm.loop !16

._crit_edge496.loopexit:                          ; preds = %.lr.ph495
  %.pre503 = load double, ptr %41, align 8, !tbaa !9
  %.pre504 = load double, ptr %37, align 8, !tbaa !9
  br label %._crit_edge496

._crit_edge496:                                   ; preds = %._crit_edge496.loopexit, %156
  %163 = phi double [ %.pre504, %._crit_edge496.loopexit ], [ 1.000000e+00, %156 ]
  %164 = phi double [ %.pre503, %._crit_edge496.loopexit ], [ 0.000000e+00, %156 ]
  %165 = call double @sqrt(double noundef %163) #6
  %166 = fmul double %164, %165
  store double %166, ptr %18, align 8, !tbaa !9
  %167 = getelementptr inbounds i8, ptr %18, i64 8
  store double %166, ptr %167, align 8, !tbaa !9
  br label %.loopexit

168:                                              ; preds = %148
  %169 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #6
  store i64 0, ptr %32, align 8, !tbaa !5
  %170 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %170, ptr %25, align 8, !tbaa !5
  store i64 1, ptr %29, align 8, !tbaa !5
  %.not442479 = icmp slt i64 %170, 1
  br i1 %.not442479, label %._crit_edge483, label %.lr.ph482

.lr.ph482:                                        ; preds = %168, %187
  %171 = phi i64 [ %188, %187 ], [ %170, %168 ]
  %172 = phi i64 [ %190, %187 ], [ 0, %168 ]
  %storemerge441480 = phi i64 [ %191, %187 ], [ 1, %168 ]
  %173 = getelementptr inbounds i64, ptr %43, i64 %storemerge441480
  %174 = load i64, ptr %173, align 8, !tbaa !5
  %.not455 = icmp eq i64 %174, 0
  br i1 %.not455, label %187, label %175

175:                                              ; preds = %.lr.ph482
  %176 = load i64, ptr %32, align 8, !tbaa !5
  %177 = add nsw i64 %176, 1
  store i64 %177, ptr %32, align 8, !tbaa !5
  %.not456 = icmp eq i64 %storemerge441480, %177
  br i1 %.not456, label %180, label %178

178:                                              ; preds = %175
  %179 = call i32 @ztgexc_(ptr noundef nonnull %1, ptr noundef nonnull %2, ptr noundef nonnull %4, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %11, ptr noundef nonnull %12, ptr noundef %13, ptr noundef nonnull %14, ptr noundef nonnull %29, ptr noundef nonnull %32, ptr noundef nonnull %36) #6
  %.pre = load i64, ptr %36, align 8, !tbaa !5
  br label %180

180:                                              ; preds = %178, %175
  %181 = phi i64 [ %.pre, %178 ], [ %172, %175 ]
  %182 = icmp sgt i64 %181, 0
  br i1 %182, label %183, label %._crit_edge497

._crit_edge497:                                   ; preds = %180
  %.pre498 = load i64, ptr %29, align 8, !tbaa !5
  %.pre499 = load i64, ptr %25, align 8, !tbaa !5
  br label %187

183:                                              ; preds = %180
  store i64 1, ptr %23, align 8, !tbaa !5
  br i1 %spec.select462, label %184, label %185

184:                                              ; preds = %183
  store double 0.000000e+00, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  br label %185

185:                                              ; preds = %184, %183
  %.off473 = add nsw i64 %62, -2
  %switch474 = icmp ult i64 %.off473, 4
  br i1 %switch474, label %186, label %.loopexit

186:                                              ; preds = %185
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %18, i8 0, i64 16, i1 false)
  br label %.loopexit

187:                                              ; preds = %._crit_edge497, %.lr.ph482
  %188 = phi i64 [ %171, %.lr.ph482 ], [ %.pre499, %._crit_edge497 ]
  %189 = phi i64 [ %storemerge441480, %.lr.ph482 ], [ %.pre498, %._crit_edge497 ]
  %190 = phi i64 [ %172, %.lr.ph482 ], [ %181, %._crit_edge497 ]
  %191 = add nsw i64 %189, 1
  store i64 %191, ptr %29, align 8, !tbaa !5
  %.not442.not = icmp slt i64 %189, %188
  br i1 %.not442.not, label %.lr.ph482, label %._crit_edge483, !llvm.loop !17

._crit_edge483:                                   ; preds = %187, %168
  br i1 %spec.select462, label %192, label %263

192:                                              ; preds = %._crit_edge483
  %193 = load i64, ptr %15, align 8, !tbaa !5
  store i64 %193, ptr %30, align 8, !tbaa !5
  %194 = load i64, ptr %4, align 8, !tbaa !5
  %195 = sub nsw i64 %194, %193
  store i64 %195, ptr %31, align 8, !tbaa !5
  %196 = add nsw i64 %193, 1
  %197 = mul nsw i64 %196, %44
  %198 = getelementptr %struct.doublecomplex, ptr %46, i64 %197
  %199 = getelementptr i8, ptr %198, i64 16
  %200 = call i32 @zlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %199, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %30) #6
  %201 = mul nsw i64 %196, %47
  %202 = getelementptr %struct.doublecomplex, ptr %49, i64 %201
  %203 = getelementptr i8, ptr %202, i64 16
  %204 = load i64, ptr %30, align 8, !tbaa !5
  %205 = load i64, ptr %31, align 8, !tbaa !5
  %206 = mul nsw i64 %205, %204
  %207 = getelementptr %struct.doublecomplex, ptr %19, i64 %206
  %208 = call i32 @zlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %203, ptr noundef nonnull %8, ptr noundef %207, ptr noundef nonnull %30) #6
  store i64 0, ptr %34, align 8, !tbaa !5
  %209 = load i64, ptr %20, align 8, !tbaa !5
  %210 = load i64, ptr %30, align 8, !tbaa !5
  %211 = shl i64 %210, 1
  %212 = load i64, ptr %31, align 8, !tbaa !5
  %213 = mul nsw i64 %211, %212
  %214 = sub nsw i64 %209, %213
  store i64 %214, ptr %25, align 8, !tbaa !5
  %215 = getelementptr %struct.doublecomplex, ptr %46, i64 %196
  %216 = getelementptr %struct.doublecomplex, ptr %215, i64 %197
  %217 = getelementptr %struct.doublecomplex, ptr %49, i64 %196
  %218 = getelementptr %struct.doublecomplex, ptr %217, i64 %201
  %219 = mul nsw i64 %212, %210
  %220 = getelementptr %struct.doublecomplex, ptr %19, i64 %219
  %.idx = shl i64 %219, 5
  %221 = getelementptr i8, ptr %19, i64 %.idx
  %222 = call i32 @ztgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %34, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %216, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %30, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %218, ptr noundef nonnull %8, ptr noundef %220, ptr noundef nonnull %30, ptr noundef nonnull %41, ptr noundef %18, ptr noundef %221, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #6
  store double 0.000000e+00, ptr %42, align 8, !tbaa !9
  store double 1.000000e+00, ptr %37, align 8, !tbaa !9
  %223 = load i64, ptr %30, align 8, !tbaa !5
  %224 = load i64, ptr %31, align 8, !tbaa !5
  %225 = mul nsw i64 %224, %223
  store i64 %225, ptr %25, align 8, !tbaa !5
  %226 = call i32 @zlassq_(ptr noundef nonnull %25, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %37) #6
  %227 = load double, ptr %42, align 8, !tbaa !9
  %228 = load double, ptr %37, align 8, !tbaa !9
  %229 = call double @sqrt(double noundef %228) #6
  %230 = fmul double %227, %229
  store double %230, ptr %16, align 8, !tbaa !9
  %231 = fcmp oeq double %230, 0.000000e+00
  br i1 %231, label %242, label %232

232:                                              ; preds = %192
  %233 = load double, ptr %41, align 8, !tbaa !9
  %234 = fmul double %233, %233
  %235 = fdiv double %234, %230
  %236 = fadd double %230, %235
  %237 = call double @sqrt(double noundef %236) #6
  %238 = load double, ptr %16, align 8, !tbaa !9
  %239 = call double @sqrt(double noundef %238) #6
  %240 = fmul double %237, %239
  %241 = fdiv double %233, %240
  br label %242

242:                                              ; preds = %192, %232
  %storemerge443 = phi double [ %241, %232 ], [ 1.000000e+00, %192 ]
  store double %storemerge443, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %42, align 8, !tbaa !9
  store double 1.000000e+00, ptr %37, align 8, !tbaa !9
  %243 = load i64, ptr %30, align 8, !tbaa !5
  %244 = load i64, ptr %31, align 8, !tbaa !5
  %245 = mul nsw i64 %244, %243
  store i64 %245, ptr %25, align 8, !tbaa !5
  %246 = getelementptr %struct.doublecomplex, ptr %19, i64 %245
  %247 = call i32 @zlassq_(ptr noundef nonnull %25, ptr noundef %246, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %37) #6
  %248 = load double, ptr %42, align 8, !tbaa !9
  %249 = load double, ptr %37, align 8, !tbaa !9
  %250 = call double @sqrt(double noundef %249) #6
  %251 = fmul double %248, %250
  store double %251, ptr %17, align 8, !tbaa !9
  %252 = fcmp oeq double %251, 0.000000e+00
  br i1 %252, label %.sink.split507, label %253

253:                                              ; preds = %242
  %254 = load double, ptr %41, align 8, !tbaa !9
  %255 = fmul double %254, %254
  %256 = fdiv double %255, %251
  %257 = fadd double %251, %256
  %258 = call double @sqrt(double noundef %257) #6
  %259 = load double, ptr %17, align 8, !tbaa !9
  %260 = call double @sqrt(double noundef %259) #6
  %261 = fmul double %258, %260
  %262 = fdiv double %254, %261
  br label %.sink.split507

.sink.split507:                                   ; preds = %242, %253
  %.sink508 = phi double [ %262, %253 ], [ 1.000000e+00, %242 ]
  store double %.sink508, ptr %17, align 8, !tbaa !9
  br label %263

263:                                              ; preds = %.sink.split507, %._crit_edge483
  switch i64 %62, label %368 [
    i64 4, label %264
    i64 2, label %264
    i64 3, label %294
    i64 5, label %294
  ]

264:                                              ; preds = %263, %263
  %265 = load i64, ptr %15, align 8, !tbaa !5
  store i64 %265, ptr %30, align 8, !tbaa !5
  %266 = load i64, ptr %4, align 8, !tbaa !5
  %267 = sub nsw i64 %266, %265
  store i64 %267, ptr %31, align 8, !tbaa !5
  %268 = add nsw i64 %265, 1
  store i64 3, ptr %34, align 8, !tbaa !5
  %269 = load i64, ptr %20, align 8, !tbaa !5
  %270 = shl i64 %265, 1
  %271 = mul nsw i64 %270, %267
  %272 = sub nsw i64 %269, %271
  store i64 %272, ptr %25, align 8, !tbaa !5
  %273 = add i64 %44, 1
  %274 = mul i64 %268, %273
  %275 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %274
  %276 = add i64 %47, 1
  %277 = mul i64 %268, %276
  %278 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %277
  %279 = mul nsw i64 %267, %265
  %280 = getelementptr %struct.doublecomplex, ptr %19, i64 %279
  %.idx450 = shl i64 %279, 5
  %281 = getelementptr i8, ptr %19, i64 %.idx450
  %282 = call i32 @ztgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %34, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %275, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %30, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %278, ptr noundef nonnull %8, ptr noundef %280, ptr noundef nonnull %30, ptr noundef nonnull %41, ptr noundef %18, ptr noundef %281, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #6
  %283 = load i64, ptr %20, align 8, !tbaa !5
  %284 = load i64, ptr %30, align 8, !tbaa !5
  %285 = shl i64 %284, 1
  %286 = load i64, ptr %31, align 8, !tbaa !5
  %287 = mul nsw i64 %285, %286
  %288 = sub nsw i64 %283, %287
  store i64 %288, ptr %25, align 8, !tbaa !5
  %289 = mul nsw i64 %286, %284
  %290 = getelementptr %struct.doublecomplex, ptr %19, i64 %289
  %291 = getelementptr inbounds i8, ptr %18, i64 8
  %.idx451 = shl i64 %289, 5
  %292 = getelementptr i8, ptr %19, i64 %.idx451
  %293 = call i32 @ztgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %34, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %275, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %31, ptr noundef %278, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %290, ptr noundef nonnull %31, ptr noundef nonnull %41, ptr noundef nonnull %291, ptr noundef %292, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #6
  br label %368

294:                                              ; preds = %263, %263
  store i64 0, ptr %35, align 8, !tbaa !5
  %295 = load i64, ptr %15, align 8, !tbaa !5
  store i64 %295, ptr %30, align 8, !tbaa !5
  %296 = load i64, ptr %4, align 8, !tbaa !5
  %297 = sub nsw i64 %296, %295
  store i64 %297, ptr %31, align 8, !tbaa !5
  %298 = add nsw i64 %295, 1
  store i64 0, ptr %34, align 8, !tbaa !5
  %299 = shl i64 %295, 1
  %300 = mul nsw i64 %299, %297
  store i64 %300, ptr %33, align 8, !tbaa !5
  %301 = add i64 %44, 1
  %302 = mul i64 %298, %301
  %303 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %302
  %304 = add i64 %47, 1
  %305 = mul i64 %298, %304
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %305
  br label %307

307:                                              ; preds = %328, %294
  %308 = phi i64 [ %.pre500, %328 ], [ %300, %294 ]
  %309 = getelementptr %struct.doublecomplex, ptr %19, i64 %308
  %310 = call i32 @zlacn2_(ptr noundef nonnull %33, ptr noundef %309, ptr noundef nonnull %19, ptr noundef %18, ptr noundef nonnull %35, ptr noundef nonnull %40) #6
  %311 = load i64, ptr %35, align 8, !tbaa !5
  switch i64 %311, label %320 [
    i64 0, label %332
    i64 1, label %312
  ]

312:                                              ; preds = %307
  %313 = load i64, ptr %20, align 8, !tbaa !5
  %314 = load i64, ptr %30, align 8, !tbaa !5
  %315 = shl i64 %314, 1
  %316 = load i64, ptr %31, align 8, !tbaa !5
  %317 = mul nsw i64 %315, %316
  %318 = sub nsw i64 %313, %317
  store i64 %318, ptr %25, align 8, !tbaa !5
  %319 = mul nsw i64 %316, %314
  br label %328

320:                                              ; preds = %307
  %321 = load i64, ptr %20, align 8, !tbaa !5
  %322 = load i64, ptr %30, align 8, !tbaa !5
  %323 = shl i64 %322, 1
  %324 = load i64, ptr %31, align 8, !tbaa !5
  %325 = mul nsw i64 %323, %324
  %326 = sub nsw i64 %321, %325
  store i64 %326, ptr %25, align 8, !tbaa !5
  %327 = mul nsw i64 %324, %322
  br label %328

328:                                              ; preds = %320, %312
  %.sink512 = phi i64 [ %327, %320 ], [ %319, %312 ]
  %.str.4.sink = phi ptr [ @.str.4, %320 ], [ @.str.3, %312 ]
  %329 = getelementptr %struct.doublecomplex, ptr %19, i64 %.sink512
  %.idx448 = shl i64 %.sink512, 5
  %330 = getelementptr i8, ptr %19, i64 %.idx448
  %331 = call i32 @ztgsyl_(ptr noundef nonnull %.str.4.sink, ptr noundef nonnull %34, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %303, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %30, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %306, ptr noundef nonnull %8, ptr noundef %329, ptr noundef nonnull %30, ptr noundef nonnull %41, ptr noundef %18, ptr noundef %330, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #6
  %.pre500 = load i64, ptr %33, align 8, !tbaa !5
  br label %307

332:                                              ; preds = %307
  %333 = load double, ptr %41, align 8, !tbaa !9
  %334 = load double, ptr %18, align 8, !tbaa !9
  %335 = fdiv double %333, %334
  store double %335, ptr %18, align 8, !tbaa !9
  %336 = getelementptr inbounds i8, ptr %18, i64 8
  br label %337

337:                                              ; preds = %.backedge, %332
  %338 = load i64, ptr %33, align 8, !tbaa !5
  %339 = getelementptr %struct.doublecomplex, ptr %19, i64 %338
  %340 = call i32 @zlacn2_(ptr noundef nonnull %33, ptr noundef %339, ptr noundef nonnull %19, ptr noundef nonnull %336, ptr noundef nonnull %35, ptr noundef nonnull %40) #6
  %341 = load i64, ptr %35, align 8, !tbaa !5
  switch i64 %341, label %353 [
    i64 0, label %364
    i64 1, label %342
  ]

342:                                              ; preds = %337
  %343 = load i64, ptr %20, align 8, !tbaa !5
  %344 = load i64, ptr %30, align 8, !tbaa !5
  %345 = shl i64 %344, 1
  %346 = load i64, ptr %31, align 8, !tbaa !5
  %347 = mul nsw i64 %345, %346
  %348 = sub nsw i64 %343, %347
  store i64 %348, ptr %25, align 8, !tbaa !5
  %349 = mul nsw i64 %346, %344
  %350 = getelementptr %struct.doublecomplex, ptr %19, i64 %349
  %.idx447 = shl i64 %349, 5
  %351 = getelementptr i8, ptr %19, i64 %.idx447
  %352 = call i32 @ztgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %34, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %303, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %31, ptr noundef %306, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %350, ptr noundef nonnull %31, ptr noundef nonnull %41, ptr noundef nonnull %336, ptr noundef %351, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #6
  br label %.backedge

353:                                              ; preds = %337
  %354 = load i64, ptr %20, align 8, !tbaa !5
  %355 = load i64, ptr %30, align 8, !tbaa !5
  %356 = shl i64 %355, 1
  %357 = load i64, ptr %31, align 8, !tbaa !5
  %358 = mul nsw i64 %356, %357
  %359 = sub nsw i64 %354, %358
  store i64 %359, ptr %25, align 8, !tbaa !5
  %360 = mul nsw i64 %357, %355
  %361 = getelementptr %struct.doublecomplex, ptr %19, i64 %360
  %.idx446 = shl i64 %360, 5
  %362 = getelementptr i8, ptr %19, i64 %.idx446
  %363 = call i32 @ztgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %34, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %303, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %31, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %306, ptr noundef nonnull %8, ptr noundef %361, ptr noundef nonnull %31, ptr noundef nonnull %41, ptr noundef nonnull %336, ptr noundef %362, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #6
  br label %.backedge

.backedge:                                        ; preds = %353, %342
  br label %337

364:                                              ; preds = %337
  %365 = load double, ptr %41, align 8, !tbaa !9
  %366 = load double, ptr %336, align 8, !tbaa !9
  %367 = fdiv double %365, %366
  store double %367, ptr %336, align 8, !tbaa !9
  br label %368

368:                                              ; preds = %263, %264, %364
  %369 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %369, ptr %25, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %54, i64 16
  store i64 1, ptr %29, align 8, !tbaa !5
  %.not453484 = icmp slt i64 %369, 1
  br i1 %.not453484, label %.loopexit, label %.lr.ph487

.lr.ph487:                                        ; preds = %368
  %370 = add i64 %47, 1
  %371 = add i64 %44, 1
  br label %372

372:                                              ; preds = %.lr.ph487, %415
  %storemerge452485 = phi i64 [ 1, %.lr.ph487 ], [ %425, %415 ]
  %373 = mul i64 %storemerge452485, %370
  %374 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %373
  %375 = call double @z_abs(ptr noundef %374) #6
  store double %375, ptr %41, align 8, !tbaa !9
  %376 = fcmp ogt double %375, %169
  %377 = load i64, ptr %29, align 8, !tbaa !5
  %378 = mul i64 %377, %370
  br i1 %376, label %379, label %413

379:                                              ; preds = %372
  store i64 %378, ptr %26, align 8, !tbaa !5
  %380 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %378
  %381 = load <2 x double>, ptr %380, align 8, !tbaa !9
  %382 = insertelement <2 x double> poison, double %375, i64 0
  %383 = shufflevector <2 x double> %382, <2 x double> poison, <2 x i32> zeroinitializer
  %384 = fdiv <2 x double> %381, %383
  store <2 x double> %384, ptr %28, align 16, !tbaa !9
  call void @d_cnjg(ptr noundef nonnull %27, ptr noundef nonnull %28) #6
  %385 = load <2 x double>, ptr %27, align 16, !tbaa !9
  store <2 x double> %385, ptr %38, align 16, !tbaa !9
  %386 = load i64, ptr %29, align 8, !tbaa !5
  %387 = mul i64 %386, %370
  %388 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %387
  %389 = load double, ptr %41, align 8, !tbaa !9
  %390 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %387, i32 1
  %391 = load <2 x double>, ptr %388, align 8, !tbaa !9
  %392 = insertelement <2 x double> poison, double %389, i64 0
  %393 = shufflevector <2 x double> %392, <2 x double> poison, <2 x i32> zeroinitializer
  %394 = fdiv <2 x double> %391, %393
  store <2 x double> %394, ptr %27, align 16, !tbaa !9
  store <2 x double> %394, ptr %39, align 16, !tbaa !9
  store double %389, ptr %388, align 8, !tbaa !13
  store double 0.000000e+00, ptr %390, align 8, !tbaa !15
  %395 = load i64, ptr %4, align 8, !tbaa !5
  %396 = sub nsw i64 %395, %386
  store i64 %396, ptr %26, align 8, !tbaa !5
  %397 = add nsw i64 %386, 1
  %398 = mul nsw i64 %397, %47
  %399 = getelementptr %struct.doublecomplex, ptr %49, i64 %386
  %400 = getelementptr %struct.doublecomplex, ptr %399, i64 %398
  %401 = call i32 @f2c_zscal(ptr noundef nonnull %26, ptr noundef nonnull %38, ptr noundef %400, ptr noundef nonnull %8) #6
  %402 = load i64, ptr %4, align 8, !tbaa !5
  %403 = load i64, ptr %29, align 8, !tbaa !5
  %404 = add i64 %402, 1
  %405 = sub i64 %404, %403
  store i64 %405, ptr %26, align 8, !tbaa !5
  %406 = mul i64 %403, %371
  %407 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %406
  %408 = call i32 @f2c_zscal(ptr noundef nonnull %26, ptr noundef nonnull %38, ptr noundef %407, ptr noundef nonnull %6) #6
  %409 = load i64, ptr %1, align 8, !tbaa !5
  %.not454 = icmp eq i64 %409, 0
  %.pre502 = load i64, ptr %29, align 8, !tbaa !5
  br i1 %.not454, label %415, label %410

410:                                              ; preds = %379
  %411 = mul nsw i64 %.pre502, %52
  %gep = getelementptr %struct.doublecomplex, ptr %invariant.gep, i64 %411
  %412 = call i32 @f2c_zscal(ptr noundef nonnull %4, ptr noundef nonnull %39, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %.pre501 = load i64, ptr %29, align 8, !tbaa !5
  br label %415

413:                                              ; preds = %372
  %414 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %378
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %414, i8 0, i64 16, i1 false)
  br label %415

415:                                              ; preds = %379, %410, %413
  %416 = phi i64 [ %.pre502, %379 ], [ %.pre501, %410 ], [ %377, %413 ]
  %417 = mul i64 %416, %371
  %418 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %417
  %419 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %416
  %420 = load <2 x double>, ptr %418, align 8, !tbaa !9
  store <2 x double> %420, ptr %419, align 8, !tbaa !9
  store i64 %416, ptr %26, align 8, !tbaa !5
  %421 = mul i64 %416, %370
  %422 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %421
  %423 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %416
  %424 = load <2 x double>, ptr %422, align 8, !tbaa !9
  store <2 x double> %424, ptr %423, align 8, !tbaa !9
  %425 = add nsw i64 %416, 1
  store i64 %425, ptr %29, align 8, !tbaa !5
  %426 = load i64, ptr %25, align 8, !tbaa !5
  %.not453.not = icmp slt i64 %416, %426
  br i1 %.not453.not, label %372, label %.loopexit, !llvm.loop !18

.loopexit:                                        ; preds = %415, %368, %185, %155, %186, %._crit_edge496
  store double %136, ptr %19, align 8, !tbaa !13
  store double 0.000000e+00, ptr %137, align 8, !tbaa !15
  store i64 %.0410, ptr %21, align 8, !tbaa !5
  br label %427

427:                                              ; preds = %147, %.loopexit, %.thread469, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #6
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #6
  ret i32 0
}

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

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

declare i32 @zlassq_(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 double @dlamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

declare double @z_abs(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #5

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

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

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


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