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

; 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.complex = type { float, float }

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

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

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

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

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

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

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

165:                                              ; preds = %159
  br label %169

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

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

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

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

180:                                              ; preds = %174
  br label %184

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

512:                                              ; preds = %508
  br label %513

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

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

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

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

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

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

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

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

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

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

574:                                              ; preds = %559, %529
  br label %1406

575:                                              ; preds = %519
  %576 = call double @slamch_(ptr noundef @.str.1)
  %577 = fptrunc double %576 to float
  store float %577, ptr %84, align 4, !tbaa !17
  store i64 0, ptr %67, align 8, !tbaa !9
  %578 = load ptr, ptr %30, align 8, !tbaa !5
  %579 = load i64, ptr %578, align 8, !tbaa !9
  store i64 %579, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %580

580:                                              ; preds = %639, %575
  %581 = load i64, ptr %64, align 8, !tbaa !9
  %582 = load i64, ptr %58, align 8, !tbaa !9
  %583 = icmp sle i64 %581, %582
  br i1 %583, label %584, label %642

584:                                              ; preds = %580
  %585 = load ptr, ptr %29, align 8, !tbaa !5
  %586 = load i64, ptr %64, align 8, !tbaa !9
  %587 = getelementptr inbounds i64, ptr %585, i64 %586
  %588 = load i64, ptr %587, align 8, !tbaa !9
  store i64 %588, ptr %73, align 8, !tbaa !9
  %589 = load i64, ptr %73, align 8, !tbaa !9
  %590 = icmp ne i64 %589, 0
  br i1 %590, label %591, label %638

591:                                              ; preds = %584
  %592 = load i64, ptr %67, align 8, !tbaa !9
  %593 = add nsw i64 %592, 1
  store i64 %593, ptr %67, align 8, !tbaa !9
  %594 = load i64, ptr %64, align 8, !tbaa !9
  %595 = load i64, ptr %67, align 8, !tbaa !9
  %596 = icmp ne i64 %594, %595
  br i1 %596, label %597, label %618

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

618:                                              ; preds = %597, %591
  %619 = load i64, ptr %71, align 8, !tbaa !9
  %620 = icmp sgt i64 %619, 0
  br i1 %620, label %621, label %637

621:                                              ; preds = %618
  %622 = load ptr, ptr %49, align 8, !tbaa !5
  store i64 1, ptr %622, align 8, !tbaa !9
  %623 = load i64, ptr %79, align 8, !tbaa !9
  %624 = icmp ne i64 %623, 0
  br i1 %624, label %625, label %628

625:                                              ; preds = %621
  %626 = load ptr, ptr %42, align 8, !tbaa !5
  store float 0.000000e+00, ptr %626, align 4, !tbaa !17
  %627 = load ptr, ptr %43, align 8, !tbaa !5
  store float 0.000000e+00, ptr %627, align 4, !tbaa !17
  br label %628

628:                                              ; preds = %625, %621
  %629 = load i64, ptr %77, align 8, !tbaa !9
  %630 = icmp ne i64 %629, 0
  br i1 %630, label %631, label %636

631:                                              ; preds = %628
  %632 = load ptr, ptr %44, align 8, !tbaa !5
  %633 = getelementptr inbounds float, ptr %632, i64 1
  store float 0.000000e+00, ptr %633, align 4, !tbaa !17
  %634 = load ptr, ptr %44, align 8, !tbaa !5
  %635 = getelementptr inbounds float, ptr %634, i64 2
  store float 0.000000e+00, ptr %635, align 4, !tbaa !17
  br label %636

636:                                              ; preds = %631, %628
  br label %1406

637:                                              ; preds = %618
  br label %638

638:                                              ; preds = %637, %584
  br label %639

639:                                              ; preds = %638
  %640 = load i64, ptr %64, align 8, !tbaa !9
  %641 = add nsw i64 %640, 1
  store i64 %641, ptr %64, align 8, !tbaa !9
  br label %580, !llvm.loop !19

642:                                              ; preds = %580
  %643 = load i64, ptr %79, align 8, !tbaa !9
  %644 = icmp ne i64 %643, 0
  br i1 %644, label %645, label %818

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

747:                                              ; preds = %645
  %748 = load ptr, ptr %42, align 8, !tbaa !5
  store float 1.000000e+00, ptr %748, align 4, !tbaa !17
  br label %771

749:                                              ; preds = %645
  %750 = load float, ptr %82, align 4, !tbaa !17
  %751 = fpext float %750 to double
  %752 = load float, ptr %82, align 4, !tbaa !17
  %753 = load float, ptr %82, align 4, !tbaa !17
  %754 = fmul float %752, %753
  %755 = load ptr, ptr %42, align 8, !tbaa !5
  %756 = load float, ptr %755, align 4, !tbaa !17
  %757 = fdiv float %754, %756
  %758 = load ptr, ptr %42, align 8, !tbaa !5
  %759 = load float, ptr %758, align 4, !tbaa !17
  %760 = fadd float %757, %759
  %761 = fpext float %760 to double
  %762 = call double @sqrt(double noundef %761) #4
  %763 = load ptr, ptr %42, align 8, !tbaa !5
  %764 = load float, ptr %763, align 4, !tbaa !17
  %765 = fpext float %764 to double
  %766 = call double @sqrt(double noundef %765) #4
  %767 = fmul double %762, %766
  %768 = fdiv double %751, %767
  %769 = fptrunc double %768 to float
  %770 = load ptr, ptr %42, align 8, !tbaa !5
  store float %769, ptr %770, align 4, !tbaa !17
  br label %771

771:                                              ; preds = %749, %747
  store float 0.000000e+00, ptr %83, align 4, !tbaa !17
  store float 1.000000e+00, ptr %72, align 4, !tbaa !17
  %772 = load i64, ptr %65, align 8, !tbaa !9
  %773 = load i64, ptr %66, align 8, !tbaa !9
  %774 = mul nsw i64 %772, %773
  store i64 %774, ptr %58, align 8, !tbaa !9
  %775 = load ptr, ptr %45, align 8, !tbaa !5
  %776 = load i64, ptr %65, align 8, !tbaa !9
  %777 = load i64, ptr %66, align 8, !tbaa !9
  %778 = mul nsw i64 %776, %777
  %779 = add nsw i64 %778, 1
  %780 = getelementptr inbounds %struct.complex, ptr %775, i64 %779
  %781 = call i32 @classq_(ptr noundef %58, ptr noundef %780, ptr noundef @c__1, ptr noundef %83, ptr noundef %72)
  %782 = load float, ptr %83, align 4, !tbaa !17
  %783 = fpext float %782 to double
  %784 = load float, ptr %72, align 4, !tbaa !17
  %785 = fpext float %784 to double
  %786 = call double @sqrt(double noundef %785) #4
  %787 = fmul double %783, %786
  %788 = fptrunc double %787 to float
  %789 = load ptr, ptr %43, align 8, !tbaa !5
  store float %788, ptr %789, align 4, !tbaa !17
  %790 = load ptr, ptr %43, align 8, !tbaa !5
  %791 = load float, ptr %790, align 4, !tbaa !17
  %792 = fcmp oeq float %791, 0.000000e+00
  br i1 %792, label %793, label %795

793:                                              ; preds = %771
  %794 = load ptr, ptr %43, align 8, !tbaa !5
  store float 1.000000e+00, ptr %794, align 4, !tbaa !17
  br label %817

795:                                              ; preds = %771
  %796 = load float, ptr %82, align 4, !tbaa !17
  %797 = fpext float %796 to double
  %798 = load float, ptr %82, align 4, !tbaa !17
  %799 = load float, ptr %82, align 4, !tbaa !17
  %800 = fmul float %798, %799
  %801 = load ptr, ptr %43, align 8, !tbaa !5
  %802 = load float, ptr %801, align 4, !tbaa !17
  %803 = fdiv float %800, %802
  %804 = load ptr, ptr %43, align 8, !tbaa !5
  %805 = load float, ptr %804, align 4, !tbaa !17
  %806 = fadd float %803, %805
  %807 = fpext float %806 to double
  %808 = call double @sqrt(double noundef %807) #4
  %809 = load ptr, ptr %43, align 8, !tbaa !5
  %810 = load float, ptr %809, align 4, !tbaa !17
  %811 = fpext float %810 to double
  %812 = call double @sqrt(double noundef %811) #4
  %813 = fmul double %808, %812
  %814 = fdiv double %797, %813
  %815 = fptrunc double %814 to float
  %816 = load ptr, ptr %43, align 8, !tbaa !5
  store float %815, ptr %816, align 4, !tbaa !17
  br label %817

817:                                              ; preds = %795, %793
  br label %818

818:                                              ; preds = %817, %642
  %819 = load i64, ptr %77, align 8, !tbaa !9
  %820 = icmp ne i64 %819, 0
  br i1 %820, label %821, label %1209

821:                                              ; preds = %818
  %822 = load i64, ptr %80, align 8, !tbaa !9
  %823 = icmp ne i64 %822, 0
  br i1 %823, label %824, label %936

824:                                              ; preds = %821
  %825 = load ptr, ptr %41, align 8, !tbaa !5
  %826 = load i64, ptr %825, align 8, !tbaa !9
  store i64 %826, ptr %65, align 8, !tbaa !9
  %827 = load ptr, ptr %30, align 8, !tbaa !5
  %828 = load i64, ptr %827, align 8, !tbaa !9
  %829 = load ptr, ptr %41, align 8, !tbaa !5
  %830 = load i64, ptr %829, align 8, !tbaa !9
  %831 = sub nsw i64 %828, %830
  store i64 %831, ptr %66, align 8, !tbaa !9
  %832 = load i64, ptr %65, align 8, !tbaa !9
  %833 = add nsw i64 %832, 1
  store i64 %833, ptr %63, align 8, !tbaa !9
  store i64 3, ptr %69, align 8, !tbaa !9
  %834 = load ptr, ptr %46, align 8, !tbaa !5
  %835 = load i64, ptr %834, align 8, !tbaa !9
  %836 = load i64, ptr %65, align 8, !tbaa !9
  %837 = shl i64 %836, 1
  %838 = load i64, ptr %66, align 8, !tbaa !9
  %839 = mul nsw i64 %837, %838
  %840 = sub nsw i64 %835, %839
  store i64 %840, ptr %58, align 8, !tbaa !9
  %841 = load ptr, ptr %31, align 8, !tbaa !5
  %842 = load i64, ptr %51, align 8, !tbaa !9
  %843 = getelementptr inbounds %struct.complex, ptr %841, i64 %842
  %844 = load ptr, ptr %32, align 8, !tbaa !5
  %845 = load ptr, ptr %31, align 8, !tbaa !5
  %846 = load i64, ptr %63, align 8, !tbaa !9
  %847 = load i64, ptr %63, align 8, !tbaa !9
  %848 = load i64, ptr %50, align 8, !tbaa !9
  %849 = mul nsw i64 %847, %848
  %850 = add nsw i64 %846, %849
  %851 = getelementptr inbounds %struct.complex, ptr %845, i64 %850
  %852 = load ptr, ptr %32, align 8, !tbaa !5
  %853 = load ptr, ptr %45, align 8, !tbaa !5
  %854 = getelementptr inbounds %struct.complex, ptr %853, i64 1
  %855 = load ptr, ptr %33, align 8, !tbaa !5
  %856 = load i64, ptr %53, align 8, !tbaa !9
  %857 = getelementptr inbounds %struct.complex, ptr %855, i64 %856
  %858 = load ptr, ptr %34, align 8, !tbaa !5
  %859 = load ptr, ptr %33, align 8, !tbaa !5
  %860 = load i64, ptr %63, align 8, !tbaa !9
  %861 = load i64, ptr %63, align 8, !tbaa !9
  %862 = load i64, ptr %52, align 8, !tbaa !9
  %863 = mul nsw i64 %861, %862
  %864 = add nsw i64 %860, %863
  %865 = getelementptr inbounds %struct.complex, ptr %859, i64 %864
  %866 = load ptr, ptr %34, align 8, !tbaa !5
  %867 = load ptr, ptr %45, align 8, !tbaa !5
  %868 = load i64, ptr %65, align 8, !tbaa !9
  %869 = load i64, ptr %66, align 8, !tbaa !9
  %870 = mul nsw i64 %868, %869
  %871 = add nsw i64 %870, 1
  %872 = getelementptr inbounds %struct.complex, ptr %867, i64 %871
  %873 = load ptr, ptr %44, align 8, !tbaa !5
  %874 = getelementptr inbounds float, ptr %873, i64 1
  %875 = load ptr, ptr %45, align 8, !tbaa !5
  %876 = load i64, ptr %65, align 8, !tbaa !9
  %877 = load i64, ptr %66, align 8, !tbaa !9
  %878 = mul nsw i64 %876, %877
  %879 = shl i64 %878, 1
  %880 = add nsw i64 %879, 1
  %881 = getelementptr inbounds %struct.complex, ptr %875, i64 %880
  %882 = load ptr, ptr %47, align 8, !tbaa !5
  %883 = getelementptr inbounds i64, ptr %882, i64 1
  %884 = call i32 @ctgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %65, ptr noundef %66, ptr noundef %843, ptr noundef %844, ptr noundef %851, ptr noundef %852, ptr noundef %854, ptr noundef %65, ptr noundef %857, ptr noundef %858, ptr noundef %865, ptr noundef %866, ptr noundef %872, ptr noundef %65, ptr noundef %82, ptr noundef %874, ptr noundef %881, ptr noundef %58, ptr noundef %883, ptr noundef %71)
  %885 = load ptr, ptr %46, align 8, !tbaa !5
  %886 = load i64, ptr %885, align 8, !tbaa !9
  %887 = load i64, ptr %65, align 8, !tbaa !9
  %888 = shl i64 %887, 1
  %889 = load i64, ptr %66, align 8, !tbaa !9
  %890 = mul nsw i64 %888, %889
  %891 = sub nsw i64 %886, %890
  store i64 %891, ptr %58, align 8, !tbaa !9
  %892 = load ptr, ptr %31, align 8, !tbaa !5
  %893 = load i64, ptr %63, align 8, !tbaa !9
  %894 = load i64, ptr %63, align 8, !tbaa !9
  %895 = load i64, ptr %50, align 8, !tbaa !9
  %896 = mul nsw i64 %894, %895
  %897 = add nsw i64 %893, %896
  %898 = getelementptr inbounds %struct.complex, ptr %892, i64 %897
  %899 = load ptr, ptr %32, align 8, !tbaa !5
  %900 = load ptr, ptr %31, align 8, !tbaa !5
  %901 = load i64, ptr %51, align 8, !tbaa !9
  %902 = getelementptr inbounds %struct.complex, ptr %900, i64 %901
  %903 = load ptr, ptr %32, align 8, !tbaa !5
  %904 = load ptr, ptr %45, align 8, !tbaa !5
  %905 = getelementptr inbounds %struct.complex, ptr %904, i64 1
  %906 = load ptr, ptr %33, align 8, !tbaa !5
  %907 = load i64, ptr %63, align 8, !tbaa !9
  %908 = load i64, ptr %63, align 8, !tbaa !9
  %909 = load i64, ptr %52, align 8, !tbaa !9
  %910 = mul nsw i64 %908, %909
  %911 = add nsw i64 %907, %910
  %912 = getelementptr inbounds %struct.complex, ptr %906, i64 %911
  %913 = load ptr, ptr %34, align 8, !tbaa !5
  %914 = load ptr, ptr %33, align 8, !tbaa !5
  %915 = load i64, ptr %53, align 8, !tbaa !9
  %916 = getelementptr inbounds %struct.complex, ptr %914, i64 %915
  %917 = load ptr, ptr %34, align 8, !tbaa !5
  %918 = load ptr, ptr %45, align 8, !tbaa !5
  %919 = load i64, ptr %65, align 8, !tbaa !9
  %920 = load i64, ptr %66, align 8, !tbaa !9
  %921 = mul nsw i64 %919, %920
  %922 = add nsw i64 %921, 1
  %923 = getelementptr inbounds %struct.complex, ptr %918, i64 %922
  %924 = load ptr, ptr %44, align 8, !tbaa !5
  %925 = getelementptr inbounds float, ptr %924, i64 2
  %926 = load ptr, ptr %45, align 8, !tbaa !5
  %927 = load i64, ptr %65, align 8, !tbaa !9
  %928 = load i64, ptr %66, align 8, !tbaa !9
  %929 = mul nsw i64 %927, %928
  %930 = shl i64 %929, 1
  %931 = add nsw i64 %930, 1
  %932 = getelementptr inbounds %struct.complex, ptr %926, i64 %931
  %933 = load ptr, ptr %47, align 8, !tbaa !5
  %934 = getelementptr inbounds i64, ptr %933, i64 1
  %935 = call i32 @ctgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %66, ptr noundef %65, ptr noundef %898, ptr noundef %899, ptr noundef %902, ptr noundef %903, ptr noundef %905, ptr noundef %66, ptr noundef %912, ptr noundef %913, ptr noundef %916, ptr noundef %917, ptr noundef %923, ptr noundef %66, ptr noundef %82, ptr noundef %925, ptr noundef %932, ptr noundef %58, ptr noundef %934, ptr noundef %71)
  br label %1208

936:                                              ; preds = %821
  store i64 0, ptr %70, align 8, !tbaa !9
  %937 = load ptr, ptr %41, align 8, !tbaa !5
  %938 = load i64, ptr %937, align 8, !tbaa !9
  store i64 %938, ptr %65, align 8, !tbaa !9
  %939 = load ptr, ptr %30, align 8, !tbaa !5
  %940 = load i64, ptr %939, align 8, !tbaa !9
  %941 = load ptr, ptr %41, align 8, !tbaa !5
  %942 = load i64, ptr %941, align 8, !tbaa !9
  %943 = sub nsw i64 %940, %942
  store i64 %943, ptr %66, align 8, !tbaa !9
  %944 = load i64, ptr %65, align 8, !tbaa !9
  %945 = add nsw i64 %944, 1
  store i64 %945, ptr %63, align 8, !tbaa !9
  store i64 0, ptr %69, align 8, !tbaa !9
  %946 = load i64, ptr %65, align 8, !tbaa !9
  %947 = shl i64 %946, 1
  %948 = load i64, ptr %66, align 8, !tbaa !9
  %949 = mul nsw i64 %947, %948
  store i64 %949, ptr %68, align 8, !tbaa !9
  br label %950

950:                                              ; preds = %1070, %936
  %951 = load ptr, ptr %45, align 8, !tbaa !5
  %952 = load i64, ptr %68, align 8, !tbaa !9
  %953 = add nsw i64 %952, 1
  %954 = getelementptr inbounds %struct.complex, ptr %951, i64 %953
  %955 = load ptr, ptr %45, align 8, !tbaa !5
  %956 = getelementptr inbounds %struct.complex, ptr %955, i64 1
  %957 = load ptr, ptr %44, align 8, !tbaa !5
  %958 = getelementptr inbounds float, ptr %957, i64 1
  %959 = getelementptr inbounds [3 x i64], ptr %76, i64 0, i64 0
  %960 = call i32 @clacn2_(ptr noundef %68, ptr noundef %954, ptr noundef %956, ptr noundef %958, ptr noundef %70, ptr noundef %959)
  %961 = load i64, ptr %70, align 8, !tbaa !9
  %962 = icmp ne i64 %961, 0
  br i1 %962, label %963, label %1071

963:                                              ; preds = %950
  %964 = load i64, ptr %70, align 8, !tbaa !9
  %965 = icmp eq i64 %964, 1
  br i1 %965, label %966, label %1018

966:                                              ; preds = %963
  %967 = load ptr, ptr %46, align 8, !tbaa !5
  %968 = load i64, ptr %967, align 8, !tbaa !9
  %969 = load i64, ptr %65, align 8, !tbaa !9
  %970 = shl i64 %969, 1
  %971 = load i64, ptr %66, align 8, !tbaa !9
  %972 = mul nsw i64 %970, %971
  %973 = sub nsw i64 %968, %972
  store i64 %973, ptr %58, align 8, !tbaa !9
  %974 = load ptr, ptr %31, align 8, !tbaa !5
  %975 = load i64, ptr %51, align 8, !tbaa !9
  %976 = getelementptr inbounds %struct.complex, ptr %974, i64 %975
  %977 = load ptr, ptr %32, align 8, !tbaa !5
  %978 = load ptr, ptr %31, align 8, !tbaa !5
  %979 = load i64, ptr %63, align 8, !tbaa !9
  %980 = load i64, ptr %63, align 8, !tbaa !9
  %981 = load i64, ptr %50, align 8, !tbaa !9
  %982 = mul nsw i64 %980, %981
  %983 = add nsw i64 %979, %982
  %984 = getelementptr inbounds %struct.complex, ptr %978, i64 %983
  %985 = load ptr, ptr %32, align 8, !tbaa !5
  %986 = load ptr, ptr %45, align 8, !tbaa !5
  %987 = getelementptr inbounds %struct.complex, ptr %986, i64 1
  %988 = load ptr, ptr %33, align 8, !tbaa !5
  %989 = load i64, ptr %53, align 8, !tbaa !9
  %990 = getelementptr inbounds %struct.complex, ptr %988, i64 %989
  %991 = load ptr, ptr %34, align 8, !tbaa !5
  %992 = load ptr, ptr %33, align 8, !tbaa !5
  %993 = load i64, ptr %63, align 8, !tbaa !9
  %994 = load i64, ptr %63, align 8, !tbaa !9
  %995 = load i64, ptr %52, align 8, !tbaa !9
  %996 = mul nsw i64 %994, %995
  %997 = add nsw i64 %993, %996
  %998 = getelementptr inbounds %struct.complex, ptr %992, i64 %997
  %999 = load ptr, ptr %34, align 8, !tbaa !5
  %1000 = load ptr, ptr %45, align 8, !tbaa !5
  %1001 = load i64, ptr %65, align 8, !tbaa !9
  %1002 = load i64, ptr %66, align 8, !tbaa !9
  %1003 = mul nsw i64 %1001, %1002
  %1004 = add nsw i64 %1003, 1
  %1005 = getelementptr inbounds %struct.complex, ptr %1000, i64 %1004
  %1006 = load ptr, ptr %44, align 8, !tbaa !5
  %1007 = getelementptr inbounds float, ptr %1006, i64 1
  %1008 = load ptr, ptr %45, align 8, !tbaa !5
  %1009 = load i64, ptr %65, align 8, !tbaa !9
  %1010 = load i64, ptr %66, align 8, !tbaa !9
  %1011 = mul nsw i64 %1009, %1010
  %1012 = shl i64 %1011, 1
  %1013 = add nsw i64 %1012, 1
  %1014 = getelementptr inbounds %struct.complex, ptr %1008, i64 %1013
  %1015 = load ptr, ptr %47, align 8, !tbaa !5
  %1016 = getelementptr inbounds i64, ptr %1015, i64 1
  %1017 = call i32 @ctgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %65, ptr noundef %66, ptr noundef %976, ptr noundef %977, ptr noundef %984, ptr noundef %985, ptr noundef %987, ptr noundef %65, ptr noundef %990, ptr noundef %991, ptr noundef %998, ptr noundef %999, ptr noundef %1005, ptr noundef %65, ptr noundef %82, ptr noundef %1007, ptr noundef %1014, ptr noundef %58, ptr noundef %1016, ptr noundef %71)
  br label %1070

1018:                                             ; preds = %963
  %1019 = load ptr, ptr %46, align 8, !tbaa !5
  %1020 = load i64, ptr %1019, align 8, !tbaa !9
  %1021 = load i64, ptr %65, align 8, !tbaa !9
  %1022 = shl i64 %1021, 1
  %1023 = load i64, ptr %66, align 8, !tbaa !9
  %1024 = mul nsw i64 %1022, %1023
  %1025 = sub nsw i64 %1020, %1024
  store i64 %1025, ptr %58, align 8, !tbaa !9
  %1026 = load ptr, ptr %31, align 8, !tbaa !5
  %1027 = load i64, ptr %51, align 8, !tbaa !9
  %1028 = getelementptr inbounds %struct.complex, ptr %1026, i64 %1027
  %1029 = load ptr, ptr %32, align 8, !tbaa !5
  %1030 = load ptr, ptr %31, align 8, !tbaa !5
  %1031 = load i64, ptr %63, align 8, !tbaa !9
  %1032 = load i64, ptr %63, align 8, !tbaa !9
  %1033 = load i64, ptr %50, align 8, !tbaa !9
  %1034 = mul nsw i64 %1032, %1033
  %1035 = add nsw i64 %1031, %1034
  %1036 = getelementptr inbounds %struct.complex, ptr %1030, i64 %1035
  %1037 = load ptr, ptr %32, align 8, !tbaa !5
  %1038 = load ptr, ptr %45, align 8, !tbaa !5
  %1039 = getelementptr inbounds %struct.complex, ptr %1038, i64 1
  %1040 = load ptr, ptr %33, align 8, !tbaa !5
  %1041 = load i64, ptr %53, align 8, !tbaa !9
  %1042 = getelementptr inbounds %struct.complex, ptr %1040, i64 %1041
  %1043 = load ptr, ptr %34, align 8, !tbaa !5
  %1044 = load ptr, ptr %33, align 8, !tbaa !5
  %1045 = load i64, ptr %63, align 8, !tbaa !9
  %1046 = load i64, ptr %63, align 8, !tbaa !9
  %1047 = load i64, ptr %52, align 8, !tbaa !9
  %1048 = mul nsw i64 %1046, %1047
  %1049 = add nsw i64 %1045, %1048
  %1050 = getelementptr inbounds %struct.complex, ptr %1044, i64 %1049
  %1051 = load ptr, ptr %34, align 8, !tbaa !5
  %1052 = load ptr, ptr %45, align 8, !tbaa !5
  %1053 = load i64, ptr %65, align 8, !tbaa !9
  %1054 = load i64, ptr %66, align 8, !tbaa !9
  %1055 = mul nsw i64 %1053, %1054
  %1056 = add nsw i64 %1055, 1
  %1057 = getelementptr inbounds %struct.complex, ptr %1052, i64 %1056
  %1058 = load ptr, ptr %44, align 8, !tbaa !5
  %1059 = getelementptr inbounds float, ptr %1058, i64 1
  %1060 = load ptr, ptr %45, align 8, !tbaa !5
  %1061 = load i64, ptr %65, align 8, !tbaa !9
  %1062 = load i64, ptr %66, align 8, !tbaa !9
  %1063 = mul nsw i64 %1061, %1062
  %1064 = shl i64 %1063, 1
  %1065 = add nsw i64 %1064, 1
  %1066 = getelementptr inbounds %struct.complex, ptr %1060, i64 %1065
  %1067 = load ptr, ptr %47, align 8, !tbaa !5
  %1068 = getelementptr inbounds i64, ptr %1067, i64 1
  %1069 = call i32 @ctgsyl_(ptr noundef @.str.4, ptr noundef %69, ptr noundef %65, ptr noundef %66, ptr noundef %1028, ptr noundef %1029, ptr noundef %1036, ptr noundef %1037, ptr noundef %1039, ptr noundef %65, ptr noundef %1042, ptr noundef %1043, ptr noundef %1050, ptr noundef %1051, ptr noundef %1057, ptr noundef %65, ptr noundef %82, ptr noundef %1059, ptr noundef %1066, ptr noundef %58, ptr noundef %1068, ptr noundef %71)
  br label %1070

1070:                                             ; preds = %1018, %966
  br label %950

1071:                                             ; preds = %950
  %1072 = load float, ptr %82, align 4, !tbaa !17
  %1073 = load ptr, ptr %44, align 8, !tbaa !5
  %1074 = getelementptr inbounds float, ptr %1073, i64 1
  %1075 = load float, ptr %1074, align 4, !tbaa !17
  %1076 = fdiv float %1072, %1075
  %1077 = load ptr, ptr %44, align 8, !tbaa !5
  %1078 = getelementptr inbounds float, ptr %1077, i64 1
  store float %1076, ptr %1078, align 4, !tbaa !17
  br label %1079

1079:                                             ; preds = %1199, %1071
  %1080 = load ptr, ptr %45, align 8, !tbaa !5
  %1081 = load i64, ptr %68, align 8, !tbaa !9
  %1082 = add nsw i64 %1081, 1
  %1083 = getelementptr inbounds %struct.complex, ptr %1080, i64 %1082
  %1084 = load ptr, ptr %45, align 8, !tbaa !5
  %1085 = getelementptr inbounds %struct.complex, ptr %1084, i64 1
  %1086 = load ptr, ptr %44, align 8, !tbaa !5
  %1087 = getelementptr inbounds float, ptr %1086, i64 2
  %1088 = getelementptr inbounds [3 x i64], ptr %76, i64 0, i64 0
  %1089 = call i32 @clacn2_(ptr noundef %68, ptr noundef %1083, ptr noundef %1085, ptr noundef %1087, ptr noundef %70, ptr noundef %1088)
  %1090 = load i64, ptr %70, align 8, !tbaa !9
  %1091 = icmp ne i64 %1090, 0
  br i1 %1091, label %1092, label %1200

1092:                                             ; preds = %1079
  %1093 = load i64, ptr %70, align 8, !tbaa !9
  %1094 = icmp eq i64 %1093, 1
  br i1 %1094, label %1095, label %1147

1095:                                             ; preds = %1092
  %1096 = load ptr, ptr %46, align 8, !tbaa !5
  %1097 = load i64, ptr %1096, align 8, !tbaa !9
  %1098 = load i64, ptr %65, align 8, !tbaa !9
  %1099 = shl i64 %1098, 1
  %1100 = load i64, ptr %66, align 8, !tbaa !9
  %1101 = mul nsw i64 %1099, %1100
  %1102 = sub nsw i64 %1097, %1101
  store i64 %1102, ptr %58, align 8, !tbaa !9
  %1103 = load ptr, ptr %31, align 8, !tbaa !5
  %1104 = load i64, ptr %63, align 8, !tbaa !9
  %1105 = load i64, ptr %63, align 8, !tbaa !9
  %1106 = load i64, ptr %50, align 8, !tbaa !9
  %1107 = mul nsw i64 %1105, %1106
  %1108 = add nsw i64 %1104, %1107
  %1109 = getelementptr inbounds %struct.complex, ptr %1103, i64 %1108
  %1110 = load ptr, ptr %32, align 8, !tbaa !5
  %1111 = load ptr, ptr %31, align 8, !tbaa !5
  %1112 = load i64, ptr %51, align 8, !tbaa !9
  %1113 = getelementptr inbounds %struct.complex, ptr %1111, i64 %1112
  %1114 = load ptr, ptr %32, align 8, !tbaa !5
  %1115 = load ptr, ptr %45, align 8, !tbaa !5
  %1116 = getelementptr inbounds %struct.complex, ptr %1115, i64 1
  %1117 = load ptr, ptr %33, align 8, !tbaa !5
  %1118 = load i64, ptr %63, align 8, !tbaa !9
  %1119 = load i64, ptr %63, align 8, !tbaa !9
  %1120 = load i64, ptr %52, align 8, !tbaa !9
  %1121 = mul nsw i64 %1119, %1120
  %1122 = add nsw i64 %1118, %1121
  %1123 = getelementptr inbounds %struct.complex, ptr %1117, i64 %1122
  %1124 = load ptr, ptr %34, align 8, !tbaa !5
  %1125 = load ptr, ptr %33, align 8, !tbaa !5
  %1126 = load i64, ptr %53, align 8, !tbaa !9
  %1127 = getelementptr inbounds %struct.complex, ptr %1125, i64 %1126
  %1128 = load ptr, ptr %34, align 8, !tbaa !5
  %1129 = load ptr, ptr %45, align 8, !tbaa !5
  %1130 = load i64, ptr %65, align 8, !tbaa !9
  %1131 = load i64, ptr %66, align 8, !tbaa !9
  %1132 = mul nsw i64 %1130, %1131
  %1133 = add nsw i64 %1132, 1
  %1134 = getelementptr inbounds %struct.complex, ptr %1129, i64 %1133
  %1135 = load ptr, ptr %44, align 8, !tbaa !5
  %1136 = getelementptr inbounds float, ptr %1135, i64 2
  %1137 = load ptr, ptr %45, align 8, !tbaa !5
  %1138 = load i64, ptr %65, align 8, !tbaa !9
  %1139 = load i64, ptr %66, align 8, !tbaa !9
  %1140 = mul nsw i64 %1138, %1139
  %1141 = shl i64 %1140, 1
  %1142 = add nsw i64 %1141, 1
  %1143 = getelementptr inbounds %struct.complex, ptr %1137, i64 %1142
  %1144 = load ptr, ptr %47, align 8, !tbaa !5
  %1145 = getelementptr inbounds i64, ptr %1144, i64 1
  %1146 = call i32 @ctgsyl_(ptr noundef @.str.3, ptr noundef %69, ptr noundef %66, ptr noundef %65, ptr noundef %1109, ptr noundef %1110, ptr noundef %1113, ptr noundef %1114, ptr noundef %1116, ptr noundef %66, ptr noundef %1123, ptr noundef %1124, ptr noundef %1127, ptr noundef %1128, ptr noundef %1134, ptr noundef %66, ptr noundef %82, ptr noundef %1136, ptr noundef %1143, ptr noundef %58, ptr noundef %1145, ptr noundef %71)
  br label %1199

1147:                                             ; preds = %1092
  %1148 = load ptr, ptr %46, align 8, !tbaa !5
  %1149 = load i64, ptr %1148, align 8, !tbaa !9
  %1150 = load i64, ptr %65, align 8, !tbaa !9
  %1151 = shl i64 %1150, 1
  %1152 = load i64, ptr %66, align 8, !tbaa !9
  %1153 = mul nsw i64 %1151, %1152
  %1154 = sub nsw i64 %1149, %1153
  store i64 %1154, ptr %58, align 8, !tbaa !9
  %1155 = load ptr, ptr %31, align 8, !tbaa !5
  %1156 = load i64, ptr %63, align 8, !tbaa !9
  %1157 = load i64, ptr %63, align 8, !tbaa !9
  %1158 = load i64, ptr %50, align 8, !tbaa !9
  %1159 = mul nsw i64 %1157, %1158
  %1160 = add nsw i64 %1156, %1159
  %1161 = getelementptr inbounds %struct.complex, ptr %1155, i64 %1160
  %1162 = load ptr, ptr %32, align 8, !tbaa !5
  %1163 = load ptr, ptr %31, align 8, !tbaa !5
  %1164 = load i64, ptr %51, align 8, !tbaa !9
  %1165 = getelementptr inbounds %struct.complex, ptr %1163, i64 %1164
  %1166 = load ptr, ptr %32, align 8, !tbaa !5
  %1167 = load ptr, ptr %45, align 8, !tbaa !5
  %1168 = getelementptr inbounds %struct.complex, ptr %1167, i64 1
  %1169 = load ptr, ptr %33, align 8, !tbaa !5
  %1170 = load i64, ptr %53, align 8, !tbaa !9
  %1171 = getelementptr inbounds %struct.complex, ptr %1169, i64 %1170
  %1172 = load ptr, ptr %34, align 8, !tbaa !5
  %1173 = load ptr, ptr %33, align 8, !tbaa !5
  %1174 = load i64, ptr %63, align 8, !tbaa !9
  %1175 = load i64, ptr %63, align 8, !tbaa !9
  %1176 = load i64, ptr %52, align 8, !tbaa !9
  %1177 = mul nsw i64 %1175, %1176
  %1178 = add nsw i64 %1174, %1177
  %1179 = getelementptr inbounds %struct.complex, ptr %1173, i64 %1178
  %1180 = load ptr, ptr %34, align 8, !tbaa !5
  %1181 = load ptr, ptr %45, align 8, !tbaa !5
  %1182 = load i64, ptr %65, align 8, !tbaa !9
  %1183 = load i64, ptr %66, align 8, !tbaa !9
  %1184 = mul nsw i64 %1182, %1183
  %1185 = add nsw i64 %1184, 1
  %1186 = getelementptr inbounds %struct.complex, ptr %1181, i64 %1185
  %1187 = load ptr, ptr %44, align 8, !tbaa !5
  %1188 = getelementptr inbounds float, ptr %1187, i64 2
  %1189 = load ptr, ptr %45, align 8, !tbaa !5
  %1190 = load i64, ptr %65, align 8, !tbaa !9
  %1191 = load i64, ptr %66, align 8, !tbaa !9
  %1192 = mul nsw i64 %1190, %1191
  %1193 = shl i64 %1192, 1
  %1194 = add nsw i64 %1193, 1
  %1195 = getelementptr inbounds %struct.complex, ptr %1189, i64 %1194
  %1196 = load ptr, ptr %47, align 8, !tbaa !5
  %1197 = getelementptr inbounds i64, ptr %1196, i64 1
  %1198 = call i32 @ctgsyl_(ptr noundef @.str.4, ptr noundef %69, ptr noundef %66, ptr noundef %65, ptr noundef %1161, ptr noundef %1162, ptr noundef %1165, ptr noundef %1166, ptr noundef %1168, ptr noundef %66, ptr noundef %1171, ptr noundef %1172, ptr noundef %1179, ptr noundef %1180, ptr noundef %1186, ptr noundef %66, ptr noundef %82, ptr noundef %1188, ptr noundef %1195, ptr noundef %58, ptr noundef %1197, ptr noundef %71)
  br label %1199

1199:                                             ; preds = %1147, %1095
  br label %1079

1200:                                             ; preds = %1079
  %1201 = load float, ptr %82, align 4, !tbaa !17
  %1202 = load ptr, ptr %44, align 8, !tbaa !5
  %1203 = getelementptr inbounds float, ptr %1202, i64 2
  %1204 = load float, ptr %1203, align 4, !tbaa !17
  %1205 = fdiv float %1201, %1204
  %1206 = load ptr, ptr %44, align 8, !tbaa !5
  %1207 = getelementptr inbounds float, ptr %1206, i64 2
  store float %1205, ptr %1207, align 4, !tbaa !17
  br label %1208

1208:                                             ; preds = %1200, %824
  br label %1209

1209:                                             ; preds = %1208, %818
  %1210 = load ptr, ptr %30, align 8, !tbaa !5
  %1211 = load i64, ptr %1210, align 8, !tbaa !9
  store i64 %1211, ptr %58, align 8, !tbaa !9
  store i64 1, ptr %64, align 8, !tbaa !9
  br label %1212

1212:                                             ; preds = %1402, %1209
  %1213 = load i64, ptr %64, align 8, !tbaa !9
  %1214 = load i64, ptr %58, align 8, !tbaa !9
  %1215 = icmp sle i64 %1213, %1214
  br i1 %1215, label %1216, label %1405

1216:                                             ; preds = %1212
  %1217 = load ptr, ptr %33, align 8, !tbaa !5
  %1218 = load i64, ptr %64, align 8, !tbaa !9
  %1219 = load i64, ptr %64, align 8, !tbaa !9
  %1220 = load i64, ptr %52, align 8, !tbaa !9
  %1221 = mul nsw i64 %1219, %1220
  %1222 = add nsw i64 %1218, %1221
  %1223 = getelementptr inbounds %struct.complex, ptr %1217, i64 %1222
  %1224 = call double @c_abs(ptr noundef %1223)
  %1225 = fptrunc double %1224 to float
  store float %1225, ptr %82, align 4, !tbaa !17
  %1226 = load float, ptr %82, align 4, !tbaa !17
  %1227 = load float, ptr %84, align 4, !tbaa !17
  %1228 = fcmp ogt float %1226, %1227
  br i1 %1228, label %1229, label %1339

1229:                                             ; preds = %1216
  %1230 = load i64, ptr %64, align 8, !tbaa !9
  %1231 = load i64, ptr %64, align 8, !tbaa !9
  %1232 = load i64, ptr %52, align 8, !tbaa !9
  %1233 = mul nsw i64 %1231, %1232
  %1234 = add nsw i64 %1230, %1233
  store i64 %1234, ptr %59, align 8, !tbaa !9
  %1235 = load ptr, ptr %33, align 8, !tbaa !5
  %1236 = load i64, ptr %59, align 8, !tbaa !9
  %1237 = getelementptr inbounds %struct.complex, ptr %1235, i64 %1236
  %1238 = getelementptr inbounds %struct.complex, ptr %1237, i32 0, i32 0
  %1239 = load float, ptr %1238, align 4, !tbaa !11
  %1240 = load float, ptr %82, align 4, !tbaa !17
  %1241 = fdiv float %1239, %1240
  %1242 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 0
  store float %1241, ptr %1242, align 4, !tbaa !11
  %1243 = load ptr, ptr %33, align 8, !tbaa !5
  %1244 = load i64, ptr %59, align 8, !tbaa !9
  %1245 = getelementptr inbounds %struct.complex, ptr %1243, i64 %1244
  %1246 = getelementptr inbounds %struct.complex, ptr %1245, i32 0, i32 1
  %1247 = load float, ptr %1246, align 4, !tbaa !14
  %1248 = load float, ptr %82, align 4, !tbaa !17
  %1249 = fdiv float %1247, %1248
  %1250 = getelementptr inbounds %struct.complex, ptr %62, i32 0, i32 1
  store float %1249, ptr %1250, align 4, !tbaa !14
  call void @r_cnjg(ptr noundef %61, ptr noundef %62)
  %1251 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  %1252 = load float, ptr %1251, align 4, !tbaa !11
  %1253 = getelementptr inbounds %struct.complex, ptr %74, i32 0, i32 0
  store float %1252, ptr %1253, align 4, !tbaa !11
  %1254 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  %1255 = load float, ptr %1254, align 4, !tbaa !14
  %1256 = getelementptr inbounds %struct.complex, ptr %74, i32 0, i32 1
  store float %1255, ptr %1256, align 4, !tbaa !14
  %1257 = load i64, ptr %64, align 8, !tbaa !9
  %1258 = load i64, ptr %64, align 8, !tbaa !9
  %1259 = load i64, ptr %52, align 8, !tbaa !9
  %1260 = mul nsw i64 %1258, %1259
  %1261 = add nsw i64 %1257, %1260
  store i64 %1261, ptr %59, align 8, !tbaa !9
  %1262 = load ptr, ptr %33, align 8, !tbaa !5
  %1263 = load i64, ptr %59, align 8, !tbaa !9
  %1264 = getelementptr inbounds %struct.complex, ptr %1262, i64 %1263
  %1265 = getelementptr inbounds %struct.complex, ptr %1264, i32 0, i32 0
  %1266 = load float, ptr %1265, align 4, !tbaa !11
  %1267 = load float, ptr %82, align 4, !tbaa !17
  %1268 = fdiv float %1266, %1267
  %1269 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  store float %1268, ptr %1269, align 4, !tbaa !11
  %1270 = load ptr, ptr %33, align 8, !tbaa !5
  %1271 = load i64, ptr %59, align 8, !tbaa !9
  %1272 = getelementptr inbounds %struct.complex, ptr %1270, i64 %1271
  %1273 = getelementptr inbounds %struct.complex, ptr %1272, i32 0, i32 1
  %1274 = load float, ptr %1273, align 4, !tbaa !14
  %1275 = load float, ptr %82, align 4, !tbaa !17
  %1276 = fdiv float %1274, %1275
  %1277 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  store float %1276, ptr %1277, align 4, !tbaa !14
  %1278 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 0
  %1279 = load float, ptr %1278, align 4, !tbaa !11
  %1280 = getelementptr inbounds %struct.complex, ptr %75, i32 0, i32 0
  store float %1279, ptr %1280, align 4, !tbaa !11
  %1281 = getelementptr inbounds %struct.complex, ptr %61, i32 0, i32 1
  %1282 = load float, ptr %1281, align 4, !tbaa !14
  %1283 = getelementptr inbounds %struct.complex, ptr %75, i32 0, i32 1
  store float %1282, ptr %1283, align 4, !tbaa !14
  %1284 = load i64, ptr %64, align 8, !tbaa !9
  %1285 = load i64, ptr %64, align 8, !tbaa !9
  %1286 = load i64, ptr %52, align 8, !tbaa !9
  %1287 = mul nsw i64 %1285, %1286
  %1288 = add nsw i64 %1284, %1287
  store i64 %1288, ptr %59, align 8, !tbaa !9
  %1289 = load float, ptr %82, align 4, !tbaa !17
  %1290 = load ptr, ptr %33, align 8, !tbaa !5
  %1291 = load i64, ptr %59, align 8, !tbaa !9
  %1292 = getelementptr inbounds %struct.complex, ptr %1290, i64 %1291
  %1293 = getelementptr inbounds %struct.complex, ptr %1292, i32 0, i32 0
  store float %1289, ptr %1293, align 4, !tbaa !11
  %1294 = load ptr, ptr %33, align 8, !tbaa !5
  %1295 = load i64, ptr %59, align 8, !tbaa !9
  %1296 = getelementptr inbounds %struct.complex, ptr %1294, i64 %1295
  %1297 = getelementptr inbounds %struct.complex, ptr %1296, i32 0, i32 1
  store float 0.000000e+00, ptr %1297, align 4, !tbaa !14
  %1298 = load ptr, ptr %30, align 8, !tbaa !5
  %1299 = load i64, ptr %1298, align 8, !tbaa !9
  %1300 = load i64, ptr %64, align 8, !tbaa !9
  %1301 = sub nsw i64 %1299, %1300
  store i64 %1301, ptr %59, align 8, !tbaa !9
  %1302 = load ptr, ptr %33, align 8, !tbaa !5
  %1303 = load i64, ptr %64, align 8, !tbaa !9
  %1304 = load i64, ptr %64, align 8, !tbaa !9
  %1305 = add nsw i64 %1304, 1
  %1306 = load i64, ptr %52, align 8, !tbaa !9
  %1307 = mul nsw i64 %1305, %1306
  %1308 = add nsw i64 %1303, %1307
  %1309 = getelementptr inbounds %struct.complex, ptr %1302, i64 %1308
  %1310 = load ptr, ptr %34, align 8, !tbaa !5
  %1311 = call i32 @f2c_cscal(ptr noundef %59, ptr noundef %74, ptr noundef %1309, ptr noundef %1310)
  %1312 = load ptr, ptr %30, align 8, !tbaa !5
  %1313 = load i64, ptr %1312, align 8, !tbaa !9
  %1314 = load i64, ptr %64, align 8, !tbaa !9
  %1315 = sub nsw i64 %1313, %1314
  %1316 = add nsw i64 %1315, 1
  store i64 %1316, ptr %59, align 8, !tbaa !9
  %1317 = load ptr, ptr %31, align 8, !tbaa !5
  %1318 = load i64, ptr %64, align 8, !tbaa !9
  %1319 = load i64, ptr %64, align 8, !tbaa !9
  %1320 = load i64, ptr %50, align 8, !tbaa !9
  %1321 = mul nsw i64 %1319, %1320
  %1322 = add nsw i64 %1318, %1321
  %1323 = getelementptr inbounds %struct.complex, ptr %1317, i64 %1322
  %1324 = load ptr, ptr %32, align 8, !tbaa !5
  %1325 = call i32 @f2c_cscal(ptr noundef %59, ptr noundef %74, ptr noundef %1323, ptr noundef %1324)
  %1326 = load ptr, ptr %27, align 8, !tbaa !5
  %1327 = load i64, ptr %1326, align 8, !tbaa !9
  %1328 = icmp ne i64 %1327, 0
  br i1 %1328, label %1329, label %1338

1329:                                             ; preds = %1229
  %1330 = load ptr, ptr %30, align 8, !tbaa !5
  %1331 = load ptr, ptr %37, align 8, !tbaa !5
  %1332 = load i64, ptr %64, align 8, !tbaa !9
  %1333 = load i64, ptr %54, align 8, !tbaa !9
  %1334 = mul nsw i64 %1332, %1333
  %1335 = add nsw i64 %1334, 1
  %1336 = getelementptr inbounds %struct.complex, ptr %1331, i64 %1335
  %1337 = call i32 @f2c_cscal(ptr noundef %1330, ptr noundef %75, ptr noundef %1336, ptr noundef @c__1)
  br label %1338

1338:                                             ; preds = %1329, %1229
  br label %1353

1339:                                             ; preds = %1216
  %1340 = load i64, ptr %64, align 8, !tbaa !9
  %1341 = load i64, ptr %64, align 8, !tbaa !9
  %1342 = load i64, ptr %52, align 8, !tbaa !9
  %1343 = mul nsw i64 %1341, %1342
  %1344 = add nsw i64 %1340, %1343
  store i64 %1344, ptr %59, align 8, !tbaa !9
  %1345 = load ptr, ptr %33, align 8, !tbaa !5
  %1346 = load i64, ptr %59, align 8, !tbaa !9
  %1347 = getelementptr inbounds %struct.complex, ptr %1345, i64 %1346
  %1348 = getelementptr inbounds %struct.complex, ptr %1347, i32 0, i32 0
  store float 0.000000e+00, ptr %1348, align 4, !tbaa !11
  %1349 = load ptr, ptr %33, align 8, !tbaa !5
  %1350 = load i64, ptr %59, align 8, !tbaa !9
  %1351 = getelementptr inbounds %struct.complex, ptr %1349, i64 %1350
  %1352 = getelementptr inbounds %struct.complex, ptr %1351, i32 0, i32 1
  store float 0.000000e+00, ptr %1352, align 4, !tbaa !14
  br label %1353

1353:                                             ; preds = %1339, %1338
  %1354 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1354, ptr %59, align 8, !tbaa !9
  %1355 = load i64, ptr %64, align 8, !tbaa !9
  %1356 = load i64, ptr %64, align 8, !tbaa !9
  %1357 = load i64, ptr %50, align 8, !tbaa !9
  %1358 = mul nsw i64 %1356, %1357
  %1359 = add nsw i64 %1355, %1358
  store i64 %1359, ptr %60, align 8, !tbaa !9
  %1360 = load ptr, ptr %31, align 8, !tbaa !5
  %1361 = load i64, ptr %60, align 8, !tbaa !9
  %1362 = getelementptr inbounds %struct.complex, ptr %1360, i64 %1361
  %1363 = getelementptr inbounds %struct.complex, ptr %1362, i32 0, i32 0
  %1364 = load float, ptr %1363, align 4, !tbaa !11
  %1365 = load ptr, ptr %35, align 8, !tbaa !5
  %1366 = load i64, ptr %59, align 8, !tbaa !9
  %1367 = getelementptr inbounds %struct.complex, ptr %1365, i64 %1366
  %1368 = getelementptr inbounds %struct.complex, ptr %1367, i32 0, i32 0
  store float %1364, ptr %1368, align 4, !tbaa !11
  %1369 = load ptr, ptr %31, align 8, !tbaa !5
  %1370 = load i64, ptr %60, align 8, !tbaa !9
  %1371 = getelementptr inbounds %struct.complex, ptr %1369, i64 %1370
  %1372 = getelementptr inbounds %struct.complex, ptr %1371, i32 0, i32 1
  %1373 = load float, ptr %1372, align 4, !tbaa !14
  %1374 = load ptr, ptr %35, align 8, !tbaa !5
  %1375 = load i64, ptr %59, align 8, !tbaa !9
  %1376 = getelementptr inbounds %struct.complex, ptr %1374, i64 %1375
  %1377 = getelementptr inbounds %struct.complex, ptr %1376, i32 0, i32 1
  store float %1373, ptr %1377, align 4, !tbaa !14
  %1378 = load i64, ptr %64, align 8, !tbaa !9
  store i64 %1378, ptr %59, align 8, !tbaa !9
  %1379 = load i64, ptr %64, align 8, !tbaa !9
  %1380 = load i64, ptr %64, align 8, !tbaa !9
  %1381 = load i64, ptr %52, align 8, !tbaa !9
  %1382 = mul nsw i64 %1380, %1381
  %1383 = add nsw i64 %1379, %1382
  store i64 %1383, ptr %60, align 8, !tbaa !9
  %1384 = load ptr, ptr %33, align 8, !tbaa !5
  %1385 = load i64, ptr %60, align 8, !tbaa !9
  %1386 = getelementptr inbounds %struct.complex, ptr %1384, i64 %1385
  %1387 = getelementptr inbounds %struct.complex, ptr %1386, i32 0, i32 0
  %1388 = load float, ptr %1387, align 4, !tbaa !11
  %1389 = load ptr, ptr %36, align 8, !tbaa !5
  %1390 = load i64, ptr %59, align 8, !tbaa !9
  %1391 = getelementptr inbounds %struct.complex, ptr %1389, i64 %1390
  %1392 = getelementptr inbounds %struct.complex, ptr %1391, i32 0, i32 0
  store float %1388, ptr %1392, align 4, !tbaa !11
  %1393 = load ptr, ptr %33, align 8, !tbaa !5
  %1394 = load i64, ptr %60, align 8, !tbaa !9
  %1395 = getelementptr inbounds %struct.complex, ptr %1393, i64 %1394
  %1396 = getelementptr inbounds %struct.complex, ptr %1395, i32 0, i32 1
  %1397 = load float, ptr %1396, align 4, !tbaa !14
  %1398 = load ptr, ptr %36, align 8, !tbaa !5
  %1399 = load i64, ptr %59, align 8, !tbaa !9
  %1400 = getelementptr inbounds %struct.complex, ptr %1398, i64 %1399
  %1401 = getelementptr inbounds %struct.complex, ptr %1400, i32 0, i32 1
  store float %1397, ptr %1401, align 4, !tbaa !14
  br label %1402

1402:                                             ; preds = %1353
  %1403 = load i64, ptr %64, align 8, !tbaa !9
  %1404 = add nsw i64 %1403, 1
  store i64 %1404, ptr %64, align 8, !tbaa !9
  br label %1212, !llvm.loop !20

1405:                                             ; preds = %1212
  br label %1406

1406:                                             ; preds = %1405, %636, %574
  %1407 = load i64, ptr %78, align 8, !tbaa !9
  %1408 = sitofp i64 %1407 to float
  %1409 = load ptr, ptr %45, align 8, !tbaa !5
  %1410 = getelementptr inbounds %struct.complex, ptr %1409, i64 1
  %1411 = getelementptr inbounds %struct.complex, ptr %1410, i32 0, i32 0
  store float %1408, ptr %1411, align 4, !tbaa !11
  %1412 = load ptr, ptr %45, align 8, !tbaa !5
  %1413 = getelementptr inbounds %struct.complex, ptr %1412, i64 1
  %1414 = getelementptr inbounds %struct.complex, ptr %1413, i32 0, i32 1
  store float 0.000000e+00, ptr %1414, align 4, !tbaa !14
  %1415 = load i64, ptr %85, align 8, !tbaa !9
  %1416 = load ptr, ptr %47, align 8, !tbaa !5
  %1417 = getelementptr inbounds i64, ptr %1416, i64 1
  store i64 %1415, ptr %1417, align 8, !tbaa !9
  store i32 0, ptr %25, align 4
  store i32 1, ptr %87, align 4
  br label %1418

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

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

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

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

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

declare double @slamch_(ptr noundef) #2

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

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

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

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

declare double @c_abs(ptr noundef) #2

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

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

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

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

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

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

@.str = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i64, align 8
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [2 x i8], align 1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

._crit_edge496.loopexit:                          ; preds = %.lr.ph495
  %.pre503 = load float, ptr %41, align 4, !tbaa !9
  %.pre504 = load float, ptr %37, align 4, !tbaa !9
  %163 = fpext float %.pre503 to double
  %164 = fpext float %.pre504 to double
  br label %._crit_edge496

._crit_edge496:                                   ; preds = %._crit_edge496.loopexit, %156
  %165 = phi double [ %164, %._crit_edge496.loopexit ], [ 1.000000e+00, %156 ]
  %166 = phi double [ %163, %._crit_edge496.loopexit ], [ 0.000000e+00, %156 ]
  %167 = call double @sqrt(double noundef %165) #5
  %168 = fmul double %167, %166
  %169 = fptrunc double %168 to float
  br label %.loopexit.sink.split

170:                                              ; preds = %148
  %171 = tail call double @slamch_(ptr noundef nonnull @.str.1) #5
  %172 = fptrunc double %171 to float
  store i64 0, ptr %32, align 8, !tbaa !5
  %173 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %173, ptr %25, align 8, !tbaa !5
  store i64 1, ptr %29, align 8, !tbaa !5
  %.not442479 = icmp slt i64 %173, 1
  br i1 %.not442479, label %._crit_edge483, label %.lr.ph482

.lr.ph482:                                        ; preds = %170, %189
  %174 = phi i64 [ %190, %189 ], [ %173, %170 ]
  %175 = phi i64 [ %192, %189 ], [ 0, %170 ]
  %storemerge441480 = phi i64 [ %193, %189 ], [ 1, %170 ]
  %176 = getelementptr inbounds i64, ptr %43, i64 %storemerge441480
  %177 = load i64, ptr %176, align 8, !tbaa !5
  %.not455 = icmp eq i64 %177, 0
  br i1 %.not455, label %189, label %178

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

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

183:                                              ; preds = %181, %178
  %184 = phi i64 [ %.pre, %181 ], [ %175, %178 ]
  %185 = icmp sgt i64 %184, 0
  br i1 %185, label %186, label %._crit_edge497

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

186:                                              ; preds = %183
  store i64 1, ptr %23, align 8, !tbaa !5
  br i1 %spec.select462, label %187, label %188

187:                                              ; preds = %186
  store float 0.000000e+00, ptr %16, align 4, !tbaa !9
  store float 0.000000e+00, ptr %17, align 4, !tbaa !9
  br label %188

188:                                              ; preds = %187, %186
  %.off473 = add nsw i64 %62, -2
  %switch474 = icmp ult i64 %.off473, 4
  br i1 %switch474, label %.loopexit.sink.split, label %.loopexit

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

._crit_edge483:                                   ; preds = %189, %170
  br i1 %spec.select462, label %194, label %279

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

237:                                              ; preds = %194
  %238 = load float, ptr %41, align 4, !tbaa !9
  %239 = fpext float %238 to double
  %240 = fmul float %238, %238
  %241 = fdiv float %240, %235
  %242 = fadd float %241, %235
  %243 = fpext float %242 to double
  %244 = call double @sqrt(double noundef %243) #5
  %245 = load float, ptr %16, align 4, !tbaa !9
  %246 = fpext float %245 to double
  %247 = call double @sqrt(double noundef %246) #5
  %248 = fmul double %244, %247
  %249 = fdiv double %239, %248
  %250 = fptrunc double %249 to float
  br label %251

251:                                              ; preds = %194, %237
  %storemerge443 = phi float [ %250, %237 ], [ 1.000000e+00, %194 ]
  store float %storemerge443, ptr %16, align 4, !tbaa !9
  store float 0.000000e+00, ptr %42, align 4, !tbaa !9
  store float 1.000000e+00, ptr %37, align 4, !tbaa !9
  %252 = load i64, ptr %30, align 8, !tbaa !5
  %253 = load i64, ptr %31, align 8, !tbaa !5
  %254 = mul nsw i64 %253, %252
  store i64 %254, ptr %25, align 8, !tbaa !5
  %255 = getelementptr %struct.complex, ptr %19, i64 %254
  %256 = call i32 @classq_(ptr noundef nonnull %25, ptr noundef %255, ptr noundef nonnull @c__1, ptr noundef nonnull %42, ptr noundef nonnull %37) #5
  %257 = load float, ptr %42, align 4, !tbaa !9
  %258 = fpext float %257 to double
  %259 = load float, ptr %37, align 4, !tbaa !9
  %260 = fpext float %259 to double
  %261 = call double @sqrt(double noundef %260) #5
  %262 = fmul double %261, %258
  %263 = fptrunc double %262 to float
  store float %263, ptr %17, align 4, !tbaa !9
  %264 = fcmp oeq float %263, 0.000000e+00
  br i1 %264, label %.sink.split507, label %265

265:                                              ; preds = %251
  %266 = load float, ptr %41, align 4, !tbaa !9
  %267 = fpext float %266 to double
  %268 = fmul float %266, %266
  %269 = fdiv float %268, %263
  %270 = fadd float %269, %263
  %271 = fpext float %270 to double
  %272 = call double @sqrt(double noundef %271) #5
  %273 = load float, ptr %17, align 4, !tbaa !9
  %274 = fpext float %273 to double
  %275 = call double @sqrt(double noundef %274) #5
  %276 = fmul double %272, %275
  %277 = fdiv double %267, %276
  %278 = fptrunc double %277 to float
  br label %.sink.split507

.sink.split507:                                   ; preds = %251, %265
  %.sink508 = phi float [ %278, %265 ], [ 1.000000e+00, %251 ]
  store float %.sink508, ptr %17, align 4, !tbaa !9
  br label %279

279:                                              ; preds = %.sink.split507, %._crit_edge483
  switch i64 %62, label %384 [
    i64 4, label %280
    i64 2, label %280
    i64 3, label %310
    i64 5, label %310
  ]

280:                                              ; preds = %279, %279
  %281 = load i64, ptr %15, align 8, !tbaa !5
  store i64 %281, ptr %30, align 8, !tbaa !5
  %282 = load i64, ptr %4, align 8, !tbaa !5
  %283 = sub nsw i64 %282, %281
  store i64 %283, ptr %31, align 8, !tbaa !5
  %284 = add nsw i64 %281, 1
  store i64 3, ptr %34, align 8, !tbaa !5
  %285 = load i64, ptr %20, align 8, !tbaa !5
  %286 = shl i64 %281, 1
  %287 = mul nsw i64 %286, %283
  %288 = sub nsw i64 %285, %287
  store i64 %288, ptr %25, align 8, !tbaa !5
  %289 = add i64 %44, 1
  %290 = mul i64 %284, %289
  %291 = getelementptr inbounds %struct.complex, ptr %46, i64 %290
  %292 = add i64 %47, 1
  %293 = mul i64 %284, %292
  %294 = getelementptr inbounds %struct.complex, ptr %49, i64 %293
  %295 = mul nsw i64 %283, %281
  %296 = getelementptr %struct.complex, ptr %19, i64 %295
  %.idx450 = shl i64 %295, 4
  %297 = getelementptr i8, ptr %19, i64 %.idx450
  %298 = call i32 @ctgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %34, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %291, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %30, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %294, ptr noundef nonnull %8, ptr noundef %296, ptr noundef nonnull %30, ptr noundef nonnull %41, ptr noundef %18, ptr noundef %297, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #5
  %299 = load i64, ptr %20, align 8, !tbaa !5
  %300 = load i64, ptr %30, align 8, !tbaa !5
  %301 = shl i64 %300, 1
  %302 = load i64, ptr %31, align 8, !tbaa !5
  %303 = mul nsw i64 %301, %302
  %304 = sub nsw i64 %299, %303
  store i64 %304, ptr %25, align 8, !tbaa !5
  %305 = mul nsw i64 %302, %300
  %306 = getelementptr %struct.complex, ptr %19, i64 %305
  %307 = getelementptr inbounds i8, ptr %18, i64 4
  %.idx451 = shl i64 %305, 4
  %308 = getelementptr i8, ptr %19, i64 %.idx451
  %309 = call i32 @ctgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %34, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %291, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %31, ptr noundef %294, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %306, ptr noundef nonnull %31, ptr noundef nonnull %41, ptr noundef nonnull %307, ptr noundef %308, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #5
  br label %384

310:                                              ; preds = %279, %279
  store i64 0, ptr %35, align 8, !tbaa !5
  %311 = load i64, ptr %15, align 8, !tbaa !5
  store i64 %311, ptr %30, align 8, !tbaa !5
  %312 = load i64, ptr %4, align 8, !tbaa !5
  %313 = sub nsw i64 %312, %311
  store i64 %313, ptr %31, align 8, !tbaa !5
  %314 = add nsw i64 %311, 1
  store i64 0, ptr %34, align 8, !tbaa !5
  %315 = shl i64 %311, 1
  %316 = mul nsw i64 %315, %313
  store i64 %316, ptr %33, align 8, !tbaa !5
  %317 = add i64 %44, 1
  %318 = mul i64 %314, %317
  %319 = getelementptr inbounds %struct.complex, ptr %46, i64 %318
  %320 = add i64 %47, 1
  %321 = mul i64 %314, %320
  %322 = getelementptr inbounds %struct.complex, ptr %49, i64 %321
  br label %323

323:                                              ; preds = %344, %310
  %324 = phi i64 [ %.pre500, %344 ], [ %316, %310 ]
  %325 = getelementptr %struct.complex, ptr %19, i64 %324
  %326 = call i32 @clacn2_(ptr noundef nonnull %33, ptr noundef %325, ptr noundef nonnull %19, ptr noundef %18, ptr noundef nonnull %35, ptr noundef nonnull %40) #5
  %327 = load i64, ptr %35, align 8, !tbaa !5
  switch i64 %327, label %336 [
    i64 0, label %348
    i64 1, label %328
  ]

328:                                              ; preds = %323
  %329 = load i64, ptr %20, align 8, !tbaa !5
  %330 = load i64, ptr %30, align 8, !tbaa !5
  %331 = shl i64 %330, 1
  %332 = load i64, ptr %31, align 8, !tbaa !5
  %333 = mul nsw i64 %331, %332
  %334 = sub nsw i64 %329, %333
  store i64 %334, ptr %25, align 8, !tbaa !5
  %335 = mul nsw i64 %332, %330
  br label %344

336:                                              ; preds = %323
  %337 = load i64, ptr %20, align 8, !tbaa !5
  %338 = load i64, ptr %30, align 8, !tbaa !5
  %339 = shl i64 %338, 1
  %340 = load i64, ptr %31, align 8, !tbaa !5
  %341 = mul nsw i64 %339, %340
  %342 = sub nsw i64 %337, %341
  store i64 %342, ptr %25, align 8, !tbaa !5
  %343 = mul nsw i64 %340, %338
  br label %344

344:                                              ; preds = %336, %328
  %.sink512 = phi i64 [ %343, %336 ], [ %335, %328 ]
  %.str.4.sink = phi ptr [ @.str.4, %336 ], [ @.str.3, %328 ]
  %345 = getelementptr %struct.complex, ptr %19, i64 %.sink512
  %.idx448 = shl i64 %.sink512, 4
  %346 = getelementptr i8, ptr %19, i64 %.idx448
  %347 = call i32 @ctgsyl_(ptr noundef nonnull %.str.4.sink, ptr noundef nonnull %34, ptr noundef nonnull %30, ptr noundef nonnull %31, ptr noundef %5, ptr noundef nonnull %6, ptr noundef %319, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %30, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %322, ptr noundef nonnull %8, ptr noundef %345, ptr noundef nonnull %30, ptr noundef nonnull %41, ptr noundef %18, ptr noundef %346, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #5
  %.pre500 = load i64, ptr %33, align 8, !tbaa !5
  br label %323

348:                                              ; preds = %323
  %349 = load float, ptr %41, align 4, !tbaa !9
  %350 = load float, ptr %18, align 4, !tbaa !9
  %351 = fdiv float %349, %350
  store float %351, ptr %18, align 4, !tbaa !9
  %352 = getelementptr inbounds i8, ptr %18, i64 4
  br label %353

353:                                              ; preds = %.backedge, %348
  %354 = load i64, ptr %33, align 8, !tbaa !5
  %355 = getelementptr %struct.complex, ptr %19, i64 %354
  %356 = call i32 @clacn2_(ptr noundef nonnull %33, ptr noundef %355, ptr noundef nonnull %19, ptr noundef nonnull %352, ptr noundef nonnull %35, ptr noundef nonnull %40) #5
  %357 = load i64, ptr %35, align 8, !tbaa !5
  switch i64 %357, label %369 [
    i64 0, label %380
    i64 1, label %358
  ]

358:                                              ; preds = %353
  %359 = load i64, ptr %20, align 8, !tbaa !5
  %360 = load i64, ptr %30, align 8, !tbaa !5
  %361 = shl i64 %360, 1
  %362 = load i64, ptr %31, align 8, !tbaa !5
  %363 = mul nsw i64 %361, %362
  %364 = sub nsw i64 %359, %363
  store i64 %364, ptr %25, align 8, !tbaa !5
  %365 = mul nsw i64 %362, %360
  %366 = getelementptr %struct.complex, ptr %19, i64 %365
  %.idx447 = shl i64 %365, 4
  %367 = getelementptr i8, ptr %19, i64 %.idx447
  %368 = call i32 @ctgsyl_(ptr noundef nonnull @.str.3, ptr noundef nonnull %34, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %319, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %31, ptr noundef %322, ptr noundef nonnull %8, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %366, ptr noundef nonnull %31, ptr noundef nonnull %41, ptr noundef nonnull %352, ptr noundef %367, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #5
  br label %.backedge

369:                                              ; preds = %353
  %370 = load i64, ptr %20, align 8, !tbaa !5
  %371 = load i64, ptr %30, align 8, !tbaa !5
  %372 = shl i64 %371, 1
  %373 = load i64, ptr %31, align 8, !tbaa !5
  %374 = mul nsw i64 %372, %373
  %375 = sub nsw i64 %370, %374
  store i64 %375, ptr %25, align 8, !tbaa !5
  %376 = mul nsw i64 %373, %371
  %377 = getelementptr %struct.complex, ptr %19, i64 %376
  %.idx446 = shl i64 %376, 4
  %378 = getelementptr i8, ptr %19, i64 %.idx446
  %379 = call i32 @ctgsyl_(ptr noundef nonnull @.str.4, ptr noundef nonnull %34, ptr noundef nonnull %31, ptr noundef nonnull %30, ptr noundef %319, ptr noundef nonnull %6, ptr noundef %5, ptr noundef nonnull %6, ptr noundef nonnull %19, ptr noundef nonnull %31, ptr noundef %7, ptr noundef nonnull %8, ptr noundef %322, ptr noundef nonnull %8, ptr noundef %377, ptr noundef nonnull %31, ptr noundef nonnull %41, ptr noundef nonnull %352, ptr noundef %378, ptr noundef nonnull %25, ptr noundef nonnull %21, ptr noundef nonnull %36) #5
  br label %.backedge

.backedge:                                        ; preds = %369, %358
  br label %353

380:                                              ; preds = %353
  %381 = load float, ptr %41, align 4, !tbaa !9
  %382 = load float, ptr %352, align 4, !tbaa !9
  %383 = fdiv float %381, %382
  store float %383, ptr %352, align 4, !tbaa !9
  br label %384

384:                                              ; preds = %279, %280, %380
  %385 = load i64, ptr %4, align 8, !tbaa !5
  store i64 %385, ptr %25, align 8, !tbaa !5
  %invariant.gep = getelementptr i8, ptr %54, i64 8
  store i64 1, ptr %29, align 8, !tbaa !5
  %.not453484 = icmp slt i64 %385, 1
  br i1 %.not453484, label %.loopexit, label %.lr.ph487

.lr.ph487:                                        ; preds = %384
  %386 = add i64 %47, 1
  %387 = add i64 %44, 1
  br label %388

388:                                              ; preds = %.lr.ph487, %432
  %storemerge452485 = phi i64 [ 1, %.lr.ph487 ], [ %442, %432 ]
  %389 = mul i64 %storemerge452485, %386
  %390 = getelementptr inbounds %struct.complex, ptr %49, i64 %389
  %391 = call double @c_abs(ptr noundef %390) #5
  %392 = fptrunc double %391 to float
  store float %392, ptr %41, align 4, !tbaa !9
  %393 = fcmp ogt float %392, %172
  %394 = load i64, ptr %29, align 8, !tbaa !5
  %395 = mul i64 %394, %386
  br i1 %393, label %396, label %430

396:                                              ; preds = %388
  store i64 %395, ptr %26, align 8, !tbaa !5
  %397 = getelementptr inbounds %struct.complex, ptr %49, i64 %395
  %398 = load <2 x float>, ptr %397, align 4, !tbaa !9
  %399 = insertelement <2 x float> poison, float %392, i64 0
  %400 = shufflevector <2 x float> %399, <2 x float> poison, <2 x i32> zeroinitializer
  %401 = fdiv <2 x float> %398, %400
  store <2 x float> %401, ptr %28, align 8, !tbaa !9
  call void @r_cnjg(ptr noundef nonnull %27, ptr noundef nonnull %28) #5
  %402 = load <2 x float>, ptr %27, align 8, !tbaa !9
  store <2 x float> %402, ptr %38, align 8, !tbaa !9
  %403 = load i64, ptr %29, align 8, !tbaa !5
  %404 = mul i64 %403, %386
  %405 = getelementptr inbounds %struct.complex, ptr %49, i64 %404
  %406 = load float, ptr %41, align 4, !tbaa !9
  %407 = getelementptr inbounds %struct.complex, ptr %49, i64 %404, i32 1
  %408 = load <2 x float>, ptr %405, align 4, !tbaa !9
  %409 = insertelement <2 x float> poison, float %406, i64 0
  %410 = shufflevector <2 x float> %409, <2 x float> poison, <2 x i32> zeroinitializer
  %411 = fdiv <2 x float> %408, %410
  store <2 x float> %411, ptr %27, align 8, !tbaa !9
  store <2 x float> %411, ptr %39, align 8, !tbaa !9
  store float %406, ptr %405, align 4, !tbaa !13
  store float 0.000000e+00, ptr %407, align 4, !tbaa !15
  %412 = load i64, ptr %4, align 8, !tbaa !5
  %413 = sub nsw i64 %412, %403
  store i64 %413, ptr %26, align 8, !tbaa !5
  %414 = add nsw i64 %403, 1
  %415 = mul nsw i64 %414, %47
  %416 = getelementptr %struct.complex, ptr %49, i64 %403
  %417 = getelementptr %struct.complex, ptr %416, i64 %415
  %418 = call i32 @f2c_cscal(ptr noundef nonnull %26, ptr noundef nonnull %38, ptr noundef %417, ptr noundef nonnull %8) #5
  %419 = load i64, ptr %4, align 8, !tbaa !5
  %420 = load i64, ptr %29, align 8, !tbaa !5
  %421 = add i64 %419, 1
  %422 = sub i64 %421, %420
  store i64 %422, ptr %26, align 8, !tbaa !5
  %423 = mul i64 %420, %387
  %424 = getelementptr inbounds %struct.complex, ptr %46, i64 %423
  %425 = call i32 @f2c_cscal(ptr noundef nonnull %26, ptr noundef nonnull %38, ptr noundef %424, ptr noundef nonnull %6) #5
  %426 = load i64, ptr %1, align 8, !tbaa !5
  %.not454 = icmp eq i64 %426, 0
  %.pre502 = load i64, ptr %29, align 8, !tbaa !5
  br i1 %.not454, label %432, label %427

427:                                              ; preds = %396
  %428 = mul nsw i64 %.pre502, %52
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %428
  %429 = call i32 @f2c_cscal(ptr noundef nonnull %4, ptr noundef nonnull %39, ptr noundef %gep, ptr noundef nonnull @c__1) #5
  %.pre501 = load i64, ptr %29, align 8, !tbaa !5
  br label %432

430:                                              ; preds = %388
  %431 = getelementptr inbounds %struct.complex, ptr %49, i64 %395
  store <2 x float> zeroinitializer, ptr %431, align 4, !tbaa !9
  br label %432

432:                                              ; preds = %396, %427, %430
  %433 = phi i64 [ %.pre502, %396 ], [ %.pre501, %427 ], [ %394, %430 ]
  %434 = mul i64 %433, %387
  %435 = getelementptr inbounds %struct.complex, ptr %46, i64 %434
  %436 = getelementptr inbounds %struct.complex, ptr %50, i64 %433
  %437 = load <2 x float>, ptr %435, align 4, !tbaa !9
  store <2 x float> %437, ptr %436, align 4, !tbaa !9
  store i64 %433, ptr %26, align 8, !tbaa !5
  %438 = mul i64 %433, %386
  %439 = getelementptr inbounds %struct.complex, ptr %49, i64 %438
  %440 = getelementptr inbounds %struct.complex, ptr %51, i64 %433
  %441 = load <2 x float>, ptr %439, align 4, !tbaa !9
  store <2 x float> %441, ptr %440, align 4, !tbaa !9
  %442 = add nsw i64 %433, 1
  store i64 %442, ptr %29, align 8, !tbaa !5
  %443 = load i64, ptr %25, align 8, !tbaa !5
  %.not453.not = icmp slt i64 %433, %443
  br i1 %.not453.not, label %388, label %.loopexit, !llvm.loop !18

.loopexit.sink.split:                             ; preds = %188, %._crit_edge496
  %.sink515 = phi float [ %169, %._crit_edge496 ], [ 0.000000e+00, %188 ]
  store float %.sink515, ptr %18, align 4, !tbaa !9
  %444 = getelementptr inbounds i8, ptr %18, i64 4
  store float %.sink515, ptr %444, align 4, !tbaa !9
  br label %.loopexit

.loopexit:                                        ; preds = %432, %.loopexit.sink.split, %384, %188, %155
  store float %136, ptr %19, align 4, !tbaa !13
  store float 0.000000e+00, ptr %137, align 4, !tbaa !15
  store i64 %.0410, ptr %21, align 8, !tbaa !5
  br label %445

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

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

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

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

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

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

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

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

declare double @c_abs(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"long", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !10, i64 0}
!14 = !{!"", !10, i64 0, !10, i64 4}
!15 = !{!14, !10, i64 4}
!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,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass