; LLVM IR from OpenMathLib/OpenBLAS :: lapack-netlib/SRC (csptrf)

; 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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b1 = external hidden global %struct.complex, align 4

; Function Attrs: nounwind uwtable
define dso_local void @csptrf_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4) #0 {
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca float, align 4
  %18 = alloca float, align 4
  %19 = alloca float, align 4
  %20 = alloca float, align 4
  %21 = alloca %struct.complex, align 4
  %22 = alloca %struct.complex, align 4
  %23 = alloca %struct.complex, align 4
  %24 = alloca %struct.complex, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca %struct.complex, align 4
  %31 = alloca float, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca %struct.complex, align 4
  %35 = alloca %struct.complex, align 4
  %36 = alloca %struct.complex, align 4
  %37 = alloca %struct.complex, align 4
  %38 = alloca %struct.complex, align 4
  %39 = alloca i32, align 4
  %40 = alloca i32, align 4
  %41 = alloca i32, align 4
  %42 = alloca float, align 4
  %43 = alloca %struct.complex, align 4
  %44 = alloca i32, align 4
  %45 = alloca float, align 4
  %46 = alloca float, align 4
  %47 = alloca i32, align 4
  %48 = alloca i32, align 4
  %49 = alloca i32, align 4
  %50 = alloca %struct.complex, align 4
  %51 = alloca %struct.complex, align 4
  %52 = alloca i32, align 4
  %53 = alloca { float, float }, align 4
  %54 = alloca { float, float }, align 4
  %55 = alloca { float, float }, align 4
  %56 = alloca { float, float }, align 4
  %57 = alloca { float, float }, align 4
  %58 = alloca { float, float }, align 4
  %59 = alloca { float, float }, align 4
  %60 = alloca { float, float }, align 4
  %61 = alloca { float, float }, align 4
  %62 = alloca { float, float }, align 4
  %63 = alloca { float, float }, align 4
  %64 = alloca { float, float }, align 4
  %65 = alloca { float, float }, align 4
  %66 = alloca { float, float }, align 4
  %67 = alloca { float, float }, align 4
  %68 = alloca { float, float }, align 4
  %69 = alloca { float, float }, align 4
  %70 = alloca { float, float }, align 4
  %71 = alloca { float, float }, align 4
  %72 = alloca { float, float }, align 4
  %73 = alloca { float, float }, align 4
  %74 = alloca { float, float }, align 4
  %75 = alloca { float, float }, align 4
  %76 = alloca { float, float }, align 4
  %77 = alloca { float, float }, align 4
  %78 = alloca { float, float }, align 4
  %79 = alloca { float, float }, align 4
  %80 = alloca { float, float }, align 4
  %81 = alloca { float, float }, align 4
  %82 = alloca { float, float }, align 4
  %83 = alloca { float, float }, align 4
  %84 = alloca { float, float }, align 4
  %85 = alloca { float, float }, align 4
  %86 = alloca { float, float }, align 4
  %87 = alloca { float, float }, align 4
  %88 = alloca { float, float }, align 4
  %89 = alloca { float, float }, align 4
  %90 = alloca { float, float }, align 4
  %91 = alloca { float, float }, align 4
  %92 = alloca { float, float }, align 4
  %93 = alloca { float, float }, align 4
  %94 = alloca { float, float }, align 4
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  store ptr %3, ptr %9, align 8, !tbaa !5
  store ptr %4, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %11) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %46) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %95 = load ptr, ptr %9, align 8, !tbaa !5
  %96 = getelementptr inbounds i32, ptr %95, i32 -1
  store ptr %96, ptr %9, align 8, !tbaa !5
  %97 = load ptr, ptr %8, align 8, !tbaa !5
  %98 = getelementptr inbounds %struct.complex, ptr %97, i32 -1
  store ptr %98, ptr %8, align 8, !tbaa !5
  %99 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 0, ptr %99, align 4, !tbaa !9
  %100 = load ptr, ptr %6, align 8, !tbaa !5
  %101 = call i32 @lsame_(ptr noundef %100, ptr noundef @.str)
  store i32 %101, ptr %33, align 4, !tbaa !9
  %102 = load i32, ptr %33, align 4, !tbaa !9
  %103 = icmp ne i32 %102, 0
  br i1 %103, label %110, label %104

104:                                              ; preds = %5
  %105 = load ptr, ptr %6, align 8, !tbaa !5
  %106 = call i32 @lsame_(ptr noundef %105, ptr noundef @.str.1)
  %107 = icmp ne i32 %106, 0
  br i1 %107, label %110, label %108

108:                                              ; preds = %104
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 -1, ptr %109, align 4, !tbaa !9
  br label %117

110:                                              ; preds = %104, %5
  %111 = load ptr, ptr %7, align 8, !tbaa !5
  %112 = load i32, ptr %111, align 4, !tbaa !9
  %113 = icmp slt i32 %112, 0
  br i1 %113, label %114, label %116

114:                                              ; preds = %110
  %115 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 -2, ptr %115, align 4, !tbaa !9
  br label %116

116:                                              ; preds = %114, %110
  br label %117

117:                                              ; preds = %116, %108
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp ne i32 %119, 0
  br i1 %120, label %121, label %126

121:                                              ; preds = %117
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = sub nsw i32 0, %123
  store i32 %124, ptr %11, align 4, !tbaa !9
  %125 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %11, i32 noundef 6)
  store i32 1, ptr %52, align 4
  br label %2830

126:                                              ; preds = %117
  %127 = call double @sqrt(double noundef 1.700000e+01) #7
  %128 = fadd double %127, 1.000000e+00
  %129 = fdiv double %128, 8.000000e+00
  %130 = fptrunc double %129 to float
  store float %130, ptr %31, align 4, !tbaa !11
  %131 = load i32, ptr %33, align 4, !tbaa !9
  %132 = icmp ne i32 %131, 0
  br i1 %132, label %133, label %1431

133:                                              ; preds = %126
  %134 = load ptr, ptr %7, align 8, !tbaa !5
  %135 = load i32, ptr %134, align 4, !tbaa !9
  store i32 %135, ptr %29, align 4, !tbaa !9
  %136 = load ptr, ptr %7, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = sub nsw i32 %137, 1
  %139 = load ptr, ptr %7, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = mul nsw i32 %138, %140
  %142 = sdiv i32 %141, 2
  %143 = add nsw i32 %142, 1
  store i32 %143, ptr %39, align 4, !tbaa !9
  br label %144

144:                                              ; preds = %1424, %133
  %145 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %145, ptr %47, align 4, !tbaa !9
  %146 = load i32, ptr %29, align 4, !tbaa !9
  %147 = icmp slt i32 %146, 1
  br i1 %147, label %148, label %149

148:                                              ; preds = %144
  br label %2829

149:                                              ; preds = %144
  store i32 1, ptr %32, align 4, !tbaa !9
  %150 = load i32, ptr %39, align 4, !tbaa !9
  %151 = load i32, ptr %29, align 4, !tbaa !9
  %152 = add nsw i32 %150, %151
  %153 = sub nsw i32 %152, 1
  store i32 %153, ptr %11, align 4, !tbaa !9
  %154 = load ptr, ptr %8, align 8, !tbaa !5
  %155 = load i32, ptr %11, align 4, !tbaa !9
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds %struct.complex, ptr %154, i64 %156
  %158 = getelementptr inbounds %struct.complex, ptr %157, i32 0, i32 0
  %159 = load float, ptr %158, align 4, !tbaa !13
  store float %159, ptr %17, align 4, !tbaa !11
  %160 = load float, ptr %17, align 4, !tbaa !11
  %161 = fcmp oge float %160, 0.000000e+00
  br i1 %161, label %162, label %164

162:                                              ; preds = %149
  %163 = load float, ptr %17, align 4, !tbaa !11
  br label %167

164:                                              ; preds = %149
  %165 = load float, ptr %17, align 4, !tbaa !11
  %166 = fneg float %165
  br label %167

167:                                              ; preds = %164, %162
  %168 = phi float [ %163, %162 ], [ %166, %164 ]
  %169 = load ptr, ptr %8, align 8, !tbaa !5
  %170 = load i32, ptr %39, align 4, !tbaa !9
  %171 = load i32, ptr %29, align 4, !tbaa !9
  %172 = add nsw i32 %170, %171
  %173 = sub nsw i32 %172, 1
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds %struct.complex, ptr %169, i64 %174
  %176 = call <2 x float> @Cf(ptr noundef %175)
  store <2 x float> %176, ptr %53, align 4
  %177 = getelementptr inbounds { float, float }, ptr %53, i32 0, i32 0
  %178 = load float, ptr %177, align 4
  %179 = getelementptr inbounds { float, float }, ptr %53, i32 0, i32 1
  %180 = load float, ptr %179, align 4
  store float %180, ptr %18, align 4, !tbaa !11
  %181 = load float, ptr %18, align 4, !tbaa !11
  %182 = fcmp oge float %181, 0.000000e+00
  br i1 %182, label %183, label %185

183:                                              ; preds = %167
  %184 = load float, ptr %18, align 4, !tbaa !11
  br label %188

185:                                              ; preds = %167
  %186 = load float, ptr %18, align 4, !tbaa !11
  %187 = fneg float %186
  br label %188

188:                                              ; preds = %185, %183
  %189 = phi float [ %184, %183 ], [ %187, %185 ]
  %190 = fadd float %168, %189
  store float %190, ptr %42, align 4, !tbaa !11
  %191 = load i32, ptr %29, align 4, !tbaa !9
  %192 = icmp sgt i32 %191, 1
  br i1 %192, label %193, label %242

193:                                              ; preds = %188
  %194 = load i32, ptr %29, align 4, !tbaa !9
  %195 = sub nsw i32 %194, 1
  store i32 %195, ptr %11, align 4, !tbaa !9
  %196 = load ptr, ptr %8, align 8, !tbaa !5
  %197 = load i32, ptr %39, align 4, !tbaa !9
  %198 = sext i32 %197 to i64
  %199 = getelementptr inbounds %struct.complex, ptr %196, i64 %198
  %200 = call i32 @icamax_(ptr noundef %11, ptr noundef %199, ptr noundef @c__1)
  store i32 %200, ptr %25, align 4, !tbaa !9
  %201 = load i32, ptr %39, align 4, !tbaa !9
  %202 = load i32, ptr %25, align 4, !tbaa !9
  %203 = add nsw i32 %201, %202
  %204 = sub nsw i32 %203, 1
  store i32 %204, ptr %11, align 4, !tbaa !9
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = load i32, ptr %11, align 4, !tbaa !9
  %207 = sext i32 %206 to i64
  %208 = getelementptr inbounds %struct.complex, ptr %205, i64 %207
  %209 = getelementptr inbounds %struct.complex, ptr %208, i32 0, i32 0
  %210 = load float, ptr %209, align 4, !tbaa !13
  store float %210, ptr %17, align 4, !tbaa !11
  %211 = load float, ptr %17, align 4, !tbaa !11
  %212 = fcmp oge float %211, 0.000000e+00
  br i1 %212, label %213, label %215

213:                                              ; preds = %193
  %214 = load float, ptr %17, align 4, !tbaa !11
  br label %218

215:                                              ; preds = %193
  %216 = load float, ptr %17, align 4, !tbaa !11
  %217 = fneg float %216
  br label %218

218:                                              ; preds = %215, %213
  %219 = phi float [ %214, %213 ], [ %217, %215 ]
  %220 = load ptr, ptr %8, align 8, !tbaa !5
  %221 = load i32, ptr %39, align 4, !tbaa !9
  %222 = load i32, ptr %25, align 4, !tbaa !9
  %223 = add nsw i32 %221, %222
  %224 = sub nsw i32 %223, 1
  %225 = sext i32 %224 to i64
  %226 = getelementptr inbounds %struct.complex, ptr %220, i64 %225
  %227 = call <2 x float> @Cf(ptr noundef %226)
  store <2 x float> %227, ptr %54, align 4
  %228 = getelementptr inbounds { float, float }, ptr %54, i32 0, i32 0
  %229 = load float, ptr %228, align 4
  %230 = getelementptr inbounds { float, float }, ptr %54, i32 0, i32 1
  %231 = load float, ptr %230, align 4
  store float %231, ptr %18, align 4, !tbaa !11
  %232 = load float, ptr %18, align 4, !tbaa !11
  %233 = fcmp oge float %232, 0.000000e+00
  br i1 %233, label %234, label %236

234:                                              ; preds = %218
  %235 = load float, ptr %18, align 4, !tbaa !11
  br label %239

236:                                              ; preds = %218
  %237 = load float, ptr %18, align 4, !tbaa !11
  %238 = fneg float %237
  br label %239

239:                                              ; preds = %236, %234
  %240 = phi float [ %235, %234 ], [ %238, %236 ]
  %241 = fadd float %219, %240
  store float %241, ptr %45, align 4, !tbaa !11
  br label %243

242:                                              ; preds = %188
  store float 0.000000e+00, ptr %45, align 4, !tbaa !11
  br label %243

243:                                              ; preds = %242, %239
  %244 = load float, ptr %42, align 4, !tbaa !11
  %245 = load float, ptr %45, align 4, !tbaa !11
  %246 = fcmp oge float %244, %245
  br i1 %246, label %247, label %249

247:                                              ; preds = %243
  %248 = load float, ptr %42, align 4, !tbaa !11
  br label %251

249:                                              ; preds = %243
  %250 = load float, ptr %45, align 4, !tbaa !11
  br label %251

251:                                              ; preds = %249, %247
  %252 = phi float [ %248, %247 ], [ %250, %249 ]
  %253 = fcmp oeq float %252, 0.000000e+00
  br i1 %253, label %254, label %263

254:                                              ; preds = %251
  %255 = load ptr, ptr %10, align 8, !tbaa !5
  %256 = load i32, ptr %255, align 4, !tbaa !9
  %257 = icmp eq i32 %256, 0
  br i1 %257, label %258, label %261

258:                                              ; preds = %254
  %259 = load i32, ptr %29, align 4, !tbaa !9
  %260 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 %259, ptr %260, align 4, !tbaa !9
  br label %261

261:                                              ; preds = %258, %254
  %262 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %262, ptr %41, align 4, !tbaa !9
  br label %1401

263:                                              ; preds = %251
  %264 = load float, ptr %42, align 4, !tbaa !11
  %265 = load float, ptr %31, align 4, !tbaa !11
  %266 = load float, ptr %45, align 4, !tbaa !11
  %267 = fmul float %265, %266
  %268 = fcmp oge float %264, %267
  br i1 %268, label %269, label %271

269:                                              ; preds = %263
  %270 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %270, ptr %41, align 4, !tbaa !9
  br label %501

271:                                              ; preds = %263
  store float 0.000000e+00, ptr %46, align 4, !tbaa !11
  %272 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %272, ptr %26, align 4, !tbaa !9
  %273 = load i32, ptr %25, align 4, !tbaa !9
  %274 = load i32, ptr %25, align 4, !tbaa !9
  %275 = add nsw i32 %274, 1
  %276 = mul nsw i32 %273, %275
  %277 = sdiv i32 %276, 2
  %278 = load i32, ptr %25, align 4, !tbaa !9
  %279 = add nsw i32 %277, %278
  store i32 %279, ptr %44, align 4, !tbaa !9
  %280 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %280, ptr %11, align 4, !tbaa !9
  %281 = load i32, ptr %25, align 4, !tbaa !9
  %282 = add nsw i32 %281, 1
  store i32 %282, ptr %28, align 4, !tbaa !9
  br label %283

283:                                              ; preds = %366, %271
  %284 = load i32, ptr %28, align 4, !tbaa !9
  %285 = load i32, ptr %11, align 4, !tbaa !9
  %286 = icmp sle i32 %284, %285
  br i1 %286, label %287, label %369

287:                                              ; preds = %283
  %288 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %288, ptr %12, align 4, !tbaa !9
  %289 = load ptr, ptr %8, align 8, !tbaa !5
  %290 = load i32, ptr %12, align 4, !tbaa !9
  %291 = sext i32 %290 to i64
  %292 = getelementptr inbounds %struct.complex, ptr %289, i64 %291
  %293 = getelementptr inbounds %struct.complex, ptr %292, i32 0, i32 0
  %294 = load float, ptr %293, align 4, !tbaa !13
  store float %294, ptr %17, align 4, !tbaa !11
  %295 = load float, ptr %17, align 4, !tbaa !11
  %296 = fcmp oge float %295, 0.000000e+00
  br i1 %296, label %297, label %299

297:                                              ; preds = %287
  %298 = load float, ptr %17, align 4, !tbaa !11
  br label %302

299:                                              ; preds = %287
  %300 = load float, ptr %17, align 4, !tbaa !11
  %301 = fneg float %300
  br label %302

302:                                              ; preds = %299, %297
  %303 = phi float [ %298, %297 ], [ %301, %299 ]
  %304 = load ptr, ptr %8, align 8, !tbaa !5
  %305 = load i32, ptr %44, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %struct.complex, ptr %304, i64 %306
  %308 = call <2 x float> @Cf(ptr noundef %307)
  store <2 x float> %308, ptr %55, align 4
  %309 = getelementptr inbounds { float, float }, ptr %55, i32 0, i32 0
  %310 = load float, ptr %309, align 4
  %311 = getelementptr inbounds { float, float }, ptr %55, i32 0, i32 1
  %312 = load float, ptr %311, align 4
  store float %312, ptr %18, align 4, !tbaa !11
  %313 = load float, ptr %18, align 4, !tbaa !11
  %314 = fcmp oge float %313, 0.000000e+00
  br i1 %314, label %315, label %317

315:                                              ; preds = %302
  %316 = load float, ptr %18, align 4, !tbaa !11
  br label %320

317:                                              ; preds = %302
  %318 = load float, ptr %18, align 4, !tbaa !11
  %319 = fneg float %318
  br label %320

320:                                              ; preds = %317, %315
  %321 = phi float [ %316, %315 ], [ %319, %317 ]
  %322 = fadd float %303, %321
  %323 = load float, ptr %46, align 4, !tbaa !11
  %324 = fcmp ogt float %322, %323
  br i1 %324, label %325, label %362

325:                                              ; preds = %320
  %326 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %326, ptr %12, align 4, !tbaa !9
  %327 = load ptr, ptr %8, align 8, !tbaa !5
  %328 = load i32, ptr %12, align 4, !tbaa !9
  %329 = sext i32 %328 to i64
  %330 = getelementptr inbounds %struct.complex, ptr %327, i64 %329
  %331 = getelementptr inbounds %struct.complex, ptr %330, i32 0, i32 0
  %332 = load float, ptr %331, align 4, !tbaa !13
  store float %332, ptr %17, align 4, !tbaa !11
  %333 = load float, ptr %17, align 4, !tbaa !11
  %334 = fcmp oge float %333, 0.000000e+00
  br i1 %334, label %335, label %337

335:                                              ; preds = %325
  %336 = load float, ptr %17, align 4, !tbaa !11
  br label %340

337:                                              ; preds = %325
  %338 = load float, ptr %17, align 4, !tbaa !11
  %339 = fneg float %338
  br label %340

340:                                              ; preds = %337, %335
  %341 = phi float [ %336, %335 ], [ %339, %337 ]
  %342 = load ptr, ptr %8, align 8, !tbaa !5
  %343 = load i32, ptr %44, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds %struct.complex, ptr %342, i64 %344
  %346 = call <2 x float> @Cf(ptr noundef %345)
  store <2 x float> %346, ptr %56, align 4
  %347 = getelementptr inbounds { float, float }, ptr %56, i32 0, i32 0
  %348 = load float, ptr %347, align 4
  %349 = getelementptr inbounds { float, float }, ptr %56, i32 0, i32 1
  %350 = load float, ptr %349, align 4
  store float %350, ptr %18, align 4, !tbaa !11
  %351 = load float, ptr %18, align 4, !tbaa !11
  %352 = fcmp oge float %351, 0.000000e+00
  br i1 %352, label %353, label %355

353:                                              ; preds = %340
  %354 = load float, ptr %18, align 4, !tbaa !11
  br label %358

355:                                              ; preds = %340
  %356 = load float, ptr %18, align 4, !tbaa !11
  %357 = fneg float %356
  br label %358

358:                                              ; preds = %355, %353
  %359 = phi float [ %354, %353 ], [ %357, %355 ]
  %360 = fadd float %341, %359
  store float %360, ptr %46, align 4, !tbaa !11
  %361 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %361, ptr %26, align 4, !tbaa !9
  br label %362

362:                                              ; preds = %358, %320
  %363 = load i32, ptr %28, align 4, !tbaa !9
  %364 = load i32, ptr %44, align 4, !tbaa !9
  %365 = add nsw i32 %364, %363
  store i32 %365, ptr %44, align 4, !tbaa !9
  br label %366

366:                                              ; preds = %362
  %367 = load i32, ptr %28, align 4, !tbaa !9
  %368 = add nsw i32 %367, 1
  store i32 %368, ptr %28, align 4, !tbaa !9
  br label %283, !llvm.loop !15

369:                                              ; preds = %283
  %370 = load i32, ptr %25, align 4, !tbaa !9
  %371 = sub nsw i32 %370, 1
  %372 = load i32, ptr %25, align 4, !tbaa !9
  %373 = mul nsw i32 %371, %372
  %374 = sdiv i32 %373, 2
  %375 = add nsw i32 %374, 1
  store i32 %375, ptr %48, align 4, !tbaa !9
  %376 = load i32, ptr %25, align 4, !tbaa !9
  %377 = icmp sgt i32 %376, 1
  br i1 %377, label %378, label %437

378:                                              ; preds = %369
  %379 = load i32, ptr %25, align 4, !tbaa !9
  %380 = sub nsw i32 %379, 1
  store i32 %380, ptr %11, align 4, !tbaa !9
  %381 = load ptr, ptr %8, align 8, !tbaa !5
  %382 = load i32, ptr %48, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.complex, ptr %381, i64 %383
  %385 = call i32 @icamax_(ptr noundef %11, ptr noundef %384, ptr noundef @c__1)
  store i32 %385, ptr %26, align 4, !tbaa !9
  %386 = load i32, ptr %48, align 4, !tbaa !9
  %387 = load i32, ptr %26, align 4, !tbaa !9
  %388 = add nsw i32 %386, %387
  %389 = sub nsw i32 %388, 1
  store i32 %389, ptr %11, align 4, !tbaa !9
  %390 = load float, ptr %46, align 4, !tbaa !11
  store float %390, ptr %19, align 4, !tbaa !11
  %391 = load ptr, ptr %8, align 8, !tbaa !5
  %392 = load i32, ptr %11, align 4, !tbaa !9
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds %struct.complex, ptr %391, i64 %393
  %395 = getelementptr inbounds %struct.complex, ptr %394, i32 0, i32 0
  %396 = load float, ptr %395, align 4, !tbaa !13
  store float %396, ptr %17, align 4, !tbaa !11
  %397 = load float, ptr %17, align 4, !tbaa !11
  %398 = fcmp oge float %397, 0.000000e+00
  br i1 %398, label %399, label %401

399:                                              ; preds = %378
  %400 = load float, ptr %17, align 4, !tbaa !11
  br label %404

401:                                              ; preds = %378
  %402 = load float, ptr %17, align 4, !tbaa !11
  %403 = fneg float %402
  br label %404

404:                                              ; preds = %401, %399
  %405 = phi float [ %400, %399 ], [ %403, %401 ]
  %406 = load ptr, ptr %8, align 8, !tbaa !5
  %407 = load i32, ptr %48, align 4, !tbaa !9
  %408 = load i32, ptr %26, align 4, !tbaa !9
  %409 = add nsw i32 %407, %408
  %410 = sub nsw i32 %409, 1
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.complex, ptr %406, i64 %411
  %413 = call <2 x float> @Cf(ptr noundef %412)
  store <2 x float> %413, ptr %57, align 4
  %414 = getelementptr inbounds { float, float }, ptr %57, i32 0, i32 0
  %415 = load float, ptr %414, align 4
  %416 = getelementptr inbounds { float, float }, ptr %57, i32 0, i32 1
  %417 = load float, ptr %416, align 4
  store float %417, ptr %18, align 4, !tbaa !11
  %418 = load float, ptr %18, align 4, !tbaa !11
  %419 = fcmp oge float %418, 0.000000e+00
  br i1 %419, label %420, label %422

420:                                              ; preds = %404
  %421 = load float, ptr %18, align 4, !tbaa !11
  br label %425

422:                                              ; preds = %404
  %423 = load float, ptr %18, align 4, !tbaa !11
  %424 = fneg float %423
  br label %425

425:                                              ; preds = %422, %420
  %426 = phi float [ %421, %420 ], [ %424, %422 ]
  %427 = fadd float %405, %426
  store float %427, ptr %20, align 4, !tbaa !11
  %428 = load float, ptr %19, align 4, !tbaa !11
  %429 = load float, ptr %20, align 4, !tbaa !11
  %430 = fcmp oge float %428, %429
  br i1 %430, label %431, label %433

431:                                              ; preds = %425
  %432 = load float, ptr %19, align 4, !tbaa !11
  br label %435

433:                                              ; preds = %425
  %434 = load float, ptr %20, align 4, !tbaa !11
  br label %435

435:                                              ; preds = %433, %431
  %436 = phi float [ %432, %431 ], [ %434, %433 ]
  store float %436, ptr %46, align 4, !tbaa !11
  br label %437

437:                                              ; preds = %435, %369
  %438 = load float, ptr %42, align 4, !tbaa !11
  %439 = load float, ptr %31, align 4, !tbaa !11
  %440 = load float, ptr %45, align 4, !tbaa !11
  %441 = fmul float %439, %440
  %442 = load float, ptr %45, align 4, !tbaa !11
  %443 = load float, ptr %46, align 4, !tbaa !11
  %444 = fdiv float %442, %443
  %445 = fmul float %441, %444
  %446 = fcmp oge float %438, %445
  br i1 %446, label %447, label %449

447:                                              ; preds = %437
  %448 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %448, ptr %41, align 4, !tbaa !9
  br label %500

449:                                              ; preds = %437
  %450 = load i32, ptr %48, align 4, !tbaa !9
  %451 = load i32, ptr %25, align 4, !tbaa !9
  %452 = add nsw i32 %450, %451
  %453 = sub nsw i32 %452, 1
  store i32 %453, ptr %11, align 4, !tbaa !9
  %454 = load ptr, ptr %8, align 8, !tbaa !5
  %455 = load i32, ptr %11, align 4, !tbaa !9
  %456 = sext i32 %455 to i64
  %457 = getelementptr inbounds %struct.complex, ptr %454, i64 %456
  %458 = getelementptr inbounds %struct.complex, ptr %457, i32 0, i32 0
  %459 = load float, ptr %458, align 4, !tbaa !13
  store float %459, ptr %17, align 4, !tbaa !11
  %460 = load float, ptr %17, align 4, !tbaa !11
  %461 = fcmp oge float %460, 0.000000e+00
  br i1 %461, label %462, label %464

462:                                              ; preds = %449
  %463 = load float, ptr %17, align 4, !tbaa !11
  br label %467

464:                                              ; preds = %449
  %465 = load float, ptr %17, align 4, !tbaa !11
  %466 = fneg float %465
  br label %467

467:                                              ; preds = %464, %462
  %468 = phi float [ %463, %462 ], [ %466, %464 ]
  %469 = load ptr, ptr %8, align 8, !tbaa !5
  %470 = load i32, ptr %48, align 4, !tbaa !9
  %471 = load i32, ptr %25, align 4, !tbaa !9
  %472 = add nsw i32 %470, %471
  %473 = sub nsw i32 %472, 1
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds %struct.complex, ptr %469, i64 %474
  %476 = call <2 x float> @Cf(ptr noundef %475)
  store <2 x float> %476, ptr %58, align 4
  %477 = getelementptr inbounds { float, float }, ptr %58, i32 0, i32 0
  %478 = load float, ptr %477, align 4
  %479 = getelementptr inbounds { float, float }, ptr %58, i32 0, i32 1
  %480 = load float, ptr %479, align 4
  store float %480, ptr %18, align 4, !tbaa !11
  %481 = load float, ptr %18, align 4, !tbaa !11
  %482 = fcmp oge float %481, 0.000000e+00
  br i1 %482, label %483, label %485

483:                                              ; preds = %467
  %484 = load float, ptr %18, align 4, !tbaa !11
  br label %488

485:                                              ; preds = %467
  %486 = load float, ptr %18, align 4, !tbaa !11
  %487 = fneg float %486
  br label %488

488:                                              ; preds = %485, %483
  %489 = phi float [ %484, %483 ], [ %487, %485 ]
  %490 = fadd float %468, %489
  %491 = load float, ptr %31, align 4, !tbaa !11
  %492 = load float, ptr %46, align 4, !tbaa !11
  %493 = fmul float %491, %492
  %494 = fcmp oge float %490, %493
  br i1 %494, label %495, label %497

495:                                              ; preds = %488
  %496 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %496, ptr %41, align 4, !tbaa !9
  br label %499

497:                                              ; preds = %488
  %498 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %498, ptr %41, align 4, !tbaa !9
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %499

499:                                              ; preds = %497, %495
  br label %500

500:                                              ; preds = %499, %447
  br label %501

501:                                              ; preds = %500, %269
  %502 = load i32, ptr %29, align 4, !tbaa !9
  %503 = load i32, ptr %32, align 4, !tbaa !9
  %504 = sub nsw i32 %502, %503
  %505 = add nsw i32 %504, 1
  store i32 %505, ptr %40, align 4, !tbaa !9
  %506 = load i32, ptr %32, align 4, !tbaa !9
  %507 = icmp eq i32 %506, 2
  br i1 %507, label %508, label %513

508:                                              ; preds = %501
  %509 = load i32, ptr %47, align 4, !tbaa !9
  %510 = load i32, ptr %29, align 4, !tbaa !9
  %511 = sub nsw i32 %509, %510
  %512 = add nsw i32 %511, 1
  store i32 %512, ptr %47, align 4, !tbaa !9
  br label %513

513:                                              ; preds = %508, %501
  %514 = load i32, ptr %41, align 4, !tbaa !9
  %515 = load i32, ptr %40, align 4, !tbaa !9
  %516 = icmp ne i32 %514, %515
  br i1 %516, label %517, label %745

517:                                              ; preds = %513
  %518 = load i32, ptr %41, align 4, !tbaa !9
  %519 = sub nsw i32 %518, 1
  store i32 %519, ptr %11, align 4, !tbaa !9
  %520 = load ptr, ptr %8, align 8, !tbaa !5
  %521 = load i32, ptr %47, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds %struct.complex, ptr %520, i64 %522
  %524 = load ptr, ptr %8, align 8, !tbaa !5
  %525 = load i32, ptr %48, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds %struct.complex, ptr %524, i64 %526
  call void @cswap_(ptr noundef %11, ptr noundef %523, ptr noundef @c__1, ptr noundef %527, ptr noundef @c__1)
  %528 = load i32, ptr %48, align 4, !tbaa !9
  %529 = load i32, ptr %41, align 4, !tbaa !9
  %530 = add nsw i32 %528, %529
  %531 = sub nsw i32 %530, 1
  store i32 %531, ptr %44, align 4, !tbaa !9
  %532 = load i32, ptr %40, align 4, !tbaa !9
  %533 = sub nsw i32 %532, 1
  store i32 %533, ptr %11, align 4, !tbaa !9
  %534 = load i32, ptr %41, align 4, !tbaa !9
  %535 = add nsw i32 %534, 1
  store i32 %535, ptr %28, align 4, !tbaa !9
  br label %536

536:                                              ; preds = %605, %517
  %537 = load i32, ptr %28, align 4, !tbaa !9
  %538 = load i32, ptr %11, align 4, !tbaa !9
  %539 = icmp sle i32 %537, %538
  br i1 %539, label %540, label %608

540:                                              ; preds = %536
  %541 = load i32, ptr %44, align 4, !tbaa !9
  %542 = load i32, ptr %28, align 4, !tbaa !9
  %543 = add nsw i32 %541, %542
  %544 = sub nsw i32 %543, 1
  store i32 %544, ptr %44, align 4, !tbaa !9
  %545 = load i32, ptr %47, align 4, !tbaa !9
  %546 = load i32, ptr %28, align 4, !tbaa !9
  %547 = add nsw i32 %545, %546
  %548 = sub nsw i32 %547, 1
  store i32 %548, ptr %12, align 4, !tbaa !9
  %549 = load ptr, ptr %8, align 8, !tbaa !5
  %550 = load i32, ptr %12, align 4, !tbaa !9
  %551 = sext i32 %550 to i64
  %552 = getelementptr inbounds %struct.complex, ptr %549, i64 %551
  %553 = getelementptr inbounds %struct.complex, ptr %552, i32 0, i32 0
  %554 = load float, ptr %553, align 4, !tbaa !13
  %555 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  store float %554, ptr %555, align 4, !tbaa !13
  %556 = load ptr, ptr %8, align 8, !tbaa !5
  %557 = load i32, ptr %12, align 4, !tbaa !9
  %558 = sext i32 %557 to i64
  %559 = getelementptr inbounds %struct.complex, ptr %556, i64 %558
  %560 = getelementptr inbounds %struct.complex, ptr %559, i32 0, i32 1
  %561 = load float, ptr %560, align 4, !tbaa !17
  %562 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  store float %561, ptr %562, align 4, !tbaa !17
  %563 = load i32, ptr %47, align 4, !tbaa !9
  %564 = load i32, ptr %28, align 4, !tbaa !9
  %565 = add nsw i32 %563, %564
  %566 = sub nsw i32 %565, 1
  store i32 %566, ptr %12, align 4, !tbaa !9
  %567 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %567, ptr %13, align 4, !tbaa !9
  %568 = load ptr, ptr %8, align 8, !tbaa !5
  %569 = load i32, ptr %13, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds %struct.complex, ptr %568, i64 %570
  %572 = getelementptr inbounds %struct.complex, ptr %571, i32 0, i32 0
  %573 = load float, ptr %572, align 4, !tbaa !13
  %574 = load ptr, ptr %8, align 8, !tbaa !5
  %575 = load i32, ptr %12, align 4, !tbaa !9
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds %struct.complex, ptr %574, i64 %576
  %578 = getelementptr inbounds %struct.complex, ptr %577, i32 0, i32 0
  store float %573, ptr %578, align 4, !tbaa !13
  %579 = load ptr, ptr %8, align 8, !tbaa !5
  %580 = load i32, ptr %13, align 4, !tbaa !9
  %581 = sext i32 %580 to i64
  %582 = getelementptr inbounds %struct.complex, ptr %579, i64 %581
  %583 = getelementptr inbounds %struct.complex, ptr %582, i32 0, i32 1
  %584 = load float, ptr %583, align 4, !tbaa !17
  %585 = load ptr, ptr %8, align 8, !tbaa !5
  %586 = load i32, ptr %12, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds %struct.complex, ptr %585, i64 %587
  %589 = getelementptr inbounds %struct.complex, ptr %588, i32 0, i32 1
  store float %584, ptr %589, align 4, !tbaa !17
  %590 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %590, ptr %12, align 4, !tbaa !9
  %591 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  %592 = load float, ptr %591, align 4, !tbaa !13
  %593 = load ptr, ptr %8, align 8, !tbaa !5
  %594 = load i32, ptr %12, align 4, !tbaa !9
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds %struct.complex, ptr %593, i64 %595
  %597 = getelementptr inbounds %struct.complex, ptr %596, i32 0, i32 0
  store float %592, ptr %597, align 4, !tbaa !13
  %598 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  %599 = load float, ptr %598, align 4, !tbaa !17
  %600 = load ptr, ptr %8, align 8, !tbaa !5
  %601 = load i32, ptr %12, align 4, !tbaa !9
  %602 = sext i32 %601 to i64
  %603 = getelementptr inbounds %struct.complex, ptr %600, i64 %602
  %604 = getelementptr inbounds %struct.complex, ptr %603, i32 0, i32 1
  store float %599, ptr %604, align 4, !tbaa !17
  br label %605

605:                                              ; preds = %540
  %606 = load i32, ptr %28, align 4, !tbaa !9
  %607 = add nsw i32 %606, 1
  store i32 %607, ptr %28, align 4, !tbaa !9
  br label %536, !llvm.loop !18

608:                                              ; preds = %536
  %609 = load i32, ptr %47, align 4, !tbaa !9
  %610 = load i32, ptr %40, align 4, !tbaa !9
  %611 = add nsw i32 %609, %610
  %612 = sub nsw i32 %611, 1
  store i32 %612, ptr %11, align 4, !tbaa !9
  %613 = load ptr, ptr %8, align 8, !tbaa !5
  %614 = load i32, ptr %11, align 4, !tbaa !9
  %615 = sext i32 %614 to i64
  %616 = getelementptr inbounds %struct.complex, ptr %613, i64 %615
  %617 = getelementptr inbounds %struct.complex, ptr %616, i32 0, i32 0
  %618 = load float, ptr %617, align 4, !tbaa !13
  %619 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  store float %618, ptr %619, align 4, !tbaa !13
  %620 = load ptr, ptr %8, align 8, !tbaa !5
  %621 = load i32, ptr %11, align 4, !tbaa !9
  %622 = sext i32 %621 to i64
  %623 = getelementptr inbounds %struct.complex, ptr %620, i64 %622
  %624 = getelementptr inbounds %struct.complex, ptr %623, i32 0, i32 1
  %625 = load float, ptr %624, align 4, !tbaa !17
  %626 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  store float %625, ptr %626, align 4, !tbaa !17
  %627 = load i32, ptr %47, align 4, !tbaa !9
  %628 = load i32, ptr %40, align 4, !tbaa !9
  %629 = add nsw i32 %627, %628
  %630 = sub nsw i32 %629, 1
  store i32 %630, ptr %11, align 4, !tbaa !9
  %631 = load i32, ptr %48, align 4, !tbaa !9
  %632 = load i32, ptr %41, align 4, !tbaa !9
  %633 = add nsw i32 %631, %632
  %634 = sub nsw i32 %633, 1
  store i32 %634, ptr %12, align 4, !tbaa !9
  %635 = load ptr, ptr %8, align 8, !tbaa !5
  %636 = load i32, ptr %12, align 4, !tbaa !9
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds %struct.complex, ptr %635, i64 %637
  %639 = getelementptr inbounds %struct.complex, ptr %638, i32 0, i32 0
  %640 = load float, ptr %639, align 4, !tbaa !13
  %641 = load ptr, ptr %8, align 8, !tbaa !5
  %642 = load i32, ptr %11, align 4, !tbaa !9
  %643 = sext i32 %642 to i64
  %644 = getelementptr inbounds %struct.complex, ptr %641, i64 %643
  %645 = getelementptr inbounds %struct.complex, ptr %644, i32 0, i32 0
  store float %640, ptr %645, align 4, !tbaa !13
  %646 = load ptr, ptr %8, align 8, !tbaa !5
  %647 = load i32, ptr %12, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %struct.complex, ptr %646, i64 %648
  %650 = getelementptr inbounds %struct.complex, ptr %649, i32 0, i32 1
  %651 = load float, ptr %650, align 4, !tbaa !17
  %652 = load ptr, ptr %8, align 8, !tbaa !5
  %653 = load i32, ptr %11, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds %struct.complex, ptr %652, i64 %654
  %656 = getelementptr inbounds %struct.complex, ptr %655, i32 0, i32 1
  store float %651, ptr %656, align 4, !tbaa !17
  %657 = load i32, ptr %48, align 4, !tbaa !9
  %658 = load i32, ptr %41, align 4, !tbaa !9
  %659 = add nsw i32 %657, %658
  %660 = sub nsw i32 %659, 1
  store i32 %660, ptr %11, align 4, !tbaa !9
  %661 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  %662 = load float, ptr %661, align 4, !tbaa !13
  %663 = load ptr, ptr %8, align 8, !tbaa !5
  %664 = load i32, ptr %11, align 4, !tbaa !9
  %665 = sext i32 %664 to i64
  %666 = getelementptr inbounds %struct.complex, ptr %663, i64 %665
  %667 = getelementptr inbounds %struct.complex, ptr %666, i32 0, i32 0
  store float %662, ptr %667, align 4, !tbaa !13
  %668 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  %669 = load float, ptr %668, align 4, !tbaa !17
  %670 = load ptr, ptr %8, align 8, !tbaa !5
  %671 = load i32, ptr %11, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds %struct.complex, ptr %670, i64 %672
  %674 = getelementptr inbounds %struct.complex, ptr %673, i32 0, i32 1
  store float %669, ptr %674, align 4, !tbaa !17
  %675 = load i32, ptr %32, align 4, !tbaa !9
  %676 = icmp eq i32 %675, 2
  br i1 %676, label %677, label %744

677:                                              ; preds = %608
  %678 = load i32, ptr %39, align 4, !tbaa !9
  %679 = load i32, ptr %29, align 4, !tbaa !9
  %680 = add nsw i32 %678, %679
  %681 = sub nsw i32 %680, 2
  store i32 %681, ptr %11, align 4, !tbaa !9
  %682 = load ptr, ptr %8, align 8, !tbaa !5
  %683 = load i32, ptr %11, align 4, !tbaa !9
  %684 = sext i32 %683 to i64
  %685 = getelementptr inbounds %struct.complex, ptr %682, i64 %684
  %686 = getelementptr inbounds %struct.complex, ptr %685, i32 0, i32 0
  %687 = load float, ptr %686, align 4, !tbaa !13
  %688 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  store float %687, ptr %688, align 4, !tbaa !13
  %689 = load ptr, ptr %8, align 8, !tbaa !5
  %690 = load i32, ptr %11, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds %struct.complex, ptr %689, i64 %691
  %693 = getelementptr inbounds %struct.complex, ptr %692, i32 0, i32 1
  %694 = load float, ptr %693, align 4, !tbaa !17
  %695 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  store float %694, ptr %695, align 4, !tbaa !17
  %696 = load i32, ptr %39, align 4, !tbaa !9
  %697 = load i32, ptr %29, align 4, !tbaa !9
  %698 = add nsw i32 %696, %697
  %699 = sub nsw i32 %698, 2
  store i32 %699, ptr %11, align 4, !tbaa !9
  %700 = load i32, ptr %39, align 4, !tbaa !9
  %701 = load i32, ptr %41, align 4, !tbaa !9
  %702 = add nsw i32 %700, %701
  %703 = sub nsw i32 %702, 1
  store i32 %703, ptr %12, align 4, !tbaa !9
  %704 = load ptr, ptr %8, align 8, !tbaa !5
  %705 = load i32, ptr %12, align 4, !tbaa !9
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds %struct.complex, ptr %704, i64 %706
  %708 = getelementptr inbounds %struct.complex, ptr %707, i32 0, i32 0
  %709 = load float, ptr %708, align 4, !tbaa !13
  %710 = load ptr, ptr %8, align 8, !tbaa !5
  %711 = load i32, ptr %11, align 4, !tbaa !9
  %712 = sext i32 %711 to i64
  %713 = getelementptr inbounds %struct.complex, ptr %710, i64 %712
  %714 = getelementptr inbounds %struct.complex, ptr %713, i32 0, i32 0
  store float %709, ptr %714, align 4, !tbaa !13
  %715 = load ptr, ptr %8, align 8, !tbaa !5
  %716 = load i32, ptr %12, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds %struct.complex, ptr %715, i64 %717
  %719 = getelementptr inbounds %struct.complex, ptr %718, i32 0, i32 1
  %720 = load float, ptr %719, align 4, !tbaa !17
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  %722 = load i32, ptr %11, align 4, !tbaa !9
  %723 = sext i32 %722 to i64
  %724 = getelementptr inbounds %struct.complex, ptr %721, i64 %723
  %725 = getelementptr inbounds %struct.complex, ptr %724, i32 0, i32 1
  store float %720, ptr %725, align 4, !tbaa !17
  %726 = load i32, ptr %39, align 4, !tbaa !9
  %727 = load i32, ptr %41, align 4, !tbaa !9
  %728 = add nsw i32 %726, %727
  %729 = sub nsw i32 %728, 1
  store i32 %729, ptr %11, align 4, !tbaa !9
  %730 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  %731 = load float, ptr %730, align 4, !tbaa !13
  %732 = load ptr, ptr %8, align 8, !tbaa !5
  %733 = load i32, ptr %11, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds %struct.complex, ptr %732, i64 %734
  %736 = getelementptr inbounds %struct.complex, ptr %735, i32 0, i32 0
  store float %731, ptr %736, align 4, !tbaa !13
  %737 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  %738 = load float, ptr %737, align 4, !tbaa !17
  %739 = load ptr, ptr %8, align 8, !tbaa !5
  %740 = load i32, ptr %11, align 4, !tbaa !9
  %741 = sext i32 %740 to i64
  %742 = getelementptr inbounds %struct.complex, ptr %739, i64 %741
  %743 = getelementptr inbounds %struct.complex, ptr %742, i32 0, i32 1
  store float %738, ptr %743, align 4, !tbaa !17
  br label %744

744:                                              ; preds = %677, %608
  br label %745

745:                                              ; preds = %744, %513
  %746 = load i32, ptr %32, align 4, !tbaa !9
  %747 = icmp eq i32 %746, 1
  br i1 %747, label %748, label %803

748:                                              ; preds = %745
  %749 = call <2 x float> @Cf(ptr noundef @c_b1)
  store <2 x float> %749, ptr %59, align 4
  %750 = getelementptr inbounds { float, float }, ptr %59, i32 0, i32 0
  %751 = load float, ptr %750, align 4
  %752 = getelementptr inbounds { float, float }, ptr %59, i32 0, i32 1
  %753 = load float, ptr %752, align 4
  %754 = load ptr, ptr %8, align 8, !tbaa !5
  %755 = load i32, ptr %39, align 4, !tbaa !9
  %756 = load i32, ptr %29, align 4, !tbaa !9
  %757 = add nsw i32 %755, %756
  %758 = sub nsw i32 %757, 1
  %759 = sext i32 %758 to i64
  %760 = getelementptr inbounds %struct.complex, ptr %754, i64 %759
  %761 = call <2 x float> @Cf(ptr noundef %760)
  store <2 x float> %761, ptr %60, align 4
  %762 = getelementptr inbounds { float, float }, ptr %60, i32 0, i32 0
  %763 = load float, ptr %762, align 4
  %764 = getelementptr inbounds { float, float }, ptr %60, i32 0, i32 1
  %765 = load float, ptr %764, align 4
  %766 = call <2 x float> @__divsc3(float noundef %751, float noundef %753, float noundef %763, float noundef %765) #7
  store <2 x float> %766, ptr %61, align 4
  %767 = getelementptr inbounds { float, float }, ptr %61, i32 0, i32 0
  %768 = load float, ptr %767, align 4
  %769 = getelementptr inbounds { float, float }, ptr %61, i32 0, i32 1
  %770 = load float, ptr %769, align 4
  %771 = call ptr @_pCf(ptr noundef %21)
  %772 = getelementptr inbounds { float, float }, ptr %771, i32 0, i32 0
  %773 = getelementptr inbounds { float, float }, ptr %771, i32 0, i32 1
  store float %768, ptr %772, align 4
  store float %770, ptr %773, align 4
  %774 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %775 = load float, ptr %774, align 4, !tbaa !13
  %776 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %775, ptr %776, align 4, !tbaa !13
  %777 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %778 = load float, ptr %777, align 4, !tbaa !17
  %779 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %778, ptr %779, align 4, !tbaa !17
  %780 = load i32, ptr %29, align 4, !tbaa !9
  %781 = sub nsw i32 %780, 1
  store i32 %781, ptr %11, align 4, !tbaa !9
  %782 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %783 = load float, ptr %782, align 4, !tbaa !13
  %784 = fneg float %783
  %785 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float %784, ptr %785, align 4, !tbaa !13
  %786 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %787 = load float, ptr %786, align 4, !tbaa !17
  %788 = fneg float %787
  %789 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float %788, ptr %789, align 4, !tbaa !17
  %790 = load ptr, ptr %6, align 8, !tbaa !5
  %791 = load ptr, ptr %8, align 8, !tbaa !5
  %792 = load i32, ptr %39, align 4, !tbaa !9
  %793 = sext i32 %792 to i64
  %794 = getelementptr inbounds %struct.complex, ptr %791, i64 %793
  %795 = load ptr, ptr %8, align 8, !tbaa !5
  %796 = getelementptr inbounds %struct.complex, ptr %795, i64 1
  call void @cspr_(ptr noundef %790, ptr noundef %11, ptr noundef %21, ptr noundef %794, ptr noundef @c__1, ptr noundef %796)
  %797 = load i32, ptr %29, align 4, !tbaa !9
  %798 = sub nsw i32 %797, 1
  store i32 %798, ptr %11, align 4, !tbaa !9
  %799 = load ptr, ptr %8, align 8, !tbaa !5
  %800 = load i32, ptr %39, align 4, !tbaa !9
  %801 = sext i32 %800 to i64
  %802 = getelementptr inbounds %struct.complex, ptr %799, i64 %801
  call void @cscal_(ptr noundef %11, ptr noundef %34, ptr noundef %802, ptr noundef @c__1)
  br label %1400

803:                                              ; preds = %745
  %804 = load i32, ptr %29, align 4, !tbaa !9
  %805 = icmp sgt i32 %804, 2
  br i1 %805, label %806, label %1399

806:                                              ; preds = %803
  %807 = load i32, ptr %29, align 4, !tbaa !9
  %808 = sub nsw i32 %807, 1
  %809 = load i32, ptr %29, align 4, !tbaa !9
  %810 = sub nsw i32 %809, 1
  %811 = load i32, ptr %29, align 4, !tbaa !9
  %812 = mul nsw i32 %810, %811
  %813 = sdiv i32 %812, 2
  %814 = add nsw i32 %808, %813
  store i32 %814, ptr %11, align 4, !tbaa !9
  %815 = load ptr, ptr %8, align 8, !tbaa !5
  %816 = load i32, ptr %11, align 4, !tbaa !9
  %817 = sext i32 %816 to i64
  %818 = getelementptr inbounds %struct.complex, ptr %815, i64 %817
  %819 = getelementptr inbounds %struct.complex, ptr %818, i32 0, i32 0
  %820 = load float, ptr %819, align 4, !tbaa !13
  %821 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %820, ptr %821, align 4, !tbaa !13
  %822 = load ptr, ptr %8, align 8, !tbaa !5
  %823 = load i32, ptr %11, align 4, !tbaa !9
  %824 = sext i32 %823 to i64
  %825 = getelementptr inbounds %struct.complex, ptr %822, i64 %824
  %826 = getelementptr inbounds %struct.complex, ptr %825, i32 0, i32 1
  %827 = load float, ptr %826, align 4, !tbaa !17
  %828 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %827, ptr %828, align 4, !tbaa !17
  %829 = load ptr, ptr %8, align 8, !tbaa !5
  %830 = load i32, ptr %29, align 4, !tbaa !9
  %831 = sub nsw i32 %830, 1
  %832 = load i32, ptr %29, align 4, !tbaa !9
  %833 = sub nsw i32 %832, 2
  %834 = load i32, ptr %29, align 4, !tbaa !9
  %835 = sub nsw i32 %834, 1
  %836 = mul nsw i32 %833, %835
  %837 = sdiv i32 %836, 2
  %838 = add nsw i32 %831, %837
  %839 = sext i32 %838 to i64
  %840 = getelementptr inbounds %struct.complex, ptr %829, i64 %839
  %841 = call <2 x float> @Cf(ptr noundef %840)
  store <2 x float> %841, ptr %62, align 4
  %842 = getelementptr inbounds { float, float }, ptr %62, i32 0, i32 0
  %843 = load float, ptr %842, align 4
  %844 = getelementptr inbounds { float, float }, ptr %62, i32 0, i32 1
  %845 = load float, ptr %844, align 4
  %846 = call <2 x float> @Cf(ptr noundef %36)
  store <2 x float> %846, ptr %63, align 4
  %847 = getelementptr inbounds { float, float }, ptr %63, i32 0, i32 0
  %848 = load float, ptr %847, align 4
  %849 = getelementptr inbounds { float, float }, ptr %63, i32 0, i32 1
  %850 = load float, ptr %849, align 4
  %851 = call <2 x float> @__divsc3(float noundef %843, float noundef %845, float noundef %848, float noundef %850) #7
  store <2 x float> %851, ptr %64, align 4
  %852 = getelementptr inbounds { float, float }, ptr %64, i32 0, i32 0
  %853 = load float, ptr %852, align 4
  %854 = getelementptr inbounds { float, float }, ptr %64, i32 0, i32 1
  %855 = load float, ptr %854, align 4
  %856 = call ptr @_pCf(ptr noundef %21)
  %857 = getelementptr inbounds { float, float }, ptr %856, i32 0, i32 0
  %858 = getelementptr inbounds { float, float }, ptr %856, i32 0, i32 1
  store float %853, ptr %857, align 4
  store float %855, ptr %858, align 4
  %859 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %860 = load float, ptr %859, align 4, !tbaa !13
  %861 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float %860, ptr %861, align 4, !tbaa !13
  %862 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %863 = load float, ptr %862, align 4, !tbaa !17
  %864 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float %863, ptr %864, align 4, !tbaa !17
  %865 = load ptr, ptr %8, align 8, !tbaa !5
  %866 = load i32, ptr %29, align 4, !tbaa !9
  %867 = load i32, ptr %29, align 4, !tbaa !9
  %868 = sub nsw i32 %867, 1
  %869 = load i32, ptr %29, align 4, !tbaa !9
  %870 = mul nsw i32 %868, %869
  %871 = sdiv i32 %870, 2
  %872 = add nsw i32 %866, %871
  %873 = sext i32 %872 to i64
  %874 = getelementptr inbounds %struct.complex, ptr %865, i64 %873
  %875 = call <2 x float> @Cf(ptr noundef %874)
  store <2 x float> %875, ptr %65, align 4
  %876 = getelementptr inbounds { float, float }, ptr %65, i32 0, i32 0
  %877 = load float, ptr %876, align 4
  %878 = getelementptr inbounds { float, float }, ptr %65, i32 0, i32 1
  %879 = load float, ptr %878, align 4
  %880 = call <2 x float> @Cf(ptr noundef %36)
  store <2 x float> %880, ptr %66, align 4
  %881 = getelementptr inbounds { float, float }, ptr %66, i32 0, i32 0
  %882 = load float, ptr %881, align 4
  %883 = getelementptr inbounds { float, float }, ptr %66, i32 0, i32 1
  %884 = load float, ptr %883, align 4
  %885 = call <2 x float> @__divsc3(float noundef %877, float noundef %879, float noundef %882, float noundef %884) #7
  store <2 x float> %885, ptr %67, align 4
  %886 = getelementptr inbounds { float, float }, ptr %67, i32 0, i32 0
  %887 = load float, ptr %886, align 4
  %888 = getelementptr inbounds { float, float }, ptr %67, i32 0, i32 1
  %889 = load float, ptr %888, align 4
  %890 = call ptr @_pCf(ptr noundef %21)
  %891 = getelementptr inbounds { float, float }, ptr %890, i32 0, i32 0
  %892 = getelementptr inbounds { float, float }, ptr %890, i32 0, i32 1
  store float %887, ptr %891, align 4
  store float %889, ptr %892, align 4
  %893 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %894 = load float, ptr %893, align 4, !tbaa !13
  %895 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %894, ptr %895, align 4, !tbaa !13
  %896 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %897 = load float, ptr %896, align 4, !tbaa !17
  %898 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %897, ptr %898, align 4, !tbaa !17
  %899 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %900 = load float, ptr %899, align 4, !tbaa !13
  %901 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %902 = load float, ptr %901, align 4, !tbaa !13
  %903 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %904 = load float, ptr %903, align 4, !tbaa !17
  %905 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %906 = load float, ptr %905, align 4, !tbaa !17
  %907 = fmul float %904, %906
  %908 = fneg float %907
  %909 = call float @llvm.fmuladd.f32(float %900, float %902, float %908)
  %910 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  store float %909, ptr %910, align 4, !tbaa !13
  %911 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %912 = load float, ptr %911, align 4, !tbaa !13
  %913 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %914 = load float, ptr %913, align 4, !tbaa !17
  %915 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %916 = load float, ptr %915, align 4, !tbaa !17
  %917 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %918 = load float, ptr %917, align 4, !tbaa !13
  %919 = fmul float %916, %918
  %920 = call float @llvm.fmuladd.f32(float %912, float %914, float %919)
  %921 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  store float %920, ptr %921, align 4, !tbaa !17
  %922 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  %923 = load float, ptr %922, align 4, !tbaa !13
  %924 = fsub float %923, 1.000000e+00
  %925 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  store float %924, ptr %925, align 4, !tbaa !13
  %926 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  %927 = load float, ptr %926, align 4, !tbaa !17
  %928 = fadd float %927, 0.000000e+00
  %929 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  store float %928, ptr %929, align 4, !tbaa !17
  %930 = call <2 x float> @Cf(ptr noundef @c_b1)
  store <2 x float> %930, ptr %68, align 4
  %931 = getelementptr inbounds { float, float }, ptr %68, i32 0, i32 0
  %932 = load float, ptr %931, align 4
  %933 = getelementptr inbounds { float, float }, ptr %68, i32 0, i32 1
  %934 = load float, ptr %933, align 4
  %935 = call <2 x float> @Cf(ptr noundef %22)
  store <2 x float> %935, ptr %69, align 4
  %936 = getelementptr inbounds { float, float }, ptr %69, i32 0, i32 0
  %937 = load float, ptr %936, align 4
  %938 = getelementptr inbounds { float, float }, ptr %69, i32 0, i32 1
  %939 = load float, ptr %938, align 4
  %940 = call <2 x float> @__divsc3(float noundef %932, float noundef %934, float noundef %937, float noundef %939) #7
  store <2 x float> %940, ptr %70, align 4
  %941 = getelementptr inbounds { float, float }, ptr %70, i32 0, i32 0
  %942 = load float, ptr %941, align 4
  %943 = getelementptr inbounds { float, float }, ptr %70, i32 0, i32 1
  %944 = load float, ptr %943, align 4
  %945 = call ptr @_pCf(ptr noundef %21)
  %946 = getelementptr inbounds { float, float }, ptr %945, i32 0, i32 0
  %947 = getelementptr inbounds { float, float }, ptr %945, i32 0, i32 1
  store float %942, ptr %946, align 4
  store float %944, ptr %947, align 4
  %948 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %949 = load float, ptr %948, align 4, !tbaa !13
  %950 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  store float %949, ptr %950, align 4, !tbaa !13
  %951 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %952 = load float, ptr %951, align 4, !tbaa !17
  %953 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  store float %952, ptr %953, align 4, !tbaa !17
  %954 = call <2 x float> @Cf(ptr noundef %30)
  store <2 x float> %954, ptr %71, align 4
  %955 = getelementptr inbounds { float, float }, ptr %71, i32 0, i32 0
  %956 = load float, ptr %955, align 4
  %957 = getelementptr inbounds { float, float }, ptr %71, i32 0, i32 1
  %958 = load float, ptr %957, align 4
  %959 = call <2 x float> @Cf(ptr noundef %36)
  store <2 x float> %959, ptr %72, align 4
  %960 = getelementptr inbounds { float, float }, ptr %72, i32 0, i32 0
  %961 = load float, ptr %960, align 4
  %962 = getelementptr inbounds { float, float }, ptr %72, i32 0, i32 1
  %963 = load float, ptr %962, align 4
  %964 = call <2 x float> @__divsc3(float noundef %956, float noundef %958, float noundef %961, float noundef %963) #7
  store <2 x float> %964, ptr %73, align 4
  %965 = getelementptr inbounds { float, float }, ptr %73, i32 0, i32 0
  %966 = load float, ptr %965, align 4
  %967 = getelementptr inbounds { float, float }, ptr %73, i32 0, i32 1
  %968 = load float, ptr %967, align 4
  %969 = call ptr @_pCf(ptr noundef %21)
  %970 = getelementptr inbounds { float, float }, ptr %969, i32 0, i32 0
  %971 = getelementptr inbounds { float, float }, ptr %969, i32 0, i32 1
  store float %966, ptr %970, align 4
  store float %968, ptr %971, align 4
  %972 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %973 = load float, ptr %972, align 4, !tbaa !13
  %974 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  store float %973, ptr %974, align 4, !tbaa !13
  %975 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %976 = load float, ptr %975, align 4, !tbaa !17
  %977 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  store float %976, ptr %977, align 4, !tbaa !17
  %978 = load i32, ptr %29, align 4, !tbaa !9
  %979 = sub nsw i32 %978, 2
  store i32 %979, ptr %28, align 4, !tbaa !9
  br label %980

980:                                              ; preds = %1395, %806
  %981 = load i32, ptr %28, align 4, !tbaa !9
  %982 = icmp sge i32 %981, 1
  br i1 %982, label %983, label %1398

983:                                              ; preds = %980
  %984 = load i32, ptr %28, align 4, !tbaa !9
  %985 = load i32, ptr %29, align 4, !tbaa !9
  %986 = sub nsw i32 %985, 2
  %987 = load i32, ptr %29, align 4, !tbaa !9
  %988 = sub nsw i32 %987, 1
  %989 = mul nsw i32 %986, %988
  %990 = sdiv i32 %989, 2
  %991 = add nsw i32 %984, %990
  store i32 %991, ptr %11, align 4, !tbaa !9
  %992 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %993 = load float, ptr %992, align 4, !tbaa !13
  %994 = load ptr, ptr %8, align 8, !tbaa !5
  %995 = load i32, ptr %11, align 4, !tbaa !9
  %996 = sext i32 %995 to i64
  %997 = getelementptr inbounds %struct.complex, ptr %994, i64 %996
  %998 = getelementptr inbounds %struct.complex, ptr %997, i32 0, i32 0
  %999 = load float, ptr %998, align 4, !tbaa !13
  %1000 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1001 = load float, ptr %1000, align 4, !tbaa !17
  %1002 = load ptr, ptr %8, align 8, !tbaa !5
  %1003 = load i32, ptr %11, align 4, !tbaa !9
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds %struct.complex, ptr %1002, i64 %1004
  %1006 = getelementptr inbounds %struct.complex, ptr %1005, i32 0, i32 1
  %1007 = load float, ptr %1006, align 4, !tbaa !17
  %1008 = fmul float %1001, %1007
  %1009 = fneg float %1008
  %1010 = call float @llvm.fmuladd.f32(float %993, float %999, float %1009)
  %1011 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  store float %1010, ptr %1011, align 4, !tbaa !13
  %1012 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %1013 = load float, ptr %1012, align 4, !tbaa !13
  %1014 = load ptr, ptr %8, align 8, !tbaa !5
  %1015 = load i32, ptr %11, align 4, !tbaa !9
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds %struct.complex, ptr %1014, i64 %1016
  %1018 = getelementptr inbounds %struct.complex, ptr %1017, i32 0, i32 1
  %1019 = load float, ptr %1018, align 4, !tbaa !17
  %1020 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %1021 = load float, ptr %1020, align 4, !tbaa !17
  %1022 = load ptr, ptr %8, align 8, !tbaa !5
  %1023 = load i32, ptr %11, align 4, !tbaa !9
  %1024 = sext i32 %1023 to i64
  %1025 = getelementptr inbounds %struct.complex, ptr %1022, i64 %1024
  %1026 = getelementptr inbounds %struct.complex, ptr %1025, i32 0, i32 0
  %1027 = load float, ptr %1026, align 4, !tbaa !13
  %1028 = fmul float %1021, %1027
  %1029 = call float @llvm.fmuladd.f32(float %1013, float %1019, float %1028)
  %1030 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  store float %1029, ptr %1030, align 4, !tbaa !17
  %1031 = load i32, ptr %28, align 4, !tbaa !9
  %1032 = load i32, ptr %29, align 4, !tbaa !9
  %1033 = sub nsw i32 %1032, 1
  %1034 = load i32, ptr %29, align 4, !tbaa !9
  %1035 = mul nsw i32 %1033, %1034
  %1036 = sdiv i32 %1035, 2
  %1037 = add nsw i32 %1031, %1036
  store i32 %1037, ptr %12, align 4, !tbaa !9
  %1038 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  %1039 = load float, ptr %1038, align 4, !tbaa !13
  %1040 = load ptr, ptr %8, align 8, !tbaa !5
  %1041 = load i32, ptr %12, align 4, !tbaa !9
  %1042 = sext i32 %1041 to i64
  %1043 = getelementptr inbounds %struct.complex, ptr %1040, i64 %1042
  %1044 = getelementptr inbounds %struct.complex, ptr %1043, i32 0, i32 0
  %1045 = load float, ptr %1044, align 4, !tbaa !13
  %1046 = fsub float %1039, %1045
  %1047 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  store float %1046, ptr %1047, align 4, !tbaa !13
  %1048 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  %1049 = load float, ptr %1048, align 4, !tbaa !17
  %1050 = load ptr, ptr %8, align 8, !tbaa !5
  %1051 = load i32, ptr %12, align 4, !tbaa !9
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds %struct.complex, ptr %1050, i64 %1052
  %1054 = getelementptr inbounds %struct.complex, ptr %1053, i32 0, i32 1
  %1055 = load float, ptr %1054, align 4, !tbaa !17
  %1056 = fsub float %1049, %1055
  %1057 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  store float %1056, ptr %1057, align 4, !tbaa !17
  %1058 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1059 = load float, ptr %1058, align 4, !tbaa !13
  %1060 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %1061 = load float, ptr %1060, align 4, !tbaa !13
  %1062 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1063 = load float, ptr %1062, align 4, !tbaa !17
  %1064 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %1065 = load float, ptr %1064, align 4, !tbaa !17
  %1066 = fmul float %1063, %1065
  %1067 = fneg float %1066
  %1068 = call float @llvm.fmuladd.f32(float %1059, float %1061, float %1067)
  %1069 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float %1068, ptr %1069, align 4, !tbaa !13
  %1070 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1071 = load float, ptr %1070, align 4, !tbaa !13
  %1072 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %1073 = load float, ptr %1072, align 4, !tbaa !17
  %1074 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1075 = load float, ptr %1074, align 4, !tbaa !17
  %1076 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %1077 = load float, ptr %1076, align 4, !tbaa !13
  %1078 = fmul float %1075, %1077
  %1079 = call float @llvm.fmuladd.f32(float %1071, float %1073, float %1078)
  %1080 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float %1079, ptr %1080, align 4, !tbaa !17
  %1081 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %1082 = load float, ptr %1081, align 4, !tbaa !13
  %1083 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  store float %1082, ptr %1083, align 4, !tbaa !13
  %1084 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %1085 = load float, ptr %1084, align 4, !tbaa !17
  %1086 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  store float %1085, ptr %1086, align 4, !tbaa !17
  %1087 = load i32, ptr %28, align 4, !tbaa !9
  %1088 = load i32, ptr %29, align 4, !tbaa !9
  %1089 = sub nsw i32 %1088, 1
  %1090 = load i32, ptr %29, align 4, !tbaa !9
  %1091 = mul nsw i32 %1089, %1090
  %1092 = sdiv i32 %1091, 2
  %1093 = add nsw i32 %1087, %1092
  store i32 %1093, ptr %11, align 4, !tbaa !9
  %1094 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %1095 = load float, ptr %1094, align 4, !tbaa !13
  %1096 = load ptr, ptr %8, align 8, !tbaa !5
  %1097 = load i32, ptr %11, align 4, !tbaa !9
  %1098 = sext i32 %1097 to i64
  %1099 = getelementptr inbounds %struct.complex, ptr %1096, i64 %1098
  %1100 = getelementptr inbounds %struct.complex, ptr %1099, i32 0, i32 0
  %1101 = load float, ptr %1100, align 4, !tbaa !13
  %1102 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %1103 = load float, ptr %1102, align 4, !tbaa !17
  %1104 = load ptr, ptr %8, align 8, !tbaa !5
  %1105 = load i32, ptr %11, align 4, !tbaa !9
  %1106 = sext i32 %1105 to i64
  %1107 = getelementptr inbounds %struct.complex, ptr %1104, i64 %1106
  %1108 = getelementptr inbounds %struct.complex, ptr %1107, i32 0, i32 1
  %1109 = load float, ptr %1108, align 4, !tbaa !17
  %1110 = fmul float %1103, %1109
  %1111 = fneg float %1110
  %1112 = call float @llvm.fmuladd.f32(float %1095, float %1101, float %1111)
  %1113 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  store float %1112, ptr %1113, align 4, !tbaa !13
  %1114 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %1115 = load float, ptr %1114, align 4, !tbaa !13
  %1116 = load ptr, ptr %8, align 8, !tbaa !5
  %1117 = load i32, ptr %11, align 4, !tbaa !9
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds %struct.complex, ptr %1116, i64 %1118
  %1120 = getelementptr inbounds %struct.complex, ptr %1119, i32 0, i32 1
  %1121 = load float, ptr %1120, align 4, !tbaa !17
  %1122 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %1123 = load float, ptr %1122, align 4, !tbaa !17
  %1124 = load ptr, ptr %8, align 8, !tbaa !5
  %1125 = load i32, ptr %11, align 4, !tbaa !9
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds %struct.complex, ptr %1124, i64 %1126
  %1128 = getelementptr inbounds %struct.complex, ptr %1127, i32 0, i32 0
  %1129 = load float, ptr %1128, align 4, !tbaa !13
  %1130 = fmul float %1123, %1129
  %1131 = call float @llvm.fmuladd.f32(float %1115, float %1121, float %1130)
  %1132 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  store float %1131, ptr %1132, align 4, !tbaa !17
  %1133 = load i32, ptr %28, align 4, !tbaa !9
  %1134 = load i32, ptr %29, align 4, !tbaa !9
  %1135 = sub nsw i32 %1134, 2
  %1136 = load i32, ptr %29, align 4, !tbaa !9
  %1137 = sub nsw i32 %1136, 1
  %1138 = mul nsw i32 %1135, %1137
  %1139 = sdiv i32 %1138, 2
  %1140 = add nsw i32 %1133, %1139
  store i32 %1140, ptr %12, align 4, !tbaa !9
  %1141 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  %1142 = load float, ptr %1141, align 4, !tbaa !13
  %1143 = load ptr, ptr %8, align 8, !tbaa !5
  %1144 = load i32, ptr %12, align 4, !tbaa !9
  %1145 = sext i32 %1144 to i64
  %1146 = getelementptr inbounds %struct.complex, ptr %1143, i64 %1145
  %1147 = getelementptr inbounds %struct.complex, ptr %1146, i32 0, i32 0
  %1148 = load float, ptr %1147, align 4, !tbaa !13
  %1149 = fsub float %1142, %1148
  %1150 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  store float %1149, ptr %1150, align 4, !tbaa !13
  %1151 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  %1152 = load float, ptr %1151, align 4, !tbaa !17
  %1153 = load ptr, ptr %8, align 8, !tbaa !5
  %1154 = load i32, ptr %12, align 4, !tbaa !9
  %1155 = sext i32 %1154 to i64
  %1156 = getelementptr inbounds %struct.complex, ptr %1153, i64 %1155
  %1157 = getelementptr inbounds %struct.complex, ptr %1156, i32 0, i32 1
  %1158 = load float, ptr %1157, align 4, !tbaa !17
  %1159 = fsub float %1152, %1158
  %1160 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  store float %1159, ptr %1160, align 4, !tbaa !17
  %1161 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1162 = load float, ptr %1161, align 4, !tbaa !13
  %1163 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %1164 = load float, ptr %1163, align 4, !tbaa !13
  %1165 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1166 = load float, ptr %1165, align 4, !tbaa !17
  %1167 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %1168 = load float, ptr %1167, align 4, !tbaa !17
  %1169 = fmul float %1166, %1168
  %1170 = fneg float %1169
  %1171 = call float @llvm.fmuladd.f32(float %1162, float %1164, float %1170)
  %1172 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float %1171, ptr %1172, align 4, !tbaa !13
  %1173 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 0
  %1174 = load float, ptr %1173, align 4, !tbaa !13
  %1175 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %1176 = load float, ptr %1175, align 4, !tbaa !17
  %1177 = getelementptr inbounds %struct.complex, ptr %36, i32 0, i32 1
  %1178 = load float, ptr %1177, align 4, !tbaa !17
  %1179 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %1180 = load float, ptr %1179, align 4, !tbaa !13
  %1181 = fmul float %1178, %1180
  %1182 = call float @llvm.fmuladd.f32(float %1174, float %1176, float %1181)
  %1183 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float %1182, ptr %1183, align 4, !tbaa !17
  %1184 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %1185 = load float, ptr %1184, align 4, !tbaa !13
  %1186 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %1185, ptr %1186, align 4, !tbaa !13
  %1187 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %1188 = load float, ptr %1187, align 4, !tbaa !17
  %1189 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %1188, ptr %1189, align 4, !tbaa !17
  %1190 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1190, ptr %27, align 4, !tbaa !9
  br label %1191

1191:                                             ; preds = %1348, %983
  %1192 = load i32, ptr %27, align 4, !tbaa !9
  %1193 = icmp sge i32 %1192, 1
  br i1 %1193, label %1194, label %1351

1194:                                             ; preds = %1191
  %1195 = load i32, ptr %27, align 4, !tbaa !9
  %1196 = load i32, ptr %28, align 4, !tbaa !9
  %1197 = sub nsw i32 %1196, 1
  %1198 = load i32, ptr %28, align 4, !tbaa !9
  %1199 = mul nsw i32 %1197, %1198
  %1200 = sdiv i32 %1199, 2
  %1201 = add nsw i32 %1195, %1200
  store i32 %1201, ptr %11, align 4, !tbaa !9
  %1202 = load i32, ptr %27, align 4, !tbaa !9
  %1203 = load i32, ptr %28, align 4, !tbaa !9
  %1204 = sub nsw i32 %1203, 1
  %1205 = load i32, ptr %28, align 4, !tbaa !9
  %1206 = mul nsw i32 %1204, %1205
  %1207 = sdiv i32 %1206, 2
  %1208 = add nsw i32 %1202, %1207
  store i32 %1208, ptr %12, align 4, !tbaa !9
  %1209 = load i32, ptr %27, align 4, !tbaa !9
  %1210 = load i32, ptr %29, align 4, !tbaa !9
  %1211 = sub nsw i32 %1210, 1
  %1212 = load i32, ptr %29, align 4, !tbaa !9
  %1213 = mul nsw i32 %1211, %1212
  %1214 = sdiv i32 %1213, 2
  %1215 = add nsw i32 %1209, %1214
  store i32 %1215, ptr %13, align 4, !tbaa !9
  %1216 = load ptr, ptr %8, align 8, !tbaa !5
  %1217 = load i32, ptr %13, align 4, !tbaa !9
  %1218 = sext i32 %1217 to i64
  %1219 = getelementptr inbounds %struct.complex, ptr %1216, i64 %1218
  %1220 = getelementptr inbounds %struct.complex, ptr %1219, i32 0, i32 0
  %1221 = load float, ptr %1220, align 4, !tbaa !13
  %1222 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1223 = load float, ptr %1222, align 4, !tbaa !13
  %1224 = load ptr, ptr %8, align 8, !tbaa !5
  %1225 = load i32, ptr %13, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds %struct.complex, ptr %1224, i64 %1226
  %1228 = getelementptr inbounds %struct.complex, ptr %1227, i32 0, i32 1
  %1229 = load float, ptr %1228, align 4, !tbaa !17
  %1230 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1231 = load float, ptr %1230, align 4, !tbaa !17
  %1232 = fmul float %1229, %1231
  %1233 = fneg float %1232
  %1234 = call float @llvm.fmuladd.f32(float %1221, float %1223, float %1233)
  %1235 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  store float %1234, ptr %1235, align 4, !tbaa !13
  %1236 = load ptr, ptr %8, align 8, !tbaa !5
  %1237 = load i32, ptr %13, align 4, !tbaa !9
  %1238 = sext i32 %1237 to i64
  %1239 = getelementptr inbounds %struct.complex, ptr %1236, i64 %1238
  %1240 = getelementptr inbounds %struct.complex, ptr %1239, i32 0, i32 0
  %1241 = load float, ptr %1240, align 4, !tbaa !13
  %1242 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1243 = load float, ptr %1242, align 4, !tbaa !17
  %1244 = load ptr, ptr %8, align 8, !tbaa !5
  %1245 = load i32, ptr %13, align 4, !tbaa !9
  %1246 = sext i32 %1245 to i64
  %1247 = getelementptr inbounds %struct.complex, ptr %1244, i64 %1246
  %1248 = getelementptr inbounds %struct.complex, ptr %1247, i32 0, i32 1
  %1249 = load float, ptr %1248, align 4, !tbaa !17
  %1250 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1251 = load float, ptr %1250, align 4, !tbaa !13
  %1252 = fmul float %1249, %1251
  %1253 = call float @llvm.fmuladd.f32(float %1241, float %1243, float %1252)
  %1254 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  store float %1253, ptr %1254, align 4, !tbaa !17
  %1255 = load ptr, ptr %8, align 8, !tbaa !5
  %1256 = load i32, ptr %12, align 4, !tbaa !9
  %1257 = sext i32 %1256 to i64
  %1258 = getelementptr inbounds %struct.complex, ptr %1255, i64 %1257
  %1259 = getelementptr inbounds %struct.complex, ptr %1258, i32 0, i32 0
  %1260 = load float, ptr %1259, align 4, !tbaa !13
  %1261 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  %1262 = load float, ptr %1261, align 4, !tbaa !13
  %1263 = fsub float %1260, %1262
  %1264 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  store float %1263, ptr %1264, align 4, !tbaa !13
  %1265 = load ptr, ptr %8, align 8, !tbaa !5
  %1266 = load i32, ptr %12, align 4, !tbaa !9
  %1267 = sext i32 %1266 to i64
  %1268 = getelementptr inbounds %struct.complex, ptr %1265, i64 %1267
  %1269 = getelementptr inbounds %struct.complex, ptr %1268, i32 0, i32 1
  %1270 = load float, ptr %1269, align 4, !tbaa !17
  %1271 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  %1272 = load float, ptr %1271, align 4, !tbaa !17
  %1273 = fsub float %1270, %1272
  %1274 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  store float %1273, ptr %1274, align 4, !tbaa !17
  %1275 = load i32, ptr %27, align 4, !tbaa !9
  %1276 = load i32, ptr %29, align 4, !tbaa !9
  %1277 = sub nsw i32 %1276, 2
  %1278 = load i32, ptr %29, align 4, !tbaa !9
  %1279 = sub nsw i32 %1278, 1
  %1280 = mul nsw i32 %1277, %1279
  %1281 = sdiv i32 %1280, 2
  %1282 = add nsw i32 %1275, %1281
  store i32 %1282, ptr %14, align 4, !tbaa !9
  %1283 = load ptr, ptr %8, align 8, !tbaa !5
  %1284 = load i32, ptr %14, align 4, !tbaa !9
  %1285 = sext i32 %1284 to i64
  %1286 = getelementptr inbounds %struct.complex, ptr %1283, i64 %1285
  %1287 = getelementptr inbounds %struct.complex, ptr %1286, i32 0, i32 0
  %1288 = load float, ptr %1287, align 4, !tbaa !13
  %1289 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1290 = load float, ptr %1289, align 4, !tbaa !13
  %1291 = load ptr, ptr %8, align 8, !tbaa !5
  %1292 = load i32, ptr %14, align 4, !tbaa !9
  %1293 = sext i32 %1292 to i64
  %1294 = getelementptr inbounds %struct.complex, ptr %1291, i64 %1293
  %1295 = getelementptr inbounds %struct.complex, ptr %1294, i32 0, i32 1
  %1296 = load float, ptr %1295, align 4, !tbaa !17
  %1297 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1298 = load float, ptr %1297, align 4, !tbaa !17
  %1299 = fmul float %1296, %1298
  %1300 = fneg float %1299
  %1301 = call float @llvm.fmuladd.f32(float %1288, float %1290, float %1300)
  %1302 = getelementptr inbounds %struct.complex, ptr %24, i32 0, i32 0
  store float %1301, ptr %1302, align 4, !tbaa !13
  %1303 = load ptr, ptr %8, align 8, !tbaa !5
  %1304 = load i32, ptr %14, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds %struct.complex, ptr %1303, i64 %1305
  %1307 = getelementptr inbounds %struct.complex, ptr %1306, i32 0, i32 0
  %1308 = load float, ptr %1307, align 4, !tbaa !13
  %1309 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1310 = load float, ptr %1309, align 4, !tbaa !17
  %1311 = load ptr, ptr %8, align 8, !tbaa !5
  %1312 = load i32, ptr %14, align 4, !tbaa !9
  %1313 = sext i32 %1312 to i64
  %1314 = getelementptr inbounds %struct.complex, ptr %1311, i64 %1313
  %1315 = getelementptr inbounds %struct.complex, ptr %1314, i32 0, i32 1
  %1316 = load float, ptr %1315, align 4, !tbaa !17
  %1317 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1318 = load float, ptr %1317, align 4, !tbaa !13
  %1319 = fmul float %1316, %1318
  %1320 = call float @llvm.fmuladd.f32(float %1308, float %1310, float %1319)
  %1321 = getelementptr inbounds %struct.complex, ptr %24, i32 0, i32 1
  store float %1320, ptr %1321, align 4, !tbaa !17
  %1322 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %1323 = load float, ptr %1322, align 4, !tbaa !13
  %1324 = getelementptr inbounds %struct.complex, ptr %24, i32 0, i32 0
  %1325 = load float, ptr %1324, align 4, !tbaa !13
  %1326 = fsub float %1323, %1325
  %1327 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float %1326, ptr %1327, align 4, !tbaa !13
  %1328 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %1329 = load float, ptr %1328, align 4, !tbaa !17
  %1330 = getelementptr inbounds %struct.complex, ptr %24, i32 0, i32 1
  %1331 = load float, ptr %1330, align 4, !tbaa !17
  %1332 = fsub float %1329, %1331
  %1333 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float %1332, ptr %1333, align 4, !tbaa !17
  %1334 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %1335 = load float, ptr %1334, align 4, !tbaa !13
  %1336 = load ptr, ptr %8, align 8, !tbaa !5
  %1337 = load i32, ptr %11, align 4, !tbaa !9
  %1338 = sext i32 %1337 to i64
  %1339 = getelementptr inbounds %struct.complex, ptr %1336, i64 %1338
  %1340 = getelementptr inbounds %struct.complex, ptr %1339, i32 0, i32 0
  store float %1335, ptr %1340, align 4, !tbaa !13
  %1341 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %1342 = load float, ptr %1341, align 4, !tbaa !17
  %1343 = load ptr, ptr %8, align 8, !tbaa !5
  %1344 = load i32, ptr %11, align 4, !tbaa !9
  %1345 = sext i32 %1344 to i64
  %1346 = getelementptr inbounds %struct.complex, ptr %1343, i64 %1345
  %1347 = getelementptr inbounds %struct.complex, ptr %1346, i32 0, i32 1
  store float %1342, ptr %1347, align 4, !tbaa !17
  br label %1348

1348:                                             ; preds = %1194
  %1349 = load i32, ptr %27, align 4, !tbaa !9
  %1350 = add nsw i32 %1349, -1
  store i32 %1350, ptr %27, align 4, !tbaa !9
  br label %1191, !llvm.loop !19

1351:                                             ; preds = %1191
  %1352 = load i32, ptr %28, align 4, !tbaa !9
  %1353 = load i32, ptr %29, align 4, !tbaa !9
  %1354 = sub nsw i32 %1353, 1
  %1355 = load i32, ptr %29, align 4, !tbaa !9
  %1356 = mul nsw i32 %1354, %1355
  %1357 = sdiv i32 %1356, 2
  %1358 = add nsw i32 %1352, %1357
  store i32 %1358, ptr %11, align 4, !tbaa !9
  %1359 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %1360 = load float, ptr %1359, align 4, !tbaa !13
  %1361 = load ptr, ptr %8, align 8, !tbaa !5
  %1362 = load i32, ptr %11, align 4, !tbaa !9
  %1363 = sext i32 %1362 to i64
  %1364 = getelementptr inbounds %struct.complex, ptr %1361, i64 %1363
  %1365 = getelementptr inbounds %struct.complex, ptr %1364, i32 0, i32 0
  store float %1360, ptr %1365, align 4, !tbaa !13
  %1366 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %1367 = load float, ptr %1366, align 4, !tbaa !17
  %1368 = load ptr, ptr %8, align 8, !tbaa !5
  %1369 = load i32, ptr %11, align 4, !tbaa !9
  %1370 = sext i32 %1369 to i64
  %1371 = getelementptr inbounds %struct.complex, ptr %1368, i64 %1370
  %1372 = getelementptr inbounds %struct.complex, ptr %1371, i32 0, i32 1
  store float %1367, ptr %1372, align 4, !tbaa !17
  %1373 = load i32, ptr %28, align 4, !tbaa !9
  %1374 = load i32, ptr %29, align 4, !tbaa !9
  %1375 = sub nsw i32 %1374, 2
  %1376 = load i32, ptr %29, align 4, !tbaa !9
  %1377 = sub nsw i32 %1376, 1
  %1378 = mul nsw i32 %1375, %1377
  %1379 = sdiv i32 %1378, 2
  %1380 = add nsw i32 %1373, %1379
  store i32 %1380, ptr %11, align 4, !tbaa !9
  %1381 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 0
  %1382 = load float, ptr %1381, align 4, !tbaa !13
  %1383 = load ptr, ptr %8, align 8, !tbaa !5
  %1384 = load i32, ptr %11, align 4, !tbaa !9
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds %struct.complex, ptr %1383, i64 %1385
  %1387 = getelementptr inbounds %struct.complex, ptr %1386, i32 0, i32 0
  store float %1382, ptr %1387, align 4, !tbaa !13
  %1388 = getelementptr inbounds %struct.complex, ptr %50, i32 0, i32 1
  %1389 = load float, ptr %1388, align 4, !tbaa !17
  %1390 = load ptr, ptr %8, align 8, !tbaa !5
  %1391 = load i32, ptr %11, align 4, !tbaa !9
  %1392 = sext i32 %1391 to i64
  %1393 = getelementptr inbounds %struct.complex, ptr %1390, i64 %1392
  %1394 = getelementptr inbounds %struct.complex, ptr %1393, i32 0, i32 1
  store float %1389, ptr %1394, align 4, !tbaa !17
  br label %1395

1395:                                             ; preds = %1351
  %1396 = load i32, ptr %28, align 4, !tbaa !9
  %1397 = add nsw i32 %1396, -1
  store i32 %1397, ptr %28, align 4, !tbaa !9
  br label %980, !llvm.loop !20

1398:                                             ; preds = %980
  br label %1399

1399:                                             ; preds = %1398, %803
  br label %1400

1400:                                             ; preds = %1399, %748
  br label %1401

1401:                                             ; preds = %1400, %261
  %1402 = load i32, ptr %32, align 4, !tbaa !9
  %1403 = icmp eq i32 %1402, 1
  br i1 %1403, label %1404, label %1410

1404:                                             ; preds = %1401
  %1405 = load i32, ptr %41, align 4, !tbaa !9
  %1406 = load ptr, ptr %9, align 8, !tbaa !5
  %1407 = load i32, ptr %29, align 4, !tbaa !9
  %1408 = sext i32 %1407 to i64
  %1409 = getelementptr inbounds i32, ptr %1406, i64 %1408
  store i32 %1405, ptr %1409, align 4, !tbaa !9
  br label %1424

1410:                                             ; preds = %1401
  %1411 = load i32, ptr %41, align 4, !tbaa !9
  %1412 = sub nsw i32 0, %1411
  %1413 = load ptr, ptr %9, align 8, !tbaa !5
  %1414 = load i32, ptr %29, align 4, !tbaa !9
  %1415 = sext i32 %1414 to i64
  %1416 = getelementptr inbounds i32, ptr %1413, i64 %1415
  store i32 %1412, ptr %1416, align 4, !tbaa !9
  %1417 = load i32, ptr %41, align 4, !tbaa !9
  %1418 = sub nsw i32 0, %1417
  %1419 = load ptr, ptr %9, align 8, !tbaa !5
  %1420 = load i32, ptr %29, align 4, !tbaa !9
  %1421 = sub nsw i32 %1420, 1
  %1422 = sext i32 %1421 to i64
  %1423 = getelementptr inbounds i32, ptr %1419, i64 %1422
  store i32 %1418, ptr %1423, align 4, !tbaa !9
  br label %1424

1424:                                             ; preds = %1410, %1404
  %1425 = load i32, ptr %32, align 4, !tbaa !9
  %1426 = load i32, ptr %29, align 4, !tbaa !9
  %1427 = sub nsw i32 %1426, %1425
  store i32 %1427, ptr %29, align 4, !tbaa !9
  %1428 = load i32, ptr %47, align 4, !tbaa !9
  %1429 = load i32, ptr %29, align 4, !tbaa !9
  %1430 = sub nsw i32 %1428, %1429
  store i32 %1430, ptr %39, align 4, !tbaa !9
  br label %144

1431:                                             ; preds = %126
  store i32 1, ptr %29, align 4, !tbaa !9
  store i32 1, ptr %39, align 4, !tbaa !9
  %1432 = load ptr, ptr %7, align 8, !tbaa !5
  %1433 = load i32, ptr %1432, align 4, !tbaa !9
  %1434 = load ptr, ptr %7, align 8, !tbaa !5
  %1435 = load i32, ptr %1434, align 4, !tbaa !9
  %1436 = add nsw i32 %1435, 1
  %1437 = mul nsw i32 %1433, %1436
  %1438 = sdiv i32 %1437, 2
  store i32 %1438, ptr %49, align 4, !tbaa !9
  br label %1439

1439:                                             ; preds = %2818, %1431
  %1440 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1440, ptr %47, align 4, !tbaa !9
  %1441 = load i32, ptr %29, align 4, !tbaa !9
  %1442 = load ptr, ptr %7, align 8, !tbaa !5
  %1443 = load i32, ptr %1442, align 4, !tbaa !9
  %1444 = icmp sgt i32 %1441, %1443
  br i1 %1444, label %1445, label %1446

1445:                                             ; preds = %1439
  br label %2829

1446:                                             ; preds = %1439
  store i32 1, ptr %32, align 4, !tbaa !9
  %1447 = load i32, ptr %39, align 4, !tbaa !9
  store i32 %1447, ptr %11, align 4, !tbaa !9
  %1448 = load ptr, ptr %8, align 8, !tbaa !5
  %1449 = load i32, ptr %11, align 4, !tbaa !9
  %1450 = sext i32 %1449 to i64
  %1451 = getelementptr inbounds %struct.complex, ptr %1448, i64 %1450
  %1452 = getelementptr inbounds %struct.complex, ptr %1451, i32 0, i32 0
  %1453 = load float, ptr %1452, align 4, !tbaa !13
  store float %1453, ptr %17, align 4, !tbaa !11
  %1454 = load float, ptr %17, align 4, !tbaa !11
  %1455 = fcmp oge float %1454, 0.000000e+00
  br i1 %1455, label %1456, label %1458

1456:                                             ; preds = %1446
  %1457 = load float, ptr %17, align 4, !tbaa !11
  br label %1461

1458:                                             ; preds = %1446
  %1459 = load float, ptr %17, align 4, !tbaa !11
  %1460 = fneg float %1459
  br label %1461

1461:                                             ; preds = %1458, %1456
  %1462 = phi float [ %1457, %1456 ], [ %1460, %1458 ]
  %1463 = load ptr, ptr %8, align 8, !tbaa !5
  %1464 = load i32, ptr %39, align 4, !tbaa !9
  %1465 = sext i32 %1464 to i64
  %1466 = getelementptr inbounds %struct.complex, ptr %1463, i64 %1465
  %1467 = call <2 x float> @Cf(ptr noundef %1466)
  store <2 x float> %1467, ptr %74, align 4
  %1468 = getelementptr inbounds { float, float }, ptr %74, i32 0, i32 0
  %1469 = load float, ptr %1468, align 4
  %1470 = getelementptr inbounds { float, float }, ptr %74, i32 0, i32 1
  %1471 = load float, ptr %1470, align 4
  store float %1471, ptr %18, align 4, !tbaa !11
  %1472 = load float, ptr %18, align 4, !tbaa !11
  %1473 = fcmp oge float %1472, 0.000000e+00
  br i1 %1473, label %1474, label %1476

1474:                                             ; preds = %1461
  %1475 = load float, ptr %18, align 4, !tbaa !11
  br label %1479

1476:                                             ; preds = %1461
  %1477 = load float, ptr %18, align 4, !tbaa !11
  %1478 = fneg float %1477
  br label %1479

1479:                                             ; preds = %1476, %1474
  %1480 = phi float [ %1475, %1474 ], [ %1478, %1476 ]
  %1481 = fadd float %1462, %1480
  store float %1481, ptr %42, align 4, !tbaa !11
  %1482 = load i32, ptr %29, align 4, !tbaa !9
  %1483 = load ptr, ptr %7, align 8, !tbaa !5
  %1484 = load i32, ptr %1483, align 4, !tbaa !9
  %1485 = icmp slt i32 %1482, %1484
  br i1 %1485, label %1486, label %1542

1486:                                             ; preds = %1479
  %1487 = load ptr, ptr %7, align 8, !tbaa !5
  %1488 = load i32, ptr %1487, align 4, !tbaa !9
  %1489 = load i32, ptr %29, align 4, !tbaa !9
  %1490 = sub nsw i32 %1488, %1489
  store i32 %1490, ptr %11, align 4, !tbaa !9
  %1491 = load i32, ptr %29, align 4, !tbaa !9
  %1492 = load ptr, ptr %8, align 8, !tbaa !5
  %1493 = load i32, ptr %39, align 4, !tbaa !9
  %1494 = add nsw i32 %1493, 1
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds %struct.complex, ptr %1492, i64 %1495
  %1497 = call i32 @icamax_(ptr noundef %11, ptr noundef %1496, ptr noundef @c__1)
  %1498 = add nsw i32 %1491, %1497
  store i32 %1498, ptr %25, align 4, !tbaa !9
  %1499 = load i32, ptr %39, align 4, !tbaa !9
  %1500 = load i32, ptr %25, align 4, !tbaa !9
  %1501 = add nsw i32 %1499, %1500
  %1502 = load i32, ptr %29, align 4, !tbaa !9
  %1503 = sub nsw i32 %1501, %1502
  store i32 %1503, ptr %11, align 4, !tbaa !9
  %1504 = load ptr, ptr %8, align 8, !tbaa !5
  %1505 = load i32, ptr %11, align 4, !tbaa !9
  %1506 = sext i32 %1505 to i64
  %1507 = getelementptr inbounds %struct.complex, ptr %1504, i64 %1506
  %1508 = getelementptr inbounds %struct.complex, ptr %1507, i32 0, i32 0
  %1509 = load float, ptr %1508, align 4, !tbaa !13
  store float %1509, ptr %17, align 4, !tbaa !11
  %1510 = load float, ptr %17, align 4, !tbaa !11
  %1511 = fcmp oge float %1510, 0.000000e+00
  br i1 %1511, label %1512, label %1514

1512:                                             ; preds = %1486
  %1513 = load float, ptr %17, align 4, !tbaa !11
  br label %1517

1514:                                             ; preds = %1486
  %1515 = load float, ptr %17, align 4, !tbaa !11
  %1516 = fneg float %1515
  br label %1517

1517:                                             ; preds = %1514, %1512
  %1518 = phi float [ %1513, %1512 ], [ %1516, %1514 ]
  %1519 = load ptr, ptr %8, align 8, !tbaa !5
  %1520 = load i32, ptr %39, align 4, !tbaa !9
  %1521 = load i32, ptr %25, align 4, !tbaa !9
  %1522 = add nsw i32 %1520, %1521
  %1523 = load i32, ptr %29, align 4, !tbaa !9
  %1524 = sub nsw i32 %1522, %1523
  %1525 = sext i32 %1524 to i64
  %1526 = getelementptr inbounds %struct.complex, ptr %1519, i64 %1525
  %1527 = call <2 x float> @Cf(ptr noundef %1526)
  store <2 x float> %1527, ptr %75, align 4
  %1528 = getelementptr inbounds { float, float }, ptr %75, i32 0, i32 0
  %1529 = load float, ptr %1528, align 4
  %1530 = getelementptr inbounds { float, float }, ptr %75, i32 0, i32 1
  %1531 = load float, ptr %1530, align 4
  store float %1531, ptr %18, align 4, !tbaa !11
  %1532 = load float, ptr %18, align 4, !tbaa !11
  %1533 = fcmp oge float %1532, 0.000000e+00
  br i1 %1533, label %1534, label %1536

1534:                                             ; preds = %1517
  %1535 = load float, ptr %18, align 4, !tbaa !11
  br label %1539

1536:                                             ; preds = %1517
  %1537 = load float, ptr %18, align 4, !tbaa !11
  %1538 = fneg float %1537
  br label %1539

1539:                                             ; preds = %1536, %1534
  %1540 = phi float [ %1535, %1534 ], [ %1538, %1536 ]
  %1541 = fadd float %1518, %1540
  store float %1541, ptr %45, align 4, !tbaa !11
  br label %1543

1542:                                             ; preds = %1479
  store float 0.000000e+00, ptr %45, align 4, !tbaa !11
  br label %1543

1543:                                             ; preds = %1542, %1539
  %1544 = load float, ptr %42, align 4, !tbaa !11
  %1545 = load float, ptr %45, align 4, !tbaa !11
  %1546 = fcmp oge float %1544, %1545
  br i1 %1546, label %1547, label %1549

1547:                                             ; preds = %1543
  %1548 = load float, ptr %42, align 4, !tbaa !11
  br label %1551

1549:                                             ; preds = %1543
  %1550 = load float, ptr %45, align 4, !tbaa !11
  br label %1551

1551:                                             ; preds = %1549, %1547
  %1552 = phi float [ %1548, %1547 ], [ %1550, %1549 ]
  %1553 = fcmp oeq float %1552, 0.000000e+00
  br i1 %1553, label %1554, label %1563

1554:                                             ; preds = %1551
  %1555 = load ptr, ptr %10, align 8, !tbaa !5
  %1556 = load i32, ptr %1555, align 4, !tbaa !9
  %1557 = icmp eq i32 %1556, 0
  br i1 %1557, label %1558, label %1561

1558:                                             ; preds = %1554
  %1559 = load i32, ptr %29, align 4, !tbaa !9
  %1560 = load ptr, ptr %10, align 8, !tbaa !5
  store i32 %1559, ptr %1560, align 4, !tbaa !9
  br label %1561

1561:                                             ; preds = %1558, %1554
  %1562 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1562, ptr %41, align 4, !tbaa !9
  br label %2795

1563:                                             ; preds = %1551
  %1564 = load float, ptr %42, align 4, !tbaa !11
  %1565 = load float, ptr %31, align 4, !tbaa !11
  %1566 = load float, ptr %45, align 4, !tbaa !11
  %1567 = fmul float %1565, %1566
  %1568 = fcmp oge float %1564, %1567
  br i1 %1568, label %1569, label %1571

1569:                                             ; preds = %1563
  %1570 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1570, ptr %41, align 4, !tbaa !9
  br label %1813

1571:                                             ; preds = %1563
  store float 0.000000e+00, ptr %46, align 4, !tbaa !11
  %1572 = load i32, ptr %39, align 4, !tbaa !9
  %1573 = load i32, ptr %25, align 4, !tbaa !9
  %1574 = add nsw i32 %1572, %1573
  %1575 = load i32, ptr %29, align 4, !tbaa !9
  %1576 = sub nsw i32 %1574, %1575
  store i32 %1576, ptr %44, align 4, !tbaa !9
  %1577 = load i32, ptr %25, align 4, !tbaa !9
  %1578 = sub nsw i32 %1577, 1
  store i32 %1578, ptr %11, align 4, !tbaa !9
  %1579 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1579, ptr %28, align 4, !tbaa !9
  br label %1580

1580:                                             ; preds = %1666, %1571
  %1581 = load i32, ptr %28, align 4, !tbaa !9
  %1582 = load i32, ptr %11, align 4, !tbaa !9
  %1583 = icmp sle i32 %1581, %1582
  br i1 %1583, label %1584, label %1669

1584:                                             ; preds = %1580
  %1585 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1585, ptr %12, align 4, !tbaa !9
  %1586 = load ptr, ptr %8, align 8, !tbaa !5
  %1587 = load i32, ptr %12, align 4, !tbaa !9
  %1588 = sext i32 %1587 to i64
  %1589 = getelementptr inbounds %struct.complex, ptr %1586, i64 %1588
  %1590 = getelementptr inbounds %struct.complex, ptr %1589, i32 0, i32 0
  %1591 = load float, ptr %1590, align 4, !tbaa !13
  store float %1591, ptr %17, align 4, !tbaa !11
  %1592 = load float, ptr %17, align 4, !tbaa !11
  %1593 = fcmp oge float %1592, 0.000000e+00
  br i1 %1593, label %1594, label %1596

1594:                                             ; preds = %1584
  %1595 = load float, ptr %17, align 4, !tbaa !11
  br label %1599

1596:                                             ; preds = %1584
  %1597 = load float, ptr %17, align 4, !tbaa !11
  %1598 = fneg float %1597
  br label %1599

1599:                                             ; preds = %1596, %1594
  %1600 = phi float [ %1595, %1594 ], [ %1598, %1596 ]
  %1601 = load ptr, ptr %8, align 8, !tbaa !5
  %1602 = load i32, ptr %44, align 4, !tbaa !9
  %1603 = sext i32 %1602 to i64
  %1604 = getelementptr inbounds %struct.complex, ptr %1601, i64 %1603
  %1605 = call <2 x float> @Cf(ptr noundef %1604)
  store <2 x float> %1605, ptr %76, align 4
  %1606 = getelementptr inbounds { float, float }, ptr %76, i32 0, i32 0
  %1607 = load float, ptr %1606, align 4
  %1608 = getelementptr inbounds { float, float }, ptr %76, i32 0, i32 1
  %1609 = load float, ptr %1608, align 4
  store float %1609, ptr %18, align 4, !tbaa !11
  %1610 = load float, ptr %18, align 4, !tbaa !11
  %1611 = fcmp oge float %1610, 0.000000e+00
  br i1 %1611, label %1612, label %1614

1612:                                             ; preds = %1599
  %1613 = load float, ptr %18, align 4, !tbaa !11
  br label %1617

1614:                                             ; preds = %1599
  %1615 = load float, ptr %18, align 4, !tbaa !11
  %1616 = fneg float %1615
  br label %1617

1617:                                             ; preds = %1614, %1612
  %1618 = phi float [ %1613, %1612 ], [ %1616, %1614 ]
  %1619 = fadd float %1600, %1618
  %1620 = load float, ptr %46, align 4, !tbaa !11
  %1621 = fcmp ogt float %1619, %1620
  br i1 %1621, label %1622, label %1659

1622:                                             ; preds = %1617
  %1623 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1623, ptr %12, align 4, !tbaa !9
  %1624 = load ptr, ptr %8, align 8, !tbaa !5
  %1625 = load i32, ptr %12, align 4, !tbaa !9
  %1626 = sext i32 %1625 to i64
  %1627 = getelementptr inbounds %struct.complex, ptr %1624, i64 %1626
  %1628 = getelementptr inbounds %struct.complex, ptr %1627, i32 0, i32 0
  %1629 = load float, ptr %1628, align 4, !tbaa !13
  store float %1629, ptr %17, align 4, !tbaa !11
  %1630 = load float, ptr %17, align 4, !tbaa !11
  %1631 = fcmp oge float %1630, 0.000000e+00
  br i1 %1631, label %1632, label %1634

1632:                                             ; preds = %1622
  %1633 = load float, ptr %17, align 4, !tbaa !11
  br label %1637

1634:                                             ; preds = %1622
  %1635 = load float, ptr %17, align 4, !tbaa !11
  %1636 = fneg float %1635
  br label %1637

1637:                                             ; preds = %1634, %1632
  %1638 = phi float [ %1633, %1632 ], [ %1636, %1634 ]
  %1639 = load ptr, ptr %8, align 8, !tbaa !5
  %1640 = load i32, ptr %44, align 4, !tbaa !9
  %1641 = sext i32 %1640 to i64
  %1642 = getelementptr inbounds %struct.complex, ptr %1639, i64 %1641
  %1643 = call <2 x float> @Cf(ptr noundef %1642)
  store <2 x float> %1643, ptr %77, align 4
  %1644 = getelementptr inbounds { float, float }, ptr %77, i32 0, i32 0
  %1645 = load float, ptr %1644, align 4
  %1646 = getelementptr inbounds { float, float }, ptr %77, i32 0, i32 1
  %1647 = load float, ptr %1646, align 4
  store float %1647, ptr %18, align 4, !tbaa !11
  %1648 = load float, ptr %18, align 4, !tbaa !11
  %1649 = fcmp oge float %1648, 0.000000e+00
  br i1 %1649, label %1650, label %1652

1650:                                             ; preds = %1637
  %1651 = load float, ptr %18, align 4, !tbaa !11
  br label %1655

1652:                                             ; preds = %1637
  %1653 = load float, ptr %18, align 4, !tbaa !11
  %1654 = fneg float %1653
  br label %1655

1655:                                             ; preds = %1652, %1650
  %1656 = phi float [ %1651, %1650 ], [ %1654, %1652 ]
  %1657 = fadd float %1638, %1656
  store float %1657, ptr %46, align 4, !tbaa !11
  %1658 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %1658, ptr %26, align 4, !tbaa !9
  br label %1659

1659:                                             ; preds = %1655, %1617
  %1660 = load i32, ptr %44, align 4, !tbaa !9
  %1661 = load ptr, ptr %7, align 8, !tbaa !5
  %1662 = load i32, ptr %1661, align 4, !tbaa !9
  %1663 = add nsw i32 %1660, %1662
  %1664 = load i32, ptr %28, align 4, !tbaa !9
  %1665 = sub nsw i32 %1663, %1664
  store i32 %1665, ptr %44, align 4, !tbaa !9
  br label %1666

1666:                                             ; preds = %1659
  %1667 = load i32, ptr %28, align 4, !tbaa !9
  %1668 = add nsw i32 %1667, 1
  store i32 %1668, ptr %28, align 4, !tbaa !9
  br label %1580, !llvm.loop !21

1669:                                             ; preds = %1580
  %1670 = load i32, ptr %49, align 4, !tbaa !9
  %1671 = load ptr, ptr %7, align 8, !tbaa !5
  %1672 = load i32, ptr %1671, align 4, !tbaa !9
  %1673 = load i32, ptr %25, align 4, !tbaa !9
  %1674 = sub nsw i32 %1672, %1673
  %1675 = add nsw i32 %1674, 1
  %1676 = load ptr, ptr %7, align 8, !tbaa !5
  %1677 = load i32, ptr %1676, align 4, !tbaa !9
  %1678 = load i32, ptr %25, align 4, !tbaa !9
  %1679 = sub nsw i32 %1677, %1678
  %1680 = add nsw i32 %1679, 2
  %1681 = mul nsw i32 %1675, %1680
  %1682 = sdiv i32 %1681, 2
  %1683 = sub nsw i32 %1670, %1682
  %1684 = add nsw i32 %1683, 1
  store i32 %1684, ptr %48, align 4, !tbaa !9
  %1685 = load i32, ptr %25, align 4, !tbaa !9
  %1686 = load ptr, ptr %7, align 8, !tbaa !5
  %1687 = load i32, ptr %1686, align 4, !tbaa !9
  %1688 = icmp slt i32 %1685, %1687
  br i1 %1688, label %1689, label %1755

1689:                                             ; preds = %1669
  %1690 = load ptr, ptr %7, align 8, !tbaa !5
  %1691 = load i32, ptr %1690, align 4, !tbaa !9
  %1692 = load i32, ptr %25, align 4, !tbaa !9
  %1693 = sub nsw i32 %1691, %1692
  store i32 %1693, ptr %11, align 4, !tbaa !9
  %1694 = load i32, ptr %25, align 4, !tbaa !9
  %1695 = load ptr, ptr %8, align 8, !tbaa !5
  %1696 = load i32, ptr %48, align 4, !tbaa !9
  %1697 = add nsw i32 %1696, 1
  %1698 = sext i32 %1697 to i64
  %1699 = getelementptr inbounds %struct.complex, ptr %1695, i64 %1698
  %1700 = call i32 @icamax_(ptr noundef %11, ptr noundef %1699, ptr noundef @c__1)
  %1701 = add nsw i32 %1694, %1700
  store i32 %1701, ptr %26, align 4, !tbaa !9
  %1702 = load i32, ptr %48, align 4, !tbaa !9
  %1703 = load i32, ptr %26, align 4, !tbaa !9
  %1704 = add nsw i32 %1702, %1703
  %1705 = load i32, ptr %25, align 4, !tbaa !9
  %1706 = sub nsw i32 %1704, %1705
  store i32 %1706, ptr %11, align 4, !tbaa !9
  %1707 = load float, ptr %46, align 4, !tbaa !11
  store float %1707, ptr %19, align 4, !tbaa !11
  %1708 = load ptr, ptr %8, align 8, !tbaa !5
  %1709 = load i32, ptr %11, align 4, !tbaa !9
  %1710 = sext i32 %1709 to i64
  %1711 = getelementptr inbounds %struct.complex, ptr %1708, i64 %1710
  %1712 = getelementptr inbounds %struct.complex, ptr %1711, i32 0, i32 0
  %1713 = load float, ptr %1712, align 4, !tbaa !13
  store float %1713, ptr %17, align 4, !tbaa !11
  %1714 = load float, ptr %17, align 4, !tbaa !11
  %1715 = fcmp oge float %1714, 0.000000e+00
  br i1 %1715, label %1716, label %1718

1716:                                             ; preds = %1689
  %1717 = load float, ptr %17, align 4, !tbaa !11
  br label %1721

1718:                                             ; preds = %1689
  %1719 = load float, ptr %17, align 4, !tbaa !11
  %1720 = fneg float %1719
  br label %1721

1721:                                             ; preds = %1718, %1716
  %1722 = phi float [ %1717, %1716 ], [ %1720, %1718 ]
  %1723 = load ptr, ptr %8, align 8, !tbaa !5
  %1724 = load i32, ptr %48, align 4, !tbaa !9
  %1725 = load i32, ptr %26, align 4, !tbaa !9
  %1726 = add nsw i32 %1724, %1725
  %1727 = load i32, ptr %25, align 4, !tbaa !9
  %1728 = sub nsw i32 %1726, %1727
  %1729 = sext i32 %1728 to i64
  %1730 = getelementptr inbounds %struct.complex, ptr %1723, i64 %1729
  %1731 = call <2 x float> @Cf(ptr noundef %1730)
  store <2 x float> %1731, ptr %78, align 4
  %1732 = getelementptr inbounds { float, float }, ptr %78, i32 0, i32 0
  %1733 = load float, ptr %1732, align 4
  %1734 = getelementptr inbounds { float, float }, ptr %78, i32 0, i32 1
  %1735 = load float, ptr %1734, align 4
  store float %1735, ptr %18, align 4, !tbaa !11
  %1736 = load float, ptr %18, align 4, !tbaa !11
  %1737 = fcmp oge float %1736, 0.000000e+00
  br i1 %1737, label %1738, label %1740

1738:                                             ; preds = %1721
  %1739 = load float, ptr %18, align 4, !tbaa !11
  br label %1743

1740:                                             ; preds = %1721
  %1741 = load float, ptr %18, align 4, !tbaa !11
  %1742 = fneg float %1741
  br label %1743

1743:                                             ; preds = %1740, %1738
  %1744 = phi float [ %1739, %1738 ], [ %1742, %1740 ]
  %1745 = fadd float %1722, %1744
  store float %1745, ptr %20, align 4, !tbaa !11
  %1746 = load float, ptr %19, align 4, !tbaa !11
  %1747 = load float, ptr %20, align 4, !tbaa !11
  %1748 = fcmp oge float %1746, %1747
  br i1 %1748, label %1749, label %1751

1749:                                             ; preds = %1743
  %1750 = load float, ptr %19, align 4, !tbaa !11
  br label %1753

1751:                                             ; preds = %1743
  %1752 = load float, ptr %20, align 4, !tbaa !11
  br label %1753

1753:                                             ; preds = %1751, %1749
  %1754 = phi float [ %1750, %1749 ], [ %1752, %1751 ]
  store float %1754, ptr %46, align 4, !tbaa !11
  br label %1755

1755:                                             ; preds = %1753, %1669
  %1756 = load float, ptr %42, align 4, !tbaa !11
  %1757 = load float, ptr %31, align 4, !tbaa !11
  %1758 = load float, ptr %45, align 4, !tbaa !11
  %1759 = fmul float %1757, %1758
  %1760 = load float, ptr %45, align 4, !tbaa !11
  %1761 = load float, ptr %46, align 4, !tbaa !11
  %1762 = fdiv float %1760, %1761
  %1763 = fmul float %1759, %1762
  %1764 = fcmp oge float %1756, %1763
  br i1 %1764, label %1765, label %1767

1765:                                             ; preds = %1755
  %1766 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1766, ptr %41, align 4, !tbaa !9
  br label %1812

1767:                                             ; preds = %1755
  %1768 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1768, ptr %11, align 4, !tbaa !9
  %1769 = load ptr, ptr %8, align 8, !tbaa !5
  %1770 = load i32, ptr %11, align 4, !tbaa !9
  %1771 = sext i32 %1770 to i64
  %1772 = getelementptr inbounds %struct.complex, ptr %1769, i64 %1771
  %1773 = getelementptr inbounds %struct.complex, ptr %1772, i32 0, i32 0
  %1774 = load float, ptr %1773, align 4, !tbaa !13
  store float %1774, ptr %17, align 4, !tbaa !11
  %1775 = load float, ptr %17, align 4, !tbaa !11
  %1776 = fcmp oge float %1775, 0.000000e+00
  br i1 %1776, label %1777, label %1779

1777:                                             ; preds = %1767
  %1778 = load float, ptr %17, align 4, !tbaa !11
  br label %1782

1779:                                             ; preds = %1767
  %1780 = load float, ptr %17, align 4, !tbaa !11
  %1781 = fneg float %1780
  br label %1782

1782:                                             ; preds = %1779, %1777
  %1783 = phi float [ %1778, %1777 ], [ %1781, %1779 ]
  %1784 = load ptr, ptr %8, align 8, !tbaa !5
  %1785 = load i32, ptr %48, align 4, !tbaa !9
  %1786 = sext i32 %1785 to i64
  %1787 = getelementptr inbounds %struct.complex, ptr %1784, i64 %1786
  %1788 = call <2 x float> @Cf(ptr noundef %1787)
  store <2 x float> %1788, ptr %79, align 4
  %1789 = getelementptr inbounds { float, float }, ptr %79, i32 0, i32 0
  %1790 = load float, ptr %1789, align 4
  %1791 = getelementptr inbounds { float, float }, ptr %79, i32 0, i32 1
  %1792 = load float, ptr %1791, align 4
  store float %1792, ptr %18, align 4, !tbaa !11
  %1793 = load float, ptr %18, align 4, !tbaa !11
  %1794 = fcmp oge float %1793, 0.000000e+00
  br i1 %1794, label %1795, label %1797

1795:                                             ; preds = %1782
  %1796 = load float, ptr %18, align 4, !tbaa !11
  br label %1800

1797:                                             ; preds = %1782
  %1798 = load float, ptr %18, align 4, !tbaa !11
  %1799 = fneg float %1798
  br label %1800

1800:                                             ; preds = %1797, %1795
  %1801 = phi float [ %1796, %1795 ], [ %1799, %1797 ]
  %1802 = fadd float %1783, %1801
  %1803 = load float, ptr %31, align 4, !tbaa !11
  %1804 = load float, ptr %46, align 4, !tbaa !11
  %1805 = fmul float %1803, %1804
  %1806 = fcmp oge float %1802, %1805
  br i1 %1806, label %1807, label %1809

1807:                                             ; preds = %1800
  %1808 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1808, ptr %41, align 4, !tbaa !9
  br label %1811

1809:                                             ; preds = %1800
  %1810 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1810, ptr %41, align 4, !tbaa !9
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %1811

1811:                                             ; preds = %1809, %1807
  br label %1812

1812:                                             ; preds = %1811, %1765
  br label %1813

1813:                                             ; preds = %1812, %1569
  %1814 = load i32, ptr %29, align 4, !tbaa !9
  %1815 = load i32, ptr %32, align 4, !tbaa !9
  %1816 = add nsw i32 %1814, %1815
  %1817 = sub nsw i32 %1816, 1
  store i32 %1817, ptr %40, align 4, !tbaa !9
  %1818 = load i32, ptr %32, align 4, !tbaa !9
  %1819 = icmp eq i32 %1818, 2
  br i1 %1819, label %1820, label %1828

1820:                                             ; preds = %1813
  %1821 = load i32, ptr %47, align 4, !tbaa !9
  %1822 = load ptr, ptr %7, align 8, !tbaa !5
  %1823 = load i32, ptr %1822, align 4, !tbaa !9
  %1824 = add nsw i32 %1821, %1823
  %1825 = load i32, ptr %29, align 4, !tbaa !9
  %1826 = sub nsw i32 %1824, %1825
  %1827 = add nsw i32 %1826, 1
  store i32 %1827, ptr %47, align 4, !tbaa !9
  br label %1828

1828:                                             ; preds = %1820, %1813
  %1829 = load i32, ptr %41, align 4, !tbaa !9
  %1830 = load i32, ptr %40, align 4, !tbaa !9
  %1831 = icmp ne i32 %1829, %1830
  br i1 %1831, label %1832, label %2066

1832:                                             ; preds = %1828
  %1833 = load i32, ptr %41, align 4, !tbaa !9
  %1834 = load ptr, ptr %7, align 8, !tbaa !5
  %1835 = load i32, ptr %1834, align 4, !tbaa !9
  %1836 = icmp slt i32 %1833, %1835
  br i1 %1836, label %1837, label %1856

1837:                                             ; preds = %1832
  %1838 = load ptr, ptr %7, align 8, !tbaa !5
  %1839 = load i32, ptr %1838, align 4, !tbaa !9
  %1840 = load i32, ptr %41, align 4, !tbaa !9
  %1841 = sub nsw i32 %1839, %1840
  store i32 %1841, ptr %11, align 4, !tbaa !9
  %1842 = load ptr, ptr %8, align 8, !tbaa !5
  %1843 = load i32, ptr %47, align 4, !tbaa !9
  %1844 = load i32, ptr %41, align 4, !tbaa !9
  %1845 = add nsw i32 %1843, %1844
  %1846 = load i32, ptr %40, align 4, !tbaa !9
  %1847 = sub nsw i32 %1845, %1846
  %1848 = add nsw i32 %1847, 1
  %1849 = sext i32 %1848 to i64
  %1850 = getelementptr inbounds %struct.complex, ptr %1842, i64 %1849
  %1851 = load ptr, ptr %8, align 8, !tbaa !5
  %1852 = load i32, ptr %48, align 4, !tbaa !9
  %1853 = add nsw i32 %1852, 1
  %1854 = sext i32 %1853 to i64
  %1855 = getelementptr inbounds %struct.complex, ptr %1851, i64 %1854
  call void @cswap_(ptr noundef %11, ptr noundef %1850, ptr noundef @c__1, ptr noundef %1855, ptr noundef @c__1)
  br label %1856

1856:                                             ; preds = %1837, %1832
  %1857 = load i32, ptr %47, align 4, !tbaa !9
  %1858 = load i32, ptr %41, align 4, !tbaa !9
  %1859 = add nsw i32 %1857, %1858
  %1860 = load i32, ptr %40, align 4, !tbaa !9
  %1861 = sub nsw i32 %1859, %1860
  store i32 %1861, ptr %44, align 4, !tbaa !9
  %1862 = load i32, ptr %41, align 4, !tbaa !9
  %1863 = sub nsw i32 %1862, 1
  store i32 %1863, ptr %11, align 4, !tbaa !9
  %1864 = load i32, ptr %40, align 4, !tbaa !9
  %1865 = add nsw i32 %1864, 1
  store i32 %1865, ptr %28, align 4, !tbaa !9
  br label %1866

1866:                                             ; preds = %1940, %1856
  %1867 = load i32, ptr %28, align 4, !tbaa !9
  %1868 = load i32, ptr %11, align 4, !tbaa !9
  %1869 = icmp sle i32 %1867, %1868
  br i1 %1869, label %1870, label %1943

1870:                                             ; preds = %1866
  %1871 = load i32, ptr %44, align 4, !tbaa !9
  %1872 = load ptr, ptr %7, align 8, !tbaa !5
  %1873 = load i32, ptr %1872, align 4, !tbaa !9
  %1874 = add nsw i32 %1871, %1873
  %1875 = load i32, ptr %28, align 4, !tbaa !9
  %1876 = sub nsw i32 %1874, %1875
  %1877 = add nsw i32 %1876, 1
  store i32 %1877, ptr %44, align 4, !tbaa !9
  %1878 = load i32, ptr %47, align 4, !tbaa !9
  %1879 = load i32, ptr %28, align 4, !tbaa !9
  %1880 = add nsw i32 %1878, %1879
  %1881 = load i32, ptr %40, align 4, !tbaa !9
  %1882 = sub nsw i32 %1880, %1881
  store i32 %1882, ptr %12, align 4, !tbaa !9
  %1883 = load ptr, ptr %8, align 8, !tbaa !5
  %1884 = load i32, ptr %12, align 4, !tbaa !9
  %1885 = sext i32 %1884 to i64
  %1886 = getelementptr inbounds %struct.complex, ptr %1883, i64 %1885
  %1887 = getelementptr inbounds %struct.complex, ptr %1886, i32 0, i32 0
  %1888 = load float, ptr %1887, align 4, !tbaa !13
  %1889 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  store float %1888, ptr %1889, align 4, !tbaa !13
  %1890 = load ptr, ptr %8, align 8, !tbaa !5
  %1891 = load i32, ptr %12, align 4, !tbaa !9
  %1892 = sext i32 %1891 to i64
  %1893 = getelementptr inbounds %struct.complex, ptr %1890, i64 %1892
  %1894 = getelementptr inbounds %struct.complex, ptr %1893, i32 0, i32 1
  %1895 = load float, ptr %1894, align 4, !tbaa !17
  %1896 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  store float %1895, ptr %1896, align 4, !tbaa !17
  %1897 = load i32, ptr %47, align 4, !tbaa !9
  %1898 = load i32, ptr %28, align 4, !tbaa !9
  %1899 = add nsw i32 %1897, %1898
  %1900 = load i32, ptr %40, align 4, !tbaa !9
  %1901 = sub nsw i32 %1899, %1900
  store i32 %1901, ptr %12, align 4, !tbaa !9
  %1902 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1902, ptr %13, align 4, !tbaa !9
  %1903 = load ptr, ptr %8, align 8, !tbaa !5
  %1904 = load i32, ptr %13, align 4, !tbaa !9
  %1905 = sext i32 %1904 to i64
  %1906 = getelementptr inbounds %struct.complex, ptr %1903, i64 %1905
  %1907 = getelementptr inbounds %struct.complex, ptr %1906, i32 0, i32 0
  %1908 = load float, ptr %1907, align 4, !tbaa !13
  %1909 = load ptr, ptr %8, align 8, !tbaa !5
  %1910 = load i32, ptr %12, align 4, !tbaa !9
  %1911 = sext i32 %1910 to i64
  %1912 = getelementptr inbounds %struct.complex, ptr %1909, i64 %1911
  %1913 = getelementptr inbounds %struct.complex, ptr %1912, i32 0, i32 0
  store float %1908, ptr %1913, align 4, !tbaa !13
  %1914 = load ptr, ptr %8, align 8, !tbaa !5
  %1915 = load i32, ptr %13, align 4, !tbaa !9
  %1916 = sext i32 %1915 to i64
  %1917 = getelementptr inbounds %struct.complex, ptr %1914, i64 %1916
  %1918 = getelementptr inbounds %struct.complex, ptr %1917, i32 0, i32 1
  %1919 = load float, ptr %1918, align 4, !tbaa !17
  %1920 = load ptr, ptr %8, align 8, !tbaa !5
  %1921 = load i32, ptr %12, align 4, !tbaa !9
  %1922 = sext i32 %1921 to i64
  %1923 = getelementptr inbounds %struct.complex, ptr %1920, i64 %1922
  %1924 = getelementptr inbounds %struct.complex, ptr %1923, i32 0, i32 1
  store float %1919, ptr %1924, align 4, !tbaa !17
  %1925 = load i32, ptr %44, align 4, !tbaa !9
  store i32 %1925, ptr %12, align 4, !tbaa !9
  %1926 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  %1927 = load float, ptr %1926, align 4, !tbaa !13
  %1928 = load ptr, ptr %8, align 8, !tbaa !5
  %1929 = load i32, ptr %12, align 4, !tbaa !9
  %1930 = sext i32 %1929 to i64
  %1931 = getelementptr inbounds %struct.complex, ptr %1928, i64 %1930
  %1932 = getelementptr inbounds %struct.complex, ptr %1931, i32 0, i32 0
  store float %1927, ptr %1932, align 4, !tbaa !13
  %1933 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  %1934 = load float, ptr %1933, align 4, !tbaa !17
  %1935 = load ptr, ptr %8, align 8, !tbaa !5
  %1936 = load i32, ptr %12, align 4, !tbaa !9
  %1937 = sext i32 %1936 to i64
  %1938 = getelementptr inbounds %struct.complex, ptr %1935, i64 %1937
  %1939 = getelementptr inbounds %struct.complex, ptr %1938, i32 0, i32 1
  store float %1934, ptr %1939, align 4, !tbaa !17
  br label %1940

1940:                                             ; preds = %1870
  %1941 = load i32, ptr %28, align 4, !tbaa !9
  %1942 = add nsw i32 %1941, 1
  store i32 %1942, ptr %28, align 4, !tbaa !9
  br label %1866, !llvm.loop !22

1943:                                             ; preds = %1866
  %1944 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %1944, ptr %11, align 4, !tbaa !9
  %1945 = load ptr, ptr %8, align 8, !tbaa !5
  %1946 = load i32, ptr %11, align 4, !tbaa !9
  %1947 = sext i32 %1946 to i64
  %1948 = getelementptr inbounds %struct.complex, ptr %1945, i64 %1947
  %1949 = getelementptr inbounds %struct.complex, ptr %1948, i32 0, i32 0
  %1950 = load float, ptr %1949, align 4, !tbaa !13
  %1951 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  store float %1950, ptr %1951, align 4, !tbaa !13
  %1952 = load ptr, ptr %8, align 8, !tbaa !5
  %1953 = load i32, ptr %11, align 4, !tbaa !9
  %1954 = sext i32 %1953 to i64
  %1955 = getelementptr inbounds %struct.complex, ptr %1952, i64 %1954
  %1956 = getelementptr inbounds %struct.complex, ptr %1955, i32 0, i32 1
  %1957 = load float, ptr %1956, align 4, !tbaa !17
  %1958 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  store float %1957, ptr %1958, align 4, !tbaa !17
  %1959 = load i32, ptr %47, align 4, !tbaa !9
  store i32 %1959, ptr %11, align 4, !tbaa !9
  %1960 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1960, ptr %12, align 4, !tbaa !9
  %1961 = load ptr, ptr %8, align 8, !tbaa !5
  %1962 = load i32, ptr %12, align 4, !tbaa !9
  %1963 = sext i32 %1962 to i64
  %1964 = getelementptr inbounds %struct.complex, ptr %1961, i64 %1963
  %1965 = getelementptr inbounds %struct.complex, ptr %1964, i32 0, i32 0
  %1966 = load float, ptr %1965, align 4, !tbaa !13
  %1967 = load ptr, ptr %8, align 8, !tbaa !5
  %1968 = load i32, ptr %11, align 4, !tbaa !9
  %1969 = sext i32 %1968 to i64
  %1970 = getelementptr inbounds %struct.complex, ptr %1967, i64 %1969
  %1971 = getelementptr inbounds %struct.complex, ptr %1970, i32 0, i32 0
  store float %1966, ptr %1971, align 4, !tbaa !13
  %1972 = load ptr, ptr %8, align 8, !tbaa !5
  %1973 = load i32, ptr %12, align 4, !tbaa !9
  %1974 = sext i32 %1973 to i64
  %1975 = getelementptr inbounds %struct.complex, ptr %1972, i64 %1974
  %1976 = getelementptr inbounds %struct.complex, ptr %1975, i32 0, i32 1
  %1977 = load float, ptr %1976, align 4, !tbaa !17
  %1978 = load ptr, ptr %8, align 8, !tbaa !5
  %1979 = load i32, ptr %11, align 4, !tbaa !9
  %1980 = sext i32 %1979 to i64
  %1981 = getelementptr inbounds %struct.complex, ptr %1978, i64 %1980
  %1982 = getelementptr inbounds %struct.complex, ptr %1981, i32 0, i32 1
  store float %1977, ptr %1982, align 4, !tbaa !17
  %1983 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1983, ptr %11, align 4, !tbaa !9
  %1984 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  %1985 = load float, ptr %1984, align 4, !tbaa !13
  %1986 = load ptr, ptr %8, align 8, !tbaa !5
  %1987 = load i32, ptr %11, align 4, !tbaa !9
  %1988 = sext i32 %1987 to i64
  %1989 = getelementptr inbounds %struct.complex, ptr %1986, i64 %1988
  %1990 = getelementptr inbounds %struct.complex, ptr %1989, i32 0, i32 0
  store float %1985, ptr %1990, align 4, !tbaa !13
  %1991 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  %1992 = load float, ptr %1991, align 4, !tbaa !17
  %1993 = load ptr, ptr %8, align 8, !tbaa !5
  %1994 = load i32, ptr %11, align 4, !tbaa !9
  %1995 = sext i32 %1994 to i64
  %1996 = getelementptr inbounds %struct.complex, ptr %1993, i64 %1995
  %1997 = getelementptr inbounds %struct.complex, ptr %1996, i32 0, i32 1
  store float %1992, ptr %1997, align 4, !tbaa !17
  %1998 = load i32, ptr %32, align 4, !tbaa !9
  %1999 = icmp eq i32 %1998, 2
  br i1 %1999, label %2000, label %2065

2000:                                             ; preds = %1943
  %2001 = load i32, ptr %39, align 4, !tbaa !9
  %2002 = add nsw i32 %2001, 1
  store i32 %2002, ptr %11, align 4, !tbaa !9
  %2003 = load ptr, ptr %8, align 8, !tbaa !5
  %2004 = load i32, ptr %11, align 4, !tbaa !9
  %2005 = sext i32 %2004 to i64
  %2006 = getelementptr inbounds %struct.complex, ptr %2003, i64 %2005
  %2007 = getelementptr inbounds %struct.complex, ptr %2006, i32 0, i32 0
  %2008 = load float, ptr %2007, align 4, !tbaa !13
  %2009 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  store float %2008, ptr %2009, align 4, !tbaa !13
  %2010 = load ptr, ptr %8, align 8, !tbaa !5
  %2011 = load i32, ptr %11, align 4, !tbaa !9
  %2012 = sext i32 %2011 to i64
  %2013 = getelementptr inbounds %struct.complex, ptr %2010, i64 %2012
  %2014 = getelementptr inbounds %struct.complex, ptr %2013, i32 0, i32 1
  %2015 = load float, ptr %2014, align 4, !tbaa !17
  %2016 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  store float %2015, ptr %2016, align 4, !tbaa !17
  %2017 = load i32, ptr %39, align 4, !tbaa !9
  %2018 = add nsw i32 %2017, 1
  store i32 %2018, ptr %11, align 4, !tbaa !9
  %2019 = load i32, ptr %39, align 4, !tbaa !9
  %2020 = load i32, ptr %41, align 4, !tbaa !9
  %2021 = add nsw i32 %2019, %2020
  %2022 = load i32, ptr %29, align 4, !tbaa !9
  %2023 = sub nsw i32 %2021, %2022
  store i32 %2023, ptr %12, align 4, !tbaa !9
  %2024 = load ptr, ptr %8, align 8, !tbaa !5
  %2025 = load i32, ptr %12, align 4, !tbaa !9
  %2026 = sext i32 %2025 to i64
  %2027 = getelementptr inbounds %struct.complex, ptr %2024, i64 %2026
  %2028 = getelementptr inbounds %struct.complex, ptr %2027, i32 0, i32 0
  %2029 = load float, ptr %2028, align 4, !tbaa !13
  %2030 = load ptr, ptr %8, align 8, !tbaa !5
  %2031 = load i32, ptr %11, align 4, !tbaa !9
  %2032 = sext i32 %2031 to i64
  %2033 = getelementptr inbounds %struct.complex, ptr %2030, i64 %2032
  %2034 = getelementptr inbounds %struct.complex, ptr %2033, i32 0, i32 0
  store float %2029, ptr %2034, align 4, !tbaa !13
  %2035 = load ptr, ptr %8, align 8, !tbaa !5
  %2036 = load i32, ptr %12, align 4, !tbaa !9
  %2037 = sext i32 %2036 to i64
  %2038 = getelementptr inbounds %struct.complex, ptr %2035, i64 %2037
  %2039 = getelementptr inbounds %struct.complex, ptr %2038, i32 0, i32 1
  %2040 = load float, ptr %2039, align 4, !tbaa !17
  %2041 = load ptr, ptr %8, align 8, !tbaa !5
  %2042 = load i32, ptr %11, align 4, !tbaa !9
  %2043 = sext i32 %2042 to i64
  %2044 = getelementptr inbounds %struct.complex, ptr %2041, i64 %2043
  %2045 = getelementptr inbounds %struct.complex, ptr %2044, i32 0, i32 1
  store float %2040, ptr %2045, align 4, !tbaa !17
  %2046 = load i32, ptr %39, align 4, !tbaa !9
  %2047 = load i32, ptr %41, align 4, !tbaa !9
  %2048 = add nsw i32 %2046, %2047
  %2049 = load i32, ptr %29, align 4, !tbaa !9
  %2050 = sub nsw i32 %2048, %2049
  store i32 %2050, ptr %11, align 4, !tbaa !9
  %2051 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  %2052 = load float, ptr %2051, align 4, !tbaa !13
  %2053 = load ptr, ptr %8, align 8, !tbaa !5
  %2054 = load i32, ptr %11, align 4, !tbaa !9
  %2055 = sext i32 %2054 to i64
  %2056 = getelementptr inbounds %struct.complex, ptr %2053, i64 %2055
  %2057 = getelementptr inbounds %struct.complex, ptr %2056, i32 0, i32 0
  store float %2052, ptr %2057, align 4, !tbaa !13
  %2058 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  %2059 = load float, ptr %2058, align 4, !tbaa !17
  %2060 = load ptr, ptr %8, align 8, !tbaa !5
  %2061 = load i32, ptr %11, align 4, !tbaa !9
  %2062 = sext i32 %2061 to i64
  %2063 = getelementptr inbounds %struct.complex, ptr %2060, i64 %2062
  %2064 = getelementptr inbounds %struct.complex, ptr %2063, i32 0, i32 1
  store float %2059, ptr %2064, align 4, !tbaa !17
  br label %2065

2065:                                             ; preds = %2000, %1943
  br label %2066

2066:                                             ; preds = %2065, %1828
  %2067 = load i32, ptr %32, align 4, !tbaa !9
  %2068 = icmp eq i32 %2067, 1
  br i1 %2068, label %2069, label %2141

2069:                                             ; preds = %2066
  %2070 = load i32, ptr %29, align 4, !tbaa !9
  %2071 = load ptr, ptr %7, align 8, !tbaa !5
  %2072 = load i32, ptr %2071, align 4, !tbaa !9
  %2073 = icmp slt i32 %2070, %2072
  br i1 %2073, label %2074, label %2140

2074:                                             ; preds = %2069
  %2075 = call <2 x float> @Cf(ptr noundef @c_b1)
  store <2 x float> %2075, ptr %80, align 4
  %2076 = getelementptr inbounds { float, float }, ptr %80, i32 0, i32 0
  %2077 = load float, ptr %2076, align 4
  %2078 = getelementptr inbounds { float, float }, ptr %80, i32 0, i32 1
  %2079 = load float, ptr %2078, align 4
  %2080 = load ptr, ptr %8, align 8, !tbaa !5
  %2081 = load i32, ptr %39, align 4, !tbaa !9
  %2082 = sext i32 %2081 to i64
  %2083 = getelementptr inbounds %struct.complex, ptr %2080, i64 %2082
  %2084 = call <2 x float> @Cf(ptr noundef %2083)
  store <2 x float> %2084, ptr %81, align 4
  %2085 = getelementptr inbounds { float, float }, ptr %81, i32 0, i32 0
  %2086 = load float, ptr %2085, align 4
  %2087 = getelementptr inbounds { float, float }, ptr %81, i32 0, i32 1
  %2088 = load float, ptr %2087, align 4
  %2089 = call <2 x float> @__divsc3(float noundef %2077, float noundef %2079, float noundef %2086, float noundef %2088) #7
  store <2 x float> %2089, ptr %82, align 4
  %2090 = getelementptr inbounds { float, float }, ptr %82, i32 0, i32 0
  %2091 = load float, ptr %2090, align 4
  %2092 = getelementptr inbounds { float, float }, ptr %82, i32 0, i32 1
  %2093 = load float, ptr %2092, align 4
  %2094 = call ptr @_pCf(ptr noundef %21)
  %2095 = getelementptr inbounds { float, float }, ptr %2094, i32 0, i32 0
  %2096 = getelementptr inbounds { float, float }, ptr %2094, i32 0, i32 1
  store float %2091, ptr %2095, align 4
  store float %2093, ptr %2096, align 4
  %2097 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %2098 = load float, ptr %2097, align 4, !tbaa !13
  %2099 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  store float %2098, ptr %2099, align 4, !tbaa !13
  %2100 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %2101 = load float, ptr %2100, align 4, !tbaa !17
  %2102 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  store float %2101, ptr %2102, align 4, !tbaa !17
  %2103 = load ptr, ptr %7, align 8, !tbaa !5
  %2104 = load i32, ptr %2103, align 4, !tbaa !9
  %2105 = load i32, ptr %29, align 4, !tbaa !9
  %2106 = sub nsw i32 %2104, %2105
  store i32 %2106, ptr %11, align 4, !tbaa !9
  %2107 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 0
  %2108 = load float, ptr %2107, align 4, !tbaa !13
  %2109 = fneg float %2108
  %2110 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float %2109, ptr %2110, align 4, !tbaa !13
  %2111 = getelementptr inbounds %struct.complex, ptr %34, i32 0, i32 1
  %2112 = load float, ptr %2111, align 4, !tbaa !17
  %2113 = fneg float %2112
  %2114 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float %2113, ptr %2114, align 4, !tbaa !17
  %2115 = load ptr, ptr %6, align 8, !tbaa !5
  %2116 = load ptr, ptr %8, align 8, !tbaa !5
  %2117 = load i32, ptr %39, align 4, !tbaa !9
  %2118 = add nsw i32 %2117, 1
  %2119 = sext i32 %2118 to i64
  %2120 = getelementptr inbounds %struct.complex, ptr %2116, i64 %2119
  %2121 = load ptr, ptr %8, align 8, !tbaa !5
  %2122 = load i32, ptr %39, align 4, !tbaa !9
  %2123 = load ptr, ptr %7, align 8, !tbaa !5
  %2124 = load i32, ptr %2123, align 4, !tbaa !9
  %2125 = add nsw i32 %2122, %2124
  %2126 = load i32, ptr %29, align 4, !tbaa !9
  %2127 = sub nsw i32 %2125, %2126
  %2128 = add nsw i32 %2127, 1
  %2129 = sext i32 %2128 to i64
  %2130 = getelementptr inbounds %struct.complex, ptr %2121, i64 %2129
  call void @cspr_(ptr noundef %2115, ptr noundef %11, ptr noundef %21, ptr noundef %2120, ptr noundef @c__1, ptr noundef %2130)
  %2131 = load ptr, ptr %7, align 8, !tbaa !5
  %2132 = load i32, ptr %2131, align 4, !tbaa !9
  %2133 = load i32, ptr %29, align 4, !tbaa !9
  %2134 = sub nsw i32 %2132, %2133
  store i32 %2134, ptr %11, align 4, !tbaa !9
  %2135 = load ptr, ptr %8, align 8, !tbaa !5
  %2136 = load i32, ptr %39, align 4, !tbaa !9
  %2137 = add nsw i32 %2136, 1
  %2138 = sext i32 %2137 to i64
  %2139 = getelementptr inbounds %struct.complex, ptr %2135, i64 %2138
  call void @cscal_(ptr noundef %11, ptr noundef %34, ptr noundef %2139, ptr noundef @c__1)
  br label %2140

2140:                                             ; preds = %2074, %2069
  br label %2794

2141:                                             ; preds = %2066
  %2142 = load i32, ptr %29, align 4, !tbaa !9
  %2143 = load ptr, ptr %7, align 8, !tbaa !5
  %2144 = load i32, ptr %2143, align 4, !tbaa !9
  %2145 = sub nsw i32 %2144, 1
  %2146 = icmp slt i32 %2142, %2145
  br i1 %2146, label %2147, label %2793

2147:                                             ; preds = %2141
  %2148 = load i32, ptr %29, align 4, !tbaa !9
  %2149 = add nsw i32 %2148, 1
  %2150 = load i32, ptr %29, align 4, !tbaa !9
  %2151 = sub nsw i32 %2150, 1
  %2152 = load ptr, ptr %7, align 8, !tbaa !5
  %2153 = load i32, ptr %2152, align 4, !tbaa !9
  %2154 = shl i32 %2153, 1
  %2155 = load i32, ptr %29, align 4, !tbaa !9
  %2156 = sub nsw i32 %2154, %2155
  %2157 = mul nsw i32 %2151, %2156
  %2158 = sdiv i32 %2157, 2
  %2159 = add nsw i32 %2149, %2158
  store i32 %2159, ptr %11, align 4, !tbaa !9
  %2160 = load ptr, ptr %8, align 8, !tbaa !5
  %2161 = load i32, ptr %11, align 4, !tbaa !9
  %2162 = sext i32 %2161 to i64
  %2163 = getelementptr inbounds %struct.complex, ptr %2160, i64 %2162
  %2164 = getelementptr inbounds %struct.complex, ptr %2163, i32 0, i32 0
  %2165 = load float, ptr %2164, align 4, !tbaa !13
  %2166 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %2165, ptr %2166, align 4, !tbaa !13
  %2167 = load ptr, ptr %8, align 8, !tbaa !5
  %2168 = load i32, ptr %11, align 4, !tbaa !9
  %2169 = sext i32 %2168 to i64
  %2170 = getelementptr inbounds %struct.complex, ptr %2167, i64 %2169
  %2171 = getelementptr inbounds %struct.complex, ptr %2170, i32 0, i32 1
  %2172 = load float, ptr %2171, align 4, !tbaa !17
  %2173 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %2172, ptr %2173, align 4, !tbaa !17
  %2174 = load ptr, ptr %8, align 8, !tbaa !5
  %2175 = load i32, ptr %29, align 4, !tbaa !9
  %2176 = add nsw i32 %2175, 1
  %2177 = load i32, ptr %29, align 4, !tbaa !9
  %2178 = load ptr, ptr %7, align 8, !tbaa !5
  %2179 = load i32, ptr %2178, align 4, !tbaa !9
  %2180 = shl i32 %2179, 1
  %2181 = load i32, ptr %29, align 4, !tbaa !9
  %2182 = sub nsw i32 %2180, %2181
  %2183 = sub nsw i32 %2182, 1
  %2184 = mul nsw i32 %2177, %2183
  %2185 = sdiv i32 %2184, 2
  %2186 = add nsw i32 %2176, %2185
  %2187 = sext i32 %2186 to i64
  %2188 = getelementptr inbounds %struct.complex, ptr %2174, i64 %2187
  %2189 = call <2 x float> @Cf(ptr noundef %2188)
  store <2 x float> %2189, ptr %83, align 4
  %2190 = getelementptr inbounds { float, float }, ptr %83, i32 0, i32 0
  %2191 = load float, ptr %2190, align 4
  %2192 = getelementptr inbounds { float, float }, ptr %83, i32 0, i32 1
  %2193 = load float, ptr %2192, align 4
  %2194 = call <2 x float> @Cf(ptr noundef %37)
  store <2 x float> %2194, ptr %84, align 4
  %2195 = getelementptr inbounds { float, float }, ptr %84, i32 0, i32 0
  %2196 = load float, ptr %2195, align 4
  %2197 = getelementptr inbounds { float, float }, ptr %84, i32 0, i32 1
  %2198 = load float, ptr %2197, align 4
  %2199 = call <2 x float> @__divsc3(float noundef %2191, float noundef %2193, float noundef %2196, float noundef %2198) #7
  store <2 x float> %2199, ptr %85, align 4
  %2200 = getelementptr inbounds { float, float }, ptr %85, i32 0, i32 0
  %2201 = load float, ptr %2200, align 4
  %2202 = getelementptr inbounds { float, float }, ptr %85, i32 0, i32 1
  %2203 = load float, ptr %2202, align 4
  %2204 = call ptr @_pCf(ptr noundef %21)
  %2205 = getelementptr inbounds { float, float }, ptr %2204, i32 0, i32 0
  %2206 = getelementptr inbounds { float, float }, ptr %2204, i32 0, i32 1
  store float %2201, ptr %2205, align 4
  store float %2203, ptr %2206, align 4
  %2207 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %2208 = load float, ptr %2207, align 4, !tbaa !13
  %2209 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  store float %2208, ptr %2209, align 4, !tbaa !13
  %2210 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %2211 = load float, ptr %2210, align 4, !tbaa !17
  %2212 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  store float %2211, ptr %2212, align 4, !tbaa !17
  %2213 = load ptr, ptr %8, align 8, !tbaa !5
  %2214 = load i32, ptr %29, align 4, !tbaa !9
  %2215 = load i32, ptr %29, align 4, !tbaa !9
  %2216 = sub nsw i32 %2215, 1
  %2217 = load ptr, ptr %7, align 8, !tbaa !5
  %2218 = load i32, ptr %2217, align 4, !tbaa !9
  %2219 = shl i32 %2218, 1
  %2220 = load i32, ptr %29, align 4, !tbaa !9
  %2221 = sub nsw i32 %2219, %2220
  %2222 = mul nsw i32 %2216, %2221
  %2223 = sdiv i32 %2222, 2
  %2224 = add nsw i32 %2214, %2223
  %2225 = sext i32 %2224 to i64
  %2226 = getelementptr inbounds %struct.complex, ptr %2213, i64 %2225
  %2227 = call <2 x float> @Cf(ptr noundef %2226)
  store <2 x float> %2227, ptr %86, align 4
  %2228 = getelementptr inbounds { float, float }, ptr %86, i32 0, i32 0
  %2229 = load float, ptr %2228, align 4
  %2230 = getelementptr inbounds { float, float }, ptr %86, i32 0, i32 1
  %2231 = load float, ptr %2230, align 4
  %2232 = call <2 x float> @Cf(ptr noundef %37)
  store <2 x float> %2232, ptr %87, align 4
  %2233 = getelementptr inbounds { float, float }, ptr %87, i32 0, i32 0
  %2234 = load float, ptr %2233, align 4
  %2235 = getelementptr inbounds { float, float }, ptr %87, i32 0, i32 1
  %2236 = load float, ptr %2235, align 4
  %2237 = call <2 x float> @__divsc3(float noundef %2229, float noundef %2231, float noundef %2234, float noundef %2236) #7
  store <2 x float> %2237, ptr %88, align 4
  %2238 = getelementptr inbounds { float, float }, ptr %88, i32 0, i32 0
  %2239 = load float, ptr %2238, align 4
  %2240 = getelementptr inbounds { float, float }, ptr %88, i32 0, i32 1
  %2241 = load float, ptr %2240, align 4
  %2242 = call ptr @_pCf(ptr noundef %21)
  %2243 = getelementptr inbounds { float, float }, ptr %2242, i32 0, i32 0
  %2244 = getelementptr inbounds { float, float }, ptr %2242, i32 0, i32 1
  store float %2239, ptr %2243, align 4
  store float %2241, ptr %2244, align 4
  %2245 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %2246 = load float, ptr %2245, align 4, !tbaa !13
  %2247 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  store float %2246, ptr %2247, align 4, !tbaa !13
  %2248 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %2249 = load float, ptr %2248, align 4, !tbaa !17
  %2250 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  store float %2249, ptr %2250, align 4, !tbaa !17
  %2251 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2252 = load float, ptr %2251, align 4, !tbaa !13
  %2253 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %2254 = load float, ptr %2253, align 4, !tbaa !13
  %2255 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2256 = load float, ptr %2255, align 4, !tbaa !17
  %2257 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %2258 = load float, ptr %2257, align 4, !tbaa !17
  %2259 = fmul float %2256, %2258
  %2260 = fneg float %2259
  %2261 = call float @llvm.fmuladd.f32(float %2252, float %2254, float %2260)
  %2262 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  store float %2261, ptr %2262, align 4, !tbaa !13
  %2263 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2264 = load float, ptr %2263, align 4, !tbaa !13
  %2265 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %2266 = load float, ptr %2265, align 4, !tbaa !17
  %2267 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2268 = load float, ptr %2267, align 4, !tbaa !17
  %2269 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %2270 = load float, ptr %2269, align 4, !tbaa !13
  %2271 = fmul float %2268, %2270
  %2272 = call float @llvm.fmuladd.f32(float %2264, float %2266, float %2271)
  %2273 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  store float %2272, ptr %2273, align 4, !tbaa !17
  %2274 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  %2275 = load float, ptr %2274, align 4, !tbaa !13
  %2276 = fsub float %2275, 1.000000e+00
  %2277 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  store float %2276, ptr %2277, align 4, !tbaa !13
  %2278 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  %2279 = load float, ptr %2278, align 4, !tbaa !17
  %2280 = fadd float %2279, 0.000000e+00
  %2281 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  store float %2280, ptr %2281, align 4, !tbaa !17
  %2282 = call <2 x float> @Cf(ptr noundef @c_b1)
  store <2 x float> %2282, ptr %89, align 4
  %2283 = getelementptr inbounds { float, float }, ptr %89, i32 0, i32 0
  %2284 = load float, ptr %2283, align 4
  %2285 = getelementptr inbounds { float, float }, ptr %89, i32 0, i32 1
  %2286 = load float, ptr %2285, align 4
  %2287 = call <2 x float> @Cf(ptr noundef %22)
  store <2 x float> %2287, ptr %90, align 4
  %2288 = getelementptr inbounds { float, float }, ptr %90, i32 0, i32 0
  %2289 = load float, ptr %2288, align 4
  %2290 = getelementptr inbounds { float, float }, ptr %90, i32 0, i32 1
  %2291 = load float, ptr %2290, align 4
  %2292 = call <2 x float> @__divsc3(float noundef %2284, float noundef %2286, float noundef %2289, float noundef %2291) #7
  store <2 x float> %2292, ptr %91, align 4
  %2293 = getelementptr inbounds { float, float }, ptr %91, i32 0, i32 0
  %2294 = load float, ptr %2293, align 4
  %2295 = getelementptr inbounds { float, float }, ptr %91, i32 0, i32 1
  %2296 = load float, ptr %2295, align 4
  %2297 = call ptr @_pCf(ptr noundef %21)
  %2298 = getelementptr inbounds { float, float }, ptr %2297, i32 0, i32 0
  %2299 = getelementptr inbounds { float, float }, ptr %2297, i32 0, i32 1
  store float %2294, ptr %2298, align 4
  store float %2296, ptr %2299, align 4
  %2300 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %2301 = load float, ptr %2300, align 4, !tbaa !13
  %2302 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 0
  store float %2301, ptr %2302, align 4, !tbaa !13
  %2303 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %2304 = load float, ptr %2303, align 4, !tbaa !17
  %2305 = getelementptr inbounds %struct.complex, ptr %30, i32 0, i32 1
  store float %2304, ptr %2305, align 4, !tbaa !17
  %2306 = call <2 x float> @Cf(ptr noundef %30)
  store <2 x float> %2306, ptr %92, align 4
  %2307 = getelementptr inbounds { float, float }, ptr %92, i32 0, i32 0
  %2308 = load float, ptr %2307, align 4
  %2309 = getelementptr inbounds { float, float }, ptr %92, i32 0, i32 1
  %2310 = load float, ptr %2309, align 4
  %2311 = call <2 x float> @Cf(ptr noundef %37)
  store <2 x float> %2311, ptr %93, align 4
  %2312 = getelementptr inbounds { float, float }, ptr %93, i32 0, i32 0
  %2313 = load float, ptr %2312, align 4
  %2314 = getelementptr inbounds { float, float }, ptr %93, i32 0, i32 1
  %2315 = load float, ptr %2314, align 4
  %2316 = call <2 x float> @__divsc3(float noundef %2308, float noundef %2310, float noundef %2313, float noundef %2315) #7
  store <2 x float> %2316, ptr %94, align 4
  %2317 = getelementptr inbounds { float, float }, ptr %94, i32 0, i32 0
  %2318 = load float, ptr %2317, align 4
  %2319 = getelementptr inbounds { float, float }, ptr %94, i32 0, i32 1
  %2320 = load float, ptr %2319, align 4
  %2321 = call ptr @_pCf(ptr noundef %21)
  %2322 = getelementptr inbounds { float, float }, ptr %2321, i32 0, i32 0
  %2323 = getelementptr inbounds { float, float }, ptr %2321, i32 0, i32 1
  store float %2318, ptr %2322, align 4
  store float %2320, ptr %2323, align 4
  %2324 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %2325 = load float, ptr %2324, align 4, !tbaa !13
  %2326 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %2325, ptr %2326, align 4, !tbaa !13
  %2327 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %2328 = load float, ptr %2327, align 4, !tbaa !17
  %2329 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %2328, ptr %2329, align 4, !tbaa !17
  %2330 = load ptr, ptr %7, align 8, !tbaa !5
  %2331 = load i32, ptr %2330, align 4, !tbaa !9
  store i32 %2331, ptr %11, align 4, !tbaa !9
  %2332 = load i32, ptr %29, align 4, !tbaa !9
  %2333 = add nsw i32 %2332, 2
  store i32 %2333, ptr %28, align 4, !tbaa !9
  br label %2334

2334:                                             ; preds = %2789, %2147
  %2335 = load i32, ptr %28, align 4, !tbaa !9
  %2336 = load i32, ptr %11, align 4, !tbaa !9
  %2337 = icmp sle i32 %2335, %2336
  br i1 %2337, label %2338, label %2792

2338:                                             ; preds = %2334
  %2339 = load i32, ptr %28, align 4, !tbaa !9
  %2340 = load i32, ptr %29, align 4, !tbaa !9
  %2341 = sub nsw i32 %2340, 1
  %2342 = load ptr, ptr %7, align 8, !tbaa !5
  %2343 = load i32, ptr %2342, align 4, !tbaa !9
  %2344 = shl i32 %2343, 1
  %2345 = load i32, ptr %29, align 4, !tbaa !9
  %2346 = sub nsw i32 %2344, %2345
  %2347 = mul nsw i32 %2341, %2346
  %2348 = sdiv i32 %2347, 2
  %2349 = add nsw i32 %2339, %2348
  store i32 %2349, ptr %12, align 4, !tbaa !9
  %2350 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2351 = load float, ptr %2350, align 4, !tbaa !13
  %2352 = load ptr, ptr %8, align 8, !tbaa !5
  %2353 = load i32, ptr %12, align 4, !tbaa !9
  %2354 = sext i32 %2353 to i64
  %2355 = getelementptr inbounds %struct.complex, ptr %2352, i64 %2354
  %2356 = getelementptr inbounds %struct.complex, ptr %2355, i32 0, i32 0
  %2357 = load float, ptr %2356, align 4, !tbaa !13
  %2358 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2359 = load float, ptr %2358, align 4, !tbaa !17
  %2360 = load ptr, ptr %8, align 8, !tbaa !5
  %2361 = load i32, ptr %12, align 4, !tbaa !9
  %2362 = sext i32 %2361 to i64
  %2363 = getelementptr inbounds %struct.complex, ptr %2360, i64 %2362
  %2364 = getelementptr inbounds %struct.complex, ptr %2363, i32 0, i32 1
  %2365 = load float, ptr %2364, align 4, !tbaa !17
  %2366 = fmul float %2359, %2365
  %2367 = fneg float %2366
  %2368 = call float @llvm.fmuladd.f32(float %2351, float %2357, float %2367)
  %2369 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  store float %2368, ptr %2369, align 4, !tbaa !13
  %2370 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 0
  %2371 = load float, ptr %2370, align 4, !tbaa !13
  %2372 = load ptr, ptr %8, align 8, !tbaa !5
  %2373 = load i32, ptr %12, align 4, !tbaa !9
  %2374 = sext i32 %2373 to i64
  %2375 = getelementptr inbounds %struct.complex, ptr %2372, i64 %2374
  %2376 = getelementptr inbounds %struct.complex, ptr %2375, i32 0, i32 1
  %2377 = load float, ptr %2376, align 4, !tbaa !17
  %2378 = getelementptr inbounds %struct.complex, ptr %35, i32 0, i32 1
  %2379 = load float, ptr %2378, align 4, !tbaa !17
  %2380 = load ptr, ptr %8, align 8, !tbaa !5
  %2381 = load i32, ptr %12, align 4, !tbaa !9
  %2382 = sext i32 %2381 to i64
  %2383 = getelementptr inbounds %struct.complex, ptr %2380, i64 %2382
  %2384 = getelementptr inbounds %struct.complex, ptr %2383, i32 0, i32 0
  %2385 = load float, ptr %2384, align 4, !tbaa !13
  %2386 = fmul float %2379, %2385
  %2387 = call float @llvm.fmuladd.f32(float %2371, float %2377, float %2386)
  %2388 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  store float %2387, ptr %2388, align 4, !tbaa !17
  %2389 = load i32, ptr %28, align 4, !tbaa !9
  %2390 = load i32, ptr %29, align 4, !tbaa !9
  %2391 = load ptr, ptr %7, align 8, !tbaa !5
  %2392 = load i32, ptr %2391, align 4, !tbaa !9
  %2393 = shl i32 %2392, 1
  %2394 = load i32, ptr %29, align 4, !tbaa !9
  %2395 = sub nsw i32 %2393, %2394
  %2396 = sub nsw i32 %2395, 1
  %2397 = mul nsw i32 %2390, %2396
  %2398 = sdiv i32 %2397, 2
  %2399 = add nsw i32 %2389, %2398
  store i32 %2399, ptr %13, align 4, !tbaa !9
  %2400 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  %2401 = load float, ptr %2400, align 4, !tbaa !13
  %2402 = load ptr, ptr %8, align 8, !tbaa !5
  %2403 = load i32, ptr %13, align 4, !tbaa !9
  %2404 = sext i32 %2403 to i64
  %2405 = getelementptr inbounds %struct.complex, ptr %2402, i64 %2404
  %2406 = getelementptr inbounds %struct.complex, ptr %2405, i32 0, i32 0
  %2407 = load float, ptr %2406, align 4, !tbaa !13
  %2408 = fsub float %2401, %2407
  %2409 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  store float %2408, ptr %2409, align 4, !tbaa !13
  %2410 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  %2411 = load float, ptr %2410, align 4, !tbaa !17
  %2412 = load ptr, ptr %8, align 8, !tbaa !5
  %2413 = load i32, ptr %13, align 4, !tbaa !9
  %2414 = sext i32 %2413 to i64
  %2415 = getelementptr inbounds %struct.complex, ptr %2412, i64 %2414
  %2416 = getelementptr inbounds %struct.complex, ptr %2415, i32 0, i32 1
  %2417 = load float, ptr %2416, align 4, !tbaa !17
  %2418 = fsub float %2411, %2417
  %2419 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  store float %2418, ptr %2419, align 4, !tbaa !17
  %2420 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %2421 = load float, ptr %2420, align 4, !tbaa !13
  %2422 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %2423 = load float, ptr %2422, align 4, !tbaa !13
  %2424 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %2425 = load float, ptr %2424, align 4, !tbaa !17
  %2426 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %2427 = load float, ptr %2426, align 4, !tbaa !17
  %2428 = fmul float %2425, %2427
  %2429 = fneg float %2428
  %2430 = call float @llvm.fmuladd.f32(float %2421, float %2423, float %2429)
  %2431 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float %2430, ptr %2431, align 4, !tbaa !13
  %2432 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %2433 = load float, ptr %2432, align 4, !tbaa !13
  %2434 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %2435 = load float, ptr %2434, align 4, !tbaa !17
  %2436 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %2437 = load float, ptr %2436, align 4, !tbaa !17
  %2438 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %2439 = load float, ptr %2438, align 4, !tbaa !13
  %2440 = fmul float %2437, %2439
  %2441 = call float @llvm.fmuladd.f32(float %2433, float %2435, float %2440)
  %2442 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float %2441, ptr %2442, align 4, !tbaa !17
  %2443 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %2444 = load float, ptr %2443, align 4, !tbaa !13
  %2445 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  store float %2444, ptr %2445, align 4, !tbaa !13
  %2446 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %2447 = load float, ptr %2446, align 4, !tbaa !17
  %2448 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  store float %2447, ptr %2448, align 4, !tbaa !17
  %2449 = load i32, ptr %28, align 4, !tbaa !9
  %2450 = load i32, ptr %29, align 4, !tbaa !9
  %2451 = load ptr, ptr %7, align 8, !tbaa !5
  %2452 = load i32, ptr %2451, align 4, !tbaa !9
  %2453 = shl i32 %2452, 1
  %2454 = load i32, ptr %29, align 4, !tbaa !9
  %2455 = sub nsw i32 %2453, %2454
  %2456 = sub nsw i32 %2455, 1
  %2457 = mul nsw i32 %2450, %2456
  %2458 = sdiv i32 %2457, 2
  %2459 = add nsw i32 %2449, %2458
  store i32 %2459, ptr %12, align 4, !tbaa !9
  %2460 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %2461 = load float, ptr %2460, align 4, !tbaa !13
  %2462 = load ptr, ptr %8, align 8, !tbaa !5
  %2463 = load i32, ptr %12, align 4, !tbaa !9
  %2464 = sext i32 %2463 to i64
  %2465 = getelementptr inbounds %struct.complex, ptr %2462, i64 %2464
  %2466 = getelementptr inbounds %struct.complex, ptr %2465, i32 0, i32 0
  %2467 = load float, ptr %2466, align 4, !tbaa !13
  %2468 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %2469 = load float, ptr %2468, align 4, !tbaa !17
  %2470 = load ptr, ptr %8, align 8, !tbaa !5
  %2471 = load i32, ptr %12, align 4, !tbaa !9
  %2472 = sext i32 %2471 to i64
  %2473 = getelementptr inbounds %struct.complex, ptr %2470, i64 %2472
  %2474 = getelementptr inbounds %struct.complex, ptr %2473, i32 0, i32 1
  %2475 = load float, ptr %2474, align 4, !tbaa !17
  %2476 = fmul float %2469, %2475
  %2477 = fneg float %2476
  %2478 = call float @llvm.fmuladd.f32(float %2461, float %2467, float %2477)
  %2479 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  store float %2478, ptr %2479, align 4, !tbaa !13
  %2480 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 0
  %2481 = load float, ptr %2480, align 4, !tbaa !13
  %2482 = load ptr, ptr %8, align 8, !tbaa !5
  %2483 = load i32, ptr %12, align 4, !tbaa !9
  %2484 = sext i32 %2483 to i64
  %2485 = getelementptr inbounds %struct.complex, ptr %2482, i64 %2484
  %2486 = getelementptr inbounds %struct.complex, ptr %2485, i32 0, i32 1
  %2487 = load float, ptr %2486, align 4, !tbaa !17
  %2488 = getelementptr inbounds %struct.complex, ptr %38, i32 0, i32 1
  %2489 = load float, ptr %2488, align 4, !tbaa !17
  %2490 = load ptr, ptr %8, align 8, !tbaa !5
  %2491 = load i32, ptr %12, align 4, !tbaa !9
  %2492 = sext i32 %2491 to i64
  %2493 = getelementptr inbounds %struct.complex, ptr %2490, i64 %2492
  %2494 = getelementptr inbounds %struct.complex, ptr %2493, i32 0, i32 0
  %2495 = load float, ptr %2494, align 4, !tbaa !13
  %2496 = fmul float %2489, %2495
  %2497 = call float @llvm.fmuladd.f32(float %2481, float %2487, float %2496)
  %2498 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  store float %2497, ptr %2498, align 4, !tbaa !17
  %2499 = load i32, ptr %28, align 4, !tbaa !9
  %2500 = load i32, ptr %29, align 4, !tbaa !9
  %2501 = sub nsw i32 %2500, 1
  %2502 = load ptr, ptr %7, align 8, !tbaa !5
  %2503 = load i32, ptr %2502, align 4, !tbaa !9
  %2504 = shl i32 %2503, 1
  %2505 = load i32, ptr %29, align 4, !tbaa !9
  %2506 = sub nsw i32 %2504, %2505
  %2507 = mul nsw i32 %2501, %2506
  %2508 = sdiv i32 %2507, 2
  %2509 = add nsw i32 %2499, %2508
  store i32 %2509, ptr %13, align 4, !tbaa !9
  %2510 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  %2511 = load float, ptr %2510, align 4, !tbaa !13
  %2512 = load ptr, ptr %8, align 8, !tbaa !5
  %2513 = load i32, ptr %13, align 4, !tbaa !9
  %2514 = sext i32 %2513 to i64
  %2515 = getelementptr inbounds %struct.complex, ptr %2512, i64 %2514
  %2516 = getelementptr inbounds %struct.complex, ptr %2515, i32 0, i32 0
  %2517 = load float, ptr %2516, align 4, !tbaa !13
  %2518 = fsub float %2511, %2517
  %2519 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  store float %2518, ptr %2519, align 4, !tbaa !13
  %2520 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  %2521 = load float, ptr %2520, align 4, !tbaa !17
  %2522 = load ptr, ptr %8, align 8, !tbaa !5
  %2523 = load i32, ptr %13, align 4, !tbaa !9
  %2524 = sext i32 %2523 to i64
  %2525 = getelementptr inbounds %struct.complex, ptr %2522, i64 %2524
  %2526 = getelementptr inbounds %struct.complex, ptr %2525, i32 0, i32 1
  %2527 = load float, ptr %2526, align 4, !tbaa !17
  %2528 = fsub float %2521, %2527
  %2529 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  store float %2528, ptr %2529, align 4, !tbaa !17
  %2530 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %2531 = load float, ptr %2530, align 4, !tbaa !13
  %2532 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %2533 = load float, ptr %2532, align 4, !tbaa !13
  %2534 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %2535 = load float, ptr %2534, align 4, !tbaa !17
  %2536 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %2537 = load float, ptr %2536, align 4, !tbaa !17
  %2538 = fmul float %2535, %2537
  %2539 = fneg float %2538
  %2540 = call float @llvm.fmuladd.f32(float %2531, float %2533, float %2539)
  %2541 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float %2540, ptr %2541, align 4, !tbaa !13
  %2542 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %2543 = load float, ptr %2542, align 4, !tbaa !13
  %2544 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %2545 = load float, ptr %2544, align 4, !tbaa !17
  %2546 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %2547 = load float, ptr %2546, align 4, !tbaa !17
  %2548 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %2549 = load float, ptr %2548, align 4, !tbaa !13
  %2550 = fmul float %2547, %2549
  %2551 = call float @llvm.fmuladd.f32(float %2543, float %2545, float %2550)
  %2552 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float %2551, ptr %2552, align 4, !tbaa !17
  %2553 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %2554 = load float, ptr %2553, align 4, !tbaa !13
  %2555 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  store float %2554, ptr %2555, align 4, !tbaa !13
  %2556 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %2557 = load float, ptr %2556, align 4, !tbaa !17
  %2558 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  store float %2557, ptr %2558, align 4, !tbaa !17
  %2559 = load ptr, ptr %7, align 8, !tbaa !5
  %2560 = load i32, ptr %2559, align 4, !tbaa !9
  store i32 %2560, ptr %12, align 4, !tbaa !9
  %2561 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %2561, ptr %27, align 4, !tbaa !9
  br label %2562

2562:                                             ; preds = %2735, %2338
  %2563 = load i32, ptr %27, align 4, !tbaa !9
  %2564 = load i32, ptr %12, align 4, !tbaa !9
  %2565 = icmp sle i32 %2563, %2564
  br i1 %2565, label %2566, label %2738

2566:                                             ; preds = %2562
  %2567 = load i32, ptr %27, align 4, !tbaa !9
  %2568 = load i32, ptr %28, align 4, !tbaa !9
  %2569 = sub nsw i32 %2568, 1
  %2570 = load ptr, ptr %7, align 8, !tbaa !5
  %2571 = load i32, ptr %2570, align 4, !tbaa !9
  %2572 = shl i32 %2571, 1
  %2573 = load i32, ptr %28, align 4, !tbaa !9
  %2574 = sub nsw i32 %2572, %2573
  %2575 = mul nsw i32 %2569, %2574
  %2576 = sdiv i32 %2575, 2
  %2577 = add nsw i32 %2567, %2576
  store i32 %2577, ptr %13, align 4, !tbaa !9
  %2578 = load i32, ptr %27, align 4, !tbaa !9
  %2579 = load i32, ptr %28, align 4, !tbaa !9
  %2580 = sub nsw i32 %2579, 1
  %2581 = load ptr, ptr %7, align 8, !tbaa !5
  %2582 = load i32, ptr %2581, align 4, !tbaa !9
  %2583 = shl i32 %2582, 1
  %2584 = load i32, ptr %28, align 4, !tbaa !9
  %2585 = sub nsw i32 %2583, %2584
  %2586 = mul nsw i32 %2580, %2585
  %2587 = sdiv i32 %2586, 2
  %2588 = add nsw i32 %2578, %2587
  store i32 %2588, ptr %14, align 4, !tbaa !9
  %2589 = load i32, ptr %27, align 4, !tbaa !9
  %2590 = load i32, ptr %29, align 4, !tbaa !9
  %2591 = sub nsw i32 %2590, 1
  %2592 = load ptr, ptr %7, align 8, !tbaa !5
  %2593 = load i32, ptr %2592, align 4, !tbaa !9
  %2594 = shl i32 %2593, 1
  %2595 = load i32, ptr %29, align 4, !tbaa !9
  %2596 = sub nsw i32 %2594, %2595
  %2597 = mul nsw i32 %2591, %2596
  %2598 = sdiv i32 %2597, 2
  %2599 = add nsw i32 %2589, %2598
  store i32 %2599, ptr %15, align 4, !tbaa !9
  %2600 = load ptr, ptr %8, align 8, !tbaa !5
  %2601 = load i32, ptr %15, align 4, !tbaa !9
  %2602 = sext i32 %2601 to i64
  %2603 = getelementptr inbounds %struct.complex, ptr %2600, i64 %2602
  %2604 = getelementptr inbounds %struct.complex, ptr %2603, i32 0, i32 0
  %2605 = load float, ptr %2604, align 4, !tbaa !13
  %2606 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2607 = load float, ptr %2606, align 4, !tbaa !13
  %2608 = load ptr, ptr %8, align 8, !tbaa !5
  %2609 = load i32, ptr %15, align 4, !tbaa !9
  %2610 = sext i32 %2609 to i64
  %2611 = getelementptr inbounds %struct.complex, ptr %2608, i64 %2610
  %2612 = getelementptr inbounds %struct.complex, ptr %2611, i32 0, i32 1
  %2613 = load float, ptr %2612, align 4, !tbaa !17
  %2614 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2615 = load float, ptr %2614, align 4, !tbaa !17
  %2616 = fmul float %2613, %2615
  %2617 = fneg float %2616
  %2618 = call float @llvm.fmuladd.f32(float %2605, float %2607, float %2617)
  %2619 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  store float %2618, ptr %2619, align 4, !tbaa !13
  %2620 = load ptr, ptr %8, align 8, !tbaa !5
  %2621 = load i32, ptr %15, align 4, !tbaa !9
  %2622 = sext i32 %2621 to i64
  %2623 = getelementptr inbounds %struct.complex, ptr %2620, i64 %2622
  %2624 = getelementptr inbounds %struct.complex, ptr %2623, i32 0, i32 0
  %2625 = load float, ptr %2624, align 4, !tbaa !13
  %2626 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2627 = load float, ptr %2626, align 4, !tbaa !17
  %2628 = load ptr, ptr %8, align 8, !tbaa !5
  %2629 = load i32, ptr %15, align 4, !tbaa !9
  %2630 = sext i32 %2629 to i64
  %2631 = getelementptr inbounds %struct.complex, ptr %2628, i64 %2630
  %2632 = getelementptr inbounds %struct.complex, ptr %2631, i32 0, i32 1
  %2633 = load float, ptr %2632, align 4, !tbaa !17
  %2634 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2635 = load float, ptr %2634, align 4, !tbaa !13
  %2636 = fmul float %2633, %2635
  %2637 = call float @llvm.fmuladd.f32(float %2625, float %2627, float %2636)
  %2638 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  store float %2637, ptr %2638, align 4, !tbaa !17
  %2639 = load ptr, ptr %8, align 8, !tbaa !5
  %2640 = load i32, ptr %14, align 4, !tbaa !9
  %2641 = sext i32 %2640 to i64
  %2642 = getelementptr inbounds %struct.complex, ptr %2639, i64 %2641
  %2643 = getelementptr inbounds %struct.complex, ptr %2642, i32 0, i32 0
  %2644 = load float, ptr %2643, align 4, !tbaa !13
  %2645 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 0
  %2646 = load float, ptr %2645, align 4, !tbaa !13
  %2647 = fsub float %2644, %2646
  %2648 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  store float %2647, ptr %2648, align 4, !tbaa !13
  %2649 = load ptr, ptr %8, align 8, !tbaa !5
  %2650 = load i32, ptr %14, align 4, !tbaa !9
  %2651 = sext i32 %2650 to i64
  %2652 = getelementptr inbounds %struct.complex, ptr %2649, i64 %2651
  %2653 = getelementptr inbounds %struct.complex, ptr %2652, i32 0, i32 1
  %2654 = load float, ptr %2653, align 4, !tbaa !17
  %2655 = getelementptr inbounds %struct.complex, ptr %23, i32 0, i32 1
  %2656 = load float, ptr %2655, align 4, !tbaa !17
  %2657 = fsub float %2654, %2656
  %2658 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  store float %2657, ptr %2658, align 4, !tbaa !17
  %2659 = load i32, ptr %27, align 4, !tbaa !9
  %2660 = load i32, ptr %29, align 4, !tbaa !9
  %2661 = load ptr, ptr %7, align 8, !tbaa !5
  %2662 = load i32, ptr %2661, align 4, !tbaa !9
  %2663 = shl i32 %2662, 1
  %2664 = load i32, ptr %29, align 4, !tbaa !9
  %2665 = sub nsw i32 %2663, %2664
  %2666 = sub nsw i32 %2665, 1
  %2667 = mul nsw i32 %2660, %2666
  %2668 = sdiv i32 %2667, 2
  %2669 = add nsw i32 %2659, %2668
  store i32 %2669, ptr %16, align 4, !tbaa !9
  %2670 = load ptr, ptr %8, align 8, !tbaa !5
  %2671 = load i32, ptr %16, align 4, !tbaa !9
  %2672 = sext i32 %2671 to i64
  %2673 = getelementptr inbounds %struct.complex, ptr %2670, i64 %2672
  %2674 = getelementptr inbounds %struct.complex, ptr %2673, i32 0, i32 0
  %2675 = load float, ptr %2674, align 4, !tbaa !13
  %2676 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  %2677 = load float, ptr %2676, align 4, !tbaa !13
  %2678 = load ptr, ptr %8, align 8, !tbaa !5
  %2679 = load i32, ptr %16, align 4, !tbaa !9
  %2680 = sext i32 %2679 to i64
  %2681 = getelementptr inbounds %struct.complex, ptr %2678, i64 %2680
  %2682 = getelementptr inbounds %struct.complex, ptr %2681, i32 0, i32 1
  %2683 = load float, ptr %2682, align 4, !tbaa !17
  %2684 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  %2685 = load float, ptr %2684, align 4, !tbaa !17
  %2686 = fmul float %2683, %2685
  %2687 = fneg float %2686
  %2688 = call float @llvm.fmuladd.f32(float %2675, float %2677, float %2687)
  %2689 = getelementptr inbounds %struct.complex, ptr %24, i32 0, i32 0
  store float %2688, ptr %2689, align 4, !tbaa !13
  %2690 = load ptr, ptr %8, align 8, !tbaa !5
  %2691 = load i32, ptr %16, align 4, !tbaa !9
  %2692 = sext i32 %2691 to i64
  %2693 = getelementptr inbounds %struct.complex, ptr %2690, i64 %2692
  %2694 = getelementptr inbounds %struct.complex, ptr %2693, i32 0, i32 0
  %2695 = load float, ptr %2694, align 4, !tbaa !13
  %2696 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  %2697 = load float, ptr %2696, align 4, !tbaa !17
  %2698 = load ptr, ptr %8, align 8, !tbaa !5
  %2699 = load i32, ptr %16, align 4, !tbaa !9
  %2700 = sext i32 %2699 to i64
  %2701 = getelementptr inbounds %struct.complex, ptr %2698, i64 %2700
  %2702 = getelementptr inbounds %struct.complex, ptr %2701, i32 0, i32 1
  %2703 = load float, ptr %2702, align 4, !tbaa !17
  %2704 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  %2705 = load float, ptr %2704, align 4, !tbaa !13
  %2706 = fmul float %2703, %2705
  %2707 = call float @llvm.fmuladd.f32(float %2695, float %2697, float %2706)
  %2708 = getelementptr inbounds %struct.complex, ptr %24, i32 0, i32 1
  store float %2707, ptr %2708, align 4, !tbaa !17
  %2709 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 0
  %2710 = load float, ptr %2709, align 4, !tbaa !13
  %2711 = getelementptr inbounds %struct.complex, ptr %24, i32 0, i32 0
  %2712 = load float, ptr %2711, align 4, !tbaa !13
  %2713 = fsub float %2710, %2712
  %2714 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  store float %2713, ptr %2714, align 4, !tbaa !13
  %2715 = getelementptr inbounds %struct.complex, ptr %22, i32 0, i32 1
  %2716 = load float, ptr %2715, align 4, !tbaa !17
  %2717 = getelementptr inbounds %struct.complex, ptr %24, i32 0, i32 1
  %2718 = load float, ptr %2717, align 4, !tbaa !17
  %2719 = fsub float %2716, %2718
  %2720 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  store float %2719, ptr %2720, align 4, !tbaa !17
  %2721 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %2722 = load float, ptr %2721, align 4, !tbaa !13
  %2723 = load ptr, ptr %8, align 8, !tbaa !5
  %2724 = load i32, ptr %13, align 4, !tbaa !9
  %2725 = sext i32 %2724 to i64
  %2726 = getelementptr inbounds %struct.complex, ptr %2723, i64 %2725
  %2727 = getelementptr inbounds %struct.complex, ptr %2726, i32 0, i32 0
  store float %2722, ptr %2727, align 4, !tbaa !13
  %2728 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %2729 = load float, ptr %2728, align 4, !tbaa !17
  %2730 = load ptr, ptr %8, align 8, !tbaa !5
  %2731 = load i32, ptr %13, align 4, !tbaa !9
  %2732 = sext i32 %2731 to i64
  %2733 = getelementptr inbounds %struct.complex, ptr %2730, i64 %2732
  %2734 = getelementptr inbounds %struct.complex, ptr %2733, i32 0, i32 1
  store float %2729, ptr %2734, align 4, !tbaa !17
  br label %2735

2735:                                             ; preds = %2566
  %2736 = load i32, ptr %27, align 4, !tbaa !9
  %2737 = add nsw i32 %2736, 1
  store i32 %2737, ptr %27, align 4, !tbaa !9
  br label %2562, !llvm.loop !23

2738:                                             ; preds = %2562
  %2739 = load i32, ptr %28, align 4, !tbaa !9
  %2740 = load i32, ptr %29, align 4, !tbaa !9
  %2741 = sub nsw i32 %2740, 1
  %2742 = load ptr, ptr %7, align 8, !tbaa !5
  %2743 = load i32, ptr %2742, align 4, !tbaa !9
  %2744 = shl i32 %2743, 1
  %2745 = load i32, ptr %29, align 4, !tbaa !9
  %2746 = sub nsw i32 %2744, %2745
  %2747 = mul nsw i32 %2741, %2746
  %2748 = sdiv i32 %2747, 2
  %2749 = add nsw i32 %2739, %2748
  store i32 %2749, ptr %12, align 4, !tbaa !9
  %2750 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 0
  %2751 = load float, ptr %2750, align 4, !tbaa !13
  %2752 = load ptr, ptr %8, align 8, !tbaa !5
  %2753 = load i32, ptr %12, align 4, !tbaa !9
  %2754 = sext i32 %2753 to i64
  %2755 = getelementptr inbounds %struct.complex, ptr %2752, i64 %2754
  %2756 = getelementptr inbounds %struct.complex, ptr %2755, i32 0, i32 0
  store float %2751, ptr %2756, align 4, !tbaa !13
  %2757 = getelementptr inbounds %struct.complex, ptr %43, i32 0, i32 1
  %2758 = load float, ptr %2757, align 4, !tbaa !17
  %2759 = load ptr, ptr %8, align 8, !tbaa !5
  %2760 = load i32, ptr %12, align 4, !tbaa !9
  %2761 = sext i32 %2760 to i64
  %2762 = getelementptr inbounds %struct.complex, ptr %2759, i64 %2761
  %2763 = getelementptr inbounds %struct.complex, ptr %2762, i32 0, i32 1
  store float %2758, ptr %2763, align 4, !tbaa !17
  %2764 = load i32, ptr %28, align 4, !tbaa !9
  %2765 = load i32, ptr %29, align 4, !tbaa !9
  %2766 = load ptr, ptr %7, align 8, !tbaa !5
  %2767 = load i32, ptr %2766, align 4, !tbaa !9
  %2768 = shl i32 %2767, 1
  %2769 = load i32, ptr %29, align 4, !tbaa !9
  %2770 = sub nsw i32 %2768, %2769
  %2771 = sub nsw i32 %2770, 1
  %2772 = mul nsw i32 %2765, %2771
  %2773 = sdiv i32 %2772, 2
  %2774 = add nsw i32 %2764, %2773
  store i32 %2774, ptr %12, align 4, !tbaa !9
  %2775 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 0
  %2776 = load float, ptr %2775, align 4, !tbaa !13
  %2777 = load ptr, ptr %8, align 8, !tbaa !5
  %2778 = load i32, ptr %12, align 4, !tbaa !9
  %2779 = sext i32 %2778 to i64
  %2780 = getelementptr inbounds %struct.complex, ptr %2777, i64 %2779
  %2781 = getelementptr inbounds %struct.complex, ptr %2780, i32 0, i32 0
  store float %2776, ptr %2781, align 4, !tbaa !13
  %2782 = getelementptr inbounds %struct.complex, ptr %51, i32 0, i32 1
  %2783 = load float, ptr %2782, align 4, !tbaa !17
  %2784 = load ptr, ptr %8, align 8, !tbaa !5
  %2785 = load i32, ptr %12, align 4, !tbaa !9
  %2786 = sext i32 %2785 to i64
  %2787 = getelementptr inbounds %struct.complex, ptr %2784, i64 %2786
  %2788 = getelementptr inbounds %struct.complex, ptr %2787, i32 0, i32 1
  store float %2783, ptr %2788, align 4, !tbaa !17
  br label %2789

2789:                                             ; preds = %2738
  %2790 = load i32, ptr %28, align 4, !tbaa !9
  %2791 = add nsw i32 %2790, 1
  store i32 %2791, ptr %28, align 4, !tbaa !9
  br label %2334, !llvm.loop !24

2792:                                             ; preds = %2334
  br label %2793

2793:                                             ; preds = %2792, %2141
  br label %2794

2794:                                             ; preds = %2793, %2140
  br label %2795

2795:                                             ; preds = %2794, %1561
  %2796 = load i32, ptr %32, align 4, !tbaa !9
  %2797 = icmp eq i32 %2796, 1
  br i1 %2797, label %2798, label %2804

2798:                                             ; preds = %2795
  %2799 = load i32, ptr %41, align 4, !tbaa !9
  %2800 = load ptr, ptr %9, align 8, !tbaa !5
  %2801 = load i32, ptr %29, align 4, !tbaa !9
  %2802 = sext i32 %2801 to i64
  %2803 = getelementptr inbounds i32, ptr %2800, i64 %2802
  store i32 %2799, ptr %2803, align 4, !tbaa !9
  br label %2818

2804:                                             ; preds = %2795
  %2805 = load i32, ptr %41, align 4, !tbaa !9
  %2806 = sub nsw i32 0, %2805
  %2807 = load ptr, ptr %9, align 8, !tbaa !5
  %2808 = load i32, ptr %29, align 4, !tbaa !9
  %2809 = sext i32 %2808 to i64
  %2810 = getelementptr inbounds i32, ptr %2807, i64 %2809
  store i32 %2806, ptr %2810, align 4, !tbaa !9
  %2811 = load i32, ptr %41, align 4, !tbaa !9
  %2812 = sub nsw i32 0, %2811
  %2813 = load ptr, ptr %9, align 8, !tbaa !5
  %2814 = load i32, ptr %29, align 4, !tbaa !9
  %2815 = add nsw i32 %2814, 1
  %2816 = sext i32 %2815 to i64
  %2817 = getelementptr inbounds i32, ptr %2813, i64 %2816
  store i32 %2812, ptr %2817, align 4, !tbaa !9
  br label %2818

2818:                                             ; preds = %2804, %2798
  %2819 = load i32, ptr %32, align 4, !tbaa !9
  %2820 = load i32, ptr %29, align 4, !tbaa !9
  %2821 = add nsw i32 %2820, %2819
  store i32 %2821, ptr %29, align 4, !tbaa !9
  %2822 = load i32, ptr %47, align 4, !tbaa !9
  %2823 = load ptr, ptr %7, align 8, !tbaa !5
  %2824 = load i32, ptr %2823, align 4, !tbaa !9
  %2825 = add nsw i32 %2822, %2824
  %2826 = load i32, ptr %29, align 4, !tbaa !9
  %2827 = sub nsw i32 %2825, %2826
  %2828 = add nsw i32 %2827, 2
  store i32 %2828, ptr %39, align 4, !tbaa !9
  br label %1439

2829:                                             ; preds = %1445, %148
  store i32 1, ptr %52, align 4
  br label %2830

2830:                                             ; preds = %2829, %121
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %11) #7
  ret void
}

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

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) #4

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

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

declare <2 x float> @__divsc3(float, float, float, float)

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"float", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"", !12, i64 0, !12, i64 4}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = !{!14, !12, i64 4}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !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 [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@c_b1 = external hidden global %struct.complex, align 4

; Function Attrs: nounwind uwtable
define dso_local void @csptrf_(ptr noundef %0, ptr nocapture noundef readonly %1, ptr noundef %2, ptr nocapture noundef writeonly %3, ptr nocapture noundef %4) local_unnamed_addr #0 {
  %6 = alloca i32, align 4
  %7 = alloca %struct.complex, align 8
  %8 = alloca %struct.complex, align 8
  %9 = alloca %struct.complex, align 8
  %10 = alloca %struct.complex, align 8
  %11 = alloca %struct.complex, align 8
  %12 = alloca %struct.complex, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %6) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #6
  %13 = getelementptr inbounds i8, ptr %3, i64 -4
  %14 = getelementptr inbounds i8, ptr %2, i64 -8
  store i32 0, ptr %4, align 4, !tbaa !5
  %15 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i32 %15, 0
  br i1 %.not, label %16, label %18

16:                                               ; preds = %5
  %17 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not868 = icmp eq i32 %17, 0
  br i1 %.not868, label %.thread.sink.split, label %18

18:                                               ; preds = %16, %5
  %19 = load i32, ptr %1, align 4, !tbaa !5
  %20 = icmp slt i32 %19, 0
  br i1 %20, label %.thread.sink.split, label %21

21:                                               ; preds = %18
  %.pr = load i32, ptr %4, align 4, !tbaa !5
  %.not869 = icmp eq i32 %.pr, 0
  br i1 %.not869, label %25, label %.thread

.thread.sink.split:                               ; preds = %18, %16
  %.sink = phi i32 [ -1, %16 ], [ -2, %18 ]
  store i32 %.sink, ptr %4, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %21
  %22 = phi i32 [ %.pr, %21 ], [ %.sink, %.thread.sink.split ]
  %23 = sub nsw i32 0, %22
  store i32 %23, ptr %6, align 4, !tbaa !5
  %24 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %6, i32 noundef 6) #6
  br label %.loopexit959

25:                                               ; preds = %21
  br i1 %.not, label %402, label %26

26:                                               ; preds = %25
  %27 = icmp eq i32 %19, 0
  br i1 %27, label %.loopexit959, label %.lr.ph990

.lr.ph990:                                        ; preds = %26
  %28 = add nsw i32 %19, -1
  %29 = mul nsw i32 %28, %19
  %30 = lshr i32 %29, 1
  %31 = add nuw nsw i32 %30, 1
  %32 = getelementptr inbounds i8, ptr %7, i64 4
  %scevgep = getelementptr i8, ptr %2, i64 -8
  %scevgep1120 = getelementptr i8, ptr %2, i64 -4
  %scevgep1133 = getelementptr i8, ptr %2, i64 -8
  %scevgep1136 = getelementptr i8, ptr %2, i64 -4
  %scevgep1144 = getelementptr i8, ptr %2, i64 -4
  %invariant.gep1332 = getelementptr i8, ptr %14, i64 -16
  %invariant.gep1334 = getelementptr i8, ptr %2, i64 -8
  %invariant.gep1336 = getelementptr i8, ptr %2, i64 -4
  %invariant.gep1338 = getelementptr i8, ptr %2, i64 -8
  %invariant.gep1340 = getelementptr i8, ptr %2, i64 -4
  %invariant.gep1342 = getelementptr i8, ptr %2, i64 -4
  %invariant.gep1344 = getelementptr i8, ptr %2, i64 -4
  %invariant.gep1346 = getelementptr i8, ptr %2, i64 -8
  %invariant.gep1348 = getelementptr i8, ptr %2, i64 -8
  %invariant.gep1322 = getelementptr i8, ptr %14, i64 -24
  %invariant.gep1326 = getelementptr i8, ptr %14, i64 -28
  br label %33

33:                                               ; preds = %.lr.ph990, %398
  %.0988 = phi i32 [ undef, %.lr.ph990 ], [ %.1, %398 ]
  %.0825985 = phi i32 [ %19, %.lr.ph990 ], [ %399, %398 ]
  %.0831984 = phi i32 [ %31, %.lr.ph990 ], [ %400, %398 ]
  %34 = add nsw i32 %.0825985, %.0831984
  %35 = add nsw i32 %34, -1
  store i32 %35, ptr %6, align 4, !tbaa !5
  %36 = sext i32 %35 to i64
  %37 = getelementptr inbounds %struct.complex, ptr %14, i64 %36
  %38 = load float, ptr %37, align 4, !tbaa !9
  %39 = fcmp oge float %38, 0.000000e+00
  %40 = fneg float %38
  %41 = select i1 %39, float %38, float %40
  %42 = call <2 x float> @Cf(ptr noundef nonnull %37)
  %.sroa.041.4.vec.extract = extractelement <2 x float> %42, i64 1
  %43 = fcmp oge float %.sroa.041.4.vec.extract, 0.000000e+00
  %44 = fneg float %.sroa.041.4.vec.extract
  %45 = select i1 %43, float %.sroa.041.4.vec.extract, float %44
  %46 = fadd float %41, %45
  %.not875 = icmp eq i32 %.0825985, 1
  br i1 %.not875, label %65, label %47

47:                                               ; preds = %33
  %48 = add nsw i32 %.0825985, -1
  store i32 %48, ptr %6, align 4, !tbaa !5
  %49 = sext i32 %.0831984 to i64
  %50 = getelementptr inbounds %struct.complex, ptr %14, i64 %49
  %51 = call i32 @icamax_(ptr noundef nonnull %6, ptr noundef nonnull %50, ptr noundef nonnull @c__1) #6
  %52 = add i32 %.0831984, -1
  %53 = add i32 %52, %51
  store i32 %53, ptr %6, align 4, !tbaa !5
  %54 = sext i32 %53 to i64
  %55 = getelementptr inbounds %struct.complex, ptr %14, i64 %54
  %56 = load float, ptr %55, align 4, !tbaa !9
  %57 = fcmp oge float %56, 0.000000e+00
  %58 = fneg float %56
  %59 = select i1 %57, float %56, float %58
  %60 = call <2 x float> @Cf(ptr noundef nonnull %55)
  %.sroa.040.4.vec.extract = extractelement <2 x float> %60, i64 1
  %61 = fcmp oge float %.sroa.040.4.vec.extract, 0.000000e+00
  %62 = fneg float %.sroa.040.4.vec.extract
  %63 = select i1 %61, float %.sroa.040.4.vec.extract, float %62
  %64 = fadd float %59, %63
  br label %65

65:                                               ; preds = %33, %47
  %.0841 = phi float [ %64, %47 ], [ 0.000000e+00, %33 ]
  %.1 = phi i32 [ %51, %47 ], [ %.0988, %33 ]
  %66 = fcmp oge float %46, %.0841
  %67 = select i1 %66, float %46, float %.0841
  %68 = fcmp oeq float %67, 0.000000e+00
  br i1 %68, label %69, label %73

69:                                               ; preds = %65
  %70 = load i32, ptr %4, align 4, !tbaa !5
  %71 = icmp eq i32 %70, 0
  br i1 %71, label %72, label %390

72:                                               ; preds = %69
  store i32 %.0825985, ptr %4, align 4, !tbaa !5
  br label %390

73:                                               ; preds = %65
  %74 = fmul float %.0841, 0x3FE47E0F60000000
  %75 = fcmp ult float %46, %74
  br i1 %75, label %76, label %.thread899

76:                                               ; preds = %73
  store i32 %.0825985, ptr %6, align 4, !tbaa !5
  %.not876962.not = icmp slt i32 %.1, %.0825985
  br i1 %.not876962.not, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %76
  %77 = add nsw i32 %.1, 1
  %78 = mul nsw i32 %77, %.1
  %79 = sdiv i32 %78, 2
  %80 = add nsw i32 %79, %.1
  %81 = sext i32 %.1 to i64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %104
  %indvars.iv.in = phi i64 [ %81, %.lr.ph.preheader ], [ %indvars.iv, %104 ]
  %.0837964 = phi i32 [ %80, %.lr.ph.preheader ], [ %106, %104 ]
  %.0843963 = phi float [ 0.000000e+00, %.lr.ph.preheader ], [ %.1844, %104 ]
  %indvars.iv = add nsw i64 %indvars.iv.in, 1
  %82 = sext i32 %.0837964 to i64
  %83 = getelementptr inbounds %struct.complex, ptr %14, i64 %82
  %84 = load float, ptr %83, align 4, !tbaa !9
  %85 = fcmp oge float %84, 0.000000e+00
  %86 = fneg float %84
  %87 = select i1 %85, float %84, float %86
  %88 = call <2 x float> @Cf(ptr noundef nonnull %83)
  %.sroa.039.4.vec.extract = extractelement <2 x float> %88, i64 1
  %89 = fcmp oge float %.sroa.039.4.vec.extract, 0.000000e+00
  %90 = fneg float %.sroa.039.4.vec.extract
  %91 = select i1 %89, float %.sroa.039.4.vec.extract, float %90
  %92 = fadd float %87, %91
  %93 = fcmp ogt float %92, %.0843963
  br i1 %93, label %94, label %104

94:                                               ; preds = %.lr.ph
  %95 = load float, ptr %83, align 4, !tbaa !9
  %96 = fcmp oge float %95, 0.000000e+00
  %97 = fneg float %95
  %98 = select i1 %96, float %95, float %97
  %99 = call <2 x float> @Cf(ptr noundef nonnull %83)
  %.sroa.038.4.vec.extract = extractelement <2 x float> %99, i64 1
  %100 = fcmp oge float %.sroa.038.4.vec.extract, 0.000000e+00
  %101 = fneg float %.sroa.038.4.vec.extract
  %102 = select i1 %100, float %.sroa.038.4.vec.extract, float %101
  %103 = fadd float %98, %102
  br label %104

104:                                              ; preds = %94, %.lr.ph
  %.1844 = phi float [ %103, %94 ], [ %.0843963, %.lr.ph ]
  %105 = trunc nsw i64 %indvars.iv to i32
  %106 = add nsw i32 %.0837964, %105
  %107 = load i32, ptr %6, align 4, !tbaa !5
  %108 = sext i32 %107 to i64
  %.not876.not = icmp slt i64 %indvars.iv, %108
  br i1 %.not876.not, label %.lr.ph, label %._crit_edge, !llvm.loop !12

._crit_edge:                                      ; preds = %104, %76
  %.0843.lcssa = phi float [ 0.000000e+00, %76 ], [ %.1844, %104 ]
  %109 = add nsw i32 %.1, -1
  %110 = mul nsw i32 %109, %.1
  %111 = sdiv i32 %110, 2
  %112 = add nsw i32 %111, 1
  %113 = icmp sgt i32 %.1, 1
  br i1 %113, label %114, label %132

114:                                              ; preds = %._crit_edge
  store i32 %109, ptr %6, align 4, !tbaa !5
  %115 = sext i32 %112 to i64
  %116 = getelementptr inbounds %struct.complex, ptr %14, i64 %115
  %117 = call i32 @icamax_(ptr noundef nonnull %6, ptr noundef nonnull %116, ptr noundef nonnull @c__1) #6
  %118 = add i32 %117, %111
  store i32 %118, ptr %6, align 4, !tbaa !5
  %119 = sext i32 %118 to i64
  %120 = getelementptr inbounds %struct.complex, ptr %14, i64 %119
  %121 = load float, ptr %120, align 4, !tbaa !9
  %122 = fcmp oge float %121, 0.000000e+00
  %123 = fneg float %121
  %124 = select i1 %122, float %121, float %123
  %125 = call <2 x float> @Cf(ptr noundef nonnull %120)
  %.sroa.037.4.vec.extract = extractelement <2 x float> %125, i64 1
  %126 = fcmp oge float %.sroa.037.4.vec.extract, 0.000000e+00
  %127 = fneg float %.sroa.037.4.vec.extract
  %128 = select i1 %126, float %.sroa.037.4.vec.extract, float %127
  %129 = fadd float %124, %128
  %130 = fcmp oge float %.0843.lcssa, %129
  %131 = select i1 %130, float %.0843.lcssa, float %129
  br label %132

132:                                              ; preds = %114, %._crit_edge
  %.2845 = phi float [ %131, %114 ], [ %.0843.lcssa, %._crit_edge ]
  %133 = fdiv float %.0841, %.2845
  %134 = fmul float %74, %133
  %135 = fcmp ult float %46, %134
  br i1 %135, label %136, label %.thread899

136:                                              ; preds = %132
  %137 = add i32 %111, %.1
  store i32 %137, ptr %6, align 4, !tbaa !5
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds %struct.complex, ptr %14, i64 %138
  %140 = load float, ptr %139, align 4, !tbaa !9
  %141 = fcmp oge float %140, 0.000000e+00
  %142 = fneg float %140
  %143 = select i1 %141, float %140, float %142
  %144 = call <2 x float> @Cf(ptr noundef nonnull %139)
  %.sroa.036.4.vec.extract = extractelement <2 x float> %144, i64 1
  %145 = fcmp oge float %.sroa.036.4.vec.extract, 0.000000e+00
  %146 = fneg float %.sroa.036.4.vec.extract
  %147 = select i1 %145, float %.sroa.036.4.vec.extract, float %146
  %148 = fadd float %143, %147
  %149 = fmul float %.2845, 0x3FE47E0F60000000
  %150 = fcmp ult float %148, %149
  %cond.fr = freeze i1 %150
  %.880 = select i1 %cond.fr, i32 -2, i32 -1
  %151 = add nsw i32 %.880, %.0825985
  %152 = add nsw i32 %151, 1
  %153 = add i32 %.0831984, 1
  %154 = sub i32 %153, %.0825985
  %spec.select = select i1 %cond.fr, i32 %154, i32 %.0831984
  %.not877 = icmp eq i32 %.1, %152
  br i1 %.not877, label %183, label %155

155:                                              ; preds = %136
  store i32 %109, ptr %6, align 4, !tbaa !5
  %156 = sext i32 %spec.select to i64
  %157 = getelementptr inbounds %struct.complex, ptr %14, i64 %156
  %158 = sext i32 %112 to i64
  %159 = getelementptr inbounds %struct.complex, ptr %14, i64 %158
  call void @cswap_(ptr noundef nonnull %6, ptr noundef nonnull %157, ptr noundef nonnull @c__1, ptr noundef nonnull %159, ptr noundef nonnull @c__1) #6
  %.not878.not966 = icmp slt i32 %.1, %151
  br i1 %.not878.not966, label %.lr.ph970.preheader, label %._crit_edge971

.lr.ph970.preheader:                              ; preds = %155
  %160 = sext i32 %.1 to i64
  %wide.trip.count = sext i32 %151 to i64
  br label %.lr.ph970

.lr.ph970:                                        ; preds = %.lr.ph970.preheader, %.lr.ph970
  %indvars.iv1045 = phi i64 [ %160, %.lr.ph970.preheader ], [ %indvars.iv.next1046, %.lr.ph970 ]
  %.1838967 = phi i32 [ %137, %.lr.ph970.preheader ], [ %162, %.lr.ph970 ]
  %indvars.iv.next1046 = add nsw i64 %indvars.iv1045, 1
  %161 = trunc nsw i64 %indvars.iv1045 to i32
  %162 = add i32 %.1838967, %161
  %163 = add i32 %spec.select, %161
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds %struct.complex, ptr %14, i64 %164
  %166 = sext i32 %162 to i64
  %167 = getelementptr inbounds %struct.complex, ptr %14, i64 %166
  %168 = load <2 x float>, ptr %165, align 4, !tbaa !14
  %169 = load <2 x float>, ptr %167, align 4, !tbaa !14
  store <2 x float> %169, ptr %165, align 4, !tbaa !14
  store <2 x float> %168, ptr %167, align 4, !tbaa !14
  %exitcond.not = icmp eq i64 %indvars.iv.next1046, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge971, label %.lr.ph970, !llvm.loop !15

._crit_edge971:                                   ; preds = %.lr.ph970, %155
  %170 = add i32 %151, %spec.select
  %171 = sext i32 %170 to i64
  %172 = getelementptr inbounds %struct.complex, ptr %14, i64 %171
  %173 = load <2 x float>, ptr %172, align 4, !tbaa !14
  store <2 x float> %173, ptr %9, align 8, !tbaa !14
  %174 = load <2 x float>, ptr %139, align 4, !tbaa !14
  store <2 x float> %174, ptr %172, align 4, !tbaa !14
  store i32 %137, ptr %6, align 4, !tbaa !5
  store <2 x float> %173, ptr %139, align 4, !tbaa !14
  br i1 %cond.fr, label %175, label %.thread899

175:                                              ; preds = %._crit_edge971
  %176 = sext i32 %34 to i64
  %gep1333 = getelementptr %struct.complex, ptr %invariant.gep1332, i64 %176
  %177 = load <2 x float>, ptr %gep1333, align 4, !tbaa !14
  store <2 x float> %177, ptr %9, align 8, !tbaa !14
  %178 = add i32 %.0831984, -1
  %179 = add i32 %178, %.1
  %180 = sext i32 %179 to i64
  %181 = getelementptr inbounds %struct.complex, ptr %14, i64 %180
  %182 = load <2 x float>, ptr %181, align 4, !tbaa !14
  store <2 x float> %182, ptr %gep1333, align 4, !tbaa !14
  store i32 %179, ptr %6, align 4, !tbaa !5
  store <2 x float> %177, ptr %181, align 4, !tbaa !14
  br label %193

183:                                              ; preds = %136
  br i1 %cond.fr, label %193, label %.thread899

.thread899:                                       ; preds = %._crit_edge971, %132, %73, %183
  %.0833892897903 = phi i32 [ %.1, %183 ], [ %.0825985, %73 ], [ %.0825985, %132 ], [ %.1, %._crit_edge971 ]
  %184 = call <2 x float> @Cf(ptr noundef nonnull @c_b1)
  %.sroa.035.0.vec.extract = extractelement <2 x float> %184, i64 0
  %.sroa.035.4.vec.extract = extractelement <2 x float> %184, i64 1
  %185 = call <2 x float> @Cf(ptr noundef nonnull %37)
  %.sroa.034.0.vec.extract = extractelement <2 x float> %185, i64 0
  %.sroa.034.4.vec.extract = extractelement <2 x float> %185, i64 1
  %186 = call <2 x float> @__divsc3(float noundef %.sroa.035.0.vec.extract, float noundef %.sroa.035.4.vec.extract, float noundef %.sroa.034.0.vec.extract, float noundef %.sroa.034.4.vec.extract) #6
  %187 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %186, ptr %187, align 4
  %188 = load <2 x float>, ptr %7, align 8, !tbaa !14
  store <2 x float> %188, ptr %10, align 8, !tbaa !14
  %189 = add nsw i32 %.0825985, -1
  store i32 %189, ptr %6, align 4, !tbaa !5
  %190 = fneg <2 x float> %188
  store <2 x float> %190, ptr %7, align 8, !tbaa !14
  %191 = sext i32 %.0831984 to i64
  %192 = getelementptr inbounds %struct.complex, ptr %14, i64 %191
  call void @cspr_(ptr noundef %0, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef nonnull %192, ptr noundef nonnull @c__1, ptr noundef nonnull %2) #6
  store i32 %189, ptr %6, align 4, !tbaa !5
  call void @cscal_(ptr noundef nonnull %6, ptr noundef nonnull %10, ptr noundef nonnull %192, ptr noundef nonnull @c__1) #6
  br label %390

193:                                              ; preds = %175, %183
  %194 = icmp sgt i32 %.0825985, 2
  br i1 %194, label %.lr.ph981, label %.loopexit960

.lr.ph981:                                        ; preds = %193
  %195 = add nsw i32 %.0825985, -1
  %196 = mul nsw i32 %195, %.0825985
  %197 = lshr i32 %196, 1
  %198 = add nuw nsw i32 %197, %195
  store i32 %198, ptr %6, align 4, !tbaa !5
  %199 = zext nneg i32 %198 to i64
  %200 = getelementptr inbounds %struct.complex, ptr %14, i64 %199
  %201 = load <2 x float>, ptr %200, align 4, !tbaa !14
  store <2 x float> %201, ptr %11, align 8, !tbaa !14
  %202 = add nsw i32 %.0825985, -2
  %203 = mul nsw i32 %202, %195
  %204 = lshr i32 %203, 1
  %205 = add nuw nsw i32 %204, %195
  %206 = zext nneg i32 %205 to i64
  %207 = getelementptr inbounds %struct.complex, ptr %14, i64 %206
  %208 = call <2 x float> @Cf(ptr noundef nonnull %207)
  %.sroa.032.0.vec.extract = extractelement <2 x float> %208, i64 0
  %.sroa.032.4.vec.extract = extractelement <2 x float> %208, i64 1
  %209 = call <2 x float> @Cf(ptr noundef nonnull %11)
  %.sroa.031.0.vec.extract = extractelement <2 x float> %209, i64 0
  %.sroa.031.4.vec.extract = extractelement <2 x float> %209, i64 1
  %210 = call <2 x float> @__divsc3(float noundef %.sroa.032.0.vec.extract, float noundef %.sroa.032.4.vec.extract, float noundef %.sroa.031.0.vec.extract, float noundef %.sroa.031.4.vec.extract) #6
  %211 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %210, ptr %211, align 4
  %212 = add nuw nsw i32 %197, %.0825985
  %213 = zext nneg i32 %212 to i64
  %214 = getelementptr inbounds %struct.complex, ptr %14, i64 %213
  %215 = load <2 x float>, ptr %7, align 8, !tbaa !14
  %216 = call <2 x float> @Cf(ptr noundef nonnull %214)
  %.sroa.029.0.vec.extract = extractelement <2 x float> %216, i64 0
  %.sroa.029.4.vec.extract = extractelement <2 x float> %216, i64 1
  %217 = call <2 x float> @Cf(ptr noundef nonnull %11)
  %.sroa.028.0.vec.extract = extractelement <2 x float> %217, i64 0
  %.sroa.028.4.vec.extract = extractelement <2 x float> %217, i64 1
  %218 = call <2 x float> @__divsc3(float noundef %.sroa.029.0.vec.extract, float noundef %.sroa.029.4.vec.extract, float noundef %.sroa.028.0.vec.extract, float noundef %.sroa.028.4.vec.extract) #6
  %219 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %218, ptr %219, align 4
  %220 = load float, ptr %7, align 8, !tbaa !9
  %221 = load float, ptr %32, align 4, !tbaa !16
  %222 = fneg float %221
  %223 = insertelement <2 x float> poison, float %221, i64 0
  %224 = insertelement <2 x float> %223, float %222, i64 1
  %225 = fmul <2 x float> %215, %224
  %226 = shufflevector <2 x float> %225, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %227 = insertelement <2 x float> poison, float %220, i64 0
  %228 = shufflevector <2 x float> %227, <2 x float> poison, <2 x i32> zeroinitializer
  %229 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %228, <2 x float> %215, <2 x float> %226)
  %230 = fadd <2 x float> %229, <float -1.000000e+00, float 0.000000e+00>
  store <2 x float> %230, ptr %8, align 8, !tbaa !14
  %231 = call <2 x float> @Cf(ptr noundef nonnull @c_b1)
  %.sroa.026.0.vec.extract = extractelement <2 x float> %231, i64 0
  %.sroa.026.4.vec.extract = extractelement <2 x float> %231, i64 1
  %232 = call <2 x float> @Cf(ptr noundef nonnull %8)
  %.sroa.025.0.vec.extract = extractelement <2 x float> %232, i64 0
  %.sroa.025.4.vec.extract = extractelement <2 x float> %232, i64 1
  %233 = call <2 x float> @__divsc3(float noundef %.sroa.026.0.vec.extract, float noundef %.sroa.026.4.vec.extract, float noundef %.sroa.025.0.vec.extract, float noundef %.sroa.025.4.vec.extract) #6
  %234 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %233, ptr %234, align 4
  %235 = load <2 x float>, ptr %7, align 8, !tbaa !14
  store <2 x float> %235, ptr %9, align 8, !tbaa !14
  %236 = call <2 x float> @Cf(ptr noundef nonnull %9)
  %.sroa.023.0.vec.extract = extractelement <2 x float> %236, i64 0
  %.sroa.023.4.vec.extract = extractelement <2 x float> %236, i64 1
  %237 = call <2 x float> @Cf(ptr noundef nonnull %11)
  %.sroa.022.0.vec.extract = extractelement <2 x float> %237, i64 0
  %.sroa.022.4.vec.extract = extractelement <2 x float> %237, i64 1
  %238 = call <2 x float> @__divsc3(float noundef %.sroa.023.0.vec.extract, float noundef %.sroa.023.4.vec.extract, float noundef %.sroa.022.0.vec.extract, float noundef %.sroa.022.4.vec.extract) #6
  %239 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %238, ptr %239, align 4
  %240 = load <2 x float>, ptr %7, align 8, !tbaa !14
  store <2 x float> %240, ptr %11, align 8, !tbaa !14
  %241 = zext i32 %202 to i64
  %242 = zext nneg i32 %197 to i64
  %243 = zext nneg i32 %204 to i64
  %invariant.gep1083 = getelementptr %struct.complex, ptr %14, i64 %242
  %invariant.gep1085 = getelementptr %struct.complex, ptr %14, i64 %243
  %244 = add nuw nsw i64 %241, 4294967295
  %245 = mul i64 %244, %241
  %246 = shl nuw nsw i64 %242, 3
  %247 = shl nuw nsw i64 %241, 3
  %248 = shl nuw nsw i64 %243, 3
  %249 = shl nuw nsw i64 %242, 3
  %250 = shl nuw nsw i64 %241, 3
  %251 = shl nuw nsw i64 %243, 3
  %252 = shufflevector <2 x float> %240, <2 x float> poison, <2 x i32> zeroinitializer
  %253 = shufflevector <2 x float> %215, <2 x float> poison, <2 x i32> zeroinitializer
  %254 = shufflevector <2 x float> %240, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %255 = shufflevector <2 x float> %215, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %gep1335 = getelementptr i8, ptr %invariant.gep1334, i64 %249
  %256 = getelementptr i8, ptr %gep1335, i64 %250
  %gep1337 = getelementptr i8, ptr %invariant.gep1336, i64 %249
  %257 = getelementptr i8, ptr %gep1337, i64 %250
  %gep1339 = getelementptr i8, ptr %invariant.gep1338, i64 %251
  %258 = getelementptr i8, ptr %gep1339, i64 %250
  %gep1341 = getelementptr i8, ptr %invariant.gep1340, i64 %251
  %259 = getelementptr i8, ptr %gep1341, i64 %250
  %260 = getelementptr i8, ptr %2, i64 %249
  %261 = getelementptr i8, ptr %260, i64 %250
  %262 = getelementptr i8, ptr %2, i64 %251
  %263 = getelementptr i8, ptr %262, i64 %250
  %invariant.gep1330 = getelementptr %struct.complex, ptr %14, i64 %242
  %264 = fneg <2 x float> %240
  %265 = shufflevector <2 x float> %254, <2 x float> %264, <2 x i32> <i32 0, i32 3>
  %266 = fneg <2 x float> %215
  %267 = shufflevector <2 x float> %255, <2 x float> %266, <2 x i32> <i32 0, i32 3>
  %gep1343 = getelementptr i8, ptr %invariant.gep1342, i64 %248
  %268 = getelementptr i8, ptr %gep1343, i64 %247
  %gep1345 = getelementptr i8, ptr %invariant.gep1344, i64 %246
  %269 = getelementptr i8, ptr %gep1345, i64 %247
  %gep1347 = getelementptr i8, ptr %invariant.gep1346, i64 %248
  %270 = getelementptr i8, ptr %gep1347, i64 %247
  %gep1349 = getelementptr i8, ptr %invariant.gep1348, i64 %246
  %271 = getelementptr i8, ptr %gep1349, i64 %247
  %invariant.gep1320 = getelementptr i8, ptr %invariant.gep1083, i64 -24
  %invariant.gep1324 = getelementptr i8, ptr %invariant.gep1085, i64 -24
  br label %272

272:                                              ; preds = %.lr.ph981, %.loopexit1282
  %scev.check.iv = phi i64 [ %245, %.lr.ph981 ], [ %scev.check.iv.next, %.loopexit1282 ]
  %indvar1109 = phi i64 [ 0, %.lr.ph981 ], [ %indvar.next1110, %.loopexit1282 ]
  %indvar = phi i32 [ 0, %.lr.ph981 ], [ %indvar.next, %.loopexit1282 ]
  %indvars.iv1048 = phi i64 [ %241, %.lr.ph981 ], [ %indvars.iv.next1049, %.loopexit1282 ]
  %273 = trunc i64 %indvars.iv1048 to i32
  %smin1165 = call i32 @llvm.smin.i32(i32 %273, i32 1)
  %274 = sub i32 %273, %smin1165
  %275 = zext i32 %274 to i64
  %276 = add nuw nsw i64 %275, 1
  %277 = lshr i64 %scev.check.iv, 1
  %278 = and i64 %277, 2147483647
  %279 = add i64 %indvars.iv1048, %278
  %280 = shl nsw i64 %279, 3
  %281 = trunc i64 %indvars.iv1048 to i32
  %smin1134 = call i32 @llvm.smin.i32(i32 %281, i32 1)
  %282 = sub i32 %281, %smin1134
  %283 = zext i32 %282 to i64
  %284 = sub i64 %279, %283
  %285 = shl i64 %284, 3
  %scevgep1135 = getelementptr i8, ptr %scevgep1133, i64 %285
  %scevgep1137 = getelementptr i8, ptr %scevgep1136, i64 %280
  %286 = mul nsw i64 %indvar1109, -8
  %scevgep1138 = getelementptr i8, ptr %256, i64 %286
  %287 = mul nsw i64 %283, -8
  %scevgep1139 = getelementptr i8, ptr %scevgep1138, i64 %287
  %scevgep1140 = getelementptr i8, ptr %257, i64 %286
  %scevgep1141 = getelementptr i8, ptr %258, i64 %286
  %scevgep1142 = getelementptr i8, ptr %scevgep1141, i64 %287
  %scevgep1143 = getelementptr i8, ptr %259, i64 %286
  %scevgep1145 = getelementptr i8, ptr %scevgep1144, i64 %285
  %scevgep1146 = getelementptr i8, ptr %2, i64 %280
  %scevgep1147 = getelementptr i8, ptr %scevgep1140, i64 %287
  %scevgep1148 = getelementptr i8, ptr %261, i64 %286
  %scevgep1149 = getelementptr i8, ptr %scevgep1143, i64 %287
  %scevgep1150 = getelementptr i8, ptr %263, i64 %286
  %288 = sub i64 %indvar1109, %241
  %reass.sub = shl i64 %288, 1
  %289 = add i64 %reass.sub, -4294967294
  %290 = add nuw nsw i64 %indvars.iv1048, %243
  %291 = getelementptr inbounds %struct.complex, ptr %14, i64 %290
  %gep1331 = getelementptr %struct.complex, ptr %invariant.gep1330, i64 %indvars.iv1048
  %292 = load <2 x float>, ptr %291, align 4, !tbaa !14
  %293 = load <2 x float>, ptr %gep1331, align 4, !tbaa !14
  %294 = fmul <2 x float> %292, %224
  %295 = shufflevector <2 x float> %294, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %296 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %228, <2 x float> %292, <2 x float> %295)
  %297 = fsub <2 x float> %296, %293
  %298 = fmul <2 x float> %297, %265
  %299 = shufflevector <2 x float> %298, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %300 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %252, <2 x float> %297, <2 x float> %299)
  %301 = fmul <2 x float> %293, %267
  %302 = shufflevector <2 x float> %301, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %303 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %253, <2 x float> %293, <2 x float> %302)
  %304 = fsub <2 x float> %303, %292
  %305 = fmul <2 x float> %304, %265
  %306 = shufflevector <2 x float> %305, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %307 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %252, <2 x float> %304, <2 x float> %306)
  %indvars.iv.next1049 = add nsw i64 %indvars.iv1048, -1
  %308 = add nuw i64 %indvars.iv1048, 4294967295
  %309 = mul i64 %308, %indvars.iv1048
  %310 = lshr i64 %309, 1
  %311 = and i64 %310, 2147483647
  %min.iters.check = icmp ult i32 %274, 11
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.scevcheck

vector.scevcheck:                                 ; preds = %272
  %312 = mul nsw i64 %indvar1109, -8
  %scevgep1129 = getelementptr i8, ptr %268, i64 %312
  %scevgep1125 = getelementptr i8, ptr %269, i64 %312
  %313 = lshr i64 %scev.check.iv, 1
  %314 = and i64 %313, 2147483647
  %315 = add i64 %indvars.iv1048, %314
  %316 = shl nsw i64 %315, 3
  %scevgep1121 = getelementptr i8, ptr %scevgep1120, i64 %316
  %scevgep1116 = getelementptr i8, ptr %270, i64 %312
  %scevgep1112 = getelementptr i8, ptr %271, i64 %312
  %scevgep1111 = getelementptr i8, ptr %scevgep, i64 %316
  %317 = sub i32 %202, %indvar
  %smin = call i32 @llvm.smin.i32(i32 %317, i32 1)
  %318 = sub i32 %317, %smin
  %319 = zext i32 %318 to i64
  %mul.neg = mul nsw i64 %319, -8
  %320 = getelementptr i8, ptr %scevgep1111, i64 %mul.neg
  %321 = icmp ugt ptr %320, %scevgep1111
  %322 = zext i32 %318 to i64
  %mul1113.neg = mul nsw i64 %322, -8
  %323 = getelementptr i8, ptr %scevgep1112, i64 %mul1113.neg
  %324 = icmp ugt ptr %323, %scevgep1112
  %325 = zext i32 %318 to i64
  %mul1117.neg = mul nsw i64 %325, -8
  %326 = getelementptr i8, ptr %scevgep1116, i64 %mul1117.neg
  %327 = icmp ugt ptr %326, %scevgep1116
  %328 = zext i32 %318 to i64
  %mul1122.neg = mul nsw i64 %328, -8
  %329 = getelementptr i8, ptr %scevgep1121, i64 %mul1122.neg
  %330 = icmp ugt ptr %329, %scevgep1121
  %331 = zext i32 %318 to i64
  %mul1126.neg = mul nsw i64 %331, -8
  %332 = getelementptr i8, ptr %scevgep1125, i64 %mul1126.neg
  %333 = icmp ugt ptr %332, %scevgep1125
  %334 = zext i32 %318 to i64
  %mul1130.neg = mul nsw i64 %334, -8
  %335 = getelementptr i8, ptr %scevgep1129, i64 %mul1130.neg
  %336 = icmp ugt ptr %335, %scevgep1129
  %337 = or i1 %321, %324
  %338 = or i1 %337, %327
  %339 = or i1 %338, %330
  %340 = or i1 %339, %333
  %341 = or i1 %340, %336
  br i1 %341, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %vector.scevcheck
  %bound0 = icmp ult ptr %scevgep1135, %scevgep1140
  %bound1 = icmp ult ptr %scevgep1139, %scevgep1137
  %found.conflict = and i1 %bound0, %bound1
  %bound01151 = icmp ult ptr %scevgep1135, %scevgep1143
  %bound11152 = icmp ult ptr %scevgep1142, %scevgep1137
  %found.conflict1153 = and i1 %bound01151, %bound11152
  %conflict.rdx = or i1 %found.conflict, %found.conflict1153
  %bound01154 = icmp ult ptr %scevgep1145, %scevgep1148
  %bound11155 = icmp ult ptr %scevgep1147, %scevgep1146
  %found.conflict1156 = and i1 %bound01154, %bound11155
  %conflict.rdx1157 = or i1 %conflict.rdx, %found.conflict1156
  %bound01158 = icmp ult ptr %scevgep1145, %scevgep1146
  %conflict.rdx1160 = or i1 %conflict.rdx1157, %bound01158
  %bound01161 = icmp ult ptr %scevgep1145, %scevgep1150
  %bound11162 = icmp ult ptr %scevgep1149, %scevgep1146
  %found.conflict1163 = and i1 %bound01161, %bound11162
  %conflict.rdx1164 = or i1 %conflict.rdx1160, %found.conflict1163
  br i1 %conflict.rdx1164, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %276, 8589934588
  %ind.end = sub i64 %indvars.iv1048, %n.vec
  %broadcast.splat = shufflevector <2 x float> %307, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  %broadcast.splat1169 = shufflevector <2 x float> %307, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1181 = shufflevector <2 x float> %300, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  %broadcast.splat1183 = shufflevector <2 x float> %300, <2 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = sub i64 %indvars.iv1048, %index
  %342 = add nuw nsw i64 %offset.idx, %311
  %gep1321 = getelementptr %struct.complex, ptr %invariant.gep1320, i64 %offset.idx
  %wide.vec = load <8 x float>, ptr %gep1321, align 4, !tbaa !14
  %strided.vec = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %reverse = shufflevector <4 x float> %strided.vec, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %strided.vec1166 = shufflevector <8 x float> %wide.vec, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %reverse1167 = shufflevector <4 x float> %strided.vec1166, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %343 = fneg <4 x float> %reverse1167
  %344 = fmul <4 x float> %broadcast.splat, %343
  %345 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %reverse, <4 x float> %broadcast.splat1169, <4 x float> %344)
  %346 = fmul <4 x float> %broadcast.splat1169, %reverse1167
  %347 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %reverse, <4 x float> %broadcast.splat, <4 x float> %346)
  %gep1323 = getelementptr %struct.complex, ptr %invariant.gep1322, i64 %342
  %wide.vec1170 = load <8 x float>, ptr %gep1323, align 4, !tbaa !14
  %strided.vec1171 = shufflevector <8 x float> %wide.vec1170, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %reverse1172 = shufflevector <4 x float> %strided.vec1171, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %strided.vec1173 = shufflevector <8 x float> %wide.vec1170, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %reverse1174 = shufflevector <4 x float> %strided.vec1173, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %348 = fsub <4 x float> %reverse1172, %345
  %349 = fsub <4 x float> %reverse1174, %347
  %gep1325 = getelementptr %struct.complex, ptr %invariant.gep1324, i64 %offset.idx
  %wide.vec1175 = load <8 x float>, ptr %gep1325, align 4, !tbaa !14
  %strided.vec1176 = shufflevector <8 x float> %wide.vec1175, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %reverse1177 = shufflevector <4 x float> %strided.vec1176, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %strided.vec1178 = shufflevector <8 x float> %wide.vec1175, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %reverse1179 = shufflevector <4 x float> %strided.vec1178, <4 x float> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
  %350 = fneg <4 x float> %reverse1179
  %351 = fmul <4 x float> %broadcast.splat1181, %350
  %352 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %reverse1177, <4 x float> %broadcast.splat1183, <4 x float> %351)
  %353 = fmul <4 x float> %broadcast.splat1183, %reverse1179
  %354 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %reverse1177, <4 x float> %broadcast.splat1181, <4 x float> %353)
  %355 = fsub <4 x float> %348, %352
  %356 = fsub <4 x float> %349, %354
  %gep1327 = getelementptr %struct.complex, ptr %invariant.gep1326, i64 %342, i32 1
  %interleaved.vec = shufflevector <4 x float> %355, <4 x float> %356, <8 x i32> <i32 3, i32 7, i32 2, i32 6, i32 1, i32 5, i32 0, i32 4>
  store <8 x float> %interleaved.vec, ptr %gep1327, align 4, !tbaa !14
  %index.next = add nuw i64 %index, 4
  %357 = icmp eq i64 %index.next, %n.vec
  br i1 %357, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %276, %n.vec
  %358 = shufflevector <4 x float> %348, <4 x float> %349, <2 x i32> <i32 3, i32 7>
  %359 = shufflevector <4 x float> %355, <4 x float> %356, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n, label %.loopexit1282, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %vector.scevcheck, %272
  %indvars.iv1050.ph = phi i64 [ %indvars.iv1048, %vector.memcheck ], [ %indvars.iv1048, %vector.scevcheck ], [ %indvars.iv1048, %272 ], [ %ind.end, %middle.block ]
  %invariant.gep1328 = getelementptr %struct.complex, ptr %14, i64 %311
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph.preheader, %scalar.ph
  %indvars.iv1050 = phi i64 [ %indvars.iv.next1051, %scalar.ph ], [ %indvars.iv1050.ph, %scalar.ph.preheader ]
  %gep1084 = getelementptr %struct.complex, ptr %invariant.gep1083, i64 %indvars.iv1050
  %360 = load float, ptr %gep1084, align 4, !tbaa !9
  %361 = getelementptr inbounds i8, ptr %gep1084, i64 4
  %362 = load float, ptr %361, align 4, !tbaa !16
  %363 = fneg float %362
  %gep1329 = getelementptr %struct.complex, ptr %invariant.gep1328, i64 %indvars.iv1050
  %364 = insertelement <2 x float> poison, float %362, i64 0
  %365 = insertelement <2 x float> %364, float %363, i64 1
  %366 = fmul <2 x float> %307, %365
  %367 = shufflevector <2 x float> %366, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %368 = insertelement <2 x float> poison, float %360, i64 0
  %369 = shufflevector <2 x float> %368, <2 x float> poison, <2 x i32> zeroinitializer
  %370 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %369, <2 x float> %307, <2 x float> %367)
  %371 = load <2 x float>, ptr %gep1329, align 4, !tbaa !14
  %372 = fsub <2 x float> %371, %370
  %gep1086 = getelementptr %struct.complex, ptr %invariant.gep1085, i64 %indvars.iv1050
  %373 = load float, ptr %gep1086, align 4, !tbaa !9
  %374 = getelementptr inbounds i8, ptr %gep1086, i64 4
  %375 = load float, ptr %374, align 4, !tbaa !16
  %376 = fneg float %375
  %377 = insertelement <2 x float> poison, float %375, i64 0
  %378 = insertelement <2 x float> %377, float %376, i64 1
  %379 = fmul <2 x float> %300, %378
  %380 = shufflevector <2 x float> %379, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %381 = insertelement <2 x float> poison, float %373, i64 0
  %382 = shufflevector <2 x float> %381, <2 x float> poison, <2 x i32> zeroinitializer
  %383 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %382, <2 x float> %300, <2 x float> %380)
  %384 = fsub <2 x float> %372, %383
  store <2 x float> %384, ptr %gep1329, align 4, !tbaa !14
  %indvars.iv.next1051 = add nsw i64 %indvars.iv1050, -1
  %385 = trunc nuw i64 %indvars.iv1050 to i32
  %386 = icmp sgt i32 %385, 1
  br i1 %386, label %scalar.ph, label %.loopexit1282, !llvm.loop !20

.loopexit1282:                                    ; preds = %scalar.ph, %middle.block
  %387 = phi <2 x float> [ %358, %middle.block ], [ %372, %scalar.ph ]
  %388 = phi <2 x float> [ %359, %middle.block ], [ %384, %scalar.ph ]
  store <2 x float> %307, ptr %gep1331, align 4, !tbaa !14
  store <2 x float> %300, ptr %291, align 4, !tbaa !14
  %389 = icmp sgt i64 %indvars.iv1048, 1
  %indvar.next = add i32 %indvar, 1
  %indvar.next1110 = add i64 %indvar1109, 1
  %scev.check.iv.next = add i64 %scev.check.iv, %289
  br i1 %389, label %272, label %..loopexit960_crit_edge, !llvm.loop !21

390:                                              ; preds = %.thread899, %72, %69
  %.1834.ph = phi i32 [ %.0825985, %69 ], [ %.0825985, %72 ], [ %.0833892897903, %.thread899 ]
  %391 = zext nneg i32 %.0825985 to i64
  %392 = getelementptr inbounds i32, ptr %13, i64 %391
  store i32 %.1834.ph, ptr %392, align 4, !tbaa !5
  br label %398

..loopexit960_crit_edge:                          ; preds = %.loopexit1282
  %393 = trunc nuw i64 %290 to i32
  store i32 %393, ptr %6, align 4, !tbaa !5
  store <2 x float> %387, ptr %8, align 8, !tbaa !14
  store <2 x float> %388, ptr %7, align 8, !tbaa !14
  br label %.loopexit960

.loopexit960:                                     ; preds = %..loopexit960_crit_edge, %193
  %394 = sub nsw i32 0, %.1
  %395 = zext nneg i32 %.0825985 to i64
  %396 = getelementptr inbounds i32, ptr %13, i64 %395
  store i32 %394, ptr %396, align 4, !tbaa !5
  %397 = getelementptr i8, ptr %396, i64 -4
  store i32 %394, ptr %397, align 4, !tbaa !5
  br label %398

398:                                              ; preds = %.loopexit960, %390
  %.1828.neg917 = phi i32 [ -2, %.loopexit960 ], [ -1, %390 ]
  %.1850914 = phi i32 [ %spec.select, %.loopexit960 ], [ %.0831984, %390 ]
  %399 = add nsw i32 %.1828.neg917, %.0825985
  %400 = sub nsw i32 %.1850914, %399
  %401 = icmp slt i32 %399, 1
  br i1 %401, label %.loopexit959, label %33

402:                                              ; preds = %25
  %403 = add nuw nsw i32 %19, 1
  %404 = mul nuw nsw i32 %403, %19
  %405 = lshr i32 %404, 1
  %invariant.gep = getelementptr i8, ptr %2, i64 8
  %406 = icmp eq i32 %19, 0
  br i1 %406, label %.loopexit959, label %.lr.ph1030

.lr.ph1030:                                       ; preds = %402
  %407 = getelementptr inbounds i8, ptr %7, i64 4
  %invariant.gep1350 = getelementptr i8, ptr %14, i64 8
  %invariant.gep1352 = getelementptr i8, ptr %2, i64 8
  %invariant.gep1354 = getelementptr i8, ptr %2, i64 12
  %invariant.gep1356 = getelementptr i8, ptr %2, i64 8
  %invariant.gep1358 = getelementptr i8, ptr %2, i64 12
  %invariant.gep1360 = getelementptr i8, ptr %2, i64 8
  %invariant.gep1362 = getelementptr i8, ptr %2, i64 12
  %invariant.gep1364 = getelementptr i8, ptr %2, i64 16
  %invariant.gep1366 = getelementptr i8, ptr %2, i64 16
  %invariant.gep1368 = getelementptr i8, ptr %2, i64 16
  %invariant.gep1370 = getelementptr i8, ptr %2, i64 12
  %invariant.gep1372 = getelementptr i8, ptr %2, i64 12
  %invariant.gep1374 = getelementptr i8, ptr %2, i64 12
  %invariant.gep1376 = getelementptr i8, ptr %2, i64 8
  %invariant.gep1378 = getelementptr i8, ptr %2, i64 8
  %invariant.gep1380 = getelementptr i8, ptr %2, i64 8
  br label %408

408:                                              ; preds = %.lr.ph1030, %823
  %.1826.neg1028 = phi i32 [ -1, %.lr.ph1030 ], [ %.1826.neg, %823 ]
  %.21027 = phi i32 [ undef, %.lr.ph1030 ], [ %.3, %823 ]
  %.18261024 = phi i32 [ 1, %.lr.ph1030 ], [ %824, %823 ]
  %.18321023 = phi i32 [ 1, %.lr.ph1030 ], [ %828, %823 ]
  store i32 %.18321023, ptr %6, align 4, !tbaa !5
  %409 = sext i32 %.18321023 to i64
  %410 = getelementptr inbounds %struct.complex, ptr %14, i64 %409
  %411 = load float, ptr %410, align 4, !tbaa !9
  %412 = fcmp oge float %411, 0.000000e+00
  %413 = fneg float %411
  %414 = select i1 %412, float %411, float %413
  %415 = call <2 x float> @Cf(ptr noundef nonnull %410)
  %.sroa.020.4.vec.extract = extractelement <2 x float> %415, i64 1
  %416 = fcmp oge float %.sroa.020.4.vec.extract, 0.000000e+00
  %417 = fneg float %.sroa.020.4.vec.extract
  %418 = select i1 %416, float %.sroa.020.4.vec.extract, float %417
  %419 = fadd float %414, %418
  %420 = load i32, ptr %1, align 4, !tbaa !5
  %421 = icmp slt i32 %.18261024, %420
  br i1 %421, label %422, label %440

422:                                              ; preds = %408
  %423 = sub nsw i32 %420, %.18261024
  store i32 %423, ptr %6, align 4, !tbaa !5
  %424 = getelementptr i8, ptr %410, i64 8
  %425 = call i32 @icamax_(ptr noundef nonnull %6, ptr noundef %424, ptr noundef nonnull @c__1) #6
  %426 = add nsw i32 %425, %.18261024
  %427 = add i32 %.1826.neg1028, %.18321023
  %428 = add i32 %427, %426
  store i32 %428, ptr %6, align 4, !tbaa !5
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds %struct.complex, ptr %14, i64 %429
  %431 = load float, ptr %430, align 4, !tbaa !9
  %432 = fcmp oge float %431, 0.000000e+00
  %433 = fneg float %431
  %434 = select i1 %432, float %431, float %433
  %435 = call <2 x float> @Cf(ptr noundef nonnull %430)
  %.sroa.019.4.vec.extract = extractelement <2 x float> %435, i64 1
  %436 = fcmp oge float %.sroa.019.4.vec.extract, 0.000000e+00
  %437 = fneg float %.sroa.019.4.vec.extract
  %438 = select i1 %436, float %.sroa.019.4.vec.extract, float %437
  %439 = fadd float %434, %438
  br label %440

440:                                              ; preds = %408, %422
  %.1842 = phi float [ %439, %422 ], [ 0.000000e+00, %408 ]
  %.3 = phi i32 [ %426, %422 ], [ %.21027, %408 ]
  %441 = sub i32 0, %.3
  %442 = fcmp oge float %419, %.1842
  %443 = select i1 %442, float %419, float %.1842
  %444 = fcmp oeq float %443, 0.000000e+00
  br i1 %444, label %445, label %449

445:                                              ; preds = %440
  %446 = load i32, ptr %4, align 4, !tbaa !5
  %447 = icmp eq i32 %446, 0
  br i1 %447, label %448, label %817

448:                                              ; preds = %445
  store i32 %.18261024, ptr %4, align 4, !tbaa !5
  br label %817

449:                                              ; preds = %440
  %450 = fmul float %.1842, 0x3FE47E0F60000000
  %451 = fcmp ult float %419, %450
  br i1 %451, label %452, label %.thread934

452:                                              ; preds = %449
  %453 = add i32 %.1826.neg1028, %.18321023
  %454 = add i32 %453, %.3
  %455 = add nsw i32 %.3, -1
  store i32 %455, ptr %6, align 4, !tbaa !5
  %.not870991.not = icmp slt i32 %.18261024, %.3
  br i1 %.not870991.not, label %.lr.ph996, label %.._crit_edge997_crit_edge

.._crit_edge997_crit_edge:                        ; preds = %452
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge997

.lr.ph996:                                        ; preds = %452, %478
  %.3824994 = phi i32 [ %482, %478 ], [ %.18261024, %452 ]
  %.2839993 = phi i32 [ %481, %478 ], [ %454, %452 ]
  %.3846992 = phi float [ %.4847, %478 ], [ 0.000000e+00, %452 ]
  %456 = sext i32 %.2839993 to i64
  %457 = getelementptr inbounds %struct.complex, ptr %14, i64 %456
  %458 = load float, ptr %457, align 4, !tbaa !9
  %459 = fcmp oge float %458, 0.000000e+00
  %460 = fneg float %458
  %461 = select i1 %459, float %458, float %460
  %462 = call <2 x float> @Cf(ptr noundef nonnull %457)
  %.sroa.018.4.vec.extract = extractelement <2 x float> %462, i64 1
  %463 = fcmp oge float %.sroa.018.4.vec.extract, 0.000000e+00
  %464 = fneg float %.sroa.018.4.vec.extract
  %465 = select i1 %463, float %.sroa.018.4.vec.extract, float %464
  %466 = fadd float %461, %465
  %467 = fcmp ogt float %466, %.3846992
  br i1 %467, label %468, label %478

468:                                              ; preds = %.lr.ph996
  %469 = load float, ptr %457, align 4, !tbaa !9
  %470 = fcmp oge float %469, 0.000000e+00
  %471 = fneg float %469
  %472 = select i1 %470, float %469, float %471
  %473 = call <2 x float> @Cf(ptr noundef nonnull %457)
  %.sroa.017.4.vec.extract = extractelement <2 x float> %473, i64 1
  %474 = fcmp oge float %.sroa.017.4.vec.extract, 0.000000e+00
  %475 = fneg float %.sroa.017.4.vec.extract
  %476 = select i1 %474, float %.sroa.017.4.vec.extract, float %475
  %477 = fadd float %472, %476
  br label %478

478:                                              ; preds = %468, %.lr.ph996
  %.4847 = phi float [ %477, %468 ], [ %.3846992, %.lr.ph996 ]
  %479 = load i32, ptr %1, align 4, !tbaa !5
  %480 = sub i32 %.2839993, %.3824994
  %481 = add i32 %480, %479
  %482 = add nuw nsw i32 %.3824994, 1
  %483 = load i32, ptr %6, align 4, !tbaa !5
  %.not870.not = icmp slt i32 %.3824994, %483
  br i1 %.not870.not, label %.lr.ph996, label %._crit_edge997, !llvm.loop !22

._crit_edge997:                                   ; preds = %478, %.._crit_edge997_crit_edge
  %484 = phi i32 [ %.pre, %.._crit_edge997_crit_edge ], [ %479, %478 ]
  %.3846.lcssa = phi float [ 0.000000e+00, %.._crit_edge997_crit_edge ], [ %.4847, %478 ]
  %485 = sub nsw i32 %484, %.3
  %486 = add nsw i32 %485, 1
  %487 = add nsw i32 %485, 2
  %488 = mul nsw i32 %486, %487
  %.neg = sdiv i32 %488, -2
  %489 = add nsw i32 %.neg, %405
  %490 = add nsw i32 %489, 1
  %491 = icmp slt i32 %.3, %484
  br i1 %491, label %492, label %509

492:                                              ; preds = %._crit_edge997
  store i32 %485, ptr %6, align 4, !tbaa !5
  %493 = sext i32 %489 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %493
  %494 = call i32 @icamax_(ptr noundef nonnull %6, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  %495 = add i32 %494, %490
  store i32 %495, ptr %6, align 4, !tbaa !5
  %496 = sext i32 %495 to i64
  %497 = getelementptr inbounds %struct.complex, ptr %14, i64 %496
  %498 = load float, ptr %497, align 4, !tbaa !9
  %499 = fcmp oge float %498, 0.000000e+00
  %500 = fneg float %498
  %501 = select i1 %499, float %498, float %500
  %502 = call <2 x float> @Cf(ptr noundef nonnull %497)
  %.sroa.016.4.vec.extract = extractelement <2 x float> %502, i64 1
  %503 = fcmp oge float %.sroa.016.4.vec.extract, 0.000000e+00
  %504 = fneg float %.sroa.016.4.vec.extract
  %505 = select i1 %503, float %.sroa.016.4.vec.extract, float %504
  %506 = fadd float %501, %505
  %507 = fcmp oge float %.3846.lcssa, %506
  %508 = select i1 %507, float %.3846.lcssa, float %506
  br label %509

509:                                              ; preds = %492, %._crit_edge997
  %.5848 = phi float [ %508, %492 ], [ %.3846.lcssa, %._crit_edge997 ]
  %510 = fdiv float %.1842, %.5848
  %511 = fmul float %450, %510
  %512 = fcmp ult float %419, %511
  br i1 %512, label %513, label %.thread934

513:                                              ; preds = %509
  store i32 %490, ptr %6, align 4, !tbaa !5
  %514 = sext i32 %490 to i64
  %515 = getelementptr inbounds %struct.complex, ptr %14, i64 %514
  %516 = load float, ptr %515, align 4, !tbaa !9
  %517 = fcmp oge float %516, 0.000000e+00
  %518 = fneg float %516
  %519 = select i1 %517, float %516, float %518
  %520 = call <2 x float> @Cf(ptr noundef nonnull %515)
  %.sroa.015.4.vec.extract = extractelement <2 x float> %520, i64 1
  %521 = fcmp oge float %.sroa.015.4.vec.extract, 0.000000e+00
  %522 = fneg float %.sroa.015.4.vec.extract
  %523 = select i1 %521, float %.sroa.015.4.vec.extract, float %522
  %524 = fadd float %519, %523
  %525 = fmul float %.5848, 0x3FE47E0F60000000
  %526 = fcmp ult float %524, %525
  %.883 = select i1 %526, i32 2, i32 1
  %527 = add nuw i32 %.883, %.18261024
  %528 = add nsw i32 %527, -1
  %.neg957 = sub i32 1, %527
  br i1 %526, label %529, label %.thread1065

529:                                              ; preds = %513
  %530 = load i32, ptr %1, align 4, !tbaa !5
  %531 = add i32 %.18321023, 1
  %532 = add i32 %531, %.1826.neg1028
  %533 = add i32 %532, %530
  %.not871 = icmp eq i32 %.3, %528
  br i1 %.not871, label %611, label %534

.thread1065:                                      ; preds = %513
  %.not8711067 = icmp eq i32 %.3, %528
  br i1 %.not8711067, label %.thread934, label %534

534:                                              ; preds = %.thread1065, %529
  %.28511068 = phi i32 [ %.18321023, %.thread1065 ], [ %533, %529 ]
  %535 = load i32, ptr %1, align 4, !tbaa !5
  %536 = icmp slt i32 %.3, %535
  br i1 %536, label %537, label %542

537:                                              ; preds = %534
  %538 = sub nsw i32 %535, %.3
  store i32 %538, ptr %6, align 4, !tbaa !5
  %539 = add i32 %.neg957, %.3
  %540 = add i32 %539, %.28511068
  %541 = sext i32 %540 to i64
  %gep1017 = getelementptr %struct.complex, ptr %2, i64 %541
  %gep1019 = getelementptr %struct.complex, ptr %2, i64 %514
  call void @cswap_(ptr noundef nonnull %6, ptr noundef %gep1017, ptr noundef nonnull @c__1, ptr noundef %gep1019, ptr noundef nonnull @c__1) #6
  br label %542

542:                                              ; preds = %537, %534
  %.not872.not999 = icmp slt i32 %527, %.3
  br i1 %.not872.not999, label %.lr.ph1003, label %._crit_edge1004

.lr.ph1003:                                       ; preds = %542
  %543 = add i32 %.neg957, %.3
  %544 = add i32 %543, %.28511068
  %545 = load i32, ptr %1, align 4, !tbaa !5
  %546 = add i32 %.28511068, %.neg957
  %547 = sext i32 %527 to i64
  %548 = sext i32 %.3 to i64
  %549 = sub nsw i64 %548, %547
  %xtraiter = and i64 %549, 1
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.prol.loopexit, label %.prol.loopexit.unr-lcssa

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph1003
  %550 = add i32 %544, 1
  %551 = sub i32 %550, %527
  %552 = add i32 %551, %545
  %553 = add i32 %.28511068, 1
  %554 = sext i32 %553 to i64
  %555 = getelementptr inbounds %struct.complex, ptr %14, i64 %554
  %556 = sext i32 %552 to i64
  %557 = getelementptr inbounds %struct.complex, ptr %14, i64 %556
  %558 = load <2 x float>, ptr %555, align 4, !tbaa !14
  %559 = load <2 x float>, ptr %557, align 4, !tbaa !14
  store <2 x float> %559, ptr %555, align 4, !tbaa !14
  store <2 x float> %558, ptr %557, align 4, !tbaa !14
  %indvars.iv.next1055.prol = add nuw nsw i64 %547, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph1003
  %indvars.iv1054.unr = phi i64 [ %547, %.lr.ph1003 ], [ %indvars.iv.next1055.prol, %.prol.loopexit.unr-lcssa ]
  %.38401000.unr = phi i32 [ %544, %.lr.ph1003 ], [ %552, %.prol.loopexit.unr-lcssa ]
  %560 = add nsw i64 %548, -1
  %561 = icmp eq i64 %560, %547
  br i1 %561, label %._crit_edge1004, label %.lr.ph1003.new

.lr.ph1003.new:                                   ; preds = %.prol.loopexit, %.lr.ph1003.new
  %indvars.iv1054 = phi i64 [ %indvars.iv.next1055.1, %.lr.ph1003.new ], [ %indvars.iv1054.unr, %.prol.loopexit ]
  %.38401000 = phi i32 [ %576, %.lr.ph1003.new ], [ %.38401000.unr, %.prol.loopexit ]
  %562 = add i32 %.38401000, 1
  %563 = trunc nsw i64 %indvars.iv1054 to i32
  %564 = sub i32 %562, %563
  %565 = add i32 %564, %545
  %566 = add i32 %546, %563
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds %struct.complex, ptr %14, i64 %567
  %569 = sext i32 %565 to i64
  %570 = getelementptr inbounds %struct.complex, ptr %14, i64 %569
  %571 = load <2 x float>, ptr %568, align 4, !tbaa !14
  %572 = load <2 x float>, ptr %570, align 4, !tbaa !14
  store <2 x float> %572, ptr %568, align 4, !tbaa !14
  store <2 x float> %571, ptr %570, align 4, !tbaa !14
  %573 = trunc i64 %indvars.iv1054 to i32
  %574 = add i32 %573, 1
  %575 = sub i32 %565, %573
  %576 = add i32 %575, %545
  %577 = add i32 %546, %574
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.complex, ptr %14, i64 %578
  %580 = sext i32 %576 to i64
  %581 = getelementptr inbounds %struct.complex, ptr %14, i64 %580
  %582 = load <2 x float>, ptr %579, align 4, !tbaa !14
  %583 = load <2 x float>, ptr %581, align 4, !tbaa !14
  store <2 x float> %583, ptr %579, align 4, !tbaa !14
  store <2 x float> %582, ptr %581, align 4, !tbaa !14
  %indvars.iv.next1055.1 = add nuw nsw i64 %indvars.iv1054, 2
  %.not872.not.1 = icmp slt i64 %indvars.iv.next1055.1, %548
  br i1 %.not872.not.1, label %.lr.ph1003.new, label %._crit_edge1004, !llvm.loop !23

._crit_edge1004:                                  ; preds = %.prol.loopexit, %.lr.ph1003.new, %542
  %584 = sext i32 %.28511068 to i64
  %585 = getelementptr inbounds %struct.complex, ptr %14, i64 %584
  %586 = load <2 x float>, ptr %585, align 4, !tbaa !14
  store <2 x float> %586, ptr %9, align 8, !tbaa !14
  %587 = load <2 x float>, ptr %515, align 4, !tbaa !14
  store <2 x float> %587, ptr %585, align 4, !tbaa !14
  store i32 %490, ptr %6, align 4, !tbaa !5
  store <2 x float> %586, ptr %515, align 4, !tbaa !14
  br i1 %526, label %588, label %.thread934

588:                                              ; preds = %._crit_edge1004
  %589 = sext i32 %.18321023 to i64
  %gep1351 = getelementptr %struct.complex, ptr %invariant.gep1350, i64 %589
  %590 = load <2 x float>, ptr %gep1351, align 4, !tbaa !14
  store <2 x float> %590, ptr %9, align 8, !tbaa !14
  %591 = sext i32 %454 to i64
  %592 = getelementptr inbounds %struct.complex, ptr %14, i64 %591
  %593 = load <2 x float>, ptr %592, align 4, !tbaa !14
  store <2 x float> %593, ptr %gep1351, align 4, !tbaa !14
  store i32 %454, ptr %6, align 4, !tbaa !5
  store <2 x float> %590, ptr %592, align 4, !tbaa !14
  br label %611

.thread934:                                       ; preds = %.thread1065, %._crit_edge1004, %509, %449
  %.2835925931940 = phi i32 [ %.18261024, %449 ], [ %.18261024, %509 ], [ %.3, %._crit_edge1004 ], [ %.3, %.thread1065 ]
  %.2851933938 = phi i32 [ %.18321023, %449 ], [ %.18321023, %509 ], [ %.28511068, %._crit_edge1004 ], [ %.18321023, %.thread1065 ]
  %594 = load i32, ptr %1, align 4, !tbaa !5
  %595 = icmp slt i32 %.18261024, %594
  br i1 %595, label %596, label %817

596:                                              ; preds = %.thread934
  %597 = call <2 x float> @Cf(ptr noundef nonnull @c_b1)
  %.sroa.014.0.vec.extract = extractelement <2 x float> %597, i64 0
  %.sroa.014.4.vec.extract = extractelement <2 x float> %597, i64 1
  %598 = call <2 x float> @Cf(ptr noundef nonnull %410)
  %.sroa.013.0.vec.extract = extractelement <2 x float> %598, i64 0
  %.sroa.013.4.vec.extract = extractelement <2 x float> %598, i64 1
  %599 = call <2 x float> @__divsc3(float noundef %.sroa.014.0.vec.extract, float noundef %.sroa.014.4.vec.extract, float noundef %.sroa.013.0.vec.extract, float noundef %.sroa.013.4.vec.extract) #6
  %600 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %599, ptr %600, align 4
  %601 = load <2 x float>, ptr %7, align 8, !tbaa !14
  store <2 x float> %601, ptr %10, align 8, !tbaa !14
  %602 = load i32, ptr %1, align 4, !tbaa !5
  %603 = sub nsw i32 %602, %.18261024
  store i32 %603, ptr %6, align 4, !tbaa !5
  %604 = fneg <2 x float> %601
  store <2 x float> %604, ptr %7, align 8, !tbaa !14
  %605 = getelementptr i8, ptr %410, i64 8
  %606 = add i32 %.1826.neg1028, %.18321023
  %607 = add i32 %606, %602
  %608 = sext i32 %607 to i64
  %gep1021 = getelementptr %struct.complex, ptr %2, i64 %608
  call void @cspr_(ptr noundef %0, ptr noundef nonnull %6, ptr noundef nonnull %7, ptr noundef %605, ptr noundef nonnull @c__1, ptr noundef %gep1021) #6
  %609 = load i32, ptr %1, align 4, !tbaa !5
  %610 = sub nsw i32 %609, %.18261024
  store i32 %610, ptr %6, align 4, !tbaa !5
  call void @cscal_(ptr noundef nonnull %6, ptr noundef nonnull %10, ptr noundef %605, ptr noundef nonnull @c__1) #6
  br label %817

611:                                              ; preds = %529, %588
  %.28511070 = phi i32 [ %.28511068, %588 ], [ %533, %529 ]
  %612 = load i32, ptr %1, align 4, !tbaa !5
  %613 = add nsw i32 %612, -1
  %614 = icmp slt i32 %.18261024, %613
  br i1 %614, label %615, label %.loopexit

615:                                              ; preds = %611
  %616 = add nuw nsw i32 %.18261024, 1
  %617 = add nsw i32 %.18261024, -1
  %618 = shl i32 %612, 1
  %619 = sub nsw i32 %618, %.18261024
  %620 = mul nsw i32 %619, %617
  %621 = sdiv i32 %620, 2
  %622 = add nsw i32 %621, %616
  store i32 %622, ptr %6, align 4, !tbaa !5
  %623 = sext i32 %622 to i64
  %624 = getelementptr inbounds %struct.complex, ptr %14, i64 %623
  %625 = load <2 x float>, ptr %624, align 4, !tbaa !14
  store <2 x float> %625, ptr %12, align 8, !tbaa !14
  %626 = xor i32 %.18261024, -1
  %627 = add i32 %618, %626
  %628 = mul nsw i32 %627, %.18261024
  %629 = sdiv i32 %628, 2
  %630 = add nsw i32 %629, %616
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds %struct.complex, ptr %14, i64 %631
  %633 = call <2 x float> @Cf(ptr noundef nonnull %632)
  %.sroa.011.0.vec.extract = extractelement <2 x float> %633, i64 0
  %.sroa.011.4.vec.extract = extractelement <2 x float> %633, i64 1
  %634 = call <2 x float> @Cf(ptr noundef nonnull %12)
  %.sroa.010.0.vec.extract = extractelement <2 x float> %634, i64 0
  %.sroa.010.4.vec.extract = extractelement <2 x float> %634, i64 1
  %635 = call <2 x float> @__divsc3(float noundef %.sroa.011.0.vec.extract, float noundef %.sroa.011.4.vec.extract, float noundef %.sroa.010.0.vec.extract, float noundef %.sroa.010.4.vec.extract) #6
  %636 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %635, ptr %636, align 4
  %637 = load float, ptr %7, align 8, !tbaa !9
  %638 = load float, ptr %407, align 4, !tbaa !16
  %639 = load i32, ptr %1, align 4, !tbaa !5
  %640 = shl i32 %639, 1
  %641 = sub nsw i32 %640, %.18261024
  %642 = mul nsw i32 %641, %617
  %643 = sdiv i32 %642, 2
  %644 = add nsw i32 %643, %.18261024
  %645 = sext i32 %644 to i64
  %646 = getelementptr inbounds %struct.complex, ptr %14, i64 %645
  %647 = call <2 x float> @Cf(ptr noundef nonnull %646)
  %.sroa.08.0.vec.extract = extractelement <2 x float> %647, i64 0
  %.sroa.08.4.vec.extract = extractelement <2 x float> %647, i64 1
  %648 = call <2 x float> @Cf(ptr noundef nonnull %12)
  %.sroa.07.0.vec.extract = extractelement <2 x float> %648, i64 0
  %.sroa.07.4.vec.extract = extractelement <2 x float> %648, i64 1
  %649 = call <2 x float> @__divsc3(float noundef %.sroa.08.0.vec.extract, float noundef %.sroa.08.4.vec.extract, float noundef %.sroa.07.0.vec.extract, float noundef %.sroa.07.4.vec.extract) #6
  %650 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %649, ptr %650, align 4
  %651 = fneg float %638
  %652 = load <2 x float>, ptr %7, align 8, !tbaa !14
  %653 = insertelement <2 x float> poison, float %638, i64 0
  %654 = insertelement <2 x float> %653, float %651, i64 1
  %655 = fmul <2 x float> %652, %654
  %656 = shufflevector <2 x float> %655, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %657 = insertelement <2 x float> poison, float %637, i64 0
  %658 = shufflevector <2 x float> %657, <2 x float> poison, <2 x i32> zeroinitializer
  %659 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %658, <2 x float> %652, <2 x float> %656)
  %660 = fadd <2 x float> %659, <float -1.000000e+00, float 0.000000e+00>
  store <2 x float> %660, ptr %8, align 8, !tbaa !14
  %661 = call <2 x float> @Cf(ptr noundef nonnull @c_b1)
  %.sroa.05.0.vec.extract = extractelement <2 x float> %661, i64 0
  %.sroa.05.4.vec.extract = extractelement <2 x float> %661, i64 1
  %662 = call <2 x float> @Cf(ptr noundef nonnull %8)
  %.sroa.04.0.vec.extract = extractelement <2 x float> %662, i64 0
  %.sroa.04.4.vec.extract = extractelement <2 x float> %662, i64 1
  %663 = call <2 x float> @__divsc3(float noundef %.sroa.05.0.vec.extract, float noundef %.sroa.05.4.vec.extract, float noundef %.sroa.04.0.vec.extract, float noundef %.sroa.04.4.vec.extract) #6
  %664 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %663, ptr %664, align 4
  %665 = load <2 x float>, ptr %7, align 8, !tbaa !14
  store <2 x float> %665, ptr %9, align 8, !tbaa !14
  %666 = call <2 x float> @Cf(ptr noundef nonnull %9)
  %.sroa.02.0.vec.extract = extractelement <2 x float> %666, i64 0
  %.sroa.02.4.vec.extract = extractelement <2 x float> %666, i64 1
  %667 = call <2 x float> @Cf(ptr noundef nonnull %12)
  %.sroa.01.0.vec.extract = extractelement <2 x float> %667, i64 0
  %.sroa.01.4.vec.extract = extractelement <2 x float> %667, i64 1
  %668 = call <2 x float> @__divsc3(float noundef %.sroa.02.0.vec.extract, float noundef %.sroa.02.4.vec.extract, float noundef %.sroa.01.0.vec.extract, float noundef %.sroa.01.4.vec.extract) #6
  %669 = call ptr @_pCf(ptr noundef nonnull %7)
  store <2 x float> %668, ptr %669, align 4
  %670 = load <2 x float>, ptr %7, align 8, !tbaa !14
  store <2 x float> %670, ptr %12, align 8, !tbaa !14
  %671 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %671, ptr %6, align 4, !tbaa !5
  %672 = add nuw nsw i32 %.18261024, 2
  %.not8731012 = icmp sgt i32 %672, %671
  br i1 %.not8731012, label %.loopexit, label %.lr.ph1015

.lr.ph1015:                                       ; preds = %615
  %673 = shl i32 %671, 1
  %674 = sub nsw i32 %673, %.18261024
  %675 = mul nsw i32 %674, %617
  %676 = sdiv i32 %675, 2
  %677 = add nsw i32 %674, -1
  %678 = mul nsw i32 %677, %.18261024
  %679 = sdiv i32 %678, 2
  %680 = add i32 %673, %626
  %681 = mul nsw i32 %680, %.18261024
  %682 = sdiv i32 %681, 2
  %683 = zext nneg i32 %672 to i64
  %684 = sext i32 %676 to i64
  %685 = sext i32 %682 to i64
  %686 = sext i32 %671 to i64
  %687 = sext i32 %679 to i64
  %688 = add i32 %671, 1
  %invariant.gep1093 = getelementptr %struct.complex, ptr %14, i64 %684
  %invariant.gep1095 = getelementptr %struct.complex, ptr %14, i64 %687
  %invariant.gep1087 = getelementptr %struct.complex, ptr %14, i64 %684
  %invariant.gep1091 = getelementptr %struct.complex, ptr %14, i64 %685
  %invariant.gep1097 = getelementptr %struct.complex, ptr %14, i64 %685
  %689 = zext nneg i32 %.18261024 to i64
  %690 = shl nuw nsw i64 %689, 3
  %691 = shl nsw i64 %684, 3
  %692 = shl nsw i64 %685, 3
  %693 = zext nneg i32 %.18261024 to i64
  %694 = shl nuw nsw i64 %693, 3
  %695 = shl nsw i64 %684, 3
  %696 = shl nsw i64 %685, 3
  %697 = xor i32 %.18261024, -1
  %698 = sext i32 %697 to i64
  %699 = shufflevector <2 x float> %670, <2 x float> poison, <2 x i32> zeroinitializer
  %700 = shufflevector <2 x float> %652, <2 x float> poison, <2 x i32> zeroinitializer
  %701 = shufflevector <2 x float> %670, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %702 = shufflevector <2 x float> %652, <2 x float> poison, <2 x i32> <i32 1, i32 poison>
  %gep1353 = getelementptr i8, ptr %invariant.gep1352, i64 %694
  %gep1355 = getelementptr i8, ptr %invariant.gep1354, i64 %694
  %gep1357 = getelementptr i8, ptr %invariant.gep1356, i64 %695
  %703 = getelementptr i8, ptr %gep1357, i64 %694
  %gep1359 = getelementptr i8, ptr %invariant.gep1358, i64 %695
  %704 = getelementptr i8, ptr %gep1359, i64 %694
  %gep1361 = getelementptr i8, ptr %invariant.gep1360, i64 %696
  %705 = getelementptr i8, ptr %gep1361, i64 %694
  %gep1363 = getelementptr i8, ptr %invariant.gep1362, i64 %696
  %706 = getelementptr i8, ptr %gep1363, i64 %694
  %gep1365 = getelementptr i8, ptr %invariant.gep1364, i64 %694
  %gep1367 = getelementptr i8, ptr %invariant.gep1366, i64 %695
  %707 = getelementptr i8, ptr %gep1367, i64 %694
  %gep1369 = getelementptr i8, ptr %invariant.gep1368, i64 %696
  %708 = getelementptr i8, ptr %gep1369, i64 %694
  %709 = fneg <2 x float> %670
  %710 = shufflevector <2 x float> %701, <2 x float> %709, <2 x i32> <i32 0, i32 3>
  %711 = fneg <2 x float> %652
  %712 = shufflevector <2 x float> %702, <2 x float> %711, <2 x i32> <i32 0, i32 3>
  %gep1371 = getelementptr i8, ptr %invariant.gep1370, i64 %692
  %713 = getelementptr i8, ptr %gep1371, i64 %690
  %gep1373 = getelementptr i8, ptr %invariant.gep1372, i64 %691
  %714 = getelementptr i8, ptr %gep1373, i64 %690
  %gep1375 = getelementptr i8, ptr %invariant.gep1374, i64 %690
  %gep1377 = getelementptr i8, ptr %invariant.gep1376, i64 %692
  %715 = getelementptr i8, ptr %gep1377, i64 %690
  %gep1379 = getelementptr i8, ptr %invariant.gep1378, i64 %691
  %716 = getelementptr i8, ptr %gep1379, i64 %690
  %gep1381 = getelementptr i8, ptr %invariant.gep1380, i64 %690
  br label %717

717:                                              ; preds = %.lr.ph1015, %.loopexit1281
  %indvar1187 = phi i64 [ 0, %.lr.ph1015 ], [ %indvar.next1188, %.loopexit1281 ]
  %indvars.iv1057 = phi i64 [ %683, %.lr.ph1015 ], [ %indvars.iv.next1058, %.loopexit1281 ]
  %smax1249 = call i64 @llvm.smax.i64(i64 %indvars.iv1057, i64 %686)
  %718 = sub i64 %698, %indvar1187
  %719 = add i64 %smax1249, %718
  %720 = shl nuw nsw i64 %indvar1187, 3
  %scevgep1216 = getelementptr i8, ptr %gep1353, i64 %720
  %scevgep1218 = getelementptr i8, ptr %gep1355, i64 %720
  %smax1219 = call i64 @llvm.smax.i64(i64 %indvars.iv1057, i64 %686)
  %721 = add i64 %indvar1187, %693
  %reass.sub1283 = sub i64 %smax1219, %721
  %722 = shl i64 %reass.sub1283, 3
  %723 = add i64 %722, -16
  %scevgep1221 = getelementptr i8, ptr %703, i64 %720
  %scevgep1222 = getelementptr i8, ptr %704, i64 %720
  %scevgep1223 = getelementptr i8, ptr %scevgep1222, i64 %723
  %scevgep1224 = getelementptr i8, ptr %705, i64 %720
  %scevgep1225 = getelementptr i8, ptr %706, i64 %720
  %scevgep1226 = getelementptr i8, ptr %scevgep1225, i64 %723
  %scevgep1228 = getelementptr i8, ptr %gep1365, i64 %720
  %scevgep1230 = getelementptr i8, ptr %707, i64 %720
  %scevgep1231 = getelementptr i8, ptr %scevgep1230, i64 %723
  %scevgep1232 = getelementptr i8, ptr %708, i64 %720
  %scevgep1233 = getelementptr i8, ptr %scevgep1232, i64 %723
  %indvars1062 = trunc i64 %indvars.iv1057 to i32
  %gep1094 = getelementptr %struct.complex, ptr %invariant.gep1093, i64 %indvars.iv1057
  %gep1096 = getelementptr %struct.complex, ptr %invariant.gep1095, i64 %indvars.iv1057
  %724 = load <2 x float>, ptr %gep1094, align 4, !tbaa !14
  %725 = fmul <2 x float> %724, %654
  %726 = shufflevector <2 x float> %725, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %727 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %658, <2 x float> %724, <2 x float> %726)
  %728 = load <2 x float>, ptr %gep1096, align 4, !tbaa !14
  %729 = fsub <2 x float> %727, %728
  %730 = fmul <2 x float> %729, %710
  %731 = shufflevector <2 x float> %730, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %732 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %699, <2 x float> %729, <2 x float> %731)
  %733 = fmul <2 x float> %728, %712
  %734 = shufflevector <2 x float> %733, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %735 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %700, <2 x float> %728, <2 x float> %734)
  %736 = fsub <2 x float> %735, %724
  %737 = fmul <2 x float> %736, %710
  %738 = shufflevector <2 x float> %737, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %739 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %699, <2 x float> %736, <2 x float> %738)
  %740 = sub nsw i32 %673, %indvars1062
  %741 = trunc i64 %indvars.iv1057 to i32
  %742 = add i32 %741, -1
  %743 = mul nsw i32 %742, %740
  %744 = sdiv i32 %743, 2
  %745 = sext i32 %744 to i64
  %invariant.gep1089 = getelementptr %struct.complex, ptr %14, i64 %745
  %min.iters.check1252 = icmp ult i64 %719, 12
  br i1 %min.iters.check1252, label %scalar.ph1251.preheader, label %vector.scevcheck1186

vector.scevcheck1186:                             ; preds = %717
  %746 = shl nuw nsw i64 %indvar1187, 3
  %scevgep1211 = getelementptr i8, ptr %713, i64 %746
  %scevgep1207 = getelementptr i8, ptr %714, i64 %746
  %scevgep1202 = getelementptr i8, ptr %gep1375, i64 %746
  %scevgep1198 = getelementptr i8, ptr %715, i64 %746
  %scevgep1194 = getelementptr i8, ptr %716, i64 %746
  %scevgep1189 = getelementptr i8, ptr %gep1381, i64 %746
  %smax = call i64 @llvm.smax.i64(i64 %indvars.iv1057, i64 %686)
  %747 = add i64 %indvar1187, %689
  %reass.sub1284 = sub i64 %smax, %747
  %748 = add i64 %reass.sub1284, -2
  %749 = shl nsw i64 %745, 3
  %scevgep1190 = getelementptr i8, ptr %scevgep1189, i64 %749
  %mul.result1192 = shl i64 %748, 3
  %750 = getelementptr i8, ptr %scevgep1190, i64 %mul.result1192
  %751 = icmp ult ptr %750, %scevgep1190
  %mul.result1196 = shl i64 %748, 3
  %mul.overflow1197 = icmp ugt i64 %748, 2305843009213693951
  %752 = getelementptr i8, ptr %scevgep1194, i64 %mul.result1196
  %753 = icmp ult ptr %752, %scevgep1194
  %754 = or i1 %753, %mul.overflow1197
  %mul.result1200 = shl i64 %748, 3
  %755 = getelementptr i8, ptr %scevgep1198, i64 %mul.result1200
  %756 = icmp ult ptr %755, %scevgep1198
  %scevgep1203 = getelementptr i8, ptr %scevgep1202, i64 %749
  %mul.result1205 = shl i64 %748, 3
  %757 = getelementptr i8, ptr %scevgep1203, i64 %mul.result1205
  %758 = icmp ult ptr %757, %scevgep1203
  %mul.result1209 = shl i64 %748, 3
  %759 = getelementptr i8, ptr %scevgep1207, i64 %mul.result1209
  %760 = icmp ult ptr %759, %scevgep1207
  %mul.result1213 = shl i64 %748, 3
  %761 = getelementptr i8, ptr %scevgep1211, i64 %mul.result1213
  %762 = icmp ult ptr %761, %scevgep1211
  %763 = or i1 %751, %754
  %764 = or i1 %756, %763
  %765 = or i1 %758, %764
  %766 = or i1 %760, %765
  %767 = or i1 %762, %766
  br i1 %767, label %scalar.ph1251.preheader, label %vector.memcheck1215

vector.memcheck1215:                              ; preds = %vector.scevcheck1186
  %768 = shl nsw i64 %745, 3
  %scevgep1217 = getelementptr i8, ptr %scevgep1216, i64 %768
  %769 = add i64 %723, %768
  %scevgep1220 = getelementptr i8, ptr %scevgep1218, i64 %769
  %scevgep1227 = getelementptr i8, ptr %scevgep1218, i64 %768
  %scevgep1229 = getelementptr i8, ptr %scevgep1228, i64 %769
  %bound01234 = icmp ult ptr %scevgep1217, %scevgep1223
  %bound11235 = icmp ult ptr %scevgep1221, %scevgep1220
  %found.conflict1236 = and i1 %bound01234, %bound11235
  %bound01237 = icmp ult ptr %scevgep1217, %scevgep1226
  %bound11238 = icmp ult ptr %scevgep1224, %scevgep1220
  %found.conflict1239 = and i1 %bound01237, %bound11238
  %conflict.rdx1240 = or i1 %found.conflict1236, %found.conflict1239
  %bound01241 = icmp ult ptr %scevgep1227, %scevgep1231
  %bound11242 = icmp ult ptr %scevgep1222, %scevgep1229
  %found.conflict1243 = and i1 %bound01241, %bound11242
  %conflict.rdx1244 = or i1 %conflict.rdx1240, %found.conflict1243
  %bound01245 = icmp ult ptr %scevgep1227, %scevgep1233
  %bound11246 = icmp ult ptr %scevgep1225, %scevgep1229
  %found.conflict1247 = and i1 %bound01245, %bound11246
  %conflict.rdx1248 = or i1 %conflict.rdx1244, %found.conflict1247
  br i1 %conflict.rdx1248, label %scalar.ph1251.preheader, label %vector.ph1253

vector.ph1253:                                    ; preds = %vector.memcheck1215
  %n.vec1255 = and i64 %719, -4
  %ind.end1256 = add i64 %indvars.iv1057, %n.vec1255
  %broadcast.splat1265 = shufflevector <2 x float> %732, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  %broadcast.splat1267 = shufflevector <2 x float> %732, <2 x float> poison, <4 x i32> zeroinitializer
  %broadcast.splat1275 = shufflevector <2 x float> %739, <2 x float> poison, <4 x i32> <i32 1, i32 1, i32 1, i32 1>
  %broadcast.splat1277 = shufflevector <2 x float> %739, <2 x float> poison, <4 x i32> zeroinitializer
  br label %vector.body1258

vector.body1258:                                  ; preds = %vector.body1258, %vector.ph1253
  %index1259 = phi i64 [ 0, %vector.ph1253 ], [ %index.next1279, %vector.body1258 ]
  %offset.idx1260 = add i64 %indvars.iv1057, %index1259
  %770 = getelementptr %struct.complex, ptr %invariant.gep1087, i64 %offset.idx1260
  %wide.vec1261 = load <8 x float>, ptr %770, align 4, !tbaa !14
  %strided.vec1262 = shufflevector <8 x float> %wide.vec1261, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1263 = shufflevector <8 x float> %wide.vec1261, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %771 = fneg <4 x float> %strided.vec1263
  %772 = fmul <4 x float> %broadcast.splat1265, %771
  %773 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %strided.vec1262, <4 x float> %broadcast.splat1267, <4 x float> %772)
  %774 = fmul <4 x float> %broadcast.splat1267, %strided.vec1263
  %775 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %strided.vec1262, <4 x float> %broadcast.splat1265, <4 x float> %774)
  %776 = getelementptr %struct.complex, ptr %invariant.gep1089, i64 %offset.idx1260
  %wide.vec1268 = load <8 x float>, ptr %776, align 4, !tbaa !14
  %strided.vec1269 = shufflevector <8 x float> %wide.vec1268, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1270 = shufflevector <8 x float> %wide.vec1268, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %777 = fsub <4 x float> %strided.vec1269, %773
  %778 = fsub <4 x float> %strided.vec1270, %775
  %779 = getelementptr %struct.complex, ptr %invariant.gep1091, i64 %offset.idx1260
  %wide.vec1271 = load <8 x float>, ptr %779, align 4, !tbaa !14
  %strided.vec1272 = shufflevector <8 x float> %wide.vec1271, <8 x float> poison, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
  %strided.vec1273 = shufflevector <8 x float> %wide.vec1271, <8 x float> poison, <4 x i32> <i32 1, i32 3, i32 5, i32 7>
  %780 = fneg <4 x float> %strided.vec1273
  %781 = fmul <4 x float> %broadcast.splat1275, %780
  %782 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %strided.vec1272, <4 x float> %broadcast.splat1277, <4 x float> %781)
  %783 = fmul <4 x float> %broadcast.splat1277, %strided.vec1273
  %784 = call <4 x float> @llvm.fmuladd.v4f32(<4 x float> %strided.vec1272, <4 x float> %broadcast.splat1275, <4 x float> %783)
  %785 = fsub <4 x float> %777, %782
  %786 = fsub <4 x float> %778, %784
  %interleaved.vec1278 = shufflevector <4 x float> %785, <4 x float> %786, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7>
  store <8 x float> %interleaved.vec1278, ptr %776, align 4, !tbaa !14
  %index.next1279 = add nuw i64 %index1259, 4
  %787 = icmp eq i64 %index.next1279, %n.vec1255
  br i1 %787, label %middle.block1250, label %vector.body1258, !llvm.loop !24

middle.block1250:                                 ; preds = %vector.body1258
  %cmp.n1280 = icmp eq i64 %719, %n.vec1255
  %788 = shufflevector <4 x float> %777, <4 x float> %778, <2 x i32> <i32 3, i32 7>
  %789 = shufflevector <4 x float> %785, <4 x float> %786, <2 x i32> <i32 3, i32 7>
  br i1 %cmp.n1280, label %.loopexit1281, label %scalar.ph1251.preheader

scalar.ph1251.preheader:                          ; preds = %middle.block1250, %vector.memcheck1215, %vector.scevcheck1186, %717
  %indvars.iv1059.ph = phi i64 [ %indvars.iv1057, %vector.memcheck1215 ], [ %indvars.iv1057, %vector.scevcheck1186 ], [ %indvars.iv1057, %717 ], [ %ind.end1256, %middle.block1250 ]
  br label %scalar.ph1251

scalar.ph1251:                                    ; preds = %scalar.ph1251.preheader, %scalar.ph1251
  %indvars.iv1059 = phi i64 [ %indvars.iv.next1060, %scalar.ph1251 ], [ %indvars.iv1059.ph, %scalar.ph1251.preheader ]
  %gep1088 = getelementptr %struct.complex, ptr %invariant.gep1087, i64 %indvars.iv1059
  %790 = load float, ptr %gep1088, align 4, !tbaa !9
  %791 = getelementptr inbounds i8, ptr %gep1088, i64 4
  %792 = load float, ptr %791, align 4, !tbaa !16
  %793 = fneg float %792
  %gep1090 = getelementptr %struct.complex, ptr %invariant.gep1089, i64 %indvars.iv1059
  %794 = insertelement <2 x float> poison, float %792, i64 0
  %795 = insertelement <2 x float> %794, float %793, i64 1
  %796 = fmul <2 x float> %732, %795
  %797 = shufflevector <2 x float> %796, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %798 = insertelement <2 x float> poison, float %790, i64 0
  %799 = shufflevector <2 x float> %798, <2 x float> poison, <2 x i32> zeroinitializer
  %800 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %799, <2 x float> %732, <2 x float> %797)
  %801 = load <2 x float>, ptr %gep1090, align 4, !tbaa !14
  %802 = fsub <2 x float> %801, %800
  %gep1092 = getelementptr %struct.complex, ptr %invariant.gep1091, i64 %indvars.iv1059
  %803 = load float, ptr %gep1092, align 4, !tbaa !9
  %804 = getelementptr inbounds i8, ptr %gep1092, i64 4
  %805 = load float, ptr %804, align 4, !tbaa !16
  %806 = fneg float %805
  %807 = insertelement <2 x float> poison, float %805, i64 0
  %808 = insertelement <2 x float> %807, float %806, i64 1
  %809 = fmul <2 x float> %739, %808
  %810 = shufflevector <2 x float> %809, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %811 = insertelement <2 x float> poison, float %803, i64 0
  %812 = shufflevector <2 x float> %811, <2 x float> poison, <2 x i32> zeroinitializer
  %813 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %812, <2 x float> %739, <2 x float> %810)
  %814 = fsub <2 x float> %802, %813
  store <2 x float> %814, ptr %gep1090, align 4, !tbaa !14
  %indvars.iv.next1060 = add nuw nsw i64 %indvars.iv1059, 1
  %.not874.not = icmp slt i64 %indvars.iv1059, %686
  br i1 %.not874.not, label %scalar.ph1251, label %.loopexit1281, !llvm.loop !25

.loopexit1281:                                    ; preds = %scalar.ph1251, %middle.block1250
  %815 = phi <2 x float> [ %788, %middle.block1250 ], [ %802, %scalar.ph1251 ]
  %816 = phi <2 x float> [ %789, %middle.block1250 ], [ %814, %scalar.ph1251 ]
  store <2 x float> %732, ptr %gep1094, align 4, !tbaa !14
  %gep1098 = getelementptr %struct.complex, ptr %invariant.gep1097, i64 %indvars.iv1057
  store <2 x float> %739, ptr %gep1098, align 4, !tbaa !14
  %indvars.iv.next1058 = add nuw nsw i64 %indvars.iv1057, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next1058 to i32
  %exitcond1063.not = icmp eq i32 %688, %lftr.wideiv
  %indvar.next1188 = add i64 %indvar1187, 1
  br i1 %exitcond1063.not, label %..loopexit_crit_edge, label %717, !llvm.loop !26

817:                                              ; preds = %596, %.thread934, %448, %445
  %.3852.ph = phi i32 [ %.18321023, %445 ], [ %.18321023, %448 ], [ %.2851933938, %.thread934 ], [ %.2851933938, %596 ]
  %.3836.ph = phi i32 [ %.18261024, %445 ], [ %.18261024, %448 ], [ %.2835925931940, %.thread934 ], [ %.2835925931940, %596 ]
  %818 = zext nneg i32 %.18261024 to i64
  %819 = getelementptr inbounds i32, ptr %13, i64 %818
  store i32 %.3836.ph, ptr %819, align 4, !tbaa !5
  br label %823

..loopexit_crit_edge:                             ; preds = %.loopexit1281
  store <2 x float> %815, ptr %8, align 8, !tbaa !14
  store <2 x float> %816, ptr %7, align 8, !tbaa !14
  br label %.loopexit

.loopexit:                                        ; preds = %615, %..loopexit_crit_edge, %611
  %820 = zext nneg i32 %.18261024 to i64
  %821 = getelementptr inbounds i32, ptr %13, i64 %820
  store i32 %441, ptr %821, align 4, !tbaa !5
  %822 = getelementptr inbounds i8, ptr %821, i64 4
  store i32 %441, ptr %822, align 4, !tbaa !5
  br label %823

823:                                              ; preds = %.loopexit, %817
  %.3830955 = phi i32 [ 2, %.loopexit ], [ 1, %817 ]
  %.3852952 = phi i32 [ %.28511070, %.loopexit ], [ %.3852.ph, %817 ]
  %824 = add nuw nsw i32 %.3830955, %.18261024
  %825 = load i32, ptr %1, align 4, !tbaa !5
  %826 = add i32 %.3852952, 2
  %827 = sub i32 %826, %824
  %828 = add i32 %827, %825
  %.1826.neg = sub nsw i32 0, %824
  %829 = icmp sgt i32 %824, %825
  br i1 %829, label %.loopexit959, label %408

.loopexit959:                                     ; preds = %398, %823, %26, %402, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %6) #6
  ret void
}

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

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

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

; Function Attrs: inlinehint nounwind uwtable
declare hidden <2 x float> @Cf(ptr noundef) local_unnamed_addr #3

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

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

declare <2 x float> @__divsc3(float, float, float, float) local_unnamed_addr

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <4 x float> @llvm.fmuladd.v4f32(<4 x float>, <4 x float>, <4 x float>) #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x float> @llvm.fmuladd.v2f32(<2 x float>, <2 x float>, <2 x float>) #5

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"", !11, i64 0, !11, i64 4}
!11 = !{!"float", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!11, !11, i64 0}
!15 = distinct !{!15, !13}
!16 = !{!10, !11, i64 4}
!17 = distinct !{!17, !13, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !13, !18}
!21 = distinct !{!21, !13}
!22 = distinct !{!22, !13}
!23 = distinct !{!23, !13}
!24 = distinct !{!24, !13, !18, !19}
!25 = distinct !{!25, !13, !18}
!26 = distinct !{!26, !13}


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