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

144:                                              ; preds = %24
  %145 = load ptr, ptr %47, align 8, !tbaa !5
  %146 = load i32, ptr %145, align 4, !tbaa !9
  %147 = icmp eq i32 %146, -1
  br label %148

148:                                              ; preds = %144, %24
  %149 = phi i1 [ true, %24 ], [ %147, %144 ]
  %150 = zext i1 %149 to i32
  store i32 %150, ptr %84, align 4, !tbaa !9
  %151 = load ptr, ptr %25, align 8, !tbaa !5
  %152 = load i32, ptr %151, align 4, !tbaa !9
  %153 = icmp slt i32 %152, 0
  br i1 %153, label %158, label %154

154:                                              ; preds = %148
  %155 = load ptr, ptr %25, align 8, !tbaa !5
  %156 = load i32, ptr %155, align 4, !tbaa !9
  %157 = icmp sgt i32 %156, 5
  br i1 %157, label %158, label %160

158:                                              ; preds = %154, %148
  %159 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -1, ptr %159, align 4, !tbaa !9
  br label %233

160:                                              ; preds = %154
  %161 = load ptr, ptr %29, align 8, !tbaa !5
  %162 = load i32, ptr %161, align 4, !tbaa !9
  %163 = icmp slt i32 %162, 0
  br i1 %163, label %164, label %166

164:                                              ; preds = %160
  %165 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -5, ptr %165, align 4, !tbaa !9
  br label %232

166:                                              ; preds = %160
  %167 = load ptr, ptr %31, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = load ptr, ptr %29, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = icmp sge i32 1, %170
  br i1 %171, label %172, label %173

172:                                              ; preds = %166
  br label %176

173:                                              ; preds = %166
  %174 = load ptr, ptr %29, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  br label %176

176:                                              ; preds = %173, %172
  %177 = phi i32 [ 1, %172 ], [ %175, %173 ]
  %178 = icmp slt i32 %168, %177
  br i1 %178, label %179, label %181

179:                                              ; preds = %176
  %180 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -7, ptr %180, align 4, !tbaa !9
  br label %231

181:                                              ; preds = %176
  %182 = load ptr, ptr %33, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = load ptr, ptr %29, align 8, !tbaa !5
  %185 = load i32, ptr %184, align 4, !tbaa !9
  %186 = icmp sge i32 1, %185
  br i1 %186, label %187, label %188

187:                                              ; preds = %181
  br label %191

188:                                              ; preds = %181
  %189 = load ptr, ptr %29, align 8, !tbaa !5
  %190 = load i32, ptr %189, align 4, !tbaa !9
  br label %191

191:                                              ; preds = %188, %187
  %192 = phi i32 [ 1, %187 ], [ %190, %188 ]
  %193 = icmp slt i32 %183, %192
  br i1 %193, label %194, label %196

194:                                              ; preds = %191
  %195 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -9, ptr %195, align 4, !tbaa !9
  br label %230

196:                                              ; preds = %191
  %197 = load ptr, ptr %37, align 8, !tbaa !5
  %198 = load i32, ptr %197, align 4, !tbaa !9
  %199 = icmp slt i32 %198, 1
  br i1 %199, label %210, label %200

200:                                              ; preds = %196
  %201 = load ptr, ptr %26, align 8, !tbaa !5
  %202 = load i32, ptr %201, align 4, !tbaa !9
  %203 = icmp ne i32 %202, 0
  br i1 %203, label %204, label %212

204:                                              ; preds = %200
  %205 = load ptr, ptr %37, align 8, !tbaa !5
  %206 = load i32, ptr %205, align 4, !tbaa !9
  %207 = load ptr, ptr %29, align 8, !tbaa !5
  %208 = load i32, ptr %207, align 4, !tbaa !9
  %209 = icmp slt i32 %206, %208
  br i1 %209, label %210, label %212

210:                                              ; preds = %204, %196
  %211 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -13, ptr %211, align 4, !tbaa !9
  br label %229

212:                                              ; preds = %204, %200
  %213 = load ptr, ptr %39, align 8, !tbaa !5
  %214 = load i32, ptr %213, align 4, !tbaa !9
  %215 = icmp slt i32 %214, 1
  br i1 %215, label %226, label %216

216:                                              ; preds = %212
  %217 = load ptr, ptr %27, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = icmp ne i32 %218, 0
  br i1 %219, label %220, label %228

220:                                              ; preds = %216
  %221 = load ptr, ptr %39, align 8, !tbaa !5
  %222 = load i32, ptr %221, align 4, !tbaa !9
  %223 = load ptr, ptr %29, align 8, !tbaa !5
  %224 = load i32, ptr %223, align 4, !tbaa !9
  %225 = icmp slt i32 %222, %224
  br i1 %225, label %226, label %228

226:                                              ; preds = %220, %212
  %227 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -15, ptr %227, align 4, !tbaa !9
  br label %228

228:                                              ; preds = %226, %220, %216
  br label %229

229:                                              ; preds = %228, %210
  br label %230

230:                                              ; preds = %229, %194
  br label %231

231:                                              ; preds = %230, %179
  br label %232

232:                                              ; preds = %231, %164
  br label %233

233:                                              ; preds = %232, %158
  %234 = load ptr, ptr %48, align 8, !tbaa !5
  %235 = load i32, ptr %234, align 4, !tbaa !9
  %236 = icmp ne i32 %235, 0
  br i1 %236, label %237, label %242

237:                                              ; preds = %233
  %238 = load ptr, ptr %48, align 8, !tbaa !5
  %239 = load i32, ptr %238, align 4, !tbaa !9
  %240 = sub nsw i32 0, %239
  store i32 %240, ptr %57, align 4, !tbaa !9
  %241 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %57, i32 noundef 6)
  store i32 1, ptr %86, align 4
  br label %1492

242:                                              ; preds = %233
  store i32 0, ptr %63, align 4, !tbaa !9
  %243 = load ptr, ptr %25, align 8, !tbaa !5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = icmp eq i32 %244, 1
  br i1 %245, label %250, label %246

246:                                              ; preds = %242
  %247 = load ptr, ptr %25, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = icmp sge i32 %248, 4
  br label %250

250:                                              ; preds = %246, %242
  %251 = phi i1 [ true, %242 ], [ %249, %246 ]
  %252 = zext i1 %251 to i32
  store i32 %252, ptr %73, align 4, !tbaa !9
  %253 = load ptr, ptr %25, align 8, !tbaa !5
  %254 = load i32, ptr %253, align 4, !tbaa !9
  %255 = icmp eq i32 %254, 2
  br i1 %255, label %260, label %256

256:                                              ; preds = %250
  %257 = load ptr, ptr %25, align 8, !tbaa !5
  %258 = load i32, ptr %257, align 4, !tbaa !9
  %259 = icmp eq i32 %258, 4
  br label %260

260:                                              ; preds = %256, %250
  %261 = phi i1 [ true, %250 ], [ %259, %256 ]
  %262 = zext i1 %261 to i32
  store i32 %262, ptr %76, align 4, !tbaa !9
  %263 = load ptr, ptr %25, align 8, !tbaa !5
  %264 = load i32, ptr %263, align 4, !tbaa !9
  %265 = icmp eq i32 %264, 3
  br i1 %265, label %270, label %266

266:                                              ; preds = %260
  %267 = load ptr, ptr %25, align 8, !tbaa !5
  %268 = load i32, ptr %267, align 4, !tbaa !9
  %269 = icmp eq i32 %268, 5
  br label %270

270:                                              ; preds = %266, %260
  %271 = phi i1 [ true, %260 ], [ %269, %266 ]
  %272 = zext i1 %271 to i32
  store i32 %272, ptr %77, align 4, !tbaa !9
  %273 = load i32, ptr %76, align 4, !tbaa !9
  %274 = icmp ne i32 %273, 0
  br i1 %274, label %278, label %275

275:                                              ; preds = %270
  %276 = load i32, ptr %77, align 4, !tbaa !9
  %277 = icmp ne i32 %276, 0
  br label %278

278:                                              ; preds = %275, %270
  %279 = phi i1 [ true, %270 ], [ %277, %275 ]
  %280 = zext i1 %279 to i32
  store i32 %280, ptr %71, align 4, !tbaa !9
  %281 = load ptr, ptr %40, align 8, !tbaa !5
  store i32 0, ptr %281, align 4, !tbaa !9
  %282 = load i32, ptr %84, align 4, !tbaa !9
  %283 = icmp ne i32 %282, 0
  br i1 %283, label %284, label %288

284:                                              ; preds = %278
  %285 = load ptr, ptr %25, align 8, !tbaa !5
  %286 = load i32, ptr %285, align 4, !tbaa !9
  %287 = icmp ne i32 %286, 0
  br i1 %287, label %288, label %386

288:                                              ; preds = %284, %278
  %289 = load ptr, ptr %29, align 8, !tbaa !5
  %290 = load i32, ptr %289, align 4, !tbaa !9
  store i32 %290, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %382, %288
  %292 = load i32, ptr %69, align 4, !tbaa !9
  %293 = load i32, ptr %57, align 4, !tbaa !9
  %294 = icmp sle i32 %292, %293
  br i1 %294, label %295, label %385

295:                                              ; preds = %291
  %296 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %296, ptr %58, align 4, !tbaa !9
  %297 = load i32, ptr %69, align 4, !tbaa !9
  %298 = load i32, ptr %69, align 4, !tbaa !9
  %299 = load i32, ptr %49, align 4, !tbaa !9
  %300 = mul nsw i32 %298, %299
  %301 = add nsw i32 %297, %300
  store i32 %301, ptr %59, align 4, !tbaa !9
  %302 = load ptr, ptr %30, align 8, !tbaa !5
  %303 = load i32, ptr %59, align 4, !tbaa !9
  %304 = sext i32 %303 to i64
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %302, i64 %304
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %305, i32 0, i32 0
  %307 = load double, ptr %306, align 8, !tbaa !11
  %308 = load ptr, ptr %34, align 8, !tbaa !5
  %309 = load i32, ptr %58, align 4, !tbaa !9
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds %struct.doublecomplex, ptr %308, i64 %310
  %312 = getelementptr inbounds %struct.doublecomplex, ptr %311, i32 0, i32 0
  store double %307, ptr %312, align 8, !tbaa !11
  %313 = load ptr, ptr %30, align 8, !tbaa !5
  %314 = load i32, ptr %59, align 4, !tbaa !9
  %315 = sext i32 %314 to i64
  %316 = getelementptr inbounds %struct.doublecomplex, ptr %313, i64 %315
  %317 = getelementptr inbounds %struct.doublecomplex, ptr %316, i32 0, i32 1
  %318 = load double, ptr %317, align 8, !tbaa !14
  %319 = load ptr, ptr %34, align 8, !tbaa !5
  %320 = load i32, ptr %58, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds %struct.doublecomplex, ptr %319, i64 %321
  %323 = getelementptr inbounds %struct.doublecomplex, ptr %322, i32 0, i32 1
  store double %318, ptr %323, align 8, !tbaa !14
  %324 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %324, ptr %58, align 4, !tbaa !9
  %325 = load i32, ptr %69, align 4, !tbaa !9
  %326 = load i32, ptr %69, align 4, !tbaa !9
  %327 = load i32, ptr %51, align 4, !tbaa !9
  %328 = mul nsw i32 %326, %327
  %329 = add nsw i32 %325, %328
  store i32 %329, ptr %59, align 4, !tbaa !9
  %330 = load ptr, ptr %32, align 8, !tbaa !5
  %331 = load i32, ptr %59, align 4, !tbaa !9
  %332 = sext i32 %331 to i64
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %330, i64 %332
  %334 = getelementptr inbounds %struct.doublecomplex, ptr %333, i32 0, i32 0
  %335 = load double, ptr %334, align 8, !tbaa !11
  %336 = load ptr, ptr %35, align 8, !tbaa !5
  %337 = load i32, ptr %58, align 4, !tbaa !9
  %338 = sext i32 %337 to i64
  %339 = getelementptr inbounds %struct.doublecomplex, ptr %336, i64 %338
  %340 = getelementptr inbounds %struct.doublecomplex, ptr %339, i32 0, i32 0
  store double %335, ptr %340, align 8, !tbaa !11
  %341 = load ptr, ptr %32, align 8, !tbaa !5
  %342 = load i32, ptr %59, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds %struct.doublecomplex, ptr %341, i64 %343
  %345 = getelementptr inbounds %struct.doublecomplex, ptr %344, i32 0, i32 1
  %346 = load double, ptr %345, align 8, !tbaa !14
  %347 = load ptr, ptr %35, align 8, !tbaa !5
  %348 = load i32, ptr %58, align 4, !tbaa !9
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds %struct.doublecomplex, ptr %347, i64 %349
  %351 = getelementptr inbounds %struct.doublecomplex, ptr %350, i32 0, i32 1
  store double %346, ptr %351, align 8, !tbaa !14
  %352 = load i32, ptr %69, align 4, !tbaa !9
  %353 = load ptr, ptr %29, align 8, !tbaa !5
  %354 = load i32, ptr %353, align 4, !tbaa !9
  %355 = icmp slt i32 %352, %354
  br i1 %355, label %356, label %368

356:                                              ; preds = %295
  %357 = load ptr, ptr %28, align 8, !tbaa !5
  %358 = load i32, ptr %69, align 4, !tbaa !9
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds i32, ptr %357, i64 %359
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = icmp ne i32 %361, 0
  br i1 %362, label %363, label %367

363:                                              ; preds = %356
  %364 = load ptr, ptr %40, align 8, !tbaa !5
  %365 = load i32, ptr %364, align 4, !tbaa !9
  %366 = add nsw i32 %365, 1
  store i32 %366, ptr %364, align 4, !tbaa !9
  br label %367

367:                                              ; preds = %363, %356
  br label %381

368:                                              ; preds = %295
  %369 = load ptr, ptr %28, align 8, !tbaa !5
  %370 = load ptr, ptr %29, align 8, !tbaa !5
  %371 = load i32, ptr %370, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds i32, ptr %369, i64 %372
  %374 = load i32, ptr %373, align 4, !tbaa !9
  %375 = icmp ne i32 %374, 0
  br i1 %375, label %376, label %380

376:                                              ; preds = %368
  %377 = load ptr, ptr %40, align 8, !tbaa !5
  %378 = load i32, ptr %377, align 4, !tbaa !9
  %379 = add nsw i32 %378, 1
  store i32 %379, ptr %377, align 4, !tbaa !9
  br label %380

380:                                              ; preds = %376, %368
  br label %381

381:                                              ; preds = %380, %367
  br label %382

382:                                              ; preds = %381
  %383 = load i32, ptr %69, align 4, !tbaa !9
  %384 = add nsw i32 %383, 1
  store i32 %384, ptr %69, align 4, !tbaa !9
  br label %291, !llvm.loop !15

385:                                              ; preds = %291
  br label %386

386:                                              ; preds = %385, %284
  %387 = load ptr, ptr %25, align 8, !tbaa !5
  %388 = load i32, ptr %387, align 4, !tbaa !9
  %389 = icmp eq i32 %388, 1
  br i1 %389, label %398, label %390

390:                                              ; preds = %386
  %391 = load ptr, ptr %25, align 8, !tbaa !5
  %392 = load i32, ptr %391, align 4, !tbaa !9
  %393 = icmp eq i32 %392, 2
  br i1 %393, label %398, label %394

394:                                              ; preds = %390
  %395 = load ptr, ptr %25, align 8, !tbaa !5
  %396 = load i32, ptr %395, align 4, !tbaa !9
  %397 = icmp eq i32 %396, 4
  br i1 %397, label %398, label %429

398:                                              ; preds = %394, %390, %386
  store i32 1, ptr %57, align 4, !tbaa !9
  %399 = load ptr, ptr %40, align 8, !tbaa !5
  %400 = load i32, ptr %399, align 4, !tbaa !9
  %401 = shl i32 %400, 1
  %402 = load ptr, ptr %29, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = load ptr, ptr %40, align 8, !tbaa !5
  %405 = load i32, ptr %404, align 4, !tbaa !9
  %406 = sub nsw i32 %403, %405
  %407 = mul nsw i32 %401, %406
  store i32 %407, ptr %58, align 4, !tbaa !9
  %408 = load i32, ptr %57, align 4, !tbaa !9
  %409 = load i32, ptr %58, align 4, !tbaa !9
  %410 = icmp sge i32 %408, %409
  br i1 %410, label %411, label %413

411:                                              ; preds = %398
  %412 = load i32, ptr %57, align 4, !tbaa !9
  br label %415

413:                                              ; preds = %398
  %414 = load i32, ptr %58, align 4, !tbaa !9
  br label %415

415:                                              ; preds = %413, %411
  %416 = phi i32 [ %412, %411 ], [ %414, %413 ]
  store i32 %416, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  %417 = load ptr, ptr %29, align 8, !tbaa !5
  %418 = load i32, ptr %417, align 4, !tbaa !9
  %419 = add nsw i32 %418, 2
  store i32 %419, ptr %58, align 4, !tbaa !9
  %420 = load i32, ptr %57, align 4, !tbaa !9
  %421 = load i32, ptr %58, align 4, !tbaa !9
  %422 = icmp sge i32 %420, %421
  br i1 %422, label %423, label %425

423:                                              ; preds = %415
  %424 = load i32, ptr %57, align 4, !tbaa !9
  br label %427

425:                                              ; preds = %415
  %426 = load i32, ptr %58, align 4, !tbaa !9
  br label %427

427:                                              ; preds = %425, %423
  %428 = phi i32 [ %424, %423 ], [ %426, %425 ]
  store i32 %428, ptr %82, align 4, !tbaa !9
  br label %488

429:                                              ; preds = %394
  %430 = load ptr, ptr %25, align 8, !tbaa !5
  %431 = load i32, ptr %430, align 4, !tbaa !9
  %432 = icmp eq i32 %431, 3
  br i1 %432, label %437, label %433

433:                                              ; preds = %429
  %434 = load ptr, ptr %25, align 8, !tbaa !5
  %435 = load i32, ptr %434, align 4, !tbaa !9
  %436 = icmp eq i32 %435, 5
  br i1 %436, label %437, label %486

437:                                              ; preds = %433, %429
  store i32 1, ptr %57, align 4, !tbaa !9
  %438 = load ptr, ptr %40, align 8, !tbaa !5
  %439 = load i32, ptr %438, align 4, !tbaa !9
  %440 = shl i32 %439, 2
  %441 = load ptr, ptr %29, align 8, !tbaa !5
  %442 = load i32, ptr %441, align 4, !tbaa !9
  %443 = load ptr, ptr %40, align 8, !tbaa !5
  %444 = load i32, ptr %443, align 4, !tbaa !9
  %445 = sub nsw i32 %442, %444
  %446 = mul nsw i32 %440, %445
  store i32 %446, ptr %58, align 4, !tbaa !9
  %447 = load i32, ptr %57, align 4, !tbaa !9
  %448 = load i32, ptr %58, align 4, !tbaa !9
  %449 = icmp sge i32 %447, %448
  br i1 %449, label %450, label %452

450:                                              ; preds = %437
  %451 = load i32, ptr %57, align 4, !tbaa !9
  br label %454

452:                                              ; preds = %437
  %453 = load i32, ptr %58, align 4, !tbaa !9
  br label %454

454:                                              ; preds = %452, %450
  %455 = phi i32 [ %451, %450 ], [ %453, %452 ]
  store i32 %455, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %57, align 4, !tbaa !9
  %456 = load ptr, ptr %40, align 8, !tbaa !5
  %457 = load i32, ptr %456, align 4, !tbaa !9
  %458 = shl i32 %457, 1
  %459 = load ptr, ptr %29, align 8, !tbaa !5
  %460 = load i32, ptr %459, align 4, !tbaa !9
  %461 = load ptr, ptr %40, align 8, !tbaa !5
  %462 = load i32, ptr %461, align 4, !tbaa !9
  %463 = sub nsw i32 %460, %462
  %464 = mul nsw i32 %458, %463
  store i32 %464, ptr %58, align 4, !tbaa !9
  %465 = load i32, ptr %57, align 4, !tbaa !9
  %466 = load i32, ptr %58, align 4, !tbaa !9
  %467 = icmp sge i32 %465, %466
  br i1 %467, label %468, label %470

468:                                              ; preds = %454
  %469 = load i32, ptr %57, align 4, !tbaa !9
  br label %472

470:                                              ; preds = %454
  %471 = load i32, ptr %58, align 4, !tbaa !9
  br label %472

472:                                              ; preds = %470, %468
  %473 = phi i32 [ %469, %468 ], [ %471, %470 ]
  store i32 %473, ptr %57, align 4, !tbaa !9
  %474 = load ptr, ptr %29, align 8, !tbaa !5
  %475 = load i32, ptr %474, align 4, !tbaa !9
  %476 = add nsw i32 %475, 2
  store i32 %476, ptr %58, align 4, !tbaa !9
  %477 = load i32, ptr %57, align 4, !tbaa !9
  %478 = load i32, ptr %58, align 4, !tbaa !9
  %479 = icmp sge i32 %477, %478
  br i1 %479, label %480, label %482

480:                                              ; preds = %472
  %481 = load i32, ptr %57, align 4, !tbaa !9
  br label %484

482:                                              ; preds = %472
  %483 = load i32, ptr %58, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %482, %480
  %485 = phi i32 [ %481, %480 ], [ %483, %482 ]
  store i32 %485, ptr %82, align 4, !tbaa !9
  br label %487

486:                                              ; preds = %433
  store i32 1, ptr %72, align 4, !tbaa !9
  store i32 1, ptr %82, align 4, !tbaa !9
  br label %487

487:                                              ; preds = %486, %484
  br label %488

488:                                              ; preds = %487, %427
  %489 = load i32, ptr %72, align 4, !tbaa !9
  %490 = sitofp i32 %489 to double
  %491 = load ptr, ptr %44, align 8, !tbaa !5
  %492 = getelementptr inbounds %struct.doublecomplex, ptr %491, i64 1
  %493 = getelementptr inbounds %struct.doublecomplex, ptr %492, i32 0, i32 0
  store double %490, ptr %493, align 8, !tbaa !11
  %494 = load ptr, ptr %44, align 8, !tbaa !5
  %495 = getelementptr inbounds %struct.doublecomplex, ptr %494, i64 1
  %496 = getelementptr inbounds %struct.doublecomplex, ptr %495, i32 0, i32 1
  store double 0.000000e+00, ptr %496, align 8, !tbaa !14
  %497 = load i32, ptr %82, align 4, !tbaa !9
  %498 = load ptr, ptr %46, align 8, !tbaa !5
  %499 = getelementptr inbounds i32, ptr %498, i64 1
  store i32 %497, ptr %499, align 4, !tbaa !9
  %500 = load ptr, ptr %45, align 8, !tbaa !5
  %501 = load i32, ptr %500, align 4, !tbaa !9
  %502 = load i32, ptr %72, align 4, !tbaa !9
  %503 = icmp slt i32 %501, %502
  br i1 %503, label %504, label %509

504:                                              ; preds = %488
  %505 = load i32, ptr %84, align 4, !tbaa !9
  %506 = icmp ne i32 %505, 0
  br i1 %506, label %509, label %507

507:                                              ; preds = %504
  %508 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -21, ptr %508, align 4, !tbaa !9
  br label %520

509:                                              ; preds = %504, %488
  %510 = load ptr, ptr %47, align 8, !tbaa !5
  %511 = load i32, ptr %510, align 4, !tbaa !9
  %512 = load i32, ptr %82, align 4, !tbaa !9
  %513 = icmp slt i32 %511, %512
  br i1 %513, label %514, label %519

514:                                              ; preds = %509
  %515 = load i32, ptr %84, align 4, !tbaa !9
  %516 = icmp ne i32 %515, 0
  br i1 %516, label %519, label %517

517:                                              ; preds = %514
  %518 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 -23, ptr %518, align 4, !tbaa !9
  br label %519

519:                                              ; preds = %517, %514, %509
  br label %520

520:                                              ; preds = %519, %507
  %521 = load ptr, ptr %48, align 8, !tbaa !5
  %522 = load i32, ptr %521, align 4, !tbaa !9
  %523 = icmp ne i32 %522, 0
  br i1 %523, label %524, label %529

524:                                              ; preds = %520
  %525 = load ptr, ptr %48, align 8, !tbaa !5
  %526 = load i32, ptr %525, align 4, !tbaa !9
  %527 = sub nsw i32 0, %526
  store i32 %527, ptr %57, align 4, !tbaa !9
  %528 = call i32 @xerbla_(ptr noundef @.str, ptr noundef %57, i32 noundef 6)
  store i32 1, ptr %86, align 4
  br label %1492

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

532:                                              ; preds = %529
  store i32 1, ptr %86, align 4
  br label %1492

533:                                              ; preds = %529
  br label %534

534:                                              ; preds = %533
  %535 = load ptr, ptr %40, align 8, !tbaa !5
  %536 = load i32, ptr %535, align 4, !tbaa !9
  %537 = load ptr, ptr %29, align 8, !tbaa !5
  %538 = load i32, ptr %537, align 4, !tbaa !9
  %539 = icmp eq i32 %536, %538
  br i1 %539, label %544, label %540

540:                                              ; preds = %534
  %541 = load ptr, ptr %40, align 8, !tbaa !5
  %542 = load i32, ptr %541, align 4, !tbaa !9
  %543 = icmp eq i32 %542, 0
  br i1 %543, label %544, label %593

544:                                              ; preds = %540, %534
  %545 = load i32, ptr %73, align 4, !tbaa !9
  %546 = icmp ne i32 %545, 0
  br i1 %546, label %547, label %550

547:                                              ; preds = %544
  %548 = load ptr, ptr %41, align 8, !tbaa !5
  store double 1.000000e+00, ptr %548, align 8, !tbaa !17
  %549 = load ptr, ptr %42, align 8, !tbaa !5
  store double 1.000000e+00, ptr %549, align 8, !tbaa !17
  br label %550

550:                                              ; preds = %547, %544
  %551 = load i32, ptr %71, align 4, !tbaa !9
  %552 = icmp ne i32 %551, 0
  br i1 %552, label %553, label %592

553:                                              ; preds = %550
  store double 0.000000e+00, ptr %78, align 8, !tbaa !17
  store double 1.000000e+00, ptr %64, align 8, !tbaa !17
  %554 = load ptr, ptr %29, align 8, !tbaa !5
  %555 = load i32, ptr %554, align 4, !tbaa !9
  store i32 %555, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %68, align 4, !tbaa !9
  br label %556

556:                                              ; preds = %577, %553
  %557 = load i32, ptr %68, align 4, !tbaa !9
  %558 = load i32, ptr %57, align 4, !tbaa !9
  %559 = icmp sle i32 %557, %558
  br i1 %559, label %560, label %580

560:                                              ; preds = %556
  %561 = load ptr, ptr %29, align 8, !tbaa !5
  %562 = load ptr, ptr %30, align 8, !tbaa !5
  %563 = load i32, ptr %68, align 4, !tbaa !9
  %564 = load i32, ptr %49, align 4, !tbaa !9
  %565 = mul nsw i32 %563, %564
  %566 = add nsw i32 %565, 1
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds %struct.doublecomplex, ptr %562, i64 %567
  call void @zlassq_(ptr noundef %561, ptr noundef %568, ptr noundef @c__1, ptr noundef %78, ptr noundef %64)
  %569 = load ptr, ptr %29, align 8, !tbaa !5
  %570 = load ptr, ptr %32, align 8, !tbaa !5
  %571 = load i32, ptr %68, align 4, !tbaa !9
  %572 = load i32, ptr %51, align 4, !tbaa !9
  %573 = mul nsw i32 %571, %572
  %574 = add nsw i32 %573, 1
  %575 = sext i32 %574 to i64
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %570, i64 %575
  call void @zlassq_(ptr noundef %569, ptr noundef %576, ptr noundef @c__1, ptr noundef %78, ptr noundef %64)
  br label %577

577:                                              ; preds = %560
  %578 = load i32, ptr %68, align 4, !tbaa !9
  %579 = add nsw i32 %578, 1
  store i32 %579, ptr %68, align 4, !tbaa !9
  br label %556, !llvm.loop !18

580:                                              ; preds = %556
  %581 = load double, ptr %78, align 8, !tbaa !17
  %582 = load double, ptr %64, align 8, !tbaa !17
  %583 = call double @sqrt(double noundef %582) #5
  %584 = fmul double %581, %583
  %585 = load ptr, ptr %43, align 8, !tbaa !5
  %586 = getelementptr inbounds double, ptr %585, i64 1
  store double %584, ptr %586, align 8, !tbaa !17
  %587 = load ptr, ptr %43, align 8, !tbaa !5
  %588 = getelementptr inbounds double, ptr %587, i64 1
  %589 = load double, ptr %588, align 8, !tbaa !17
  %590 = load ptr, ptr %43, align 8, !tbaa !5
  %591 = getelementptr inbounds double, ptr %590, i64 2
  store double %589, ptr %591, align 8, !tbaa !17
  br label %592

592:                                              ; preds = %580, %550
  br label %1480

593:                                              ; preds = %540
  %594 = call double @dlamch_(ptr noundef @.str.1)
  store double %594, ptr %81, align 8, !tbaa !17
  store i32 0, ptr %79, align 4, !tbaa !9
  %595 = load ptr, ptr %29, align 8, !tbaa !5
  %596 = load i32, ptr %595, align 4, !tbaa !9
  store i32 %596, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %597

597:                                              ; preds = %660, %593
  %598 = load i32, ptr %69, align 4, !tbaa !9
  %599 = load i32, ptr %57, align 4, !tbaa !9
  %600 = icmp sle i32 %598, %599
  br i1 %600, label %601, label %663

601:                                              ; preds = %597
  %602 = load ptr, ptr %28, align 8, !tbaa !5
  %603 = load i32, ptr %69, align 4, !tbaa !9
  %604 = sext i32 %603 to i64
  %605 = getelementptr inbounds i32, ptr %602, i64 %604
  %606 = load i32, ptr %605, align 4, !tbaa !9
  store i32 %606, ptr %65, align 4, !tbaa !9
  %607 = load i32, ptr %65, align 4, !tbaa !9
  %608 = icmp ne i32 %607, 0
  br i1 %608, label %609, label %659

609:                                              ; preds = %601
  %610 = load i32, ptr %79, align 4, !tbaa !9
  %611 = add nsw i32 %610, 1
  store i32 %611, ptr %79, align 4, !tbaa !9
  %612 = load i32, ptr %69, align 4, !tbaa !9
  %613 = load i32, ptr %79, align 4, !tbaa !9
  %614 = icmp ne i32 %612, %613
  br i1 %614, label %615, label %639

615:                                              ; preds = %609
  %616 = load ptr, ptr %26, align 8, !tbaa !5
  %617 = load ptr, ptr %27, align 8, !tbaa !5
  %618 = load ptr, ptr %29, align 8, !tbaa !5
  %619 = load ptr, ptr %30, align 8, !tbaa !5
  %620 = load i32, ptr %50, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.doublecomplex, ptr %619, i64 %621
  %623 = load ptr, ptr %31, align 8, !tbaa !5
  %624 = load ptr, ptr %32, align 8, !tbaa !5
  %625 = load i32, ptr %52, align 4, !tbaa !9
  %626 = sext i32 %625 to i64
  %627 = getelementptr inbounds %struct.doublecomplex, ptr %624, i64 %626
  %628 = load ptr, ptr %33, align 8, !tbaa !5
  %629 = load ptr, ptr %36, align 8, !tbaa !5
  %630 = load i32, ptr %54, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds %struct.doublecomplex, ptr %629, i64 %631
  %633 = load ptr, ptr %37, align 8, !tbaa !5
  %634 = load ptr, ptr %38, align 8, !tbaa !5
  %635 = load i32, ptr %56, align 4, !tbaa !9
  %636 = sext i32 %635 to i64
  %637 = getelementptr inbounds %struct.doublecomplex, ptr %634, i64 %636
  %638 = load ptr, ptr %39, align 8, !tbaa !5
  call void @ztgexc_(ptr noundef %616, ptr noundef %617, ptr noundef %618, ptr noundef %622, ptr noundef %623, ptr noundef %627, ptr noundef %628, ptr noundef %632, ptr noundef %633, ptr noundef %637, ptr noundef %638, ptr noundef %69, ptr noundef %79, ptr noundef %63)
  br label %639

639:                                              ; preds = %615, %609
  %640 = load i32, ptr %63, align 4, !tbaa !9
  %641 = icmp sgt i32 %640, 0
  br i1 %641, label %642, label %658

642:                                              ; preds = %639
  %643 = load ptr, ptr %48, align 8, !tbaa !5
  store i32 1, ptr %643, align 4, !tbaa !9
  %644 = load i32, ptr %73, align 4, !tbaa !9
  %645 = icmp ne i32 %644, 0
  br i1 %645, label %646, label %649

646:                                              ; preds = %642
  %647 = load ptr, ptr %41, align 8, !tbaa !5
  store double 0.000000e+00, ptr %647, align 8, !tbaa !17
  %648 = load ptr, ptr %42, align 8, !tbaa !5
  store double 0.000000e+00, ptr %648, align 8, !tbaa !17
  br label %649

649:                                              ; preds = %646, %642
  %650 = load i32, ptr %71, align 4, !tbaa !9
  %651 = icmp ne i32 %650, 0
  br i1 %651, label %652, label %657

652:                                              ; preds = %649
  %653 = load ptr, ptr %43, align 8, !tbaa !5
  %654 = getelementptr inbounds double, ptr %653, i64 1
  store double 0.000000e+00, ptr %654, align 8, !tbaa !17
  %655 = load ptr, ptr %43, align 8, !tbaa !5
  %656 = getelementptr inbounds double, ptr %655, i64 2
  store double 0.000000e+00, ptr %656, align 8, !tbaa !17
  br label %657

657:                                              ; preds = %652, %649
  br label %1480

658:                                              ; preds = %639
  br label %659

659:                                              ; preds = %658, %601
  br label %660

660:                                              ; preds = %659
  %661 = load i32, ptr %69, align 4, !tbaa !9
  %662 = add nsw i32 %661, 1
  store i32 %662, ptr %69, align 4, !tbaa !9
  br label %597, !llvm.loop !19

663:                                              ; preds = %597
  %664 = load i32, ptr %73, align 4, !tbaa !9
  %665 = icmp ne i32 %664, 0
  br i1 %665, label %666, label %830

666:                                              ; preds = %663
  %667 = load ptr, ptr %40, align 8, !tbaa !5
  %668 = load i32, ptr %667, align 4, !tbaa !9
  store i32 %668, ptr %74, align 4, !tbaa !9
  %669 = load ptr, ptr %29, align 8, !tbaa !5
  %670 = load i32, ptr %669, align 4, !tbaa !9
  %671 = load ptr, ptr %40, align 8, !tbaa !5
  %672 = load i32, ptr %671, align 4, !tbaa !9
  %673 = sub nsw i32 %670, %672
  store i32 %673, ptr %75, align 4, !tbaa !9
  %674 = load i32, ptr %74, align 4, !tbaa !9
  %675 = add nsw i32 %674, 1
  store i32 %675, ptr %68, align 4, !tbaa !9
  %676 = load ptr, ptr %30, align 8, !tbaa !5
  %677 = load i32, ptr %68, align 4, !tbaa !9
  %678 = load i32, ptr %49, align 4, !tbaa !9
  %679 = mul nsw i32 %677, %678
  %680 = add nsw i32 %679, 1
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds %struct.doublecomplex, ptr %676, i64 %681
  %683 = load ptr, ptr %31, align 8, !tbaa !5
  %684 = load ptr, ptr %44, align 8, !tbaa !5
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %684, i64 1
  call void @zlacpy_(ptr noundef @.str.2, ptr noundef %74, ptr noundef %75, ptr noundef %682, ptr noundef %683, ptr noundef %685, ptr noundef %74)
  %686 = load ptr, ptr %32, align 8, !tbaa !5
  %687 = load i32, ptr %68, align 4, !tbaa !9
  %688 = load i32, ptr %51, align 4, !tbaa !9
  %689 = mul nsw i32 %687, %688
  %690 = add nsw i32 %689, 1
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds %struct.doublecomplex, ptr %686, i64 %691
  %693 = load ptr, ptr %33, align 8, !tbaa !5
  %694 = load ptr, ptr %44, align 8, !tbaa !5
  %695 = load i32, ptr %74, align 4, !tbaa !9
  %696 = load i32, ptr %75, align 4, !tbaa !9
  %697 = mul nsw i32 %695, %696
  %698 = add nsw i32 %697, 1
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds %struct.doublecomplex, ptr %694, i64 %699
  call void @zlacpy_(ptr noundef @.str.2, ptr noundef %74, ptr noundef %75, ptr noundef %692, ptr noundef %693, ptr noundef %700, ptr noundef %74)
  store i32 0, ptr %85, align 4, !tbaa !9
  %701 = load ptr, ptr %45, align 8, !tbaa !5
  %702 = load i32, ptr %701, align 4, !tbaa !9
  %703 = load i32, ptr %74, align 4, !tbaa !9
  %704 = shl i32 %703, 1
  %705 = load i32, ptr %75, align 4, !tbaa !9
  %706 = mul nsw i32 %704, %705
  %707 = sub nsw i32 %702, %706
  store i32 %707, ptr %57, align 4, !tbaa !9
  %708 = load ptr, ptr %30, align 8, !tbaa !5
  %709 = load i32, ptr %50, align 4, !tbaa !9
  %710 = sext i32 %709 to i64
  %711 = getelementptr inbounds %struct.doublecomplex, ptr %708, i64 %710
  %712 = load ptr, ptr %31, align 8, !tbaa !5
  %713 = load ptr, ptr %30, align 8, !tbaa !5
  %714 = load i32, ptr %68, align 4, !tbaa !9
  %715 = load i32, ptr %68, align 4, !tbaa !9
  %716 = load i32, ptr %49, align 4, !tbaa !9
  %717 = mul nsw i32 %715, %716
  %718 = add nsw i32 %714, %717
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %713, i64 %719
  %721 = load ptr, ptr %31, align 8, !tbaa !5
  %722 = load ptr, ptr %44, align 8, !tbaa !5
  %723 = getelementptr inbounds %struct.doublecomplex, ptr %722, i64 1
  %724 = load ptr, ptr %32, align 8, !tbaa !5
  %725 = load i32, ptr %52, align 4, !tbaa !9
  %726 = sext i32 %725 to i64
  %727 = getelementptr inbounds %struct.doublecomplex, ptr %724, i64 %726
  %728 = load ptr, ptr %33, align 8, !tbaa !5
  %729 = load ptr, ptr %32, align 8, !tbaa !5
  %730 = load i32, ptr %68, align 4, !tbaa !9
  %731 = load i32, ptr %68, align 4, !tbaa !9
  %732 = load i32, ptr %51, align 4, !tbaa !9
  %733 = mul nsw i32 %731, %732
  %734 = add nsw i32 %730, %733
  %735 = sext i32 %734 to i64
  %736 = getelementptr inbounds %struct.doublecomplex, ptr %729, i64 %735
  %737 = load ptr, ptr %33, align 8, !tbaa !5
  %738 = load ptr, ptr %44, align 8, !tbaa !5
  %739 = load i32, ptr %74, align 4, !tbaa !9
  %740 = load i32, ptr %75, align 4, !tbaa !9
  %741 = mul nsw i32 %739, %740
  %742 = add nsw i32 %741, 1
  %743 = sext i32 %742 to i64
  %744 = getelementptr inbounds %struct.doublecomplex, ptr %738, i64 %743
  %745 = load ptr, ptr %43, align 8, !tbaa !5
  %746 = getelementptr inbounds double, ptr %745, i64 1
  %747 = load ptr, ptr %44, align 8, !tbaa !5
  %748 = load i32, ptr %74, align 4, !tbaa !9
  %749 = load i32, ptr %75, align 4, !tbaa !9
  %750 = mul nsw i32 %748, %749
  %751 = shl i32 %750, 1
  %752 = add nsw i32 %751, 1
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds %struct.doublecomplex, ptr %747, i64 %753
  %755 = load ptr, ptr %46, align 8, !tbaa !5
  %756 = getelementptr inbounds i32, ptr %755, i64 1
  call void @ztgsyl_(ptr noundef @.str.3, ptr noundef %85, ptr noundef %74, ptr noundef %75, ptr noundef %711, ptr noundef %712, ptr noundef %720, ptr noundef %721, ptr noundef %723, ptr noundef %74, ptr noundef %727, ptr noundef %728, ptr noundef %736, ptr noundef %737, ptr noundef %744, ptr noundef %74, ptr noundef %78, ptr noundef %746, ptr noundef %754, ptr noundef %57, ptr noundef %756, ptr noundef %63)
  store double 0.000000e+00, ptr %80, align 8, !tbaa !17
  store double 1.000000e+00, ptr %64, align 8, !tbaa !17
  %757 = load i32, ptr %74, align 4, !tbaa !9
  %758 = load i32, ptr %75, align 4, !tbaa !9
  %759 = mul nsw i32 %757, %758
  store i32 %759, ptr %57, align 4, !tbaa !9
  %760 = load ptr, ptr %44, align 8, !tbaa !5
  %761 = getelementptr inbounds %struct.doublecomplex, ptr %760, i64 1
  call void @zlassq_(ptr noundef %57, ptr noundef %761, ptr noundef @c__1, ptr noundef %80, ptr noundef %64)
  %762 = load double, ptr %80, align 8, !tbaa !17
  %763 = load double, ptr %64, align 8, !tbaa !17
  %764 = call double @sqrt(double noundef %763) #5
  %765 = fmul double %762, %764
  %766 = load ptr, ptr %41, align 8, !tbaa !5
  store double %765, ptr %766, align 8, !tbaa !17
  %767 = load ptr, ptr %41, align 8, !tbaa !5
  %768 = load double, ptr %767, align 8, !tbaa !17
  %769 = fcmp oeq double %768, 0.000000e+00
  br i1 %769, label %770, label %772

770:                                              ; preds = %666
  %771 = load ptr, ptr %41, align 8, !tbaa !5
  store double 1.000000e+00, ptr %771, align 8, !tbaa !17
  br label %790

772:                                              ; preds = %666
  %773 = load double, ptr %78, align 8, !tbaa !17
  %774 = load double, ptr %78, align 8, !tbaa !17
  %775 = load double, ptr %78, align 8, !tbaa !17
  %776 = fmul double %774, %775
  %777 = load ptr, ptr %41, align 8, !tbaa !5
  %778 = load double, ptr %777, align 8, !tbaa !17
  %779 = fdiv double %776, %778
  %780 = load ptr, ptr %41, align 8, !tbaa !5
  %781 = load double, ptr %780, align 8, !tbaa !17
  %782 = fadd double %779, %781
  %783 = call double @sqrt(double noundef %782) #5
  %784 = load ptr, ptr %41, align 8, !tbaa !5
  %785 = load double, ptr %784, align 8, !tbaa !17
  %786 = call double @sqrt(double noundef %785) #5
  %787 = fmul double %783, %786
  %788 = fdiv double %773, %787
  %789 = load ptr, ptr %41, align 8, !tbaa !5
  store double %788, ptr %789, align 8, !tbaa !17
  br label %790

790:                                              ; preds = %772, %770
  store double 0.000000e+00, ptr %80, align 8, !tbaa !17
  store double 1.000000e+00, ptr %64, align 8, !tbaa !17
  %791 = load i32, ptr %74, align 4, !tbaa !9
  %792 = load i32, ptr %75, align 4, !tbaa !9
  %793 = mul nsw i32 %791, %792
  store i32 %793, ptr %57, align 4, !tbaa !9
  %794 = load ptr, ptr %44, align 8, !tbaa !5
  %795 = load i32, ptr %74, align 4, !tbaa !9
  %796 = load i32, ptr %75, align 4, !tbaa !9
  %797 = mul nsw i32 %795, %796
  %798 = add nsw i32 %797, 1
  %799 = sext i32 %798 to i64
  %800 = getelementptr inbounds %struct.doublecomplex, ptr %794, i64 %799
  call void @zlassq_(ptr noundef %57, ptr noundef %800, ptr noundef @c__1, ptr noundef %80, ptr noundef %64)
  %801 = load double, ptr %80, align 8, !tbaa !17
  %802 = load double, ptr %64, align 8, !tbaa !17
  %803 = call double @sqrt(double noundef %802) #5
  %804 = fmul double %801, %803
  %805 = load ptr, ptr %42, align 8, !tbaa !5
  store double %804, ptr %805, align 8, !tbaa !17
  %806 = load ptr, ptr %42, align 8, !tbaa !5
  %807 = load double, ptr %806, align 8, !tbaa !17
  %808 = fcmp oeq double %807, 0.000000e+00
  br i1 %808, label %809, label %811

809:                                              ; preds = %790
  %810 = load ptr, ptr %42, align 8, !tbaa !5
  store double 1.000000e+00, ptr %810, align 8, !tbaa !17
  br label %829

811:                                              ; preds = %790
  %812 = load double, ptr %78, align 8, !tbaa !17
  %813 = load double, ptr %78, align 8, !tbaa !17
  %814 = load double, ptr %78, align 8, !tbaa !17
  %815 = fmul double %813, %814
  %816 = load ptr, ptr %42, align 8, !tbaa !5
  %817 = load double, ptr %816, align 8, !tbaa !17
  %818 = fdiv double %815, %817
  %819 = load ptr, ptr %42, align 8, !tbaa !5
  %820 = load double, ptr %819, align 8, !tbaa !17
  %821 = fadd double %818, %820
  %822 = call double @sqrt(double noundef %821) #5
  %823 = load ptr, ptr %42, align 8, !tbaa !5
  %824 = load double, ptr %823, align 8, !tbaa !17
  %825 = call double @sqrt(double noundef %824) #5
  %826 = fmul double %822, %825
  %827 = fdiv double %812, %826
  %828 = load ptr, ptr %42, align 8, !tbaa !5
  store double %827, ptr %828, align 8, !tbaa !17
  br label %829

829:                                              ; preds = %811, %809
  br label %830

830:                                              ; preds = %829, %663
  %831 = load i32, ptr %71, align 4, !tbaa !9
  %832 = icmp ne i32 %831, 0
  br i1 %832, label %833, label %1251

833:                                              ; preds = %830
  %834 = load i32, ptr %76, align 4, !tbaa !9
  %835 = icmp ne i32 %834, 0
  br i1 %835, label %836, label %958

836:                                              ; preds = %833
  %837 = load ptr, ptr %40, align 8, !tbaa !5
  %838 = load i32, ptr %837, align 4, !tbaa !9
  store i32 %838, ptr %74, align 4, !tbaa !9
  %839 = load ptr, ptr %29, align 8, !tbaa !5
  %840 = load i32, ptr %839, align 4, !tbaa !9
  %841 = load ptr, ptr %40, align 8, !tbaa !5
  %842 = load i32, ptr %841, align 4, !tbaa !9
  %843 = sub nsw i32 %840, %842
  store i32 %843, ptr %75, align 4, !tbaa !9
  %844 = load i32, ptr %74, align 4, !tbaa !9
  %845 = add nsw i32 %844, 1
  store i32 %845, ptr %68, align 4, !tbaa !9
  store i32 3, ptr %85, align 4, !tbaa !9
  %846 = load ptr, ptr %45, align 8, !tbaa !5
  %847 = load i32, ptr %846, align 4, !tbaa !9
  %848 = load i32, ptr %74, align 4, !tbaa !9
  %849 = shl i32 %848, 1
  %850 = load i32, ptr %75, align 4, !tbaa !9
  %851 = mul nsw i32 %849, %850
  %852 = sub nsw i32 %847, %851
  store i32 %852, ptr %57, align 4, !tbaa !9
  %853 = load ptr, ptr %30, align 8, !tbaa !5
  %854 = load i32, ptr %50, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds %struct.doublecomplex, ptr %853, i64 %855
  %857 = load ptr, ptr %31, align 8, !tbaa !5
  %858 = load ptr, ptr %30, align 8, !tbaa !5
  %859 = load i32, ptr %68, align 4, !tbaa !9
  %860 = load i32, ptr %68, align 4, !tbaa !9
  %861 = load i32, ptr %49, align 4, !tbaa !9
  %862 = mul nsw i32 %860, %861
  %863 = add nsw i32 %859, %862
  %864 = sext i32 %863 to i64
  %865 = getelementptr inbounds %struct.doublecomplex, ptr %858, i64 %864
  %866 = load ptr, ptr %31, align 8, !tbaa !5
  %867 = load ptr, ptr %44, align 8, !tbaa !5
  %868 = getelementptr inbounds %struct.doublecomplex, ptr %867, i64 1
  %869 = load ptr, ptr %32, align 8, !tbaa !5
  %870 = load i32, ptr %52, align 4, !tbaa !9
  %871 = sext i32 %870 to i64
  %872 = getelementptr inbounds %struct.doublecomplex, ptr %869, i64 %871
  %873 = load ptr, ptr %33, align 8, !tbaa !5
  %874 = load ptr, ptr %32, align 8, !tbaa !5
  %875 = load i32, ptr %68, align 4, !tbaa !9
  %876 = load i32, ptr %68, align 4, !tbaa !9
  %877 = load i32, ptr %51, align 4, !tbaa !9
  %878 = mul nsw i32 %876, %877
  %879 = add nsw i32 %875, %878
  %880 = sext i32 %879 to i64
  %881 = getelementptr inbounds %struct.doublecomplex, ptr %874, i64 %880
  %882 = load ptr, ptr %33, align 8, !tbaa !5
  %883 = load ptr, ptr %44, align 8, !tbaa !5
  %884 = load i32, ptr %74, align 4, !tbaa !9
  %885 = load i32, ptr %75, align 4, !tbaa !9
  %886 = mul nsw i32 %884, %885
  %887 = add nsw i32 %886, 1
  %888 = sext i32 %887 to i64
  %889 = getelementptr inbounds %struct.doublecomplex, ptr %883, i64 %888
  %890 = load ptr, ptr %43, align 8, !tbaa !5
  %891 = getelementptr inbounds double, ptr %890, i64 1
  %892 = load ptr, ptr %44, align 8, !tbaa !5
  %893 = load i32, ptr %74, align 4, !tbaa !9
  %894 = load i32, ptr %75, align 4, !tbaa !9
  %895 = mul nsw i32 %893, %894
  %896 = shl i32 %895, 1
  %897 = add nsw i32 %896, 1
  %898 = sext i32 %897 to i64
  %899 = getelementptr inbounds %struct.doublecomplex, ptr %892, i64 %898
  %900 = load ptr, ptr %46, align 8, !tbaa !5
  %901 = getelementptr inbounds i32, ptr %900, i64 1
  call void @ztgsyl_(ptr noundef @.str.3, ptr noundef %85, ptr noundef %74, ptr noundef %75, ptr noundef %856, ptr noundef %857, ptr noundef %865, ptr noundef %866, ptr noundef %868, ptr noundef %74, ptr noundef %872, ptr noundef %873, ptr noundef %881, ptr noundef %882, ptr noundef %889, ptr noundef %74, ptr noundef %78, ptr noundef %891, ptr noundef %899, ptr noundef %57, ptr noundef %901, ptr noundef %63)
  %902 = load ptr, ptr %45, align 8, !tbaa !5
  %903 = load i32, ptr %902, align 4, !tbaa !9
  %904 = load i32, ptr %74, align 4, !tbaa !9
  %905 = shl i32 %904, 1
  %906 = load i32, ptr %75, align 4, !tbaa !9
  %907 = mul nsw i32 %905, %906
  %908 = sub nsw i32 %903, %907
  store i32 %908, ptr %57, align 4, !tbaa !9
  %909 = load ptr, ptr %30, align 8, !tbaa !5
  %910 = load i32, ptr %68, align 4, !tbaa !9
  %911 = load i32, ptr %68, align 4, !tbaa !9
  %912 = load i32, ptr %49, align 4, !tbaa !9
  %913 = mul nsw i32 %911, %912
  %914 = add nsw i32 %910, %913
  %915 = sext i32 %914 to i64
  %916 = getelementptr inbounds %struct.doublecomplex, ptr %909, i64 %915
  %917 = load ptr, ptr %31, align 8, !tbaa !5
  %918 = load ptr, ptr %30, align 8, !tbaa !5
  %919 = load i32, ptr %50, align 4, !tbaa !9
  %920 = sext i32 %919 to i64
  %921 = getelementptr inbounds %struct.doublecomplex, ptr %918, i64 %920
  %922 = load ptr, ptr %31, align 8, !tbaa !5
  %923 = load ptr, ptr %44, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.doublecomplex, ptr %923, i64 1
  %925 = load ptr, ptr %32, align 8, !tbaa !5
  %926 = load i32, ptr %68, align 4, !tbaa !9
  %927 = load i32, ptr %68, align 4, !tbaa !9
  %928 = load i32, ptr %51, align 4, !tbaa !9
  %929 = mul nsw i32 %927, %928
  %930 = add nsw i32 %926, %929
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %925, i64 %931
  %933 = load ptr, ptr %33, align 8, !tbaa !5
  %934 = load ptr, ptr %32, align 8, !tbaa !5
  %935 = load i32, ptr %52, align 4, !tbaa !9
  %936 = sext i32 %935 to i64
  %937 = getelementptr inbounds %struct.doublecomplex, ptr %934, i64 %936
  %938 = load ptr, ptr %33, align 8, !tbaa !5
  %939 = load ptr, ptr %44, align 8, !tbaa !5
  %940 = load i32, ptr %74, align 4, !tbaa !9
  %941 = load i32, ptr %75, align 4, !tbaa !9
  %942 = mul nsw i32 %940, %941
  %943 = add nsw i32 %942, 1
  %944 = sext i32 %943 to i64
  %945 = getelementptr inbounds %struct.doublecomplex, ptr %939, i64 %944
  %946 = load ptr, ptr %43, align 8, !tbaa !5
  %947 = getelementptr inbounds double, ptr %946, i64 2
  %948 = load ptr, ptr %44, align 8, !tbaa !5
  %949 = load i32, ptr %74, align 4, !tbaa !9
  %950 = load i32, ptr %75, align 4, !tbaa !9
  %951 = mul nsw i32 %949, %950
  %952 = shl i32 %951, 1
  %953 = add nsw i32 %952, 1
  %954 = sext i32 %953 to i64
  %955 = getelementptr inbounds %struct.doublecomplex, ptr %948, i64 %954
  %956 = load ptr, ptr %46, align 8, !tbaa !5
  %957 = getelementptr inbounds i32, ptr %956, i64 1
  call void @ztgsyl_(ptr noundef @.str.3, ptr noundef %85, ptr noundef %75, ptr noundef %74, ptr noundef %916, ptr noundef %917, ptr noundef %921, ptr noundef %922, ptr noundef %924, ptr noundef %75, ptr noundef %932, ptr noundef %933, ptr noundef %937, ptr noundef %938, ptr noundef %945, ptr noundef %75, ptr noundef %78, ptr noundef %947, ptr noundef %955, ptr noundef %57, ptr noundef %957, ptr noundef %63)
  br label %1250

958:                                              ; preds = %833
  store i32 0, ptr %62, align 4, !tbaa !9
  %959 = load ptr, ptr %40, align 8, !tbaa !5
  %960 = load i32, ptr %959, align 4, !tbaa !9
  store i32 %960, ptr %74, align 4, !tbaa !9
  %961 = load ptr, ptr %29, align 8, !tbaa !5
  %962 = load i32, ptr %961, align 4, !tbaa !9
  %963 = load ptr, ptr %40, align 8, !tbaa !5
  %964 = load i32, ptr %963, align 4, !tbaa !9
  %965 = sub nsw i32 %962, %964
  store i32 %965, ptr %75, align 4, !tbaa !9
  %966 = load i32, ptr %74, align 4, !tbaa !9
  %967 = add nsw i32 %966, 1
  store i32 %967, ptr %68, align 4, !tbaa !9
  store i32 0, ptr %85, align 4, !tbaa !9
  %968 = load i32, ptr %74, align 4, !tbaa !9
  %969 = shl i32 %968, 1
  %970 = load i32, ptr %75, align 4, !tbaa !9
  %971 = mul nsw i32 %969, %970
  store i32 %971, ptr %83, align 4, !tbaa !9
  br label %972

972:                                              ; preds = %1102, %958
  %973 = load ptr, ptr %44, align 8, !tbaa !5
  %974 = load i32, ptr %83, align 4, !tbaa !9
  %975 = add nsw i32 %974, 1
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds %struct.doublecomplex, ptr %973, i64 %976
  %978 = load ptr, ptr %44, align 8, !tbaa !5
  %979 = getelementptr inbounds %struct.doublecomplex, ptr %978, i64 1
  %980 = load ptr, ptr %43, align 8, !tbaa !5
  %981 = getelementptr inbounds double, ptr %980, i64 1
  %982 = getelementptr inbounds [3 x i32], ptr %70, i64 0, i64 0
  call void @zlacn2_(ptr noundef %83, ptr noundef %977, ptr noundef %979, ptr noundef %981, ptr noundef %62, ptr noundef %982)
  %983 = load i32, ptr %62, align 4, !tbaa !9
  %984 = icmp ne i32 %983, 0
  br i1 %984, label %985, label %1103

985:                                              ; preds = %972
  %986 = load i32, ptr %62, align 4, !tbaa !9
  %987 = icmp eq i32 %986, 1
  br i1 %987, label %988, label %1045

988:                                              ; preds = %985
  %989 = load ptr, ptr %45, align 8, !tbaa !5
  %990 = load i32, ptr %989, align 4, !tbaa !9
  %991 = load i32, ptr %74, align 4, !tbaa !9
  %992 = shl i32 %991, 1
  %993 = load i32, ptr %75, align 4, !tbaa !9
  %994 = mul nsw i32 %992, %993
  %995 = sub nsw i32 %990, %994
  store i32 %995, ptr %57, align 4, !tbaa !9
  %996 = load ptr, ptr %30, align 8, !tbaa !5
  %997 = load i32, ptr %50, align 4, !tbaa !9
  %998 = sext i32 %997 to i64
  %999 = getelementptr inbounds %struct.doublecomplex, ptr %996, i64 %998
  %1000 = load ptr, ptr %31, align 8, !tbaa !5
  %1001 = load ptr, ptr %30, align 8, !tbaa !5
  %1002 = load i32, ptr %68, align 4, !tbaa !9
  %1003 = load i32, ptr %68, align 4, !tbaa !9
  %1004 = load i32, ptr %49, align 4, !tbaa !9
  %1005 = mul nsw i32 %1003, %1004
  %1006 = add nsw i32 %1002, %1005
  %1007 = sext i32 %1006 to i64
  %1008 = getelementptr inbounds %struct.doublecomplex, ptr %1001, i64 %1007
  %1009 = load ptr, ptr %31, align 8, !tbaa !5
  %1010 = load ptr, ptr %44, align 8, !tbaa !5
  %1011 = getelementptr inbounds %struct.doublecomplex, ptr %1010, i64 1
  %1012 = load ptr, ptr %32, align 8, !tbaa !5
  %1013 = load i32, ptr %52, align 4, !tbaa !9
  %1014 = sext i32 %1013 to i64
  %1015 = getelementptr inbounds %struct.doublecomplex, ptr %1012, i64 %1014
  %1016 = load ptr, ptr %33, align 8, !tbaa !5
  %1017 = load ptr, ptr %32, align 8, !tbaa !5
  %1018 = load i32, ptr %68, align 4, !tbaa !9
  %1019 = load i32, ptr %68, align 4, !tbaa !9
  %1020 = load i32, ptr %51, align 4, !tbaa !9
  %1021 = mul nsw i32 %1019, %1020
  %1022 = add nsw i32 %1018, %1021
  %1023 = sext i32 %1022 to i64
  %1024 = getelementptr inbounds %struct.doublecomplex, ptr %1017, i64 %1023
  %1025 = load ptr, ptr %33, align 8, !tbaa !5
  %1026 = load ptr, ptr %44, align 8, !tbaa !5
  %1027 = load i32, ptr %74, align 4, !tbaa !9
  %1028 = load i32, ptr %75, align 4, !tbaa !9
  %1029 = mul nsw i32 %1027, %1028
  %1030 = add nsw i32 %1029, 1
  %1031 = sext i32 %1030 to i64
  %1032 = getelementptr inbounds %struct.doublecomplex, ptr %1026, i64 %1031
  %1033 = load ptr, ptr %43, align 8, !tbaa !5
  %1034 = getelementptr inbounds double, ptr %1033, i64 1
  %1035 = load ptr, ptr %44, align 8, !tbaa !5
  %1036 = load i32, ptr %74, align 4, !tbaa !9
  %1037 = load i32, ptr %75, align 4, !tbaa !9
  %1038 = mul nsw i32 %1036, %1037
  %1039 = shl i32 %1038, 1
  %1040 = add nsw i32 %1039, 1
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds %struct.doublecomplex, ptr %1035, i64 %1041
  %1043 = load ptr, ptr %46, align 8, !tbaa !5
  %1044 = getelementptr inbounds i32, ptr %1043, i64 1
  call void @ztgsyl_(ptr noundef @.str.3, ptr noundef %85, ptr noundef %74, ptr noundef %75, ptr noundef %999, ptr noundef %1000, ptr noundef %1008, ptr noundef %1009, ptr noundef %1011, ptr noundef %74, ptr noundef %1015, ptr noundef %1016, ptr noundef %1024, ptr noundef %1025, ptr noundef %1032, ptr noundef %74, ptr noundef %78, ptr noundef %1034, ptr noundef %1042, ptr noundef %57, ptr noundef %1044, ptr noundef %63)
  br label %1102

1045:                                             ; preds = %985
  %1046 = load ptr, ptr %45, align 8, !tbaa !5
  %1047 = load i32, ptr %1046, align 4, !tbaa !9
  %1048 = load i32, ptr %74, align 4, !tbaa !9
  %1049 = shl i32 %1048, 1
  %1050 = load i32, ptr %75, align 4, !tbaa !9
  %1051 = mul nsw i32 %1049, %1050
  %1052 = sub nsw i32 %1047, %1051
  store i32 %1052, ptr %57, align 4, !tbaa !9
  %1053 = load ptr, ptr %30, align 8, !tbaa !5
  %1054 = load i32, ptr %50, align 4, !tbaa !9
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds %struct.doublecomplex, ptr %1053, i64 %1055
  %1057 = load ptr, ptr %31, align 8, !tbaa !5
  %1058 = load ptr, ptr %30, align 8, !tbaa !5
  %1059 = load i32, ptr %68, align 4, !tbaa !9
  %1060 = load i32, ptr %68, align 4, !tbaa !9
  %1061 = load i32, ptr %49, align 4, !tbaa !9
  %1062 = mul nsw i32 %1060, %1061
  %1063 = add nsw i32 %1059, %1062
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds %struct.doublecomplex, ptr %1058, i64 %1064
  %1066 = load ptr, ptr %31, align 8, !tbaa !5
  %1067 = load ptr, ptr %44, align 8, !tbaa !5
  %1068 = getelementptr inbounds %struct.doublecomplex, ptr %1067, i64 1
  %1069 = load ptr, ptr %32, align 8, !tbaa !5
  %1070 = load i32, ptr %52, align 4, !tbaa !9
  %1071 = sext i32 %1070 to i64
  %1072 = getelementptr inbounds %struct.doublecomplex, ptr %1069, i64 %1071
  %1073 = load ptr, ptr %33, align 8, !tbaa !5
  %1074 = load ptr, ptr %32, align 8, !tbaa !5
  %1075 = load i32, ptr %68, align 4, !tbaa !9
  %1076 = load i32, ptr %68, align 4, !tbaa !9
  %1077 = load i32, ptr %51, align 4, !tbaa !9
  %1078 = mul nsw i32 %1076, %1077
  %1079 = add nsw i32 %1075, %1078
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds %struct.doublecomplex, ptr %1074, i64 %1080
  %1082 = load ptr, ptr %33, align 8, !tbaa !5
  %1083 = load ptr, ptr %44, align 8, !tbaa !5
  %1084 = load i32, ptr %74, align 4, !tbaa !9
  %1085 = load i32, ptr %75, align 4, !tbaa !9
  %1086 = mul nsw i32 %1084, %1085
  %1087 = add nsw i32 %1086, 1
  %1088 = sext i32 %1087 to i64
  %1089 = getelementptr inbounds %struct.doublecomplex, ptr %1083, i64 %1088
  %1090 = load ptr, ptr %43, align 8, !tbaa !5
  %1091 = getelementptr inbounds double, ptr %1090, i64 1
  %1092 = load ptr, ptr %44, align 8, !tbaa !5
  %1093 = load i32, ptr %74, align 4, !tbaa !9
  %1094 = load i32, ptr %75, align 4, !tbaa !9
  %1095 = mul nsw i32 %1093, %1094
  %1096 = shl i32 %1095, 1
  %1097 = add nsw i32 %1096, 1
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds %struct.doublecomplex, ptr %1092, i64 %1098
  %1100 = load ptr, ptr %46, align 8, !tbaa !5
  %1101 = getelementptr inbounds i32, ptr %1100, i64 1
  call void @ztgsyl_(ptr noundef @.str.4, ptr noundef %85, ptr noundef %74, ptr noundef %75, ptr noundef %1056, ptr noundef %1057, ptr noundef %1065, ptr noundef %1066, ptr noundef %1068, ptr noundef %74, ptr noundef %1072, ptr noundef %1073, ptr noundef %1081, ptr noundef %1082, ptr noundef %1089, ptr noundef %74, ptr noundef %78, ptr noundef %1091, ptr noundef %1099, ptr noundef %57, ptr noundef %1101, ptr noundef %63)
  br label %1102

1102:                                             ; preds = %1045, %988
  br label %972

1103:                                             ; preds = %972
  %1104 = load double, ptr %78, align 8, !tbaa !17
  %1105 = load ptr, ptr %43, align 8, !tbaa !5
  %1106 = getelementptr inbounds double, ptr %1105, i64 1
  %1107 = load double, ptr %1106, align 8, !tbaa !17
  %1108 = fdiv double %1104, %1107
  %1109 = load ptr, ptr %43, align 8, !tbaa !5
  %1110 = getelementptr inbounds double, ptr %1109, i64 1
  store double %1108, ptr %1110, align 8, !tbaa !17
  br label %1111

1111:                                             ; preds = %1241, %1103
  %1112 = load ptr, ptr %44, align 8, !tbaa !5
  %1113 = load i32, ptr %83, align 4, !tbaa !9
  %1114 = add nsw i32 %1113, 1
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds %struct.doublecomplex, ptr %1112, i64 %1115
  %1117 = load ptr, ptr %44, align 8, !tbaa !5
  %1118 = getelementptr inbounds %struct.doublecomplex, ptr %1117, i64 1
  %1119 = load ptr, ptr %43, align 8, !tbaa !5
  %1120 = getelementptr inbounds double, ptr %1119, i64 2
  %1121 = getelementptr inbounds [3 x i32], ptr %70, i64 0, i64 0
  call void @zlacn2_(ptr noundef %83, ptr noundef %1116, ptr noundef %1118, ptr noundef %1120, ptr noundef %62, ptr noundef %1121)
  %1122 = load i32, ptr %62, align 4, !tbaa !9
  %1123 = icmp ne i32 %1122, 0
  br i1 %1123, label %1124, label %1242

1124:                                             ; preds = %1111
  %1125 = load i32, ptr %62, align 4, !tbaa !9
  %1126 = icmp eq i32 %1125, 1
  br i1 %1126, label %1127, label %1184

1127:                                             ; preds = %1124
  %1128 = load ptr, ptr %45, align 8, !tbaa !5
  %1129 = load i32, ptr %1128, align 4, !tbaa !9
  %1130 = load i32, ptr %74, align 4, !tbaa !9
  %1131 = shl i32 %1130, 1
  %1132 = load i32, ptr %75, align 4, !tbaa !9
  %1133 = mul nsw i32 %1131, %1132
  %1134 = sub nsw i32 %1129, %1133
  store i32 %1134, ptr %57, align 4, !tbaa !9
  %1135 = load ptr, ptr %30, align 8, !tbaa !5
  %1136 = load i32, ptr %68, align 4, !tbaa !9
  %1137 = load i32, ptr %68, align 4, !tbaa !9
  %1138 = load i32, ptr %49, align 4, !tbaa !9
  %1139 = mul nsw i32 %1137, %1138
  %1140 = add nsw i32 %1136, %1139
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds %struct.doublecomplex, ptr %1135, i64 %1141
  %1143 = load ptr, ptr %31, align 8, !tbaa !5
  %1144 = load ptr, ptr %30, align 8, !tbaa !5
  %1145 = load i32, ptr %50, align 4, !tbaa !9
  %1146 = sext i32 %1145 to i64
  %1147 = getelementptr inbounds %struct.doublecomplex, ptr %1144, i64 %1146
  %1148 = load ptr, ptr %31, align 8, !tbaa !5
  %1149 = load ptr, ptr %44, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.doublecomplex, ptr %1149, i64 1
  %1151 = load ptr, ptr %32, align 8, !tbaa !5
  %1152 = load i32, ptr %68, align 4, !tbaa !9
  %1153 = load i32, ptr %68, align 4, !tbaa !9
  %1154 = load i32, ptr %51, align 4, !tbaa !9
  %1155 = mul nsw i32 %1153, %1154
  %1156 = add nsw i32 %1152, %1155
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds %struct.doublecomplex, ptr %1151, i64 %1157
  %1159 = load ptr, ptr %33, align 8, !tbaa !5
  %1160 = load ptr, ptr %32, align 8, !tbaa !5
  %1161 = load i32, ptr %52, align 4, !tbaa !9
  %1162 = sext i32 %1161 to i64
  %1163 = getelementptr inbounds %struct.doublecomplex, ptr %1160, i64 %1162
  %1164 = load ptr, ptr %33, align 8, !tbaa !5
  %1165 = load ptr, ptr %44, align 8, !tbaa !5
  %1166 = load i32, ptr %74, align 4, !tbaa !9
  %1167 = load i32, ptr %75, align 4, !tbaa !9
  %1168 = mul nsw i32 %1166, %1167
  %1169 = add nsw i32 %1168, 1
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds %struct.doublecomplex, ptr %1165, i64 %1170
  %1172 = load ptr, ptr %43, align 8, !tbaa !5
  %1173 = getelementptr inbounds double, ptr %1172, i64 2
  %1174 = load ptr, ptr %44, align 8, !tbaa !5
  %1175 = load i32, ptr %74, align 4, !tbaa !9
  %1176 = load i32, ptr %75, align 4, !tbaa !9
  %1177 = mul nsw i32 %1175, %1176
  %1178 = shl i32 %1177, 1
  %1179 = add nsw i32 %1178, 1
  %1180 = sext i32 %1179 to i64
  %1181 = getelementptr inbounds %struct.doublecomplex, ptr %1174, i64 %1180
  %1182 = load ptr, ptr %46, align 8, !tbaa !5
  %1183 = getelementptr inbounds i32, ptr %1182, i64 1
  call void @ztgsyl_(ptr noundef @.str.3, ptr noundef %85, ptr noundef %75, ptr noundef %74, ptr noundef %1142, ptr noundef %1143, ptr noundef %1147, ptr noundef %1148, ptr noundef %1150, ptr noundef %75, ptr noundef %1158, ptr noundef %1159, ptr noundef %1163, ptr noundef %1164, ptr noundef %1171, ptr noundef %75, ptr noundef %78, ptr noundef %1173, ptr noundef %1181, ptr noundef %57, ptr noundef %1183, ptr noundef %63)
  br label %1241

1184:                                             ; preds = %1124
  %1185 = load ptr, ptr %45, align 8, !tbaa !5
  %1186 = load i32, ptr %1185, align 4, !tbaa !9
  %1187 = load i32, ptr %74, align 4, !tbaa !9
  %1188 = shl i32 %1187, 1
  %1189 = load i32, ptr %75, align 4, !tbaa !9
  %1190 = mul nsw i32 %1188, %1189
  %1191 = sub nsw i32 %1186, %1190
  store i32 %1191, ptr %57, align 4, !tbaa !9
  %1192 = load ptr, ptr %30, align 8, !tbaa !5
  %1193 = load i32, ptr %68, align 4, !tbaa !9
  %1194 = load i32, ptr %68, align 4, !tbaa !9
  %1195 = load i32, ptr %49, align 4, !tbaa !9
  %1196 = mul nsw i32 %1194, %1195
  %1197 = add nsw i32 %1193, %1196
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.doublecomplex, ptr %1192, i64 %1198
  %1200 = load ptr, ptr %31, align 8, !tbaa !5
  %1201 = load ptr, ptr %30, align 8, !tbaa !5
  %1202 = load i32, ptr %50, align 4, !tbaa !9
  %1203 = sext i32 %1202 to i64
  %1204 = getelementptr inbounds %struct.doublecomplex, ptr %1201, i64 %1203
  %1205 = load ptr, ptr %31, align 8, !tbaa !5
  %1206 = load ptr, ptr %44, align 8, !tbaa !5
  %1207 = getelementptr inbounds %struct.doublecomplex, ptr %1206, i64 1
  %1208 = load ptr, ptr %32, align 8, !tbaa !5
  %1209 = load i32, ptr %52, align 4, !tbaa !9
  %1210 = sext i32 %1209 to i64
  %1211 = getelementptr inbounds %struct.doublecomplex, ptr %1208, i64 %1210
  %1212 = load ptr, ptr %33, align 8, !tbaa !5
  %1213 = load ptr, ptr %32, align 8, !tbaa !5
  %1214 = load i32, ptr %68, align 4, !tbaa !9
  %1215 = load i32, ptr %68, align 4, !tbaa !9
  %1216 = load i32, ptr %51, align 4, !tbaa !9
  %1217 = mul nsw i32 %1215, %1216
  %1218 = add nsw i32 %1214, %1217
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds %struct.doublecomplex, ptr %1213, i64 %1219
  %1221 = load ptr, ptr %33, align 8, !tbaa !5
  %1222 = load ptr, ptr %44, align 8, !tbaa !5
  %1223 = load i32, ptr %74, align 4, !tbaa !9
  %1224 = load i32, ptr %75, align 4, !tbaa !9
  %1225 = mul nsw i32 %1223, %1224
  %1226 = add nsw i32 %1225, 1
  %1227 = sext i32 %1226 to i64
  %1228 = getelementptr inbounds %struct.doublecomplex, ptr %1222, i64 %1227
  %1229 = load ptr, ptr %43, align 8, !tbaa !5
  %1230 = getelementptr inbounds double, ptr %1229, i64 2
  %1231 = load ptr, ptr %44, align 8, !tbaa !5
  %1232 = load i32, ptr %74, align 4, !tbaa !9
  %1233 = load i32, ptr %75, align 4, !tbaa !9
  %1234 = mul nsw i32 %1232, %1233
  %1235 = shl i32 %1234, 1
  %1236 = add nsw i32 %1235, 1
  %1237 = sext i32 %1236 to i64
  %1238 = getelementptr inbounds %struct.doublecomplex, ptr %1231, i64 %1237
  %1239 = load ptr, ptr %46, align 8, !tbaa !5
  %1240 = getelementptr inbounds i32, ptr %1239, i64 1
  call void @ztgsyl_(ptr noundef @.str.4, ptr noundef %85, ptr noundef %75, ptr noundef %74, ptr noundef %1199, ptr noundef %1200, ptr noundef %1204, ptr noundef %1205, ptr noundef %1207, ptr noundef %75, ptr noundef %1211, ptr noundef %1212, ptr noundef %1220, ptr noundef %1221, ptr noundef %1228, ptr noundef %75, ptr noundef %78, ptr noundef %1230, ptr noundef %1238, ptr noundef %57, ptr noundef %1240, ptr noundef %63)
  br label %1241

1241:                                             ; preds = %1184, %1127
  br label %1111

1242:                                             ; preds = %1111
  %1243 = load double, ptr %78, align 8, !tbaa !17
  %1244 = load ptr, ptr %43, align 8, !tbaa !5
  %1245 = getelementptr inbounds double, ptr %1244, i64 2
  %1246 = load double, ptr %1245, align 8, !tbaa !17
  %1247 = fdiv double %1243, %1246
  %1248 = load ptr, ptr %43, align 8, !tbaa !5
  %1249 = getelementptr inbounds double, ptr %1248, i64 2
  store double %1247, ptr %1249, align 8, !tbaa !17
  br label %1250

1250:                                             ; preds = %1242, %836
  br label %1251

1251:                                             ; preds = %1250, %830
  %1252 = load ptr, ptr %29, align 8, !tbaa !5
  %1253 = load i32, ptr %1252, align 4, !tbaa !9
  store i32 %1253, ptr %57, align 4, !tbaa !9
  store i32 1, ptr %69, align 4, !tbaa !9
  br label %1254

1254:                                             ; preds = %1476, %1251
  %1255 = load i32, ptr %69, align 4, !tbaa !9
  %1256 = load i32, ptr %57, align 4, !tbaa !9
  %1257 = icmp sle i32 %1255, %1256
  br i1 %1257, label %1258, label %1479

1258:                                             ; preds = %1254
  %1259 = load ptr, ptr %32, align 8, !tbaa !5
  %1260 = load i32, ptr %69, align 4, !tbaa !9
  %1261 = load i32, ptr %69, align 4, !tbaa !9
  %1262 = load i32, ptr %51, align 4, !tbaa !9
  %1263 = mul nsw i32 %1261, %1262
  %1264 = add nsw i32 %1260, %1263
  %1265 = sext i32 %1264 to i64
  %1266 = getelementptr inbounds %struct.doublecomplex, ptr %1259, i64 %1265
  %1267 = call { double, double } @Cd(ptr noundef %1266)
  %1268 = extractvalue { double, double } %1267, 0
  %1269 = extractvalue { double, double } %1267, 1
  %1270 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %1271 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  store double %1268, ptr %1270, align 8
  store double %1269, ptr %1271, align 8
  %1272 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 0
  %1273 = load double, ptr %1272, align 8
  %1274 = getelementptr inbounds { double, double }, ptr %87, i32 0, i32 1
  %1275 = load double, ptr %1274, align 8
  %1276 = call double @cabs(double noundef %1273, double noundef %1275) #5
  store double %1276, ptr %78, align 8, !tbaa !17
  %1277 = load double, ptr %78, align 8, !tbaa !17
  %1278 = load double, ptr %81, align 8, !tbaa !17
  %1279 = fcmp ogt double %1277, %1278
  br i1 %1279, label %1280, label %1403

1280:                                             ; preds = %1258
  %1281 = load i32, ptr %69, align 4, !tbaa !9
  %1282 = load i32, ptr %69, align 4, !tbaa !9
  %1283 = load i32, ptr %51, align 4, !tbaa !9
  %1284 = mul nsw i32 %1282, %1283
  %1285 = add nsw i32 %1281, %1284
  store i32 %1285, ptr %58, align 4, !tbaa !9
  %1286 = load ptr, ptr %32, align 8, !tbaa !5
  %1287 = load i32, ptr %58, align 4, !tbaa !9
  %1288 = sext i32 %1287 to i64
  %1289 = getelementptr inbounds %struct.doublecomplex, ptr %1286, i64 %1288
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %1289, i32 0, i32 0
  %1291 = load double, ptr %1290, align 8, !tbaa !11
  %1292 = load double, ptr %78, align 8, !tbaa !17
  %1293 = fdiv double %1291, %1292
  %1294 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 0
  store double %1293, ptr %1294, align 8, !tbaa !11
  %1295 = load ptr, ptr %32, align 8, !tbaa !5
  %1296 = load i32, ptr %58, align 4, !tbaa !9
  %1297 = sext i32 %1296 to i64
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %1295, i64 %1297
  %1299 = getelementptr inbounds %struct.doublecomplex, ptr %1298, i32 0, i32 1
  %1300 = load double, ptr %1299, align 8, !tbaa !14
  %1301 = load double, ptr %78, align 8, !tbaa !17
  %1302 = fdiv double %1300, %1301
  %1303 = getelementptr inbounds %struct.doublecomplex, ptr %61, i32 0, i32 1
  store double %1302, ptr %1303, align 8, !tbaa !14
  %1304 = call { double, double } @Cd(ptr noundef %61)
  %1305 = extractvalue { double, double } %1304, 0
  %1306 = extractvalue { double, double } %1304, 1
  %1307 = fneg double %1306
  %1308 = call ptr @_pCd(ptr noundef %60)
  %1309 = getelementptr inbounds { double, double }, ptr %1308, i32 0, i32 0
  %1310 = getelementptr inbounds { double, double }, ptr %1308, i32 0, i32 1
  store double %1305, ptr %1309, align 8
  store double %1307, ptr %1310, align 8
  %1311 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1312 = load double, ptr %1311, align 8, !tbaa !11
  %1313 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 0
  store double %1312, ptr %1313, align 8, !tbaa !11
  %1314 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1315 = load double, ptr %1314, align 8, !tbaa !14
  %1316 = getelementptr inbounds %struct.doublecomplex, ptr %66, i32 0, i32 1
  store double %1315, ptr %1316, align 8, !tbaa !14
  %1317 = load i32, ptr %69, align 4, !tbaa !9
  %1318 = load i32, ptr %69, align 4, !tbaa !9
  %1319 = load i32, ptr %51, align 4, !tbaa !9
  %1320 = mul nsw i32 %1318, %1319
  %1321 = add nsw i32 %1317, %1320
  store i32 %1321, ptr %58, align 4, !tbaa !9
  %1322 = load ptr, ptr %32, align 8, !tbaa !5
  %1323 = load i32, ptr %58, align 4, !tbaa !9
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds %struct.doublecomplex, ptr %1322, i64 %1324
  %1326 = getelementptr inbounds %struct.doublecomplex, ptr %1325, i32 0, i32 0
  %1327 = load double, ptr %1326, align 8, !tbaa !11
  %1328 = load double, ptr %78, align 8, !tbaa !17
  %1329 = fdiv double %1327, %1328
  %1330 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  store double %1329, ptr %1330, align 8, !tbaa !11
  %1331 = load ptr, ptr %32, align 8, !tbaa !5
  %1332 = load i32, ptr %58, align 4, !tbaa !9
  %1333 = sext i32 %1332 to i64
  %1334 = getelementptr inbounds %struct.doublecomplex, ptr %1331, i64 %1333
  %1335 = getelementptr inbounds %struct.doublecomplex, ptr %1334, i32 0, i32 1
  %1336 = load double, ptr %1335, align 8, !tbaa !14
  %1337 = load double, ptr %78, align 8, !tbaa !17
  %1338 = fdiv double %1336, %1337
  %1339 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  store double %1338, ptr %1339, align 8, !tbaa !14
  %1340 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 0
  %1341 = load double, ptr %1340, align 8, !tbaa !11
  %1342 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 0
  store double %1341, ptr %1342, align 8, !tbaa !11
  %1343 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 0, i32 1
  %1344 = load double, ptr %1343, align 8, !tbaa !14
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %67, i32 0, i32 1
  store double %1344, ptr %1345, align 8, !tbaa !14
  %1346 = load i32, ptr %69, align 4, !tbaa !9
  %1347 = load i32, ptr %69, align 4, !tbaa !9
  %1348 = load i32, ptr %51, align 4, !tbaa !9
  %1349 = mul nsw i32 %1347, %1348
  %1350 = add nsw i32 %1346, %1349
  store i32 %1350, ptr %58, align 4, !tbaa !9
  %1351 = load double, ptr %78, align 8, !tbaa !17
  %1352 = load ptr, ptr %32, align 8, !tbaa !5
  %1353 = load i32, ptr %58, align 4, !tbaa !9
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds %struct.doublecomplex, ptr %1352, i64 %1354
  %1356 = getelementptr inbounds %struct.doublecomplex, ptr %1355, i32 0, i32 0
  store double %1351, ptr %1356, align 8, !tbaa !11
  %1357 = load ptr, ptr %32, align 8, !tbaa !5
  %1358 = load i32, ptr %58, align 4, !tbaa !9
  %1359 = sext i32 %1358 to i64
  %1360 = getelementptr inbounds %struct.doublecomplex, ptr %1357, i64 %1359
  %1361 = getelementptr inbounds %struct.doublecomplex, ptr %1360, i32 0, i32 1
  store double 0.000000e+00, ptr %1361, align 8, !tbaa !14
  %1362 = load ptr, ptr %29, align 8, !tbaa !5
  %1363 = load i32, ptr %1362, align 4, !tbaa !9
  %1364 = load i32, ptr %69, align 4, !tbaa !9
  %1365 = sub nsw i32 %1363, %1364
  store i32 %1365, ptr %58, align 4, !tbaa !9
  %1366 = load ptr, ptr %32, align 8, !tbaa !5
  %1367 = load i32, ptr %69, align 4, !tbaa !9
  %1368 = load i32, ptr %69, align 4, !tbaa !9
  %1369 = add nsw i32 %1368, 1
  %1370 = load i32, ptr %51, align 4, !tbaa !9
  %1371 = mul nsw i32 %1369, %1370
  %1372 = add nsw i32 %1367, %1371
  %1373 = sext i32 %1372 to i64
  %1374 = getelementptr inbounds %struct.doublecomplex, ptr %1366, i64 %1373
  %1375 = load ptr, ptr %33, align 8, !tbaa !5
  call void @zscal_(ptr noundef %58, ptr noundef %66, ptr noundef %1374, ptr noundef %1375)
  %1376 = load ptr, ptr %29, align 8, !tbaa !5
  %1377 = load i32, ptr %1376, align 4, !tbaa !9
  %1378 = load i32, ptr %69, align 4, !tbaa !9
  %1379 = sub nsw i32 %1377, %1378
  %1380 = add nsw i32 %1379, 1
  store i32 %1380, ptr %58, align 4, !tbaa !9
  %1381 = load ptr, ptr %30, align 8, !tbaa !5
  %1382 = load i32, ptr %69, align 4, !tbaa !9
  %1383 = load i32, ptr %69, align 4, !tbaa !9
  %1384 = load i32, ptr %49, align 4, !tbaa !9
  %1385 = mul nsw i32 %1383, %1384
  %1386 = add nsw i32 %1382, %1385
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds %struct.doublecomplex, ptr %1381, i64 %1387
  %1389 = load ptr, ptr %31, align 8, !tbaa !5
  call void @zscal_(ptr noundef %58, ptr noundef %66, ptr noundef %1388, ptr noundef %1389)
  %1390 = load ptr, ptr %26, align 8, !tbaa !5
  %1391 = load i32, ptr %1390, align 4, !tbaa !9
  %1392 = icmp ne i32 %1391, 0
  br i1 %1392, label %1393, label %1402

1393:                                             ; preds = %1280
  %1394 = load ptr, ptr %29, align 8, !tbaa !5
  %1395 = load ptr, ptr %36, align 8, !tbaa !5
  %1396 = load i32, ptr %69, align 4, !tbaa !9
  %1397 = load i32, ptr %53, align 4, !tbaa !9
  %1398 = mul nsw i32 %1396, %1397
  %1399 = add nsw i32 %1398, 1
  %1400 = sext i32 %1399 to i64
  %1401 = getelementptr inbounds %struct.doublecomplex, ptr %1395, i64 %1400
  call void @zscal_(ptr noundef %1394, ptr noundef %67, ptr noundef %1401, ptr noundef @c__1)
  br label %1402

1402:                                             ; preds = %1393, %1280
  br label %1419

1403:                                             ; preds = %1258
  %1404 = load i32, ptr %69, align 4, !tbaa !9
  %1405 = load i32, ptr %69, align 4, !tbaa !9
  %1406 = load i32, ptr %51, align 4, !tbaa !9
  %1407 = mul nsw i32 %1405, %1406
  %1408 = add nsw i32 %1404, %1407
  store i32 %1408, ptr %58, align 4, !tbaa !9
  %1409 = load ptr, ptr %32, align 8, !tbaa !5
  %1410 = load i32, ptr %58, align 4, !tbaa !9
  %1411 = sext i32 %1410 to i64
  %1412 = getelementptr inbounds %struct.doublecomplex, ptr %1409, i64 %1411
  %1413 = getelementptr inbounds %struct.doublecomplex, ptr %1412, i32 0, i32 0
  store double 0.000000e+00, ptr %1413, align 8, !tbaa !11
  %1414 = load ptr, ptr %32, align 8, !tbaa !5
  %1415 = load i32, ptr %58, align 4, !tbaa !9
  %1416 = sext i32 %1415 to i64
  %1417 = getelementptr inbounds %struct.doublecomplex, ptr %1414, i64 %1416
  %1418 = getelementptr inbounds %struct.doublecomplex, ptr %1417, i32 0, i32 1
  store double 0.000000e+00, ptr %1418, align 8, !tbaa !14
  br label %1419

1419:                                             ; preds = %1403, %1402
  %1420 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %1420, ptr %58, align 4, !tbaa !9
  %1421 = load i32, ptr %69, align 4, !tbaa !9
  %1422 = load i32, ptr %69, align 4, !tbaa !9
  %1423 = load i32, ptr %49, align 4, !tbaa !9
  %1424 = mul nsw i32 %1422, %1423
  %1425 = add nsw i32 %1421, %1424
  store i32 %1425, ptr %59, align 4, !tbaa !9
  %1426 = load ptr, ptr %30, align 8, !tbaa !5
  %1427 = load i32, ptr %59, align 4, !tbaa !9
  %1428 = sext i32 %1427 to i64
  %1429 = getelementptr inbounds %struct.doublecomplex, ptr %1426, i64 %1428
  %1430 = getelementptr inbounds %struct.doublecomplex, ptr %1429, i32 0, i32 0
  %1431 = load double, ptr %1430, align 8, !tbaa !11
  %1432 = load ptr, ptr %34, align 8, !tbaa !5
  %1433 = load i32, ptr %58, align 4, !tbaa !9
  %1434 = sext i32 %1433 to i64
  %1435 = getelementptr inbounds %struct.doublecomplex, ptr %1432, i64 %1434
  %1436 = getelementptr inbounds %struct.doublecomplex, ptr %1435, i32 0, i32 0
  store double %1431, ptr %1436, align 8, !tbaa !11
  %1437 = load ptr, ptr %30, align 8, !tbaa !5
  %1438 = load i32, ptr %59, align 4, !tbaa !9
  %1439 = sext i32 %1438 to i64
  %1440 = getelementptr inbounds %struct.doublecomplex, ptr %1437, i64 %1439
  %1441 = getelementptr inbounds %struct.doublecomplex, ptr %1440, i32 0, i32 1
  %1442 = load double, ptr %1441, align 8, !tbaa !14
  %1443 = load ptr, ptr %34, align 8, !tbaa !5
  %1444 = load i32, ptr %58, align 4, !tbaa !9
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr inbounds %struct.doublecomplex, ptr %1443, i64 %1445
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %1446, i32 0, i32 1
  store double %1442, ptr %1447, align 8, !tbaa !14
  %1448 = load i32, ptr %69, align 4, !tbaa !9
  store i32 %1448, ptr %58, align 4, !tbaa !9
  %1449 = load i32, ptr %69, align 4, !tbaa !9
  %1450 = load i32, ptr %69, align 4, !tbaa !9
  %1451 = load i32, ptr %51, align 4, !tbaa !9
  %1452 = mul nsw i32 %1450, %1451
  %1453 = add nsw i32 %1449, %1452
  store i32 %1453, ptr %59, align 4, !tbaa !9
  %1454 = load ptr, ptr %32, align 8, !tbaa !5
  %1455 = load i32, ptr %59, align 4, !tbaa !9
  %1456 = sext i32 %1455 to i64
  %1457 = getelementptr inbounds %struct.doublecomplex, ptr %1454, i64 %1456
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %1457, i32 0, i32 0
  %1459 = load double, ptr %1458, align 8, !tbaa !11
  %1460 = load ptr, ptr %35, align 8, !tbaa !5
  %1461 = load i32, ptr %58, align 4, !tbaa !9
  %1462 = sext i32 %1461 to i64
  %1463 = getelementptr inbounds %struct.doublecomplex, ptr %1460, i64 %1462
  %1464 = getelementptr inbounds %struct.doublecomplex, ptr %1463, i32 0, i32 0
  store double %1459, ptr %1464, align 8, !tbaa !11
  %1465 = load ptr, ptr %32, align 8, !tbaa !5
  %1466 = load i32, ptr %59, align 4, !tbaa !9
  %1467 = sext i32 %1466 to i64
  %1468 = getelementptr inbounds %struct.doublecomplex, ptr %1465, i64 %1467
  %1469 = getelementptr inbounds %struct.doublecomplex, ptr %1468, i32 0, i32 1
  %1470 = load double, ptr %1469, align 8, !tbaa !14
  %1471 = load ptr, ptr %35, align 8, !tbaa !5
  %1472 = load i32, ptr %58, align 4, !tbaa !9
  %1473 = sext i32 %1472 to i64
  %1474 = getelementptr inbounds %struct.doublecomplex, ptr %1471, i64 %1473
  %1475 = getelementptr inbounds %struct.doublecomplex, ptr %1474, i32 0, i32 1
  store double %1470, ptr %1475, align 8, !tbaa !14
  br label %1476

1476:                                             ; preds = %1419
  %1477 = load i32, ptr %69, align 4, !tbaa !9
  %1478 = add nsw i32 %1477, 1
  store i32 %1478, ptr %69, align 4, !tbaa !9
  br label %1254, !llvm.loop !20

1479:                                             ; preds = %1254
  br label %1480

1480:                                             ; preds = %1479, %657, %592
  %1481 = load i32, ptr %72, align 4, !tbaa !9
  %1482 = sitofp i32 %1481 to double
  %1483 = load ptr, ptr %44, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.doublecomplex, ptr %1483, i64 1
  %1485 = getelementptr inbounds %struct.doublecomplex, ptr %1484, i32 0, i32 0
  store double %1482, ptr %1485, align 8, !tbaa !11
  %1486 = load ptr, ptr %44, align 8, !tbaa !5
  %1487 = getelementptr inbounds %struct.doublecomplex, ptr %1486, i64 1
  %1488 = getelementptr inbounds %struct.doublecomplex, ptr %1487, i32 0, i32 1
  store double 0.000000e+00, ptr %1488, align 8, !tbaa !14
  %1489 = load i32, ptr %82, align 4, !tbaa !9
  %1490 = load ptr, ptr %46, align 8, !tbaa !5
  %1491 = getelementptr inbounds i32, ptr %1490, i64 1
  store i32 %1489, ptr %1491, align 4, !tbaa !9
  store i32 1, ptr %86, align 4
  br label %1492

1492:                                             ; preds = %1480, %532, %524, %237
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %84) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %83) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %79) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %77) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %74) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %73) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %72) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %71) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %70) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %66) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %65) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 16, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  ret void
}

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

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) #4

declare void @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 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 8}
!13 = !{!"double", !7, i64 0}
!14 = !{!12, !13, i64 8}
!15 = 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 i32, align 4
@.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 void @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 i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %struct.doublecomplex, align 16
  %28 = alloca %struct.doublecomplex, align 16
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca double, align 8
  %32 = alloca %struct.doublecomplex, align 16
  %33 = alloca %struct.doublecomplex, align 16
  %34 = alloca i32, align 4
  %35 = alloca [3 x i32], align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca double, align 8
  %39 = alloca i32, align 4
  %40 = alloca double, align 8
  %41 = alloca i32, align 4
  %42 = alloca i32, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %27) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %30) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #8
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %35) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %36) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %37) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %39) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %42) #8
  %43 = getelementptr inbounds i8, ptr %3, i64 -4
  %44 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %44, -1
  %45 = sext i32 %narrow to i64
  %46 = getelementptr inbounds %struct.doublecomplex, ptr %5, i64 %45
  %47 = load i32, ptr %8, align 4, !tbaa !5
  %narrow453 = xor i32 %47, -1
  %48 = sext i32 %narrow453 to i64
  %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 i32, ptr %12, align 4, !tbaa !5
  %narrow454 = xor i32 %52, -1
  %53 = sext i32 %narrow454 to i64
  %54 = getelementptr inbounds %struct.doublecomplex, ptr %11, i64 %53
  %55 = getelementptr inbounds i8, ptr %19, i64 -16
  store i32 0, ptr %23, align 4, !tbaa !5
  %56 = load i32, ptr %20, align 4, !tbaa !5
  %57 = icmp eq i32 %56, -1
  br i1 %57, label %61, label %58

58:                                               ; preds = %24
  %59 = load i32, ptr %22, align 4, !tbaa !5
  %60 = icmp eq i32 %59, -1
  br label %61

61:                                               ; preds = %58, %24
  %62 = phi i1 [ true, %24 ], [ %60, %58 ]
  %63 = load i32, ptr %0, align 4, !tbaa !5
  %or.cond458 = icmp ugt i32 %63, 5
  br i1 %or.cond458, label %.thread, label %64

64:                                               ; preds = %61
  %65 = load i32, ptr %4, align 4, !tbaa !5
  %66 = icmp slt i32 %65, 0
  br i1 %66, label %.thread, label %67

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

70:                                               ; preds = %67
  %71 = load i32, ptr %8, align 4, !tbaa !5
  %72 = icmp slt i32 %71, %spec.select
  br i1 %72, label %.thread, label %73

73:                                               ; preds = %70
  %74 = load i32, ptr %12, align 4, !tbaa !5
  %75 = icmp slt i32 %74, 1
  br i1 %75, label %.thread, label %76

76:                                               ; preds = %73
  %77 = load i32, ptr %1, align 4, !tbaa !5
  %.not = icmp ne i32 %77, 0
  %78 = icmp ult i32 %74, %65
  %or.cond472 = and i1 %78, %.not
  br i1 %or.cond472, label %.thread, label %79

79:                                               ; preds = %76
  %80 = load i32, ptr %14, align 4, !tbaa !5
  %81 = icmp slt i32 %80, 1
  br i1 %81, label %.thread, label %82

82:                                               ; preds = %79
  %83 = load i32, ptr %2, align 4, !tbaa !5
  %.not434 = icmp ne i32 %83, 0
  %84 = icmp ult i32 %80, %65
  %or.cond473 = and i1 %84, %.not434
  br i1 %or.cond473, label %.thread, label %86

.thread:                                          ; preds = %79, %82, %73, %76, %70, %67, %64, %61
  %.sink = phi i32 [ -1, %61 ], [ -5, %64 ], [ -7, %67 ], [ -9, %70 ], [ -13, %76 ], [ -13, %73 ], [ -15, %82 ], [ -15, %79 ]
  %.neg = phi i32 [ 1, %61 ], [ 5, %64 ], [ 7, %67 ], [ 9, %70 ], [ 13, %76 ], [ 13, %73 ], [ 15, %82 ], [ 15, %79 ]
  store i32 %.sink, ptr %23, align 4, !tbaa !5
  store i32 %.neg, ptr %25, align 4, !tbaa !5
  %85 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %25, i32 noundef 6) #8
  br label %473

86:                                               ; preds = %82
  store i32 0, ptr %30, align 4, !tbaa !5
  %87 = icmp eq i32 %63, 1
  %88 = icmp ugt i32 %63, 3
  %spec.select460 = or i1 %87, %88
  store i32 0, ptr %15, align 4, !tbaa !5
  br i1 %62, label %89, label %91

89:                                               ; preds = %86
  %90 = load i32, ptr %0, align 4, !tbaa !5
  %.not436 = icmp eq i32 %90, 0
  br i1 %.not436, label %.thread465, label %91

91:                                               ; preds = %89, %86
  %92 = load i32, ptr %4, align 4, !tbaa !5
  %.not437477 = icmp slt i32 %92, 1
  br i1 %.not437477, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %91
  %93 = add i32 %44, 1
  %94 = add i32 %47, 1
  %95 = add nuw i32 %92, 1
  %wide.trip.count = zext i32 %95 to i64
  br label %96

96:                                               ; preds = %.lr.ph, %119
  %97 = phi i32 [ 0, %.lr.ph ], [ %120, %119 ]
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next, %119 ]
  %98 = trunc nuw nsw i64 %indvars.iv to i32
  %99 = mul i32 %93, %98
  %100 = sext i32 %99 to i64
  %101 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %100
  %102 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %indvars.iv
  %103 = load <2 x double>, ptr %101, align 8, !tbaa !9
  store <2 x double> %103, ptr %102, align 8, !tbaa !9
  %104 = mul i32 %94, %98
  %105 = sext i32 %104 to i64
  %106 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %105
  %107 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %indvars.iv
  %108 = load <2 x double>, ptr %106, align 8, !tbaa !9
  store <2 x double> %108, ptr %107, align 8, !tbaa !9
  %109 = load i32, ptr %4, align 4, !tbaa !5
  %110 = sext i32 %109 to i64
  %111 = icmp slt i64 %indvars.iv, %110
  br i1 %111, label %112, label %115

112:                                              ; preds = %96
  %113 = getelementptr inbounds i32, ptr %43, i64 %indvars.iv
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %.not457 = icmp eq i32 %114, 0
  br i1 %.not457, label %119, label %.sink.split

115:                                              ; preds = %96
  %116 = getelementptr inbounds i32, ptr %43, i64 %110
  %117 = load i32, ptr %116, align 4, !tbaa !5
  %.not456 = icmp eq i32 %117, 0
  br i1 %.not456, label %119, label %.sink.split

.sink.split:                                      ; preds = %115, %112
  %118 = add nsw i32 %97, 1
  store i32 %118, ptr %15, align 4, !tbaa !5
  br label %119

119:                                              ; preds = %.sink.split, %112, %115
  %120 = phi i32 [ %97, %112 ], [ %97, %115 ], [ %118, %.sink.split ]
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %96, !llvm.loop !11

._crit_edge:                                      ; preds = %119, %91
  %121 = phi i32 [ 0, %91 ], [ %120, %119 ]
  %storemerge476.lcssa = phi i32 [ undef, %91 ], [ %98, %119 ]
  %storemerge.lcssa = phi i32 [ 1, %91 ], [ %95, %119 ]
  store i32 %storemerge.lcssa, ptr %34, align 4, !tbaa !5
  store i32 %storemerge476.lcssa, ptr %26, align 4, !tbaa !5
  %.pr464 = load i32, ptr %0, align 4, !tbaa !5
  switch i32 %.pr464, label %.thread465 [
    i32 1, label %122
    i32 2, label %122
    i32 4, label %122
    i32 3, label %131
    i32 5, label %131
  ]

122:                                              ; preds = %._crit_edge, %._crit_edge, %._crit_edge
  %123 = shl i32 %121, 1
  %124 = load i32, ptr %4, align 4, !tbaa !5
  %125 = sub nsw i32 %124, %121
  %126 = mul nsw i32 %125, %123
  %127 = tail call i32 @llvm.smax.i32(i32 %126, i32 1)
  store i32 1, ptr %25, align 4, !tbaa !5
  %128 = add nsw i32 %124, 2
  store i32 %128, ptr %26, align 4, !tbaa !5
  %129 = icmp slt i32 %124, 0
  %130 = select i1 %129, i32 1, i32 %128
  br label %.thread465

131:                                              ; preds = %._crit_edge, %._crit_edge
  %132 = shl i32 %121, 2
  %133 = load i32, ptr %4, align 4, !tbaa !5
  %134 = sub nsw i32 %133, %121
  %135 = mul nsw i32 %134, %132
  %136 = tail call i32 @llvm.smax.i32(i32 %135, i32 1)
  %137 = shl i32 %121, 1
  %138 = mul nsw i32 %134, %137
  %139 = tail call i32 @llvm.smax.i32(i32 %138, i32 1)
  store i32 %139, ptr %25, align 4, !tbaa !5
  %140 = add nsw i32 %133, 2
  store i32 %140, ptr %26, align 4, !tbaa !5
  %141 = tail call i32 @llvm.smax.i32(i32 %139, i32 %140)
  br label %.thread465

.thread465:                                       ; preds = %89, %._crit_edge, %131, %122
  %.0411 = phi i32 [ %127, %122 ], [ %136, %131 ], [ 1, %._crit_edge ], [ 1, %89 ]
  %.0 = phi i32 [ %130, %122 ], [ %141, %131 ], [ 1, %._crit_edge ], [ 1, %89 ]
  %142 = uitofp nneg i32 %.0411 to double
  store double %142, ptr %19, align 8, !tbaa !13
  %143 = getelementptr inbounds i8, ptr %19, i64 8
  store double 0.000000e+00, ptr %143, align 8, !tbaa !15
  store i32 %.0, ptr %21, align 4, !tbaa !5
  %144 = load i32, ptr %20, align 4, !tbaa !5
  %145 = icmp sge i32 %144, %.0411
  %or.cond = select i1 %145, i1 true, i1 %62
  br i1 %or.cond, label %146, label %.thread470.sink.split

146:                                              ; preds = %.thread465
  %147 = load i32, ptr %22, align 4, !tbaa !5
  %148 = icmp sge i32 %147, %.0
  %or.cond3 = select i1 %148, i1 true, i1 %62
  br i1 %or.cond3, label %149, label %.thread470.sink.split

149:                                              ; preds = %146
  %.pr467 = load i32, ptr %23, align 4, !tbaa !5
  %.not442 = icmp eq i32 %.pr467, 0
  br i1 %.not442, label %153, label %.thread470

.thread470.sink.split:                            ; preds = %146, %.thread465
  %.sink524 = phi i32 [ -21, %.thread465 ], [ -23, %146 ]
  store i32 %.sink524, ptr %23, align 4, !tbaa !5
  br label %.thread470

.thread470:                                       ; preds = %.thread470.sink.split, %149
  %150 = phi i32 [ %.pr467, %149 ], [ %.sink524, %.thread470.sink.split ]
  %151 = sub nsw i32 0, %150
  store i32 %151, ptr %25, align 4, !tbaa !5
  %152 = call i32 @xerbla_(ptr noundef nonnull @.str, ptr noundef nonnull %25, i32 noundef 6) #8
  br label %473

153:                                              ; preds = %149
  br i1 %62, label %473, label %154

154:                                              ; preds = %153
  %155 = load i32, ptr %15, align 4, !tbaa !5
  %156 = load i32, ptr %4, align 4, !tbaa !5
  %157 = icmp eq i32 %155, %156
  %158 = icmp eq i32 %155, 0
  %or.cond461 = or i1 %158, %157
  br i1 %or.cond461, label %159, label %174

159:                                              ; preds = %154
  br i1 %spec.select460, label %160, label %161

160:                                              ; preds = %159
  store double 1.000000e+00, ptr %16, align 8, !tbaa !9
  store double 1.000000e+00, ptr %17, align 8, !tbaa !9
  br label %161

161:                                              ; preds = %160, %159
  %.off = add nsw i32 %63, -2
  %switch = icmp ult i32 %.off, 4
  br i1 %switch, label %162, label %.loopexit

162:                                              ; preds = %161
  store double 0.000000e+00, ptr %38, align 8, !tbaa !9
  store double 1.000000e+00, ptr %31, align 8, !tbaa !9
  store i32 %156, ptr %25, align 4, !tbaa !5
  %invariant.gep501 = getelementptr i8, ptr %46, i64 16
  %invariant.gep503 = getelementptr i8, ptr %49, i64 16
  %.not455505 = icmp slt i32 %156, 1
  br i1 %.not455505, label %._crit_edge509, label %.lr.ph508.preheader

.lr.ph508.preheader:                              ; preds = %162
  %163 = sext i32 %44 to i64
  %164 = sext i32 %47 to i64
  br label %.lr.ph508

.lr.ph508:                                        ; preds = %.lr.ph508.preheader, %.lr.ph508
  %indvars.iv511 = phi i64 [ 1, %.lr.ph508.preheader ], [ %indvars.iv.next512, %.lr.ph508 ]
  %165 = mul nsw i64 %indvars.iv511, %163
  %gep502 = getelementptr %struct.doublecomplex, ptr %invariant.gep501, i64 %165
  call void @zlassq_(ptr noundef nonnull %4, ptr noundef %gep502, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef nonnull %31) #8
  %166 = mul nsw i64 %indvars.iv511, %164
  %gep504 = getelementptr %struct.doublecomplex, ptr %invariant.gep503, i64 %166
  call void @zlassq_(ptr noundef nonnull %4, ptr noundef %gep504, ptr noundef nonnull @c__1, ptr noundef nonnull %38, ptr noundef nonnull %31) #8
  %indvars.iv.next512 = add nuw nsw i64 %indvars.iv511, 1
  %167 = load i32, ptr %25, align 4, !tbaa !5
  %168 = sext i32 %167 to i64
  %.not455.not = icmp slt i64 %indvars.iv511, %168
  br i1 %.not455.not, label %.lr.ph508, label %._crit_edge509.loopexit, !llvm.loop !16

._crit_edge509.loopexit:                          ; preds = %.lr.ph508
  %.pre520 = load double, ptr %38, align 8, !tbaa !9
  %.pre521 = load double, ptr %31, align 8, !tbaa !9
  br label %._crit_edge509

._crit_edge509:                                   ; preds = %._crit_edge509.loopexit, %162
  %169 = phi double [ %.pre521, %._crit_edge509.loopexit ], [ 1.000000e+00, %162 ]
  %170 = phi double [ %.pre520, %._crit_edge509.loopexit ], [ 0.000000e+00, %162 ]
  %171 = call double @sqrt(double noundef %169) #8
  %172 = fmul double %170, %171
  store double %172, ptr %18, align 8, !tbaa !9
  %173 = getelementptr inbounds i8, ptr %18, i64 8
  store double %172, ptr %173, align 8, !tbaa !9
  br label %.loopexit

174:                                              ; preds = %154
  %175 = tail call double @dlamch_(ptr noundef nonnull @.str.1) #8
  store i32 0, ptr %39, align 4, !tbaa !5
  %176 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %176, ptr %25, align 4, !tbaa !5
  store i32 1, ptr %34, align 4, !tbaa !5
  %.not444480 = icmp slt i32 %176, 1
  br i1 %.not444480, label %._crit_edge484, label %.lr.ph483

.lr.ph483:                                        ; preds = %174, %193
  %177 = phi i32 [ %194, %193 ], [ %176, %174 ]
  %178 = phi i32 [ %196, %193 ], [ 0, %174 ]
  %storemerge443481 = phi i32 [ %197, %193 ], [ 1, %174 ]
  %179 = sext i32 %storemerge443481 to i64
  %180 = getelementptr inbounds i32, ptr %43, i64 %179
  %181 = load i32, ptr %180, align 4, !tbaa !5
  %.not451 = icmp eq i32 %181, 0
  br i1 %.not451, label %193, label %182

182:                                              ; preds = %.lr.ph483
  %183 = load i32, ptr %39, align 4, !tbaa !5
  %184 = add nsw i32 %183, 1
  store i32 %184, ptr %39, align 4, !tbaa !5
  %.not452 = icmp eq i32 %storemerge443481, %184
  br i1 %.not452, label %186, label %185

185:                                              ; preds = %182
  call void @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 %34, ptr noundef nonnull %39, ptr noundef nonnull %30) #8
  %.pre = load i32, ptr %30, align 4, !tbaa !5
  br label %186

186:                                              ; preds = %185, %182
  %187 = phi i32 [ %.pre, %185 ], [ %178, %182 ]
  %188 = icmp sgt i32 %187, 0
  br i1 %188, label %189, label %._crit_edge514

._crit_edge514:                                   ; preds = %186
  %.pre515 = load i32, ptr %34, align 4, !tbaa !5
  %.pre516 = load i32, ptr %25, align 4, !tbaa !5
  br label %193

189:                                              ; preds = %186
  store i32 1, ptr %23, align 4, !tbaa !5
  br i1 %spec.select460, label %190, label %191

190:                                              ; preds = %189
  store double 0.000000e+00, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %17, align 8, !tbaa !9
  br label %191

191:                                              ; preds = %190, %189
  %.off474 = add nsw i32 %63, -2
  %switch475 = icmp ult i32 %.off474, 4
  br i1 %switch475, label %192, label %.loopexit

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

193:                                              ; preds = %._crit_edge514, %.lr.ph483
  %194 = phi i32 [ %177, %.lr.ph483 ], [ %.pre516, %._crit_edge514 ]
  %195 = phi i32 [ %storemerge443481, %.lr.ph483 ], [ %.pre515, %._crit_edge514 ]
  %196 = phi i32 [ %178, %.lr.ph483 ], [ %187, %._crit_edge514 ]
  %197 = add nsw i32 %195, 1
  store i32 %197, ptr %34, align 4, !tbaa !5
  %.not444.not = icmp slt i32 %195, %194
  br i1 %.not444.not, label %.lr.ph483, label %._crit_edge484, !llvm.loop !17

._crit_edge484:                                   ; preds = %193, %174
  br i1 %spec.select460, label %198, label %277

198:                                              ; preds = %._crit_edge484
  %199 = load i32, ptr %15, align 4, !tbaa !5
  store i32 %199, ptr %36, align 4, !tbaa !5
  %200 = load i32, ptr %4, align 4, !tbaa !5
  %201 = sub nsw i32 %200, %199
  store i32 %201, ptr %37, align 4, !tbaa !5
  %202 = add nsw i32 %199, 1
  %203 = mul nsw i32 %202, %44
  %204 = sext i32 %203 to i64
  %205 = getelementptr %struct.doublecomplex, ptr %46, i64 %204
  %206 = getelementptr i8, ptr %205, i64 16
  call void @zlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %206, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %36) #8
  %207 = mul nsw i32 %202, %47
  %208 = sext i32 %207 to i64
  %209 = getelementptr %struct.doublecomplex, ptr %49, i64 %208
  %210 = getelementptr i8, ptr %209, i64 16
  %211 = load i32, ptr %36, align 4, !tbaa !5
  %212 = load i32, ptr %37, align 4, !tbaa !5
  %213 = mul nsw i32 %212, %211
  %214 = sext i32 %213 to i64
  %215 = getelementptr %struct.doublecomplex, ptr %55, i64 %214
  %216 = getelementptr i8, ptr %215, i64 16
  call void @zlacpy_(ptr noundef nonnull @.str.2, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %210, ptr noundef nonnull %8, ptr noundef %216, ptr noundef nonnull %36) #8
  store i32 0, ptr %42, align 4, !tbaa !5
  %217 = load i32, ptr %20, align 4, !tbaa !5
  %218 = load i32, ptr %36, align 4, !tbaa !5
  %219 = shl i32 %218, 1
  %220 = load i32, ptr %37, align 4, !tbaa !5
  %221 = mul nsw i32 %219, %220
  %222 = sub nsw i32 %217, %221
  store i32 %222, ptr %25, align 4, !tbaa !5
  %223 = add nsw i32 %203, %202
  %224 = sext i32 %223 to i64
  %225 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %224
  %226 = add nsw i32 %207, %202
  %227 = sext i32 %226 to i64
  %228 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %227
  %229 = mul nsw i32 %220, %218
  %230 = sext i32 %229 to i64
  %231 = getelementptr %struct.doublecomplex, ptr %55, i64 %230
  %232 = getelementptr i8, ptr %231, i64 16
  %233 = shl i32 %229, 1
  %234 = or disjoint i32 %233, 1
  %235 = sext i32 %234 to i64
  %236 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %235
  call void @ztgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %42, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %225, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %36, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %228, ptr noundef nonnull %8, ptr noundef %232, ptr noundef nonnull %36, ptr noundef nonnull %38, ptr noundef %18, ptr noundef nonnull %236, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %30) #8
  store double 0.000000e+00, ptr %40, align 8, !tbaa !9
  store double 1.000000e+00, ptr %31, align 8, !tbaa !9
  %237 = load i32, ptr %36, align 4, !tbaa !5
  %238 = load i32, ptr %37, align 4, !tbaa !5
  %239 = mul nsw i32 %238, %237
  store i32 %239, ptr %25, align 4, !tbaa !5
  call void @zlassq_(ptr noundef nonnull %25, ptr noundef nonnull %19, ptr noundef nonnull @c__1, ptr noundef nonnull %40, ptr noundef nonnull %31) #8
  %240 = load double, ptr %40, align 8, !tbaa !9
  %241 = load double, ptr %31, align 8, !tbaa !9
  %242 = call double @sqrt(double noundef %241) #8
  %243 = fmul double %240, %242
  store double %243, ptr %16, align 8, !tbaa !9
  %244 = fcmp oeq double %243, 0.000000e+00
  br i1 %244, label %255, label %245

245:                                              ; preds = %198
  %246 = load double, ptr %38, align 8, !tbaa !9
  %247 = fmul double %246, %246
  %248 = fdiv double %247, %243
  %249 = fadd double %243, %248
  %250 = call double @sqrt(double noundef %249) #8
  %251 = load double, ptr %16, align 8, !tbaa !9
  %252 = call double @sqrt(double noundef %251) #8
  %253 = fmul double %250, %252
  %254 = fdiv double %246, %253
  br label %255

255:                                              ; preds = %198, %245
  %storemerge445 = phi double [ %254, %245 ], [ 1.000000e+00, %198 ]
  store double %storemerge445, ptr %16, align 8, !tbaa !9
  store double 0.000000e+00, ptr %40, align 8, !tbaa !9
  store double 1.000000e+00, ptr %31, align 8, !tbaa !9
  %256 = load i32, ptr %36, align 4, !tbaa !5
  %257 = load i32, ptr %37, align 4, !tbaa !5
  %258 = mul nsw i32 %257, %256
  store i32 %258, ptr %25, align 4, !tbaa !5
  %259 = sext i32 %258 to i64
  %260 = getelementptr %struct.doublecomplex, ptr %55, i64 %259
  %261 = getelementptr i8, ptr %260, i64 16
  call void @zlassq_(ptr noundef nonnull %25, ptr noundef %261, ptr noundef nonnull @c__1, ptr noundef nonnull %40, ptr noundef nonnull %31) #8
  %262 = load double, ptr %40, align 8, !tbaa !9
  %263 = load double, ptr %31, align 8, !tbaa !9
  %264 = call double @sqrt(double noundef %263) #8
  %265 = fmul double %262, %264
  store double %265, ptr %17, align 8, !tbaa !9
  %266 = fcmp oeq double %265, 0.000000e+00
  br i1 %266, label %.sink.split525, label %267

267:                                              ; preds = %255
  %268 = load double, ptr %38, align 8, !tbaa !9
  %269 = fmul double %268, %268
  %270 = fdiv double %269, %265
  %271 = fadd double %265, %270
  %272 = call double @sqrt(double noundef %271) #8
  %273 = load double, ptr %17, align 8, !tbaa !9
  %274 = call double @sqrt(double noundef %273) #8
  %275 = fmul double %272, %274
  %276 = fdiv double %268, %275
  br label %.sink.split525

.sink.split525:                                   ; preds = %255, %267
  %.sink526 = phi double [ %276, %267 ], [ 1.000000e+00, %255 ]
  store double %.sink526, ptr %17, align 8, !tbaa !9
  br label %277

277:                                              ; preds = %.sink.split525, %._crit_edge484
  switch i32 %63, label %398 [
    i32 4, label %278
    i32 2, label %278
    i32 3, label %318
    i32 5, label %318
  ]

278:                                              ; preds = %277, %277
  %279 = load i32, ptr %15, align 4, !tbaa !5
  store i32 %279, ptr %36, align 4, !tbaa !5
  %280 = load i32, ptr %4, align 4, !tbaa !5
  %281 = sub nsw i32 %280, %279
  store i32 %281, ptr %37, align 4, !tbaa !5
  %282 = add nsw i32 %279, 1
  store i32 3, ptr %42, align 4, !tbaa !5
  %283 = load i32, ptr %20, align 4, !tbaa !5
  %284 = shl i32 %279, 1
  %285 = mul nsw i32 %284, %281
  %286 = sub nsw i32 %283, %285
  store i32 %286, ptr %25, align 4, !tbaa !5
  %287 = add i32 %44, 1
  %288 = mul i32 %282, %287
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %289
  %291 = add i32 %47, 1
  %292 = mul i32 %282, %291
  %293 = sext i32 %292 to i64
  %294 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %293
  %295 = mul nsw i32 %281, %279
  %296 = sext i32 %295 to i64
  %297 = getelementptr %struct.doublecomplex, ptr %55, i64 %296
  %298 = getelementptr i8, ptr %297, i64 16
  %299 = shl i32 %295, 1
  %300 = or disjoint i32 %299, 1
  %301 = sext i32 %300 to i64
  %302 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %301
  call void @ztgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %42, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %290, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %36, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %294, ptr noundef nonnull %8, ptr noundef %298, ptr noundef nonnull %36, ptr noundef nonnull %38, ptr noundef %18, ptr noundef nonnull %302, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %30) #8
  %303 = load i32, ptr %20, align 4, !tbaa !5
  %304 = load i32, ptr %36, align 4, !tbaa !5
  %305 = shl i32 %304, 1
  %306 = load i32, ptr %37, align 4, !tbaa !5
  %307 = mul nsw i32 %305, %306
  %308 = sub nsw i32 %303, %307
  store i32 %308, ptr %25, align 4, !tbaa !5
  %309 = mul nsw i32 %306, %304
  %310 = sext i32 %309 to i64
  %311 = getelementptr %struct.doublecomplex, ptr %55, i64 %310
  %312 = getelementptr i8, ptr %311, i64 16
  %313 = getelementptr inbounds i8, ptr %18, i64 8
  %314 = shl i32 %309, 1
  %315 = or disjoint i32 %314, 1
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %316
  call void @ztgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %42, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef %290, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %37, ptr noundef %294, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %312, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %313, ptr noundef nonnull %317, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %30) #8
  br label %398

318:                                              ; preds = %277, %277
  store i32 0, ptr %29, align 4, !tbaa !5
  %319 = load i32, ptr %15, align 4, !tbaa !5
  store i32 %319, ptr %36, align 4, !tbaa !5
  %320 = load i32, ptr %4, align 4, !tbaa !5
  %321 = sub nsw i32 %320, %319
  store i32 %321, ptr %37, align 4, !tbaa !5
  %322 = add nsw i32 %319, 1
  store i32 0, ptr %42, align 4, !tbaa !5
  %323 = shl i32 %319, 1
  %324 = mul nsw i32 %323, %321
  store i32 %324, ptr %41, align 4, !tbaa !5
  %325 = add i32 %44, 1
  %326 = mul i32 %322, %325
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %327
  %329 = add i32 %47, 1
  %330 = mul i32 %322, %329
  %331 = sext i32 %330 to i64
  %332 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %331
  br label %333

333:                                              ; preds = %353, %318
  %334 = phi i32 [ %.pre517, %353 ], [ %324, %318 ]
  %335 = sext i32 %334 to i64
  %gep = getelementptr %struct.doublecomplex, ptr %19, i64 %335
  call void @zlacn2_(ptr noundef nonnull %41, ptr noundef %gep, ptr noundef nonnull %19, ptr noundef %18, ptr noundef nonnull %29, ptr noundef nonnull %35) #8
  %336 = load i32, ptr %29, align 4, !tbaa !5
  switch i32 %336, label %345 [
    i32 0, label %359
    i32 1, label %337
  ]

337:                                              ; preds = %333
  %338 = load i32, ptr %20, align 4, !tbaa !5
  %339 = load i32, ptr %36, align 4, !tbaa !5
  %340 = shl i32 %339, 1
  %341 = load i32, ptr %37, align 4, !tbaa !5
  %342 = mul nsw i32 %340, %341
  %343 = sub nsw i32 %338, %342
  store i32 %343, ptr %25, align 4, !tbaa !5
  %344 = mul nsw i32 %341, %339
  br label %353

345:                                              ; preds = %333
  %346 = load i32, ptr %20, align 4, !tbaa !5
  %347 = load i32, ptr %36, align 4, !tbaa !5
  %348 = shl i32 %347, 1
  %349 = load i32, ptr %37, align 4, !tbaa !5
  %350 = mul nsw i32 %348, %349
  %351 = sub nsw i32 %346, %350
  store i32 %351, ptr %25, align 4, !tbaa !5
  %352 = mul nsw i32 %349, %347
  br label %353

353:                                              ; preds = %345, %337
  %.sink533 = phi i32 [ %352, %345 ], [ %344, %337 ]
  %.str.4.sink = phi ptr [ @.str.4, %345 ], [ @.str.3, %337 ]
  %354 = sext i32 %.sink533 to i64
  %gep488 = getelementptr %struct.doublecomplex, ptr %19, i64 %354
  %355 = shl i32 %.sink533, 1
  %356 = or disjoint i32 %355, 1
  %357 = sext i32 %356 to i64
  %358 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %357
  call void @ztgsyl_(ptr noundef nonnull %.str.4.sink, ptr noundef nonnull %42, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %328, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %36, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %332, ptr noundef nonnull %8, ptr noundef %gep488, ptr noundef nonnull %36, ptr noundef nonnull %38, ptr noundef %18, ptr noundef nonnull %358, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %30) #8
  %.pre517 = load i32, ptr %41, align 4, !tbaa !5
  br label %333

359:                                              ; preds = %333
  %360 = load double, ptr %38, align 8, !tbaa !9
  %361 = load double, ptr %18, align 8, !tbaa !9
  %362 = fdiv double %360, %361
  store double %362, ptr %18, align 8, !tbaa !9
  %363 = getelementptr inbounds i8, ptr %18, i64 8
  br label %364

364:                                              ; preds = %.backedge, %359
  %365 = load i32, ptr %41, align 4, !tbaa !5
  %366 = sext i32 %365 to i64
  %gep490 = getelementptr %struct.doublecomplex, ptr %19, i64 %366
  call void @zlacn2_(ptr noundef nonnull %41, ptr noundef %gep490, ptr noundef nonnull %19, ptr noundef nonnull %363, ptr noundef nonnull %29, ptr noundef nonnull %35) #8
  %367 = load i32, ptr %29, align 4, !tbaa !5
  switch i32 %367, label %381 [
    i32 0, label %394
    i32 1, label %368
  ]

368:                                              ; preds = %364
  %369 = load i32, ptr %20, align 4, !tbaa !5
  %370 = load i32, ptr %36, align 4, !tbaa !5
  %371 = shl i32 %370, 1
  %372 = load i32, ptr %37, align 4, !tbaa !5
  %373 = mul nsw i32 %371, %372
  %374 = sub nsw i32 %369, %373
  store i32 %374, ptr %25, align 4, !tbaa !5
  %375 = mul nsw i32 %372, %370
  %376 = sext i32 %375 to i64
  %gep492 = getelementptr %struct.doublecomplex, ptr %19, i64 %376
  %377 = shl i32 %375, 1
  %378 = or disjoint i32 %377, 1
  %379 = sext i32 %378 to i64
  %380 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %379
  call void @ztgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %42, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef %328, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %37, ptr noundef %332, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %gep492, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %363, ptr noundef nonnull %380, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %30) #8
  br label %.backedge

381:                                              ; preds = %364
  %382 = load i32, ptr %20, align 4, !tbaa !5
  %383 = load i32, ptr %36, align 4, !tbaa !5
  %384 = shl i32 %383, 1
  %385 = load i32, ptr %37, align 4, !tbaa !5
  %386 = mul nsw i32 %384, %385
  %387 = sub nsw i32 %382, %386
  store i32 %387, ptr %25, align 4, !tbaa !5
  %388 = mul nsw i32 %385, %383
  %389 = sext i32 %388 to i64
  %gep494 = getelementptr %struct.doublecomplex, ptr %19, i64 %389
  %390 = shl i32 %388, 1
  %391 = or disjoint i32 %390, 1
  %392 = sext i32 %391 to i64
  %393 = getelementptr inbounds %struct.doublecomplex, ptr %55, i64 %392
  call void @ztgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %42, ptr noundef nonnull %37, ptr noundef nonnull %36, ptr noundef %328, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %37, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %332, ptr noundef nonnull %8, ptr noundef %gep494, ptr noundef nonnull %37, ptr noundef nonnull %38, ptr noundef nonnull %363, ptr noundef nonnull %393, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %30) #8
  br label %.backedge

.backedge:                                        ; preds = %381, %368
  br label %364

394:                                              ; preds = %364
  %395 = load double, ptr %38, align 8, !tbaa !9
  %396 = load double, ptr %363, align 8, !tbaa !9
  %397 = fdiv double %395, %396
  store double %397, ptr %363, align 8, !tbaa !9
  br label %398

398:                                              ; preds = %277, %278, %394
  %399 = load i32, ptr %4, align 4, !tbaa !5
  store i32 %399, ptr %25, align 4, !tbaa !5
  %invariant.gep495 = getelementptr i8, ptr %54, i64 16
  store i32 1, ptr %34, align 4, !tbaa !5
  %.not449497 = icmp slt i32 %399, 1
  br i1 %.not449497, label %.loopexit, label %.lr.ph500

.lr.ph500:                                        ; preds = %398
  %400 = add i32 %47, 1
  %401 = add i32 %44, 1
  br label %402

402:                                              ; preds = %.lr.ph500, %458
  %storemerge448498 = phi i32 [ 1, %.lr.ph500 ], [ %471, %458 ]
  %403 = mul i32 %storemerge448498, %400
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %404
  %406 = call { double, double } @Cd(ptr noundef %405)
  %407 = extractvalue { double, double } %406, 0
  %408 = extractvalue { double, double } %406, 1
  %409 = call double @cabs(double noundef %407, double noundef %408) #8
  store double %409, ptr %38, align 8, !tbaa !9
  %410 = fcmp ogt double %409, %175
  %411 = load i32, ptr %34, align 4, !tbaa !5
  %412 = mul i32 %411, %400
  br i1 %410, label %413, label %455

413:                                              ; preds = %402
  store i32 %412, ptr %26, align 4, !tbaa !5
  %414 = sext i32 %412 to i64
  %415 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %414
  %416 = load <2 x double>, ptr %415, align 8, !tbaa !9
  %417 = insertelement <2 x double> poison, double %409, i64 0
  %418 = shufflevector <2 x double> %417, <2 x double> poison, <2 x i32> zeroinitializer
  %419 = fdiv <2 x double> %416, %418
  store <2 x double> %419, ptr %28, align 16, !tbaa !9
  %420 = call { double, double } @Cd(ptr noundef nonnull %28)
  %421 = extractvalue { double, double } %420, 0
  %422 = extractvalue { double, double } %420, 1
  %423 = fneg double %422
  %424 = call ptr @_pCd(ptr noundef nonnull %27)
  %425 = getelementptr inbounds i8, ptr %424, i64 8
  store double %421, ptr %424, align 8
  store double %423, ptr %425, align 8
  %426 = load <2 x double>, ptr %27, align 16, !tbaa !9
  store <2 x double> %426, ptr %32, align 16, !tbaa !9
  %427 = load i32, ptr %34, align 4, !tbaa !5
  %428 = mul i32 %427, %400
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %429
  %431 = load double, ptr %38, align 8, !tbaa !9
  %432 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %429, i32 1
  %433 = load <2 x double>, ptr %430, align 8, !tbaa !9
  %434 = insertelement <2 x double> poison, double %431, i64 0
  %435 = shufflevector <2 x double> %434, <2 x double> poison, <2 x i32> zeroinitializer
  %436 = fdiv <2 x double> %433, %435
  store <2 x double> %436, ptr %27, align 16, !tbaa !9
  store <2 x double> %436, ptr %33, align 16, !tbaa !9
  store double %431, ptr %430, align 8, !tbaa !13
  store double 0.000000e+00, ptr %432, align 8, !tbaa !15
  %437 = load i32, ptr %4, align 4, !tbaa !5
  %438 = sub nsw i32 %437, %427
  store i32 %438, ptr %26, align 4, !tbaa !5
  %439 = add nsw i32 %427, 1
  %440 = mul nsw i32 %439, %47
  %441 = add nsw i32 %440, %427
  %442 = sext i32 %441 to i64
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %442
  call void @zscal_(ptr noundef nonnull %26, ptr noundef nonnull %32, ptr noundef %443, ptr noundef nonnull %8) #8
  %444 = load i32, ptr %4, align 4, !tbaa !5
  %445 = load i32, ptr %34, align 4, !tbaa !5
  %446 = add i32 %444, 1
  %447 = sub i32 %446, %445
  store i32 %447, ptr %26, align 4, !tbaa !5
  %448 = mul i32 %445, %401
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %449
  call void @zscal_(ptr noundef nonnull %26, ptr noundef nonnull %32, ptr noundef %450, ptr noundef nonnull %6) #8
  %451 = load i32, ptr %1, align 4, !tbaa !5
  %.not450 = icmp eq i32 %451, 0
  %.pre519 = load i32, ptr %34, align 4, !tbaa !5
  br i1 %.not450, label %458, label %452

452:                                              ; preds = %413
  %453 = mul nsw i32 %.pre519, %52
  %454 = sext i32 %453 to i64
  %gep496 = getelementptr %struct.doublecomplex, ptr %invariant.gep495, i64 %454
  call void @zscal_(ptr noundef nonnull %4, ptr noundef nonnull %33, ptr noundef %gep496, ptr noundef nonnull @c__1) #8
  %.pre518 = load i32, ptr %34, align 4, !tbaa !5
  br label %458

455:                                              ; preds = %402
  %456 = sext i32 %412 to i64
  %457 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %456
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %457, i8 0, i64 16, i1 false)
  br label %458

458:                                              ; preds = %413, %452, %455
  %459 = phi i32 [ %.pre519, %413 ], [ %.pre518, %452 ], [ %411, %455 ]
  %460 = mul i32 %459, %401
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds %struct.doublecomplex, ptr %46, i64 %461
  %463 = sext i32 %459 to i64
  %464 = getelementptr inbounds %struct.doublecomplex, ptr %50, i64 %463
  %465 = load <2 x double>, ptr %462, align 8, !tbaa !9
  store <2 x double> %465, ptr %464, align 8, !tbaa !9
  store i32 %459, ptr %26, align 4, !tbaa !5
  %466 = mul i32 %459, %400
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds %struct.doublecomplex, ptr %49, i64 %467
  %469 = getelementptr inbounds %struct.doublecomplex, ptr %51, i64 %463
  %470 = load <2 x double>, ptr %468, align 8, !tbaa !9
  store <2 x double> %470, ptr %469, align 8, !tbaa !9
  %471 = add nsw i32 %459, 1
  store i32 %471, ptr %34, align 4, !tbaa !5
  %472 = load i32, ptr %25, align 4, !tbaa !5
  %.not449.not = icmp slt i32 %459, %472
  br i1 %.not449.not, label %402, label %.loopexit, !llvm.loop !18

.loopexit:                                        ; preds = %458, %398, %191, %161, %192, %._crit_edge509
  store double %142, ptr %19, align 8, !tbaa !13
  store double 0.000000e+00, ptr %143, align 8, !tbaa !15
  store i32 %.0, ptr %21, align 4, !tbaa !5
  br label %473

473:                                              ; preds = %153, %.loopexit, %.thread470, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %36) #8
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #8
  ret void
}

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

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

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

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

; Function Attrs: nofree nounwind
declare double @cabs(double noundef, double noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #5

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) local_unnamed_addr #5

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !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