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

; 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
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cla_heamv_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8, ptr noundef %9) #0 {
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca float, align 4
  %27 = alloca float, align 4
  %28 = alloca i32, align 4
  %29 = alloca float, align 4
  %30 = alloca float, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i32, align 4
  %34 = alloca i32, align 4
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca { float, float }, align 4
  %40 = alloca { float, float }, align 4
  %41 = alloca { float, float }, align 4
  %42 = alloca { float, float }, align 4
  %43 = alloca { float, float }, align 4
  %44 = alloca { float, float }, align 4
  %45 = alloca { float, float }, align 4
  %46 = alloca { float, float }, align 4
  %47 = alloca { float, float }, align 4
  %48 = alloca { float, float }, align 4
  %49 = alloca { float, float }, align 4
  %50 = alloca { float, float }, align 4
  %51 = alloca { float, float }, align 4
  %52 = alloca { float, float }, align 4
  %53 = alloca { float, float }, align 4
  %54 = alloca { float, float }, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  store ptr %9, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #5
  %55 = load ptr, ptr %15, align 8, !tbaa !5
  %56 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %56, ptr %21, align 4, !tbaa !9
  %57 = load i32, ptr %21, align 4, !tbaa !9
  %58 = mul nsw i32 %57, 1
  %59 = add nsw i32 1, %58
  store i32 %59, ptr %22, align 4, !tbaa !9
  %60 = load i32, ptr %22, align 4, !tbaa !9
  %61 = load ptr, ptr %14, align 8, !tbaa !5
  %62 = sext i32 %60 to i64
  %63 = sub i64 0, %62
  %64 = getelementptr inbounds %struct.complex, ptr %61, i64 %63
  store ptr %64, ptr %14, align 8, !tbaa !5
  %65 = load ptr, ptr %16, align 8, !tbaa !5
  %66 = getelementptr inbounds %struct.complex, ptr %65, i32 -1
  store ptr %66, ptr %16, align 8, !tbaa !5
  %67 = load ptr, ptr %19, align 8, !tbaa !5
  %68 = getelementptr inbounds float, ptr %67, i32 -1
  store ptr %68, ptr %19, align 8, !tbaa !5
  store i32 0, ptr %28, align 4, !tbaa !9
  %69 = load ptr, ptr %11, align 8, !tbaa !5
  %70 = load i32, ptr %69, align 4, !tbaa !9
  %71 = call i32 @ilauplo_(ptr noundef @.str)
  %72 = icmp ne i32 %70, %71
  br i1 %72, label %73, label %79

73:                                               ; preds = %10
  %74 = load ptr, ptr %11, align 8, !tbaa !5
  %75 = load i32, ptr %74, align 4, !tbaa !9
  %76 = call i32 @ilauplo_(ptr noundef @.str.1)
  %77 = icmp ne i32 %75, %76
  br i1 %77, label %78, label %79

78:                                               ; preds = %73
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %112

79:                                               ; preds = %73, %10
  %80 = load ptr, ptr %12, align 8, !tbaa !5
  %81 = load i32, ptr %80, align 4, !tbaa !9
  %82 = icmp slt i32 %81, 0
  br i1 %82, label %83, label %84

83:                                               ; preds = %79
  store i32 2, ptr %28, align 4, !tbaa !9
  br label %111

84:                                               ; preds = %79
  %85 = load ptr, ptr %15, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = load ptr, ptr %12, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp sge i32 1, %88
  br i1 %89, label %90, label %91

90:                                               ; preds = %84
  br label %94

91:                                               ; preds = %84
  %92 = load ptr, ptr %12, align 8, !tbaa !5
  %93 = load i32, ptr %92, align 4, !tbaa !9
  br label %94

94:                                               ; preds = %91, %90
  %95 = phi i32 [ 1, %90 ], [ %93, %91 ]
  %96 = icmp slt i32 %86, %95
  br i1 %96, label %97, label %98

97:                                               ; preds = %94
  store i32 5, ptr %28, align 4, !tbaa !9
  br label %110

98:                                               ; preds = %94
  %99 = load ptr, ptr %17, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = icmp eq i32 %100, 0
  br i1 %101, label %102, label %103

102:                                              ; preds = %98
  store i32 7, ptr %28, align 4, !tbaa !9
  br label %109

103:                                              ; preds = %98
  %104 = load ptr, ptr %20, align 8, !tbaa !5
  %105 = load i32, ptr %104, align 4, !tbaa !9
  %106 = icmp eq i32 %105, 0
  br i1 %106, label %107, label %108

107:                                              ; preds = %103
  store i32 10, ptr %28, align 4, !tbaa !9
  br label %108

108:                                              ; preds = %107, %103
  br label %109

109:                                              ; preds = %108, %102
  br label %110

110:                                              ; preds = %109, %97
  br label %111

111:                                              ; preds = %110, %83
  br label %112

112:                                              ; preds = %111, %78
  %113 = load i32, ptr %28, align 4, !tbaa !9
  %114 = icmp ne i32 %113, 0
  br i1 %114, label %115, label %117

115:                                              ; preds = %112
  %116 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %28, i32 noundef 6)
  store i32 1, ptr %38, align 4
  br label %1611

117:                                              ; preds = %112
  %118 = load ptr, ptr %12, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp eq i32 %119, 0
  br i1 %120, label %129, label %121

121:                                              ; preds = %117
  %122 = load ptr, ptr %13, align 8, !tbaa !5
  %123 = load float, ptr %122, align 4, !tbaa !11
  %124 = fcmp oeq float %123, 0.000000e+00
  br i1 %124, label %125, label %130

125:                                              ; preds = %121
  %126 = load ptr, ptr %18, align 8, !tbaa !5
  %127 = load float, ptr %126, align 4, !tbaa !11
  %128 = fcmp oeq float %127, 1.000000e+00
  br i1 %128, label %129, label %130

129:                                              ; preds = %125, %117
  store i32 1, ptr %38, align 4
  br label %1611

130:                                              ; preds = %125, %121
  %131 = load ptr, ptr %17, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = icmp sgt i32 %132, 0
  br i1 %133, label %134, label %135

134:                                              ; preds = %130
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %143

135:                                              ; preds = %130
  %136 = load ptr, ptr %12, align 8, !tbaa !5
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %138 = sub nsw i32 %137, 1
  %139 = load ptr, ptr %17, align 8, !tbaa !5
  %140 = load i32, ptr %139, align 4, !tbaa !9
  %141 = mul nsw i32 %138, %140
  %142 = sub nsw i32 1, %141
  store i32 %142, ptr %36, align 4, !tbaa !9
  br label %143

143:                                              ; preds = %135, %134
  %144 = load ptr, ptr %20, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = icmp sgt i32 %145, 0
  br i1 %146, label %147, label %148

147:                                              ; preds = %143
  store i32 1, ptr %37, align 4, !tbaa !9
  br label %156

148:                                              ; preds = %143
  %149 = load ptr, ptr %12, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = sub nsw i32 %150, 1
  %152 = load ptr, ptr %20, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = mul nsw i32 %151, %153
  %155 = sub nsw i32 1, %154
  store i32 %155, ptr %37, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %148, %147
  %157 = call float @slamch_(ptr noundef @.str.3)
  store float %157, ptr %30, align 4, !tbaa !11
  %158 = load ptr, ptr %12, align 8, !tbaa !5
  %159 = load i32, ptr %158, align 4, !tbaa !9
  %160 = add nsw i32 %159, 1
  %161 = sitofp i32 %160 to float
  %162 = load float, ptr %30, align 4, !tbaa !11
  %163 = fmul float %161, %162
  store float %163, ptr %30, align 4, !tbaa !11
  %164 = load i32, ptr %37, align 4, !tbaa !9
  store i32 %164, ptr %34, align 4, !tbaa !9
  %165 = load ptr, ptr %17, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = icmp eq i32 %166, 1
  br i1 %167, label %168, label %880

168:                                              ; preds = %156
  %169 = load ptr, ptr %11, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = call i32 @ilauplo_(ptr noundef @.str)
  %172 = icmp eq i32 %170, %171
  br i1 %172, label %173, label %526

173:                                              ; preds = %168
  %174 = load ptr, ptr %12, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  store i32 %175, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %176

176:                                              ; preds = %522, %173
  %177 = load i32, ptr %31, align 4, !tbaa !9
  %178 = load i32, ptr %23, align 4, !tbaa !9
  %179 = icmp sle i32 %177, %178
  br i1 %179, label %180, label %525

180:                                              ; preds = %176
  %181 = load ptr, ptr %18, align 8, !tbaa !5
  %182 = load float, ptr %181, align 4, !tbaa !11
  %183 = fcmp oeq float %182, 0.000000e+00
  br i1 %183, label %184, label %189

184:                                              ; preds = %180
  store i32 1, ptr %33, align 4, !tbaa !9
  %185 = load ptr, ptr %19, align 8, !tbaa !5
  %186 = load i32, ptr %34, align 4, !tbaa !9
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds float, ptr %185, i64 %187
  store float 0.000000e+00, ptr %188, align 4, !tbaa !11
  br label %220

189:                                              ; preds = %180
  %190 = load ptr, ptr %19, align 8, !tbaa !5
  %191 = load i32, ptr %34, align 4, !tbaa !9
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds float, ptr %190, i64 %192
  %194 = load float, ptr %193, align 4, !tbaa !11
  %195 = fcmp oeq float %194, 0.000000e+00
  br i1 %195, label %196, label %197

196:                                              ; preds = %189
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %219

197:                                              ; preds = %189
  store i32 0, ptr %33, align 4, !tbaa !9
  %198 = load ptr, ptr %18, align 8, !tbaa !5
  %199 = load float, ptr %198, align 4, !tbaa !11
  %200 = load ptr, ptr %19, align 8, !tbaa !5
  %201 = load i32, ptr %34, align 4, !tbaa !9
  %202 = sext i32 %201 to i64
  %203 = getelementptr inbounds float, ptr %200, i64 %202
  %204 = load float, ptr %203, align 4, !tbaa !11
  store float %204, ptr %26, align 4, !tbaa !11
  %205 = load float, ptr %26, align 4, !tbaa !11
  %206 = fcmp oge float %205, 0.000000e+00
  br i1 %206, label %207, label %209

207:                                              ; preds = %197
  %208 = load float, ptr %26, align 4, !tbaa !11
  br label %212

209:                                              ; preds = %197
  %210 = load float, ptr %26, align 4, !tbaa !11
  %211 = fneg float %210
  br label %212

212:                                              ; preds = %209, %207
  %213 = phi float [ %208, %207 ], [ %211, %209 ]
  %214 = fmul float %199, %213
  %215 = load ptr, ptr %19, align 8, !tbaa !5
  %216 = load i32, ptr %34, align 4, !tbaa !9
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds float, ptr %215, i64 %217
  store float %214, ptr %218, align 4, !tbaa !11
  br label %219

219:                                              ; preds = %212, %196
  br label %220

220:                                              ; preds = %219, %184
  %221 = load ptr, ptr %13, align 8, !tbaa !5
  %222 = load float, ptr %221, align 4, !tbaa !11
  %223 = fcmp une float %222, 0.000000e+00
  br i1 %223, label %224, label %478

224:                                              ; preds = %220
  %225 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %225, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %226

226:                                              ; preds = %346, %224
  %227 = load i32, ptr %32, align 4, !tbaa !9
  %228 = load i32, ptr %24, align 4, !tbaa !9
  %229 = icmp sle i32 %227, %228
  br i1 %229, label %230, label %349

230:                                              ; preds = %226
  %231 = load i32, ptr %32, align 4, !tbaa !9
  %232 = load i32, ptr %31, align 4, !tbaa !9
  %233 = load i32, ptr %21, align 4, !tbaa !9
  %234 = mul nsw i32 %232, %233
  %235 = add nsw i32 %231, %234
  store i32 %235, ptr %25, align 4, !tbaa !9
  %236 = load ptr, ptr %14, align 8, !tbaa !5
  %237 = load i32, ptr %25, align 4, !tbaa !9
  %238 = sext i32 %237 to i64
  %239 = getelementptr inbounds %struct.complex, ptr %236, i64 %238
  %240 = getelementptr inbounds %struct.complex, ptr %239, i32 0, i32 0
  %241 = load float, ptr %240, align 4, !tbaa !13
  store float %241, ptr %26, align 4, !tbaa !11
  %242 = load float, ptr %26, align 4, !tbaa !11
  %243 = fcmp oge float %242, 0.000000e+00
  br i1 %243, label %244, label %246

244:                                              ; preds = %230
  %245 = load float, ptr %26, align 4, !tbaa !11
  br label %249

246:                                              ; preds = %230
  %247 = load float, ptr %26, align 4, !tbaa !11
  %248 = fneg float %247
  br label %249

249:                                              ; preds = %246, %244
  %250 = phi float [ %245, %244 ], [ %248, %246 ]
  %251 = load ptr, ptr %14, align 8, !tbaa !5
  %252 = load i32, ptr %32, align 4, !tbaa !9
  %253 = load i32, ptr %31, align 4, !tbaa !9
  %254 = load i32, ptr %21, align 4, !tbaa !9
  %255 = mul nsw i32 %253, %254
  %256 = add nsw i32 %252, %255
  %257 = sext i32 %256 to i64
  %258 = getelementptr inbounds %struct.complex, ptr %251, i64 %257
  %259 = call <2 x float> @Cf(ptr noundef %258)
  store <2 x float> %259, ptr %39, align 4
  %260 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 0
  %261 = load float, ptr %260, align 4
  %262 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 1
  %263 = load float, ptr %262, align 4
  store float %263, ptr %27, align 4, !tbaa !11
  %264 = load float, ptr %27, align 4, !tbaa !11
  %265 = fcmp oge float %264, 0.000000e+00
  br i1 %265, label %266, label %268

266:                                              ; preds = %249
  %267 = load float, ptr %27, align 4, !tbaa !11
  br label %271

268:                                              ; preds = %249
  %269 = load float, ptr %27, align 4, !tbaa !11
  %270 = fneg float %269
  br label %271

271:                                              ; preds = %268, %266
  %272 = phi float [ %267, %266 ], [ %270, %268 ]
  %273 = fadd float %250, %272
  store float %273, ptr %29, align 4, !tbaa !11
  %274 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %274, ptr %25, align 4, !tbaa !9
  %275 = load i32, ptr %33, align 4, !tbaa !9
  %276 = icmp ne i32 %275, 0
  br i1 %276, label %277, label %298

277:                                              ; preds = %271
  %278 = load ptr, ptr %16, align 8, !tbaa !5
  %279 = load i32, ptr %25, align 4, !tbaa !9
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.complex, ptr %278, i64 %280
  %282 = getelementptr inbounds %struct.complex, ptr %281, i32 0, i32 0
  %283 = load float, ptr %282, align 4, !tbaa !13
  %284 = fcmp oeq float %283, 0.000000e+00
  br i1 %284, label %285, label %293

285:                                              ; preds = %277
  %286 = load ptr, ptr %16, align 8, !tbaa !5
  %287 = load i32, ptr %25, align 4, !tbaa !9
  %288 = sext i32 %287 to i64
  %289 = getelementptr inbounds %struct.complex, ptr %286, i64 %288
  %290 = getelementptr inbounds %struct.complex, ptr %289, i32 0, i32 1
  %291 = load float, ptr %290, align 4, !tbaa !15
  %292 = fcmp oeq float %291, 0.000000e+00
  br i1 %292, label %296, label %293

293:                                              ; preds = %285, %277
  %294 = load float, ptr %29, align 4, !tbaa !11
  %295 = fcmp oeq float %294, 0.000000e+00
  br label %296

296:                                              ; preds = %293, %285
  %297 = phi i1 [ true, %285 ], [ %295, %293 ]
  br label %298

298:                                              ; preds = %296, %271
  %299 = phi i1 [ false, %271 ], [ %297, %296 ]
  %300 = zext i1 %299 to i32
  store i32 %300, ptr %33, align 4, !tbaa !9
  %301 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %301, ptr %25, align 4, !tbaa !9
  %302 = load ptr, ptr %13, align 8, !tbaa !5
  %303 = load float, ptr %302, align 4, !tbaa !11
  %304 = load ptr, ptr %16, align 8, !tbaa !5
  %305 = load i32, ptr %25, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %struct.complex, ptr %304, i64 %306
  %308 = getelementptr inbounds %struct.complex, ptr %307, i32 0, i32 0
  %309 = load float, ptr %308, align 4, !tbaa !13
  store float %309, ptr %26, align 4, !tbaa !11
  %310 = load float, ptr %26, align 4, !tbaa !11
  %311 = fcmp oge float %310, 0.000000e+00
  br i1 %311, label %312, label %314

312:                                              ; preds = %298
  %313 = load float, ptr %26, align 4, !tbaa !11
  br label %317

314:                                              ; preds = %298
  %315 = load float, ptr %26, align 4, !tbaa !11
  %316 = fneg float %315
  br label %317

317:                                              ; preds = %314, %312
  %318 = phi float [ %313, %312 ], [ %316, %314 ]
  %319 = load ptr, ptr %16, align 8, !tbaa !5
  %320 = load i32, ptr %32, align 4, !tbaa !9
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds %struct.complex, ptr %319, i64 %321
  %323 = call <2 x float> @Cf(ptr noundef %322)
  store <2 x float> %323, ptr %40, align 4
  %324 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 0
  %325 = load float, ptr %324, align 4
  %326 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 1
  %327 = load float, ptr %326, align 4
  store float %327, ptr %27, align 4, !tbaa !11
  %328 = load float, ptr %27, align 4, !tbaa !11
  %329 = fcmp oge float %328, 0.000000e+00
  br i1 %329, label %330, label %332

330:                                              ; preds = %317
  %331 = load float, ptr %27, align 4, !tbaa !11
  br label %335

332:                                              ; preds = %317
  %333 = load float, ptr %27, align 4, !tbaa !11
  %334 = fneg float %333
  br label %335

335:                                              ; preds = %332, %330
  %336 = phi float [ %331, %330 ], [ %334, %332 ]
  %337 = fadd float %318, %336
  %338 = fmul float %303, %337
  %339 = load float, ptr %29, align 4, !tbaa !11
  %340 = load ptr, ptr %19, align 8, !tbaa !5
  %341 = load i32, ptr %34, align 4, !tbaa !9
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds float, ptr %340, i64 %342
  %344 = load float, ptr %343, align 4, !tbaa !11
  %345 = call float @llvm.fmuladd.f32(float %338, float %339, float %344)
  store float %345, ptr %343, align 4, !tbaa !11
  br label %346

346:                                              ; preds = %335
  %347 = load i32, ptr %32, align 4, !tbaa !9
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %32, align 4, !tbaa !9
  br label %226, !llvm.loop !16

349:                                              ; preds = %226
  %350 = load ptr, ptr %12, align 8, !tbaa !5
  %351 = load i32, ptr %350, align 4, !tbaa !9
  store i32 %351, ptr %24, align 4, !tbaa !9
  %352 = load i32, ptr %31, align 4, !tbaa !9
  %353 = add nsw i32 %352, 1
  store i32 %353, ptr %32, align 4, !tbaa !9
  br label %354

354:                                              ; preds = %474, %349
  %355 = load i32, ptr %32, align 4, !tbaa !9
  %356 = load i32, ptr %24, align 4, !tbaa !9
  %357 = icmp sle i32 %355, %356
  br i1 %357, label %358, label %477

358:                                              ; preds = %354
  %359 = load i32, ptr %31, align 4, !tbaa !9
  %360 = load i32, ptr %32, align 4, !tbaa !9
  %361 = load i32, ptr %21, align 4, !tbaa !9
  %362 = mul nsw i32 %360, %361
  %363 = add nsw i32 %359, %362
  store i32 %363, ptr %25, align 4, !tbaa !9
  %364 = load ptr, ptr %14, align 8, !tbaa !5
  %365 = load i32, ptr %25, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds %struct.complex, ptr %364, i64 %366
  %368 = getelementptr inbounds %struct.complex, ptr %367, i32 0, i32 0
  %369 = load float, ptr %368, align 4, !tbaa !13
  store float %369, ptr %26, align 4, !tbaa !11
  %370 = load float, ptr %26, align 4, !tbaa !11
  %371 = fcmp oge float %370, 0.000000e+00
  br i1 %371, label %372, label %374

372:                                              ; preds = %358
  %373 = load float, ptr %26, align 4, !tbaa !11
  br label %377

374:                                              ; preds = %358
  %375 = load float, ptr %26, align 4, !tbaa !11
  %376 = fneg float %375
  br label %377

377:                                              ; preds = %374, %372
  %378 = phi float [ %373, %372 ], [ %376, %374 ]
  %379 = load ptr, ptr %14, align 8, !tbaa !5
  %380 = load i32, ptr %31, align 4, !tbaa !9
  %381 = load i32, ptr %32, align 4, !tbaa !9
  %382 = load i32, ptr %21, align 4, !tbaa !9
  %383 = mul nsw i32 %381, %382
  %384 = add nsw i32 %380, %383
  %385 = sext i32 %384 to i64
  %386 = getelementptr inbounds %struct.complex, ptr %379, i64 %385
  %387 = call <2 x float> @Cf(ptr noundef %386)
  store <2 x float> %387, ptr %41, align 4
  %388 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 0
  %389 = load float, ptr %388, align 4
  %390 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 1
  %391 = load float, ptr %390, align 4
  store float %391, ptr %27, align 4, !tbaa !11
  %392 = load float, ptr %27, align 4, !tbaa !11
  %393 = fcmp oge float %392, 0.000000e+00
  br i1 %393, label %394, label %396

394:                                              ; preds = %377
  %395 = load float, ptr %27, align 4, !tbaa !11
  br label %399

396:                                              ; preds = %377
  %397 = load float, ptr %27, align 4, !tbaa !11
  %398 = fneg float %397
  br label %399

399:                                              ; preds = %396, %394
  %400 = phi float [ %395, %394 ], [ %398, %396 ]
  %401 = fadd float %378, %400
  store float %401, ptr %29, align 4, !tbaa !11
  %402 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %402, ptr %25, align 4, !tbaa !9
  %403 = load i32, ptr %33, align 4, !tbaa !9
  %404 = icmp ne i32 %403, 0
  br i1 %404, label %405, label %426

405:                                              ; preds = %399
  %406 = load ptr, ptr %16, align 8, !tbaa !5
  %407 = load i32, ptr %25, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds %struct.complex, ptr %406, i64 %408
  %410 = getelementptr inbounds %struct.complex, ptr %409, i32 0, i32 0
  %411 = load float, ptr %410, align 4, !tbaa !13
  %412 = fcmp oeq float %411, 0.000000e+00
  br i1 %412, label %413, label %421

413:                                              ; preds = %405
  %414 = load ptr, ptr %16, align 8, !tbaa !5
  %415 = load i32, ptr %25, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds %struct.complex, ptr %414, i64 %416
  %418 = getelementptr inbounds %struct.complex, ptr %417, i32 0, i32 1
  %419 = load float, ptr %418, align 4, !tbaa !15
  %420 = fcmp oeq float %419, 0.000000e+00
  br i1 %420, label %424, label %421

421:                                              ; preds = %413, %405
  %422 = load float, ptr %29, align 4, !tbaa !11
  %423 = fcmp oeq float %422, 0.000000e+00
  br label %424

424:                                              ; preds = %421, %413
  %425 = phi i1 [ true, %413 ], [ %423, %421 ]
  br label %426

426:                                              ; preds = %424, %399
  %427 = phi i1 [ false, %399 ], [ %425, %424 ]
  %428 = zext i1 %427 to i32
  store i32 %428, ptr %33, align 4, !tbaa !9
  %429 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %429, ptr %25, align 4, !tbaa !9
  %430 = load ptr, ptr %13, align 8, !tbaa !5
  %431 = load float, ptr %430, align 4, !tbaa !11
  %432 = load ptr, ptr %16, align 8, !tbaa !5
  %433 = load i32, ptr %25, align 4, !tbaa !9
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds %struct.complex, ptr %432, i64 %434
  %436 = getelementptr inbounds %struct.complex, ptr %435, i32 0, i32 0
  %437 = load float, ptr %436, align 4, !tbaa !13
  store float %437, ptr %26, align 4, !tbaa !11
  %438 = load float, ptr %26, align 4, !tbaa !11
  %439 = fcmp oge float %438, 0.000000e+00
  br i1 %439, label %440, label %442

440:                                              ; preds = %426
  %441 = load float, ptr %26, align 4, !tbaa !11
  br label %445

442:                                              ; preds = %426
  %443 = load float, ptr %26, align 4, !tbaa !11
  %444 = fneg float %443
  br label %445

445:                                              ; preds = %442, %440
  %446 = phi float [ %441, %440 ], [ %444, %442 ]
  %447 = load ptr, ptr %16, align 8, !tbaa !5
  %448 = load i32, ptr %32, align 4, !tbaa !9
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds %struct.complex, ptr %447, i64 %449
  %451 = call <2 x float> @Cf(ptr noundef %450)
  store <2 x float> %451, ptr %42, align 4
  %452 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 0
  %453 = load float, ptr %452, align 4
  %454 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 1
  %455 = load float, ptr %454, align 4
  store float %455, ptr %27, align 4, !tbaa !11
  %456 = load float, ptr %27, align 4, !tbaa !11
  %457 = fcmp oge float %456, 0.000000e+00
  br i1 %457, label %458, label %460

458:                                              ; preds = %445
  %459 = load float, ptr %27, align 4, !tbaa !11
  br label %463

460:                                              ; preds = %445
  %461 = load float, ptr %27, align 4, !tbaa !11
  %462 = fneg float %461
  br label %463

463:                                              ; preds = %460, %458
  %464 = phi float [ %459, %458 ], [ %462, %460 ]
  %465 = fadd float %446, %464
  %466 = fmul float %431, %465
  %467 = load float, ptr %29, align 4, !tbaa !11
  %468 = load ptr, ptr %19, align 8, !tbaa !5
  %469 = load i32, ptr %34, align 4, !tbaa !9
  %470 = sext i32 %469 to i64
  %471 = getelementptr inbounds float, ptr %468, i64 %470
  %472 = load float, ptr %471, align 4, !tbaa !11
  %473 = call float @llvm.fmuladd.f32(float %466, float %467, float %472)
  store float %473, ptr %471, align 4, !tbaa !11
  br label %474

474:                                              ; preds = %463
  %475 = load i32, ptr %32, align 4, !tbaa !9
  %476 = add nsw i32 %475, 1
  store i32 %476, ptr %32, align 4, !tbaa !9
  br label %354, !llvm.loop !18

477:                                              ; preds = %354
  br label %478

478:                                              ; preds = %477, %220
  %479 = load i32, ptr %33, align 4, !tbaa !9
  %480 = icmp ne i32 %479, 0
  br i1 %480, label %517, label %481

481:                                              ; preds = %478
  %482 = load ptr, ptr %19, align 8, !tbaa !5
  %483 = load i32, ptr %34, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds float, ptr %482, i64 %484
  %486 = load float, ptr %485, align 4, !tbaa !11
  %487 = fcmp oge float %486, 0.000000e+00
  br i1 %487, label %488, label %498

488:                                              ; preds = %481
  %489 = load float, ptr %30, align 4, !tbaa !11
  %490 = fcmp oge float %489, 0.000000e+00
  br i1 %490, label %491, label %493

491:                                              ; preds = %488
  %492 = load float, ptr %30, align 4, !tbaa !11
  br label %496

493:                                              ; preds = %488
  %494 = load float, ptr %30, align 4, !tbaa !11
  %495 = fneg float %494
  br label %496

496:                                              ; preds = %493, %491
  %497 = phi float [ %492, %491 ], [ %495, %493 ]
  br label %509

498:                                              ; preds = %481
  %499 = load float, ptr %30, align 4, !tbaa !11
  %500 = fcmp oge float %499, 0.000000e+00
  br i1 %500, label %501, label %503

501:                                              ; preds = %498
  %502 = load float, ptr %30, align 4, !tbaa !11
  br label %506

503:                                              ; preds = %498
  %504 = load float, ptr %30, align 4, !tbaa !11
  %505 = fneg float %504
  br label %506

506:                                              ; preds = %503, %501
  %507 = phi float [ %502, %501 ], [ %505, %503 ]
  %508 = fneg float %507
  br label %509

509:                                              ; preds = %506, %496
  %510 = phi float [ %497, %496 ], [ %508, %506 ]
  %511 = load ptr, ptr %19, align 8, !tbaa !5
  %512 = load i32, ptr %34, align 4, !tbaa !9
  %513 = sext i32 %512 to i64
  %514 = getelementptr inbounds float, ptr %511, i64 %513
  %515 = load float, ptr %514, align 4, !tbaa !11
  %516 = fadd float %515, %510
  store float %516, ptr %514, align 4, !tbaa !11
  br label %517

517:                                              ; preds = %509, %478
  %518 = load ptr, ptr %20, align 8, !tbaa !5
  %519 = load i32, ptr %518, align 4, !tbaa !9
  %520 = load i32, ptr %34, align 4, !tbaa !9
  %521 = add nsw i32 %520, %519
  store i32 %521, ptr %34, align 4, !tbaa !9
  br label %522

522:                                              ; preds = %517
  %523 = load i32, ptr %31, align 4, !tbaa !9
  %524 = add nsw i32 %523, 1
  store i32 %524, ptr %31, align 4, !tbaa !9
  br label %176, !llvm.loop !19

525:                                              ; preds = %176
  br label %879

526:                                              ; preds = %168
  %527 = load ptr, ptr %12, align 8, !tbaa !5
  %528 = load i32, ptr %527, align 4, !tbaa !9
  store i32 %528, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %529

529:                                              ; preds = %875, %526
  %530 = load i32, ptr %31, align 4, !tbaa !9
  %531 = load i32, ptr %23, align 4, !tbaa !9
  %532 = icmp sle i32 %530, %531
  br i1 %532, label %533, label %878

533:                                              ; preds = %529
  %534 = load ptr, ptr %18, align 8, !tbaa !5
  %535 = load float, ptr %534, align 4, !tbaa !11
  %536 = fcmp oeq float %535, 0.000000e+00
  br i1 %536, label %537, label %542

537:                                              ; preds = %533
  store i32 1, ptr %33, align 4, !tbaa !9
  %538 = load ptr, ptr %19, align 8, !tbaa !5
  %539 = load i32, ptr %34, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds float, ptr %538, i64 %540
  store float 0.000000e+00, ptr %541, align 4, !tbaa !11
  br label %573

542:                                              ; preds = %533
  %543 = load ptr, ptr %19, align 8, !tbaa !5
  %544 = load i32, ptr %34, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds float, ptr %543, i64 %545
  %547 = load float, ptr %546, align 4, !tbaa !11
  %548 = fcmp oeq float %547, 0.000000e+00
  br i1 %548, label %549, label %550

549:                                              ; preds = %542
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %572

550:                                              ; preds = %542
  store i32 0, ptr %33, align 4, !tbaa !9
  %551 = load ptr, ptr %18, align 8, !tbaa !5
  %552 = load float, ptr %551, align 4, !tbaa !11
  %553 = load ptr, ptr %19, align 8, !tbaa !5
  %554 = load i32, ptr %34, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds float, ptr %553, i64 %555
  %557 = load float, ptr %556, align 4, !tbaa !11
  store float %557, ptr %26, align 4, !tbaa !11
  %558 = load float, ptr %26, align 4, !tbaa !11
  %559 = fcmp oge float %558, 0.000000e+00
  br i1 %559, label %560, label %562

560:                                              ; preds = %550
  %561 = load float, ptr %26, align 4, !tbaa !11
  br label %565

562:                                              ; preds = %550
  %563 = load float, ptr %26, align 4, !tbaa !11
  %564 = fneg float %563
  br label %565

565:                                              ; preds = %562, %560
  %566 = phi float [ %561, %560 ], [ %564, %562 ]
  %567 = fmul float %552, %566
  %568 = load ptr, ptr %19, align 8, !tbaa !5
  %569 = load i32, ptr %34, align 4, !tbaa !9
  %570 = sext i32 %569 to i64
  %571 = getelementptr inbounds float, ptr %568, i64 %570
  store float %567, ptr %571, align 4, !tbaa !11
  br label %572

572:                                              ; preds = %565, %549
  br label %573

573:                                              ; preds = %572, %537
  %574 = load ptr, ptr %13, align 8, !tbaa !5
  %575 = load float, ptr %574, align 4, !tbaa !11
  %576 = fcmp une float %575, 0.000000e+00
  br i1 %576, label %577, label %831

577:                                              ; preds = %573
  %578 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %578, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %579

579:                                              ; preds = %699, %577
  %580 = load i32, ptr %32, align 4, !tbaa !9
  %581 = load i32, ptr %24, align 4, !tbaa !9
  %582 = icmp sle i32 %580, %581
  br i1 %582, label %583, label %702

583:                                              ; preds = %579
  %584 = load i32, ptr %31, align 4, !tbaa !9
  %585 = load i32, ptr %32, align 4, !tbaa !9
  %586 = load i32, ptr %21, align 4, !tbaa !9
  %587 = mul nsw i32 %585, %586
  %588 = add nsw i32 %584, %587
  store i32 %588, ptr %25, align 4, !tbaa !9
  %589 = load ptr, ptr %14, align 8, !tbaa !5
  %590 = load i32, ptr %25, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds %struct.complex, ptr %589, i64 %591
  %593 = getelementptr inbounds %struct.complex, ptr %592, i32 0, i32 0
  %594 = load float, ptr %593, align 4, !tbaa !13
  store float %594, ptr %26, align 4, !tbaa !11
  %595 = load float, ptr %26, align 4, !tbaa !11
  %596 = fcmp oge float %595, 0.000000e+00
  br i1 %596, label %597, label %599

597:                                              ; preds = %583
  %598 = load float, ptr %26, align 4, !tbaa !11
  br label %602

599:                                              ; preds = %583
  %600 = load float, ptr %26, align 4, !tbaa !11
  %601 = fneg float %600
  br label %602

602:                                              ; preds = %599, %597
  %603 = phi float [ %598, %597 ], [ %601, %599 ]
  %604 = load ptr, ptr %14, align 8, !tbaa !5
  %605 = load i32, ptr %31, align 4, !tbaa !9
  %606 = load i32, ptr %32, align 4, !tbaa !9
  %607 = load i32, ptr %21, align 4, !tbaa !9
  %608 = mul nsw i32 %606, %607
  %609 = add nsw i32 %605, %608
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds %struct.complex, ptr %604, i64 %610
  %612 = call <2 x float> @Cf(ptr noundef %611)
  store <2 x float> %612, ptr %43, align 4
  %613 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 0
  %614 = load float, ptr %613, align 4
  %615 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 1
  %616 = load float, ptr %615, align 4
  store float %616, ptr %27, align 4, !tbaa !11
  %617 = load float, ptr %27, align 4, !tbaa !11
  %618 = fcmp oge float %617, 0.000000e+00
  br i1 %618, label %619, label %621

619:                                              ; preds = %602
  %620 = load float, ptr %27, align 4, !tbaa !11
  br label %624

621:                                              ; preds = %602
  %622 = load float, ptr %27, align 4, !tbaa !11
  %623 = fneg float %622
  br label %624

624:                                              ; preds = %621, %619
  %625 = phi float [ %620, %619 ], [ %623, %621 ]
  %626 = fadd float %603, %625
  store float %626, ptr %29, align 4, !tbaa !11
  %627 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %627, ptr %25, align 4, !tbaa !9
  %628 = load i32, ptr %33, align 4, !tbaa !9
  %629 = icmp ne i32 %628, 0
  br i1 %629, label %630, label %651

630:                                              ; preds = %624
  %631 = load ptr, ptr %16, align 8, !tbaa !5
  %632 = load i32, ptr %25, align 4, !tbaa !9
  %633 = sext i32 %632 to i64
  %634 = getelementptr inbounds %struct.complex, ptr %631, i64 %633
  %635 = getelementptr inbounds %struct.complex, ptr %634, i32 0, i32 0
  %636 = load float, ptr %635, align 4, !tbaa !13
  %637 = fcmp oeq float %636, 0.000000e+00
  br i1 %637, label %638, label %646

638:                                              ; preds = %630
  %639 = load ptr, ptr %16, align 8, !tbaa !5
  %640 = load i32, ptr %25, align 4, !tbaa !9
  %641 = sext i32 %640 to i64
  %642 = getelementptr inbounds %struct.complex, ptr %639, i64 %641
  %643 = getelementptr inbounds %struct.complex, ptr %642, i32 0, i32 1
  %644 = load float, ptr %643, align 4, !tbaa !15
  %645 = fcmp oeq float %644, 0.000000e+00
  br i1 %645, label %649, label %646

646:                                              ; preds = %638, %630
  %647 = load float, ptr %29, align 4, !tbaa !11
  %648 = fcmp oeq float %647, 0.000000e+00
  br label %649

649:                                              ; preds = %646, %638
  %650 = phi i1 [ true, %638 ], [ %648, %646 ]
  br label %651

651:                                              ; preds = %649, %624
  %652 = phi i1 [ false, %624 ], [ %650, %649 ]
  %653 = zext i1 %652 to i32
  store i32 %653, ptr %33, align 4, !tbaa !9
  %654 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %654, ptr %25, align 4, !tbaa !9
  %655 = load ptr, ptr %13, align 8, !tbaa !5
  %656 = load float, ptr %655, align 4, !tbaa !11
  %657 = load ptr, ptr %16, align 8, !tbaa !5
  %658 = load i32, ptr %25, align 4, !tbaa !9
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds %struct.complex, ptr %657, i64 %659
  %661 = getelementptr inbounds %struct.complex, ptr %660, i32 0, i32 0
  %662 = load float, ptr %661, align 4, !tbaa !13
  store float %662, ptr %26, align 4, !tbaa !11
  %663 = load float, ptr %26, align 4, !tbaa !11
  %664 = fcmp oge float %663, 0.000000e+00
  br i1 %664, label %665, label %667

665:                                              ; preds = %651
  %666 = load float, ptr %26, align 4, !tbaa !11
  br label %670

667:                                              ; preds = %651
  %668 = load float, ptr %26, align 4, !tbaa !11
  %669 = fneg float %668
  br label %670

670:                                              ; preds = %667, %665
  %671 = phi float [ %666, %665 ], [ %669, %667 ]
  %672 = load ptr, ptr %16, align 8, !tbaa !5
  %673 = load i32, ptr %32, align 4, !tbaa !9
  %674 = sext i32 %673 to i64
  %675 = getelementptr inbounds %struct.complex, ptr %672, i64 %674
  %676 = call <2 x float> @Cf(ptr noundef %675)
  store <2 x float> %676, ptr %44, align 4
  %677 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 0
  %678 = load float, ptr %677, align 4
  %679 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 1
  %680 = load float, ptr %679, align 4
  store float %680, ptr %27, align 4, !tbaa !11
  %681 = load float, ptr %27, align 4, !tbaa !11
  %682 = fcmp oge float %681, 0.000000e+00
  br i1 %682, label %683, label %685

683:                                              ; preds = %670
  %684 = load float, ptr %27, align 4, !tbaa !11
  br label %688

685:                                              ; preds = %670
  %686 = load float, ptr %27, align 4, !tbaa !11
  %687 = fneg float %686
  br label %688

688:                                              ; preds = %685, %683
  %689 = phi float [ %684, %683 ], [ %687, %685 ]
  %690 = fadd float %671, %689
  %691 = fmul float %656, %690
  %692 = load float, ptr %29, align 4, !tbaa !11
  %693 = load ptr, ptr %19, align 8, !tbaa !5
  %694 = load i32, ptr %34, align 4, !tbaa !9
  %695 = sext i32 %694 to i64
  %696 = getelementptr inbounds float, ptr %693, i64 %695
  %697 = load float, ptr %696, align 4, !tbaa !11
  %698 = call float @llvm.fmuladd.f32(float %691, float %692, float %697)
  store float %698, ptr %696, align 4, !tbaa !11
  br label %699

699:                                              ; preds = %688
  %700 = load i32, ptr %32, align 4, !tbaa !9
  %701 = add nsw i32 %700, 1
  store i32 %701, ptr %32, align 4, !tbaa !9
  br label %579, !llvm.loop !20

702:                                              ; preds = %579
  %703 = load ptr, ptr %12, align 8, !tbaa !5
  %704 = load i32, ptr %703, align 4, !tbaa !9
  store i32 %704, ptr %24, align 4, !tbaa !9
  %705 = load i32, ptr %31, align 4, !tbaa !9
  %706 = add nsw i32 %705, 1
  store i32 %706, ptr %32, align 4, !tbaa !9
  br label %707

707:                                              ; preds = %827, %702
  %708 = load i32, ptr %32, align 4, !tbaa !9
  %709 = load i32, ptr %24, align 4, !tbaa !9
  %710 = icmp sle i32 %708, %709
  br i1 %710, label %711, label %830

711:                                              ; preds = %707
  %712 = load i32, ptr %32, align 4, !tbaa !9
  %713 = load i32, ptr %31, align 4, !tbaa !9
  %714 = load i32, ptr %21, align 4, !tbaa !9
  %715 = mul nsw i32 %713, %714
  %716 = add nsw i32 %712, %715
  store i32 %716, ptr %25, align 4, !tbaa !9
  %717 = load ptr, ptr %14, align 8, !tbaa !5
  %718 = load i32, ptr %25, align 4, !tbaa !9
  %719 = sext i32 %718 to i64
  %720 = getelementptr inbounds %struct.complex, ptr %717, i64 %719
  %721 = getelementptr inbounds %struct.complex, ptr %720, i32 0, i32 0
  %722 = load float, ptr %721, align 4, !tbaa !13
  store float %722, ptr %26, align 4, !tbaa !11
  %723 = load float, ptr %26, align 4, !tbaa !11
  %724 = fcmp oge float %723, 0.000000e+00
  br i1 %724, label %725, label %727

725:                                              ; preds = %711
  %726 = load float, ptr %26, align 4, !tbaa !11
  br label %730

727:                                              ; preds = %711
  %728 = load float, ptr %26, align 4, !tbaa !11
  %729 = fneg float %728
  br label %730

730:                                              ; preds = %727, %725
  %731 = phi float [ %726, %725 ], [ %729, %727 ]
  %732 = load ptr, ptr %14, align 8, !tbaa !5
  %733 = load i32, ptr %32, align 4, !tbaa !9
  %734 = load i32, ptr %31, align 4, !tbaa !9
  %735 = load i32, ptr %21, align 4, !tbaa !9
  %736 = mul nsw i32 %734, %735
  %737 = add nsw i32 %733, %736
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds %struct.complex, ptr %732, i64 %738
  %740 = call <2 x float> @Cf(ptr noundef %739)
  store <2 x float> %740, ptr %45, align 4
  %741 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 0
  %742 = load float, ptr %741, align 4
  %743 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 1
  %744 = load float, ptr %743, align 4
  store float %744, ptr %27, align 4, !tbaa !11
  %745 = load float, ptr %27, align 4, !tbaa !11
  %746 = fcmp oge float %745, 0.000000e+00
  br i1 %746, label %747, label %749

747:                                              ; preds = %730
  %748 = load float, ptr %27, align 4, !tbaa !11
  br label %752

749:                                              ; preds = %730
  %750 = load float, ptr %27, align 4, !tbaa !11
  %751 = fneg float %750
  br label %752

752:                                              ; preds = %749, %747
  %753 = phi float [ %748, %747 ], [ %751, %749 ]
  %754 = fadd float %731, %753
  store float %754, ptr %29, align 4, !tbaa !11
  %755 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %755, ptr %25, align 4, !tbaa !9
  %756 = load i32, ptr %33, align 4, !tbaa !9
  %757 = icmp ne i32 %756, 0
  br i1 %757, label %758, label %779

758:                                              ; preds = %752
  %759 = load ptr, ptr %16, align 8, !tbaa !5
  %760 = load i32, ptr %25, align 4, !tbaa !9
  %761 = sext i32 %760 to i64
  %762 = getelementptr inbounds %struct.complex, ptr %759, i64 %761
  %763 = getelementptr inbounds %struct.complex, ptr %762, i32 0, i32 0
  %764 = load float, ptr %763, align 4, !tbaa !13
  %765 = fcmp oeq float %764, 0.000000e+00
  br i1 %765, label %766, label %774

766:                                              ; preds = %758
  %767 = load ptr, ptr %16, align 8, !tbaa !5
  %768 = load i32, ptr %25, align 4, !tbaa !9
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds %struct.complex, ptr %767, i64 %769
  %771 = getelementptr inbounds %struct.complex, ptr %770, i32 0, i32 1
  %772 = load float, ptr %771, align 4, !tbaa !15
  %773 = fcmp oeq float %772, 0.000000e+00
  br i1 %773, label %777, label %774

774:                                              ; preds = %766, %758
  %775 = load float, ptr %29, align 4, !tbaa !11
  %776 = fcmp oeq float %775, 0.000000e+00
  br label %777

777:                                              ; preds = %774, %766
  %778 = phi i1 [ true, %766 ], [ %776, %774 ]
  br label %779

779:                                              ; preds = %777, %752
  %780 = phi i1 [ false, %752 ], [ %778, %777 ]
  %781 = zext i1 %780 to i32
  store i32 %781, ptr %33, align 4, !tbaa !9
  %782 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %782, ptr %25, align 4, !tbaa !9
  %783 = load ptr, ptr %13, align 8, !tbaa !5
  %784 = load float, ptr %783, align 4, !tbaa !11
  %785 = load ptr, ptr %16, align 8, !tbaa !5
  %786 = load i32, ptr %25, align 4, !tbaa !9
  %787 = sext i32 %786 to i64
  %788 = getelementptr inbounds %struct.complex, ptr %785, i64 %787
  %789 = getelementptr inbounds %struct.complex, ptr %788, i32 0, i32 0
  %790 = load float, ptr %789, align 4, !tbaa !13
  store float %790, ptr %26, align 4, !tbaa !11
  %791 = load float, ptr %26, align 4, !tbaa !11
  %792 = fcmp oge float %791, 0.000000e+00
  br i1 %792, label %793, label %795

793:                                              ; preds = %779
  %794 = load float, ptr %26, align 4, !tbaa !11
  br label %798

795:                                              ; preds = %779
  %796 = load float, ptr %26, align 4, !tbaa !11
  %797 = fneg float %796
  br label %798

798:                                              ; preds = %795, %793
  %799 = phi float [ %794, %793 ], [ %797, %795 ]
  %800 = load ptr, ptr %16, align 8, !tbaa !5
  %801 = load i32, ptr %32, align 4, !tbaa !9
  %802 = sext i32 %801 to i64
  %803 = getelementptr inbounds %struct.complex, ptr %800, i64 %802
  %804 = call <2 x float> @Cf(ptr noundef %803)
  store <2 x float> %804, ptr %46, align 4
  %805 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 0
  %806 = load float, ptr %805, align 4
  %807 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 1
  %808 = load float, ptr %807, align 4
  store float %808, ptr %27, align 4, !tbaa !11
  %809 = load float, ptr %27, align 4, !tbaa !11
  %810 = fcmp oge float %809, 0.000000e+00
  br i1 %810, label %811, label %813

811:                                              ; preds = %798
  %812 = load float, ptr %27, align 4, !tbaa !11
  br label %816

813:                                              ; preds = %798
  %814 = load float, ptr %27, align 4, !tbaa !11
  %815 = fneg float %814
  br label %816

816:                                              ; preds = %813, %811
  %817 = phi float [ %812, %811 ], [ %815, %813 ]
  %818 = fadd float %799, %817
  %819 = fmul float %784, %818
  %820 = load float, ptr %29, align 4, !tbaa !11
  %821 = load ptr, ptr %19, align 8, !tbaa !5
  %822 = load i32, ptr %34, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds float, ptr %821, i64 %823
  %825 = load float, ptr %824, align 4, !tbaa !11
  %826 = call float @llvm.fmuladd.f32(float %819, float %820, float %825)
  store float %826, ptr %824, align 4, !tbaa !11
  br label %827

827:                                              ; preds = %816
  %828 = load i32, ptr %32, align 4, !tbaa !9
  %829 = add nsw i32 %828, 1
  store i32 %829, ptr %32, align 4, !tbaa !9
  br label %707, !llvm.loop !21

830:                                              ; preds = %707
  br label %831

831:                                              ; preds = %830, %573
  %832 = load i32, ptr %33, align 4, !tbaa !9
  %833 = icmp ne i32 %832, 0
  br i1 %833, label %870, label %834

834:                                              ; preds = %831
  %835 = load ptr, ptr %19, align 8, !tbaa !5
  %836 = load i32, ptr %34, align 4, !tbaa !9
  %837 = sext i32 %836 to i64
  %838 = getelementptr inbounds float, ptr %835, i64 %837
  %839 = load float, ptr %838, align 4, !tbaa !11
  %840 = fcmp oge float %839, 0.000000e+00
  br i1 %840, label %841, label %851

841:                                              ; preds = %834
  %842 = load float, ptr %30, align 4, !tbaa !11
  %843 = fcmp oge float %842, 0.000000e+00
  br i1 %843, label %844, label %846

844:                                              ; preds = %841
  %845 = load float, ptr %30, align 4, !tbaa !11
  br label %849

846:                                              ; preds = %841
  %847 = load float, ptr %30, align 4, !tbaa !11
  %848 = fneg float %847
  br label %849

849:                                              ; preds = %846, %844
  %850 = phi float [ %845, %844 ], [ %848, %846 ]
  br label %862

851:                                              ; preds = %834
  %852 = load float, ptr %30, align 4, !tbaa !11
  %853 = fcmp oge float %852, 0.000000e+00
  br i1 %853, label %854, label %856

854:                                              ; preds = %851
  %855 = load float, ptr %30, align 4, !tbaa !11
  br label %859

856:                                              ; preds = %851
  %857 = load float, ptr %30, align 4, !tbaa !11
  %858 = fneg float %857
  br label %859

859:                                              ; preds = %856, %854
  %860 = phi float [ %855, %854 ], [ %858, %856 ]
  %861 = fneg float %860
  br label %862

862:                                              ; preds = %859, %849
  %863 = phi float [ %850, %849 ], [ %861, %859 ]
  %864 = load ptr, ptr %19, align 8, !tbaa !5
  %865 = load i32, ptr %34, align 4, !tbaa !9
  %866 = sext i32 %865 to i64
  %867 = getelementptr inbounds float, ptr %864, i64 %866
  %868 = load float, ptr %867, align 4, !tbaa !11
  %869 = fadd float %868, %863
  store float %869, ptr %867, align 4, !tbaa !11
  br label %870

870:                                              ; preds = %862, %831
  %871 = load ptr, ptr %20, align 8, !tbaa !5
  %872 = load i32, ptr %871, align 4, !tbaa !9
  %873 = load i32, ptr %34, align 4, !tbaa !9
  %874 = add nsw i32 %873, %872
  store i32 %874, ptr %34, align 4, !tbaa !9
  br label %875

875:                                              ; preds = %870
  %876 = load i32, ptr %31, align 4, !tbaa !9
  %877 = add nsw i32 %876, 1
  store i32 %877, ptr %31, align 4, !tbaa !9
  br label %529, !llvm.loop !22

878:                                              ; preds = %529
  br label %879

879:                                              ; preds = %878, %525
  br label %1610

880:                                              ; preds = %156
  %881 = load ptr, ptr %11, align 8, !tbaa !5
  %882 = load i32, ptr %881, align 4, !tbaa !9
  %883 = call i32 @ilauplo_(ptr noundef @.str)
  %884 = icmp eq i32 %882, %883
  br i1 %884, label %885, label %1247

885:                                              ; preds = %880
  %886 = load ptr, ptr %12, align 8, !tbaa !5
  %887 = load i32, ptr %886, align 4, !tbaa !9
  store i32 %887, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %888

888:                                              ; preds = %1243, %885
  %889 = load i32, ptr %31, align 4, !tbaa !9
  %890 = load i32, ptr %23, align 4, !tbaa !9
  %891 = icmp sle i32 %889, %890
  br i1 %891, label %892, label %1246

892:                                              ; preds = %888
  %893 = load ptr, ptr %18, align 8, !tbaa !5
  %894 = load float, ptr %893, align 4, !tbaa !11
  %895 = fcmp oeq float %894, 0.000000e+00
  br i1 %895, label %896, label %901

896:                                              ; preds = %892
  store i32 1, ptr %33, align 4, !tbaa !9
  %897 = load ptr, ptr %19, align 8, !tbaa !5
  %898 = load i32, ptr %34, align 4, !tbaa !9
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds float, ptr %897, i64 %899
  store float 0.000000e+00, ptr %900, align 4, !tbaa !11
  br label %932

901:                                              ; preds = %892
  %902 = load ptr, ptr %19, align 8, !tbaa !5
  %903 = load i32, ptr %34, align 4, !tbaa !9
  %904 = sext i32 %903 to i64
  %905 = getelementptr inbounds float, ptr %902, i64 %904
  %906 = load float, ptr %905, align 4, !tbaa !11
  %907 = fcmp oeq float %906, 0.000000e+00
  br i1 %907, label %908, label %909

908:                                              ; preds = %901
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %931

909:                                              ; preds = %901
  store i32 0, ptr %33, align 4, !tbaa !9
  %910 = load ptr, ptr %18, align 8, !tbaa !5
  %911 = load float, ptr %910, align 4, !tbaa !11
  %912 = load ptr, ptr %19, align 8, !tbaa !5
  %913 = load i32, ptr %34, align 4, !tbaa !9
  %914 = sext i32 %913 to i64
  %915 = getelementptr inbounds float, ptr %912, i64 %914
  %916 = load float, ptr %915, align 4, !tbaa !11
  store float %916, ptr %26, align 4, !tbaa !11
  %917 = load float, ptr %26, align 4, !tbaa !11
  %918 = fcmp oge float %917, 0.000000e+00
  br i1 %918, label %919, label %921

919:                                              ; preds = %909
  %920 = load float, ptr %26, align 4, !tbaa !11
  br label %924

921:                                              ; preds = %909
  %922 = load float, ptr %26, align 4, !tbaa !11
  %923 = fneg float %922
  br label %924

924:                                              ; preds = %921, %919
  %925 = phi float [ %920, %919 ], [ %923, %921 ]
  %926 = fmul float %911, %925
  %927 = load ptr, ptr %19, align 8, !tbaa !5
  %928 = load i32, ptr %34, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds float, ptr %927, i64 %929
  store float %926, ptr %930, align 4, !tbaa !11
  br label %931

931:                                              ; preds = %924, %908
  br label %932

932:                                              ; preds = %931, %896
  %933 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %933, ptr %35, align 4, !tbaa !9
  %934 = load ptr, ptr %13, align 8, !tbaa !5
  %935 = load float, ptr %934, align 4, !tbaa !11
  %936 = fcmp une float %935, 0.000000e+00
  br i1 %936, label %937, label %1199

937:                                              ; preds = %932
  %938 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %938, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %939

939:                                              ; preds = %1063, %937
  %940 = load i32, ptr %32, align 4, !tbaa !9
  %941 = load i32, ptr %24, align 4, !tbaa !9
  %942 = icmp sle i32 %940, %941
  br i1 %942, label %943, label %1066

943:                                              ; preds = %939
  %944 = load i32, ptr %32, align 4, !tbaa !9
  %945 = load i32, ptr %31, align 4, !tbaa !9
  %946 = load i32, ptr %21, align 4, !tbaa !9
  %947 = mul nsw i32 %945, %946
  %948 = add nsw i32 %944, %947
  store i32 %948, ptr %25, align 4, !tbaa !9
  %949 = load ptr, ptr %14, align 8, !tbaa !5
  %950 = load i32, ptr %25, align 4, !tbaa !9
  %951 = sext i32 %950 to i64
  %952 = getelementptr inbounds %struct.complex, ptr %949, i64 %951
  %953 = getelementptr inbounds %struct.complex, ptr %952, i32 0, i32 0
  %954 = load float, ptr %953, align 4, !tbaa !13
  store float %954, ptr %26, align 4, !tbaa !11
  %955 = load float, ptr %26, align 4, !tbaa !11
  %956 = fcmp oge float %955, 0.000000e+00
  br i1 %956, label %957, label %959

957:                                              ; preds = %943
  %958 = load float, ptr %26, align 4, !tbaa !11
  br label %962

959:                                              ; preds = %943
  %960 = load float, ptr %26, align 4, !tbaa !11
  %961 = fneg float %960
  br label %962

962:                                              ; preds = %959, %957
  %963 = phi float [ %958, %957 ], [ %961, %959 ]
  %964 = load ptr, ptr %14, align 8, !tbaa !5
  %965 = load i32, ptr %32, align 4, !tbaa !9
  %966 = load i32, ptr %31, align 4, !tbaa !9
  %967 = load i32, ptr %21, align 4, !tbaa !9
  %968 = mul nsw i32 %966, %967
  %969 = add nsw i32 %965, %968
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds %struct.complex, ptr %964, i64 %970
  %972 = call <2 x float> @Cf(ptr noundef %971)
  store <2 x float> %972, ptr %47, align 4
  %973 = getelementptr inbounds { float, float }, ptr %47, i32 0, i32 0
  %974 = load float, ptr %973, align 4
  %975 = getelementptr inbounds { float, float }, ptr %47, i32 0, i32 1
  %976 = load float, ptr %975, align 4
  store float %976, ptr %27, align 4, !tbaa !11
  %977 = load float, ptr %27, align 4, !tbaa !11
  %978 = fcmp oge float %977, 0.000000e+00
  br i1 %978, label %979, label %981

979:                                              ; preds = %962
  %980 = load float, ptr %27, align 4, !tbaa !11
  br label %984

981:                                              ; preds = %962
  %982 = load float, ptr %27, align 4, !tbaa !11
  %983 = fneg float %982
  br label %984

984:                                              ; preds = %981, %979
  %985 = phi float [ %980, %979 ], [ %983, %981 ]
  %986 = fadd float %963, %985
  store float %986, ptr %29, align 4, !tbaa !11
  %987 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %987, ptr %25, align 4, !tbaa !9
  %988 = load i32, ptr %33, align 4, !tbaa !9
  %989 = icmp ne i32 %988, 0
  br i1 %989, label %990, label %1011

990:                                              ; preds = %984
  %991 = load ptr, ptr %16, align 8, !tbaa !5
  %992 = load i32, ptr %25, align 4, !tbaa !9
  %993 = sext i32 %992 to i64
  %994 = getelementptr inbounds %struct.complex, ptr %991, i64 %993
  %995 = getelementptr inbounds %struct.complex, ptr %994, i32 0, i32 0
  %996 = load float, ptr %995, align 4, !tbaa !13
  %997 = fcmp oeq float %996, 0.000000e+00
  br i1 %997, label %998, label %1006

998:                                              ; preds = %990
  %999 = load ptr, ptr %16, align 8, !tbaa !5
  %1000 = load i32, ptr %25, align 4, !tbaa !9
  %1001 = sext i32 %1000 to i64
  %1002 = getelementptr inbounds %struct.complex, ptr %999, i64 %1001
  %1003 = getelementptr inbounds %struct.complex, ptr %1002, i32 0, i32 1
  %1004 = load float, ptr %1003, align 4, !tbaa !15
  %1005 = fcmp oeq float %1004, 0.000000e+00
  br i1 %1005, label %1009, label %1006

1006:                                             ; preds = %998, %990
  %1007 = load float, ptr %29, align 4, !tbaa !11
  %1008 = fcmp oeq float %1007, 0.000000e+00
  br label %1009

1009:                                             ; preds = %1006, %998
  %1010 = phi i1 [ true, %998 ], [ %1008, %1006 ]
  br label %1011

1011:                                             ; preds = %1009, %984
  %1012 = phi i1 [ false, %984 ], [ %1010, %1009 ]
  %1013 = zext i1 %1012 to i32
  store i32 %1013, ptr %33, align 4, !tbaa !9
  %1014 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %1014, ptr %25, align 4, !tbaa !9
  %1015 = load ptr, ptr %13, align 8, !tbaa !5
  %1016 = load float, ptr %1015, align 4, !tbaa !11
  %1017 = load ptr, ptr %16, align 8, !tbaa !5
  %1018 = load i32, ptr %25, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds %struct.complex, ptr %1017, i64 %1019
  %1021 = getelementptr inbounds %struct.complex, ptr %1020, i32 0, i32 0
  %1022 = load float, ptr %1021, align 4, !tbaa !13
  store float %1022, ptr %26, align 4, !tbaa !11
  %1023 = load float, ptr %26, align 4, !tbaa !11
  %1024 = fcmp oge float %1023, 0.000000e+00
  br i1 %1024, label %1025, label %1027

1025:                                             ; preds = %1011
  %1026 = load float, ptr %26, align 4, !tbaa !11
  br label %1030

1027:                                             ; preds = %1011
  %1028 = load float, ptr %26, align 4, !tbaa !11
  %1029 = fneg float %1028
  br label %1030

1030:                                             ; preds = %1027, %1025
  %1031 = phi float [ %1026, %1025 ], [ %1029, %1027 ]
  %1032 = load ptr, ptr %16, align 8, !tbaa !5
  %1033 = load i32, ptr %35, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds %struct.complex, ptr %1032, i64 %1034
  %1036 = call <2 x float> @Cf(ptr noundef %1035)
  store <2 x float> %1036, ptr %48, align 4
  %1037 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 0
  %1038 = load float, ptr %1037, align 4
  %1039 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 1
  %1040 = load float, ptr %1039, align 4
  store float %1040, ptr %27, align 4, !tbaa !11
  %1041 = load float, ptr %27, align 4, !tbaa !11
  %1042 = fcmp oge float %1041, 0.000000e+00
  br i1 %1042, label %1043, label %1045

1043:                                             ; preds = %1030
  %1044 = load float, ptr %27, align 4, !tbaa !11
  br label %1048

1045:                                             ; preds = %1030
  %1046 = load float, ptr %27, align 4, !tbaa !11
  %1047 = fneg float %1046
  br label %1048

1048:                                             ; preds = %1045, %1043
  %1049 = phi float [ %1044, %1043 ], [ %1047, %1045 ]
  %1050 = fadd float %1031, %1049
  %1051 = fmul float %1016, %1050
  %1052 = load float, ptr %29, align 4, !tbaa !11
  %1053 = load ptr, ptr %19, align 8, !tbaa !5
  %1054 = load i32, ptr %34, align 4, !tbaa !9
  %1055 = sext i32 %1054 to i64
  %1056 = getelementptr inbounds float, ptr %1053, i64 %1055
  %1057 = load float, ptr %1056, align 4, !tbaa !11
  %1058 = call float @llvm.fmuladd.f32(float %1051, float %1052, float %1057)
  store float %1058, ptr %1056, align 4, !tbaa !11
  %1059 = load ptr, ptr %17, align 8, !tbaa !5
  %1060 = load i32, ptr %1059, align 4, !tbaa !9
  %1061 = load i32, ptr %35, align 4, !tbaa !9
  %1062 = add nsw i32 %1061, %1060
  store i32 %1062, ptr %35, align 4, !tbaa !9
  br label %1063

1063:                                             ; preds = %1048
  %1064 = load i32, ptr %32, align 4, !tbaa !9
  %1065 = add nsw i32 %1064, 1
  store i32 %1065, ptr %32, align 4, !tbaa !9
  br label %939, !llvm.loop !23

1066:                                             ; preds = %939
  %1067 = load ptr, ptr %12, align 8, !tbaa !5
  %1068 = load i32, ptr %1067, align 4, !tbaa !9
  store i32 %1068, ptr %24, align 4, !tbaa !9
  %1069 = load i32, ptr %31, align 4, !tbaa !9
  %1070 = add nsw i32 %1069, 1
  store i32 %1070, ptr %32, align 4, !tbaa !9
  br label %1071

1071:                                             ; preds = %1195, %1066
  %1072 = load i32, ptr %32, align 4, !tbaa !9
  %1073 = load i32, ptr %24, align 4, !tbaa !9
  %1074 = icmp sle i32 %1072, %1073
  br i1 %1074, label %1075, label %1198

1075:                                             ; preds = %1071
  %1076 = load i32, ptr %31, align 4, !tbaa !9
  %1077 = load i32, ptr %32, align 4, !tbaa !9
  %1078 = load i32, ptr %21, align 4, !tbaa !9
  %1079 = mul nsw i32 %1077, %1078
  %1080 = add nsw i32 %1076, %1079
  store i32 %1080, ptr %25, align 4, !tbaa !9
  %1081 = load ptr, ptr %14, align 8, !tbaa !5
  %1082 = load i32, ptr %25, align 4, !tbaa !9
  %1083 = sext i32 %1082 to i64
  %1084 = getelementptr inbounds %struct.complex, ptr %1081, i64 %1083
  %1085 = getelementptr inbounds %struct.complex, ptr %1084, i32 0, i32 0
  %1086 = load float, ptr %1085, align 4, !tbaa !13
  store float %1086, ptr %26, align 4, !tbaa !11
  %1087 = load float, ptr %26, align 4, !tbaa !11
  %1088 = fcmp oge float %1087, 0.000000e+00
  br i1 %1088, label %1089, label %1091

1089:                                             ; preds = %1075
  %1090 = load float, ptr %26, align 4, !tbaa !11
  br label %1094

1091:                                             ; preds = %1075
  %1092 = load float, ptr %26, align 4, !tbaa !11
  %1093 = fneg float %1092
  br label %1094

1094:                                             ; preds = %1091, %1089
  %1095 = phi float [ %1090, %1089 ], [ %1093, %1091 ]
  %1096 = load ptr, ptr %14, align 8, !tbaa !5
  %1097 = load i32, ptr %31, align 4, !tbaa !9
  %1098 = load i32, ptr %32, align 4, !tbaa !9
  %1099 = load i32, ptr %21, align 4, !tbaa !9
  %1100 = mul nsw i32 %1098, %1099
  %1101 = add nsw i32 %1097, %1100
  %1102 = sext i32 %1101 to i64
  %1103 = getelementptr inbounds %struct.complex, ptr %1096, i64 %1102
  %1104 = call <2 x float> @Cf(ptr noundef %1103)
  store <2 x float> %1104, ptr %49, align 4
  %1105 = getelementptr inbounds { float, float }, ptr %49, i32 0, i32 0
  %1106 = load float, ptr %1105, align 4
  %1107 = getelementptr inbounds { float, float }, ptr %49, i32 0, i32 1
  %1108 = load float, ptr %1107, align 4
  store float %1108, ptr %27, align 4, !tbaa !11
  %1109 = load float, ptr %27, align 4, !tbaa !11
  %1110 = fcmp oge float %1109, 0.000000e+00
  br i1 %1110, label %1111, label %1113

1111:                                             ; preds = %1094
  %1112 = load float, ptr %27, align 4, !tbaa !11
  br label %1116

1113:                                             ; preds = %1094
  %1114 = load float, ptr %27, align 4, !tbaa !11
  %1115 = fneg float %1114
  br label %1116

1116:                                             ; preds = %1113, %1111
  %1117 = phi float [ %1112, %1111 ], [ %1115, %1113 ]
  %1118 = fadd float %1095, %1117
  store float %1118, ptr %29, align 4, !tbaa !11
  %1119 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %1119, ptr %25, align 4, !tbaa !9
  %1120 = load i32, ptr %33, align 4, !tbaa !9
  %1121 = icmp ne i32 %1120, 0
  br i1 %1121, label %1122, label %1143

1122:                                             ; preds = %1116
  %1123 = load ptr, ptr %16, align 8, !tbaa !5
  %1124 = load i32, ptr %25, align 4, !tbaa !9
  %1125 = sext i32 %1124 to i64
  %1126 = getelementptr inbounds %struct.complex, ptr %1123, i64 %1125
  %1127 = getelementptr inbounds %struct.complex, ptr %1126, i32 0, i32 0
  %1128 = load float, ptr %1127, align 4, !tbaa !13
  %1129 = fcmp oeq float %1128, 0.000000e+00
  br i1 %1129, label %1130, label %1138

1130:                                             ; preds = %1122
  %1131 = load ptr, ptr %16, align 8, !tbaa !5
  %1132 = load i32, ptr %25, align 4, !tbaa !9
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.complex, ptr %1131, i64 %1133
  %1135 = getelementptr inbounds %struct.complex, ptr %1134, i32 0, i32 1
  %1136 = load float, ptr %1135, align 4, !tbaa !15
  %1137 = fcmp oeq float %1136, 0.000000e+00
  br i1 %1137, label %1141, label %1138

1138:                                             ; preds = %1130, %1122
  %1139 = load float, ptr %29, align 4, !tbaa !11
  %1140 = fcmp oeq float %1139, 0.000000e+00
  br label %1141

1141:                                             ; preds = %1138, %1130
  %1142 = phi i1 [ true, %1130 ], [ %1140, %1138 ]
  br label %1143

1143:                                             ; preds = %1141, %1116
  %1144 = phi i1 [ false, %1116 ], [ %1142, %1141 ]
  %1145 = zext i1 %1144 to i32
  store i32 %1145, ptr %33, align 4, !tbaa !9
  %1146 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %1146, ptr %25, align 4, !tbaa !9
  %1147 = load ptr, ptr %13, align 8, !tbaa !5
  %1148 = load float, ptr %1147, align 4, !tbaa !11
  %1149 = load ptr, ptr %16, align 8, !tbaa !5
  %1150 = load i32, ptr %25, align 4, !tbaa !9
  %1151 = sext i32 %1150 to i64
  %1152 = getelementptr inbounds %struct.complex, ptr %1149, i64 %1151
  %1153 = getelementptr inbounds %struct.complex, ptr %1152, i32 0, i32 0
  %1154 = load float, ptr %1153, align 4, !tbaa !13
  store float %1154, ptr %26, align 4, !tbaa !11
  %1155 = load float, ptr %26, align 4, !tbaa !11
  %1156 = fcmp oge float %1155, 0.000000e+00
  br i1 %1156, label %1157, label %1159

1157:                                             ; preds = %1143
  %1158 = load float, ptr %26, align 4, !tbaa !11
  br label %1162

1159:                                             ; preds = %1143
  %1160 = load float, ptr %26, align 4, !tbaa !11
  %1161 = fneg float %1160
  br label %1162

1162:                                             ; preds = %1159, %1157
  %1163 = phi float [ %1158, %1157 ], [ %1161, %1159 ]
  %1164 = load ptr, ptr %16, align 8, !tbaa !5
  %1165 = load i32, ptr %35, align 4, !tbaa !9
  %1166 = sext i32 %1165 to i64
  %1167 = getelementptr inbounds %struct.complex, ptr %1164, i64 %1166
  %1168 = call <2 x float> @Cf(ptr noundef %1167)
  store <2 x float> %1168, ptr %50, align 4
  %1169 = getelementptr inbounds { float, float }, ptr %50, i32 0, i32 0
  %1170 = load float, ptr %1169, align 4
  %1171 = getelementptr inbounds { float, float }, ptr %50, i32 0, i32 1
  %1172 = load float, ptr %1171, align 4
  store float %1172, ptr %27, align 4, !tbaa !11
  %1173 = load float, ptr %27, align 4, !tbaa !11
  %1174 = fcmp oge float %1173, 0.000000e+00
  br i1 %1174, label %1175, label %1177

1175:                                             ; preds = %1162
  %1176 = load float, ptr %27, align 4, !tbaa !11
  br label %1180

1177:                                             ; preds = %1162
  %1178 = load float, ptr %27, align 4, !tbaa !11
  %1179 = fneg float %1178
  br label %1180

1180:                                             ; preds = %1177, %1175
  %1181 = phi float [ %1176, %1175 ], [ %1179, %1177 ]
  %1182 = fadd float %1163, %1181
  %1183 = fmul float %1148, %1182
  %1184 = load float, ptr %29, align 4, !tbaa !11
  %1185 = load ptr, ptr %19, align 8, !tbaa !5
  %1186 = load i32, ptr %34, align 4, !tbaa !9
  %1187 = sext i32 %1186 to i64
  %1188 = getelementptr inbounds float, ptr %1185, i64 %1187
  %1189 = load float, ptr %1188, align 4, !tbaa !11
  %1190 = call float @llvm.fmuladd.f32(float %1183, float %1184, float %1189)
  store float %1190, ptr %1188, align 4, !tbaa !11
  %1191 = load ptr, ptr %17, align 8, !tbaa !5
  %1192 = load i32, ptr %1191, align 4, !tbaa !9
  %1193 = load i32, ptr %35, align 4, !tbaa !9
  %1194 = add nsw i32 %1193, %1192
  store i32 %1194, ptr %35, align 4, !tbaa !9
  br label %1195

1195:                                             ; preds = %1180
  %1196 = load i32, ptr %32, align 4, !tbaa !9
  %1197 = add nsw i32 %1196, 1
  store i32 %1197, ptr %32, align 4, !tbaa !9
  br label %1071, !llvm.loop !24

1198:                                             ; preds = %1071
  br label %1199

1199:                                             ; preds = %1198, %932
  %1200 = load i32, ptr %33, align 4, !tbaa !9
  %1201 = icmp ne i32 %1200, 0
  br i1 %1201, label %1238, label %1202

1202:                                             ; preds = %1199
  %1203 = load ptr, ptr %19, align 8, !tbaa !5
  %1204 = load i32, ptr %34, align 4, !tbaa !9
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds float, ptr %1203, i64 %1205
  %1207 = load float, ptr %1206, align 4, !tbaa !11
  %1208 = fcmp oge float %1207, 0.000000e+00
  br i1 %1208, label %1209, label %1219

1209:                                             ; preds = %1202
  %1210 = load float, ptr %30, align 4, !tbaa !11
  %1211 = fcmp oge float %1210, 0.000000e+00
  br i1 %1211, label %1212, label %1214

1212:                                             ; preds = %1209
  %1213 = load float, ptr %30, align 4, !tbaa !11
  br label %1217

1214:                                             ; preds = %1209
  %1215 = load float, ptr %30, align 4, !tbaa !11
  %1216 = fneg float %1215
  br label %1217

1217:                                             ; preds = %1214, %1212
  %1218 = phi float [ %1213, %1212 ], [ %1216, %1214 ]
  br label %1230

1219:                                             ; preds = %1202
  %1220 = load float, ptr %30, align 4, !tbaa !11
  %1221 = fcmp oge float %1220, 0.000000e+00
  br i1 %1221, label %1222, label %1224

1222:                                             ; preds = %1219
  %1223 = load float, ptr %30, align 4, !tbaa !11
  br label %1227

1224:                                             ; preds = %1219
  %1225 = load float, ptr %30, align 4, !tbaa !11
  %1226 = fneg float %1225
  br label %1227

1227:                                             ; preds = %1224, %1222
  %1228 = phi float [ %1223, %1222 ], [ %1226, %1224 ]
  %1229 = fneg float %1228
  br label %1230

1230:                                             ; preds = %1227, %1217
  %1231 = phi float [ %1218, %1217 ], [ %1229, %1227 ]
  %1232 = load ptr, ptr %19, align 8, !tbaa !5
  %1233 = load i32, ptr %34, align 4, !tbaa !9
  %1234 = sext i32 %1233 to i64
  %1235 = getelementptr inbounds float, ptr %1232, i64 %1234
  %1236 = load float, ptr %1235, align 4, !tbaa !11
  %1237 = fadd float %1236, %1231
  store float %1237, ptr %1235, align 4, !tbaa !11
  br label %1238

1238:                                             ; preds = %1230, %1199
  %1239 = load ptr, ptr %20, align 8, !tbaa !5
  %1240 = load i32, ptr %1239, align 4, !tbaa !9
  %1241 = load i32, ptr %34, align 4, !tbaa !9
  %1242 = add nsw i32 %1241, %1240
  store i32 %1242, ptr %34, align 4, !tbaa !9
  br label %1243

1243:                                             ; preds = %1238
  %1244 = load i32, ptr %31, align 4, !tbaa !9
  %1245 = add nsw i32 %1244, 1
  store i32 %1245, ptr %31, align 4, !tbaa !9
  br label %888, !llvm.loop !25

1246:                                             ; preds = %888
  br label %1609

1247:                                             ; preds = %880
  %1248 = load ptr, ptr %12, align 8, !tbaa !5
  %1249 = load i32, ptr %1248, align 4, !tbaa !9
  store i32 %1249, ptr %23, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %1250

1250:                                             ; preds = %1605, %1247
  %1251 = load i32, ptr %31, align 4, !tbaa !9
  %1252 = load i32, ptr %23, align 4, !tbaa !9
  %1253 = icmp sle i32 %1251, %1252
  br i1 %1253, label %1254, label %1608

1254:                                             ; preds = %1250
  %1255 = load ptr, ptr %18, align 8, !tbaa !5
  %1256 = load float, ptr %1255, align 4, !tbaa !11
  %1257 = fcmp oeq float %1256, 0.000000e+00
  br i1 %1257, label %1258, label %1263

1258:                                             ; preds = %1254
  store i32 1, ptr %33, align 4, !tbaa !9
  %1259 = load ptr, ptr %19, align 8, !tbaa !5
  %1260 = load i32, ptr %34, align 4, !tbaa !9
  %1261 = sext i32 %1260 to i64
  %1262 = getelementptr inbounds float, ptr %1259, i64 %1261
  store float 0.000000e+00, ptr %1262, align 4, !tbaa !11
  br label %1294

1263:                                             ; preds = %1254
  %1264 = load ptr, ptr %19, align 8, !tbaa !5
  %1265 = load i32, ptr %34, align 4, !tbaa !9
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds float, ptr %1264, i64 %1266
  %1268 = load float, ptr %1267, align 4, !tbaa !11
  %1269 = fcmp oeq float %1268, 0.000000e+00
  br i1 %1269, label %1270, label %1271

1270:                                             ; preds = %1263
  store i32 1, ptr %33, align 4, !tbaa !9
  br label %1293

1271:                                             ; preds = %1263
  store i32 0, ptr %33, align 4, !tbaa !9
  %1272 = load ptr, ptr %18, align 8, !tbaa !5
  %1273 = load float, ptr %1272, align 4, !tbaa !11
  %1274 = load ptr, ptr %19, align 8, !tbaa !5
  %1275 = load i32, ptr %34, align 4, !tbaa !9
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds float, ptr %1274, i64 %1276
  %1278 = load float, ptr %1277, align 4, !tbaa !11
  store float %1278, ptr %26, align 4, !tbaa !11
  %1279 = load float, ptr %26, align 4, !tbaa !11
  %1280 = fcmp oge float %1279, 0.000000e+00
  br i1 %1280, label %1281, label %1283

1281:                                             ; preds = %1271
  %1282 = load float, ptr %26, align 4, !tbaa !11
  br label %1286

1283:                                             ; preds = %1271
  %1284 = load float, ptr %26, align 4, !tbaa !11
  %1285 = fneg float %1284
  br label %1286

1286:                                             ; preds = %1283, %1281
  %1287 = phi float [ %1282, %1281 ], [ %1285, %1283 ]
  %1288 = fmul float %1273, %1287
  %1289 = load ptr, ptr %19, align 8, !tbaa !5
  %1290 = load i32, ptr %34, align 4, !tbaa !9
  %1291 = sext i32 %1290 to i64
  %1292 = getelementptr inbounds float, ptr %1289, i64 %1291
  store float %1288, ptr %1292, align 4, !tbaa !11
  br label %1293

1293:                                             ; preds = %1286, %1270
  br label %1294

1294:                                             ; preds = %1293, %1258
  %1295 = load i32, ptr %36, align 4, !tbaa !9
  store i32 %1295, ptr %35, align 4, !tbaa !9
  %1296 = load ptr, ptr %13, align 8, !tbaa !5
  %1297 = load float, ptr %1296, align 4, !tbaa !11
  %1298 = fcmp une float %1297, 0.000000e+00
  br i1 %1298, label %1299, label %1561

1299:                                             ; preds = %1294
  %1300 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1300, ptr %24, align 4, !tbaa !9
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %1301

1301:                                             ; preds = %1425, %1299
  %1302 = load i32, ptr %32, align 4, !tbaa !9
  %1303 = load i32, ptr %24, align 4, !tbaa !9
  %1304 = icmp sle i32 %1302, %1303
  br i1 %1304, label %1305, label %1428

1305:                                             ; preds = %1301
  %1306 = load i32, ptr %31, align 4, !tbaa !9
  %1307 = load i32, ptr %32, align 4, !tbaa !9
  %1308 = load i32, ptr %21, align 4, !tbaa !9
  %1309 = mul nsw i32 %1307, %1308
  %1310 = add nsw i32 %1306, %1309
  store i32 %1310, ptr %25, align 4, !tbaa !9
  %1311 = load ptr, ptr %14, align 8, !tbaa !5
  %1312 = load i32, ptr %25, 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 0
  %1316 = load float, ptr %1315, align 4, !tbaa !13
  store float %1316, ptr %26, align 4, !tbaa !11
  %1317 = load float, ptr %26, align 4, !tbaa !11
  %1318 = fcmp oge float %1317, 0.000000e+00
  br i1 %1318, label %1319, label %1321

1319:                                             ; preds = %1305
  %1320 = load float, ptr %26, align 4, !tbaa !11
  br label %1324

1321:                                             ; preds = %1305
  %1322 = load float, ptr %26, align 4, !tbaa !11
  %1323 = fneg float %1322
  br label %1324

1324:                                             ; preds = %1321, %1319
  %1325 = phi float [ %1320, %1319 ], [ %1323, %1321 ]
  %1326 = load ptr, ptr %14, align 8, !tbaa !5
  %1327 = load i32, ptr %31, align 4, !tbaa !9
  %1328 = load i32, ptr %32, align 4, !tbaa !9
  %1329 = load i32, ptr %21, align 4, !tbaa !9
  %1330 = mul nsw i32 %1328, %1329
  %1331 = add nsw i32 %1327, %1330
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds %struct.complex, ptr %1326, i64 %1332
  %1334 = call <2 x float> @Cf(ptr noundef %1333)
  store <2 x float> %1334, ptr %51, align 4
  %1335 = getelementptr inbounds { float, float }, ptr %51, i32 0, i32 0
  %1336 = load float, ptr %1335, align 4
  %1337 = getelementptr inbounds { float, float }, ptr %51, i32 0, i32 1
  %1338 = load float, ptr %1337, align 4
  store float %1338, ptr %27, align 4, !tbaa !11
  %1339 = load float, ptr %27, align 4, !tbaa !11
  %1340 = fcmp oge float %1339, 0.000000e+00
  br i1 %1340, label %1341, label %1343

1341:                                             ; preds = %1324
  %1342 = load float, ptr %27, align 4, !tbaa !11
  br label %1346

1343:                                             ; preds = %1324
  %1344 = load float, ptr %27, align 4, !tbaa !11
  %1345 = fneg float %1344
  br label %1346

1346:                                             ; preds = %1343, %1341
  %1347 = phi float [ %1342, %1341 ], [ %1345, %1343 ]
  %1348 = fadd float %1325, %1347
  store float %1348, ptr %29, align 4, !tbaa !11
  %1349 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %1349, ptr %25, align 4, !tbaa !9
  %1350 = load i32, ptr %33, align 4, !tbaa !9
  %1351 = icmp ne i32 %1350, 0
  br i1 %1351, label %1352, label %1373

1352:                                             ; preds = %1346
  %1353 = load ptr, ptr %16, align 8, !tbaa !5
  %1354 = load i32, ptr %25, align 4, !tbaa !9
  %1355 = sext i32 %1354 to i64
  %1356 = getelementptr inbounds %struct.complex, ptr %1353, i64 %1355
  %1357 = getelementptr inbounds %struct.complex, ptr %1356, i32 0, i32 0
  %1358 = load float, ptr %1357, align 4, !tbaa !13
  %1359 = fcmp oeq float %1358, 0.000000e+00
  br i1 %1359, label %1360, label %1368

1360:                                             ; preds = %1352
  %1361 = load ptr, ptr %16, align 8, !tbaa !5
  %1362 = load i32, ptr %25, 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 1
  %1366 = load float, ptr %1365, align 4, !tbaa !15
  %1367 = fcmp oeq float %1366, 0.000000e+00
  br i1 %1367, label %1371, label %1368

1368:                                             ; preds = %1360, %1352
  %1369 = load float, ptr %29, align 4, !tbaa !11
  %1370 = fcmp oeq float %1369, 0.000000e+00
  br label %1371

1371:                                             ; preds = %1368, %1360
  %1372 = phi i1 [ true, %1360 ], [ %1370, %1368 ]
  br label %1373

1373:                                             ; preds = %1371, %1346
  %1374 = phi i1 [ false, %1346 ], [ %1372, %1371 ]
  %1375 = zext i1 %1374 to i32
  store i32 %1375, ptr %33, align 4, !tbaa !9
  %1376 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %1376, ptr %25, align 4, !tbaa !9
  %1377 = load ptr, ptr %13, align 8, !tbaa !5
  %1378 = load float, ptr %1377, align 4, !tbaa !11
  %1379 = load ptr, ptr %16, align 8, !tbaa !5
  %1380 = load i32, ptr %25, align 4, !tbaa !9
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds %struct.complex, ptr %1379, i64 %1381
  %1383 = getelementptr inbounds %struct.complex, ptr %1382, i32 0, i32 0
  %1384 = load float, ptr %1383, align 4, !tbaa !13
  store float %1384, ptr %26, align 4, !tbaa !11
  %1385 = load float, ptr %26, align 4, !tbaa !11
  %1386 = fcmp oge float %1385, 0.000000e+00
  br i1 %1386, label %1387, label %1389

1387:                                             ; preds = %1373
  %1388 = load float, ptr %26, align 4, !tbaa !11
  br label %1392

1389:                                             ; preds = %1373
  %1390 = load float, ptr %26, align 4, !tbaa !11
  %1391 = fneg float %1390
  br label %1392

1392:                                             ; preds = %1389, %1387
  %1393 = phi float [ %1388, %1387 ], [ %1391, %1389 ]
  %1394 = load ptr, ptr %16, align 8, !tbaa !5
  %1395 = load i32, ptr %35, align 4, !tbaa !9
  %1396 = sext i32 %1395 to i64
  %1397 = getelementptr inbounds %struct.complex, ptr %1394, i64 %1396
  %1398 = call <2 x float> @Cf(ptr noundef %1397)
  store <2 x float> %1398, ptr %52, align 4
  %1399 = getelementptr inbounds { float, float }, ptr %52, i32 0, i32 0
  %1400 = load float, ptr %1399, align 4
  %1401 = getelementptr inbounds { float, float }, ptr %52, i32 0, i32 1
  %1402 = load float, ptr %1401, align 4
  store float %1402, ptr %27, align 4, !tbaa !11
  %1403 = load float, ptr %27, align 4, !tbaa !11
  %1404 = fcmp oge float %1403, 0.000000e+00
  br i1 %1404, label %1405, label %1407

1405:                                             ; preds = %1392
  %1406 = load float, ptr %27, align 4, !tbaa !11
  br label %1410

1407:                                             ; preds = %1392
  %1408 = load float, ptr %27, align 4, !tbaa !11
  %1409 = fneg float %1408
  br label %1410

1410:                                             ; preds = %1407, %1405
  %1411 = phi float [ %1406, %1405 ], [ %1409, %1407 ]
  %1412 = fadd float %1393, %1411
  %1413 = fmul float %1378, %1412
  %1414 = load float, ptr %29, align 4, !tbaa !11
  %1415 = load ptr, ptr %19, align 8, !tbaa !5
  %1416 = load i32, ptr %34, align 4, !tbaa !9
  %1417 = sext i32 %1416 to i64
  %1418 = getelementptr inbounds float, ptr %1415, i64 %1417
  %1419 = load float, ptr %1418, align 4, !tbaa !11
  %1420 = call float @llvm.fmuladd.f32(float %1413, float %1414, float %1419)
  store float %1420, ptr %1418, align 4, !tbaa !11
  %1421 = load ptr, ptr %17, align 8, !tbaa !5
  %1422 = load i32, ptr %1421, align 4, !tbaa !9
  %1423 = load i32, ptr %35, align 4, !tbaa !9
  %1424 = add nsw i32 %1423, %1422
  store i32 %1424, ptr %35, align 4, !tbaa !9
  br label %1425

1425:                                             ; preds = %1410
  %1426 = load i32, ptr %32, align 4, !tbaa !9
  %1427 = add nsw i32 %1426, 1
  store i32 %1427, ptr %32, align 4, !tbaa !9
  br label %1301, !llvm.loop !26

1428:                                             ; preds = %1301
  %1429 = load ptr, ptr %12, align 8, !tbaa !5
  %1430 = load i32, ptr %1429, align 4, !tbaa !9
  store i32 %1430, ptr %24, align 4, !tbaa !9
  %1431 = load i32, ptr %31, align 4, !tbaa !9
  %1432 = add nsw i32 %1431, 1
  store i32 %1432, ptr %32, align 4, !tbaa !9
  br label %1433

1433:                                             ; preds = %1557, %1428
  %1434 = load i32, ptr %32, align 4, !tbaa !9
  %1435 = load i32, ptr %24, align 4, !tbaa !9
  %1436 = icmp sle i32 %1434, %1435
  br i1 %1436, label %1437, label %1560

1437:                                             ; preds = %1433
  %1438 = load i32, ptr %32, align 4, !tbaa !9
  %1439 = load i32, ptr %31, align 4, !tbaa !9
  %1440 = load i32, ptr %21, align 4, !tbaa !9
  %1441 = mul nsw i32 %1439, %1440
  %1442 = add nsw i32 %1438, %1441
  store i32 %1442, ptr %25, align 4, !tbaa !9
  %1443 = load ptr, ptr %14, align 8, !tbaa !5
  %1444 = load i32, ptr %25, align 4, !tbaa !9
  %1445 = sext i32 %1444 to i64
  %1446 = getelementptr inbounds %struct.complex, ptr %1443, i64 %1445
  %1447 = getelementptr inbounds %struct.complex, ptr %1446, i32 0, i32 0
  %1448 = load float, ptr %1447, align 4, !tbaa !13
  store float %1448, ptr %26, align 4, !tbaa !11
  %1449 = load float, ptr %26, align 4, !tbaa !11
  %1450 = fcmp oge float %1449, 0.000000e+00
  br i1 %1450, label %1451, label %1453

1451:                                             ; preds = %1437
  %1452 = load float, ptr %26, align 4, !tbaa !11
  br label %1456

1453:                                             ; preds = %1437
  %1454 = load float, ptr %26, align 4, !tbaa !11
  %1455 = fneg float %1454
  br label %1456

1456:                                             ; preds = %1453, %1451
  %1457 = phi float [ %1452, %1451 ], [ %1455, %1453 ]
  %1458 = load ptr, ptr %14, align 8, !tbaa !5
  %1459 = load i32, ptr %32, align 4, !tbaa !9
  %1460 = load i32, ptr %31, align 4, !tbaa !9
  %1461 = load i32, ptr %21, align 4, !tbaa !9
  %1462 = mul nsw i32 %1460, %1461
  %1463 = add nsw i32 %1459, %1462
  %1464 = sext i32 %1463 to i64
  %1465 = getelementptr inbounds %struct.complex, ptr %1458, i64 %1464
  %1466 = call <2 x float> @Cf(ptr noundef %1465)
  store <2 x float> %1466, ptr %53, align 4
  %1467 = getelementptr inbounds { float, float }, ptr %53, i32 0, i32 0
  %1468 = load float, ptr %1467, align 4
  %1469 = getelementptr inbounds { float, float }, ptr %53, i32 0, i32 1
  %1470 = load float, ptr %1469, align 4
  store float %1470, ptr %27, align 4, !tbaa !11
  %1471 = load float, ptr %27, align 4, !tbaa !11
  %1472 = fcmp oge float %1471, 0.000000e+00
  br i1 %1472, label %1473, label %1475

1473:                                             ; preds = %1456
  %1474 = load float, ptr %27, align 4, !tbaa !11
  br label %1478

1475:                                             ; preds = %1456
  %1476 = load float, ptr %27, align 4, !tbaa !11
  %1477 = fneg float %1476
  br label %1478

1478:                                             ; preds = %1475, %1473
  %1479 = phi float [ %1474, %1473 ], [ %1477, %1475 ]
  %1480 = fadd float %1457, %1479
  store float %1480, ptr %29, align 4, !tbaa !11
  %1481 = load i32, ptr %32, align 4, !tbaa !9
  store i32 %1481, ptr %25, align 4, !tbaa !9
  %1482 = load i32, ptr %33, align 4, !tbaa !9
  %1483 = icmp ne i32 %1482, 0
  br i1 %1483, label %1484, label %1505

1484:                                             ; preds = %1478
  %1485 = load ptr, ptr %16, align 8, !tbaa !5
  %1486 = load i32, ptr %25, align 4, !tbaa !9
  %1487 = sext i32 %1486 to i64
  %1488 = getelementptr inbounds %struct.complex, ptr %1485, i64 %1487
  %1489 = getelementptr inbounds %struct.complex, ptr %1488, i32 0, i32 0
  %1490 = load float, ptr %1489, align 4, !tbaa !13
  %1491 = fcmp oeq float %1490, 0.000000e+00
  br i1 %1491, label %1492, label %1500

1492:                                             ; preds = %1484
  %1493 = load ptr, ptr %16, align 8, !tbaa !5
  %1494 = load i32, ptr %25, align 4, !tbaa !9
  %1495 = sext i32 %1494 to i64
  %1496 = getelementptr inbounds %struct.complex, ptr %1493, i64 %1495
  %1497 = getelementptr inbounds %struct.complex, ptr %1496, i32 0, i32 1
  %1498 = load float, ptr %1497, align 4, !tbaa !15
  %1499 = fcmp oeq float %1498, 0.000000e+00
  br i1 %1499, label %1503, label %1500

1500:                                             ; preds = %1492, %1484
  %1501 = load float, ptr %29, align 4, !tbaa !11
  %1502 = fcmp oeq float %1501, 0.000000e+00
  br label %1503

1503:                                             ; preds = %1500, %1492
  %1504 = phi i1 [ true, %1492 ], [ %1502, %1500 ]
  br label %1505

1505:                                             ; preds = %1503, %1478
  %1506 = phi i1 [ false, %1478 ], [ %1504, %1503 ]
  %1507 = zext i1 %1506 to i32
  store i32 %1507, ptr %33, align 4, !tbaa !9
  %1508 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %1508, ptr %25, align 4, !tbaa !9
  %1509 = load ptr, ptr %13, align 8, !tbaa !5
  %1510 = load float, ptr %1509, align 4, !tbaa !11
  %1511 = load ptr, ptr %16, align 8, !tbaa !5
  %1512 = load i32, ptr %25, align 4, !tbaa !9
  %1513 = sext i32 %1512 to i64
  %1514 = getelementptr inbounds %struct.complex, ptr %1511, i64 %1513
  %1515 = getelementptr inbounds %struct.complex, ptr %1514, i32 0, i32 0
  %1516 = load float, ptr %1515, align 4, !tbaa !13
  store float %1516, ptr %26, align 4, !tbaa !11
  %1517 = load float, ptr %26, align 4, !tbaa !11
  %1518 = fcmp oge float %1517, 0.000000e+00
  br i1 %1518, label %1519, label %1521

1519:                                             ; preds = %1505
  %1520 = load float, ptr %26, align 4, !tbaa !11
  br label %1524

1521:                                             ; preds = %1505
  %1522 = load float, ptr %26, align 4, !tbaa !11
  %1523 = fneg float %1522
  br label %1524

1524:                                             ; preds = %1521, %1519
  %1525 = phi float [ %1520, %1519 ], [ %1523, %1521 ]
  %1526 = load ptr, ptr %16, align 8, !tbaa !5
  %1527 = load i32, ptr %35, align 4, !tbaa !9
  %1528 = sext i32 %1527 to i64
  %1529 = getelementptr inbounds %struct.complex, ptr %1526, i64 %1528
  %1530 = call <2 x float> @Cf(ptr noundef %1529)
  store <2 x float> %1530, ptr %54, align 4
  %1531 = getelementptr inbounds { float, float }, ptr %54, i32 0, i32 0
  %1532 = load float, ptr %1531, align 4
  %1533 = getelementptr inbounds { float, float }, ptr %54, i32 0, i32 1
  %1534 = load float, ptr %1533, align 4
  store float %1534, ptr %27, align 4, !tbaa !11
  %1535 = load float, ptr %27, align 4, !tbaa !11
  %1536 = fcmp oge float %1535, 0.000000e+00
  br i1 %1536, label %1537, label %1539

1537:                                             ; preds = %1524
  %1538 = load float, ptr %27, align 4, !tbaa !11
  br label %1542

1539:                                             ; preds = %1524
  %1540 = load float, ptr %27, align 4, !tbaa !11
  %1541 = fneg float %1540
  br label %1542

1542:                                             ; preds = %1539, %1537
  %1543 = phi float [ %1538, %1537 ], [ %1541, %1539 ]
  %1544 = fadd float %1525, %1543
  %1545 = fmul float %1510, %1544
  %1546 = load float, ptr %29, align 4, !tbaa !11
  %1547 = load ptr, ptr %19, align 8, !tbaa !5
  %1548 = load i32, ptr %34, align 4, !tbaa !9
  %1549 = sext i32 %1548 to i64
  %1550 = getelementptr inbounds float, ptr %1547, i64 %1549
  %1551 = load float, ptr %1550, align 4, !tbaa !11
  %1552 = call float @llvm.fmuladd.f32(float %1545, float %1546, float %1551)
  store float %1552, ptr %1550, align 4, !tbaa !11
  %1553 = load ptr, ptr %17, align 8, !tbaa !5
  %1554 = load i32, ptr %1553, align 4, !tbaa !9
  %1555 = load i32, ptr %35, align 4, !tbaa !9
  %1556 = add nsw i32 %1555, %1554
  store i32 %1556, ptr %35, align 4, !tbaa !9
  br label %1557

1557:                                             ; preds = %1542
  %1558 = load i32, ptr %32, align 4, !tbaa !9
  %1559 = add nsw i32 %1558, 1
  store i32 %1559, ptr %32, align 4, !tbaa !9
  br label %1433, !llvm.loop !27

1560:                                             ; preds = %1433
  br label %1561

1561:                                             ; preds = %1560, %1294
  %1562 = load i32, ptr %33, align 4, !tbaa !9
  %1563 = icmp ne i32 %1562, 0
  br i1 %1563, label %1600, label %1564

1564:                                             ; preds = %1561
  %1565 = load ptr, ptr %19, align 8, !tbaa !5
  %1566 = load i32, ptr %34, align 4, !tbaa !9
  %1567 = sext i32 %1566 to i64
  %1568 = getelementptr inbounds float, ptr %1565, i64 %1567
  %1569 = load float, ptr %1568, align 4, !tbaa !11
  %1570 = fcmp oge float %1569, 0.000000e+00
  br i1 %1570, label %1571, label %1581

1571:                                             ; preds = %1564
  %1572 = load float, ptr %30, align 4, !tbaa !11
  %1573 = fcmp oge float %1572, 0.000000e+00
  br i1 %1573, label %1574, label %1576

1574:                                             ; preds = %1571
  %1575 = load float, ptr %30, align 4, !tbaa !11
  br label %1579

1576:                                             ; preds = %1571
  %1577 = load float, ptr %30, align 4, !tbaa !11
  %1578 = fneg float %1577
  br label %1579

1579:                                             ; preds = %1576, %1574
  %1580 = phi float [ %1575, %1574 ], [ %1578, %1576 ]
  br label %1592

1581:                                             ; preds = %1564
  %1582 = load float, ptr %30, align 4, !tbaa !11
  %1583 = fcmp oge float %1582, 0.000000e+00
  br i1 %1583, label %1584, label %1586

1584:                                             ; preds = %1581
  %1585 = load float, ptr %30, align 4, !tbaa !11
  br label %1589

1586:                                             ; preds = %1581
  %1587 = load float, ptr %30, align 4, !tbaa !11
  %1588 = fneg float %1587
  br label %1589

1589:                                             ; preds = %1586, %1584
  %1590 = phi float [ %1585, %1584 ], [ %1588, %1586 ]
  %1591 = fneg float %1590
  br label %1592

1592:                                             ; preds = %1589, %1579
  %1593 = phi float [ %1580, %1579 ], [ %1591, %1589 ]
  %1594 = load ptr, ptr %19, align 8, !tbaa !5
  %1595 = load i32, ptr %34, align 4, !tbaa !9
  %1596 = sext i32 %1595 to i64
  %1597 = getelementptr inbounds float, ptr %1594, i64 %1596
  %1598 = load float, ptr %1597, align 4, !tbaa !11
  %1599 = fadd float %1598, %1593
  store float %1599, ptr %1597, align 4, !tbaa !11
  br label %1600

1600:                                             ; preds = %1592, %1561
  %1601 = load ptr, ptr %20, align 8, !tbaa !5
  %1602 = load i32, ptr %1601, align 4, !tbaa !9
  %1603 = load i32, ptr %34, align 4, !tbaa !9
  %1604 = add nsw i32 %1603, %1602
  store i32 %1604, ptr %34, align 4, !tbaa !9
  br label %1605

1605:                                             ; preds = %1600
  %1606 = load i32, ptr %31, align 4, !tbaa !9
  %1607 = add nsw i32 %1606, 1
  store i32 %1607, ptr %31, align 4, !tbaa !9
  br label %1250, !llvm.loop !28

1608:                                             ; preds = %1250
  br label %1609

1609:                                             ; preds = %1608, %1246
  br label %1610

1610:                                             ; preds = %1609, %879
  store i32 1, ptr %38, align 4
  br label %1611

1611:                                             ; preds = %1610, %129, %115
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #5
  ret void
}

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

declare i32 @ilauplo_(ptr noundef) #2

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

declare float @slamch_(ptr noundef) #2

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

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

; 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 = { 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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #5 = { nounwind }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"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 = !{!14, !12, i64 4}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.mustprogress"}
!18 = distinct !{!18, !17}
!19 = distinct !{!19, !17}
!20 = distinct !{!20, !17}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !17}
!23 = distinct !{!23, !17}
!24 = distinct !{!24, !17}
!25 = distinct !{!25, !17}
!26 = distinct !{!26, !17}
!27 = distinct !{!27, !17}
!28 = distinct !{!28, !17}


; 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
@.str.3 = external hidden unnamed_addr constant [13 x i8], align 1

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

19:                                               ; preds = %10
  %20 = load i32, ptr %0, align 4, !tbaa !5
  %21 = tail call i32 @ilauplo_(ptr noundef nonnull @.str.1) #6
  %.not542 = icmp eq i32 %20, %21
  br i1 %.not542, label %23, label %22

22:                                               ; preds = %19
  store i32 1, ptr %11, align 4, !tbaa !5
  br label %.thread

23:                                               ; preds = %19, %10
  %24 = load i32, ptr %1, align 4, !tbaa !5
  %25 = icmp slt i32 %24, 0
  br i1 %25, label %26, label %27

26:                                               ; preds = %23
  store i32 2, ptr %11, align 4, !tbaa !5
  br label %.thread

27:                                               ; preds = %23
  %28 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %24, i32 1)
  %29 = icmp slt i32 %28, %spec.select
  br i1 %29, label %30, label %31

30:                                               ; preds = %27
  store i32 5, ptr %11, align 4, !tbaa !5
  br label %.thread

31:                                               ; preds = %27
  %32 = load i32, ptr %6, align 4, !tbaa !5
  %33 = icmp eq i32 %32, 0
  br i1 %33, label %34, label %35

34:                                               ; preds = %31
  store i32 7, ptr %11, align 4, !tbaa !5
  br label %.thread

35:                                               ; preds = %31
  %36 = load i32, ptr %9, align 4, !tbaa !5
  %37 = icmp eq i32 %36, 0
  br i1 %37, label %38, label %40

38:                                               ; preds = %35
  store i32 10, ptr %11, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %22, %30, %38, %34, %26
  %39 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %11, i32 noundef 6) #6
  br label %.loopexit573

40:                                               ; preds = %35
  %41 = icmp eq i32 %24, 0
  br i1 %41, label %.loopexit573, label %42

42:                                               ; preds = %40
  %43 = load float, ptr %2, align 4, !tbaa !9
  %44 = fcmp oeq float %43, 0.000000e+00
  br i1 %44, label %45, label %48

45:                                               ; preds = %42
  %46 = load float, ptr %7, align 4, !tbaa !9
  %47 = fcmp oeq float %46, 1.000000e+00
  br i1 %47, label %.loopexit573, label %48

48:                                               ; preds = %45, %42
  %49 = add nsw i32 %24, -1
  %50 = mul nsw i32 %32, %49
  %51 = sub nsw i32 1, %50
  %.inv = icmp slt i32 %32, 1
  %.0529 = select i1 %.inv, i32 %51, i32 1
  %52 = mul nsw i32 %36, %49
  %53 = sub nsw i32 1, %52
  %.inv572 = icmp slt i32 %36, 1
  %.0530 = select i1 %.inv572, i32 %53, i32 1
  %54 = tail call float @slamch_(ptr noundef nonnull @.str.3) #6
  %55 = load i32, ptr %1, align 4, !tbaa !5
  %56 = add nsw i32 %55, 1
  %57 = sitofp i32 %56 to float
  %58 = fmul float %54, %57
  %59 = load i32, ptr %6, align 4, !tbaa !5
  %60 = icmp eq i32 %59, 1
  %61 = load i32, ptr %0, align 4, !tbaa !5
  %62 = tail call i32 @ilauplo_(ptr noundef nonnull @.str) #6
  %63 = icmp eq i32 %61, %62
  %64 = load i32, ptr %1, align 4, !tbaa !5
  %.not564632 = icmp slt i32 %64, 1
  br i1 %60, label %65, label %276

65:                                               ; preds = %48
  br i1 %63, label %66, label %171

66:                                               ; preds = %65
  br i1 %.not564632, label %.loopexit573, label %.lr.ph636

.lr.ph636:                                        ; preds = %66
  %67 = fcmp oge float %58, 0.000000e+00
  %68 = fneg float %58
  %69 = sext i32 %12 to i64
  %70 = add nuw i32 %64, 2
  %wide.trip.count727 = zext i32 %70 to i64
  br label %71

71:                                               ; preds = %.lr.ph636, %168
  %indvars.iv722 = phi i64 [ 2, %.lr.ph636 ], [ %indvars.iv.next723, %168 ]
  %indvars.iv715 = phi i64 [ 1, %.lr.ph636 ], [ %indvars.iv.next716, %168 ]
  %.0521633 = phi i32 [ %.0530, %.lr.ph636 ], [ %170, %168 ]
  %72 = load float, ptr %7, align 4, !tbaa !9
  %73 = fcmp oeq float %72, 0.000000e+00
  %74 = sext i32 %.0521633 to i64
  %75 = getelementptr inbounds float, ptr %16, i64 %74
  br i1 %73, label %.sink.split, label %76

76:                                               ; preds = %71
  %77 = load float, ptr %75, align 4, !tbaa !9
  %78 = fcmp oeq float %77, 0.000000e+00
  br i1 %78, label %84, label %79

79:                                               ; preds = %76
  %80 = fcmp oge float %77, 0.000000e+00
  %81 = fneg float %77
  %82 = select i1 %80, float %77, float %81
  %83 = fmul float %72, %82
  br label %.sink.split

.sink.split:                                      ; preds = %71, %79
  %.sink = phi float [ %83, %79 ], [ 0.000000e+00, %71 ]
  %.0513.ph = phi i32 [ 0, %79 ], [ 1, %71 ]
  store float %.sink, ptr %75, align 4, !tbaa !9
  br label %84

84:                                               ; preds = %.sink.split, %76
  %85 = phi float [ %77, %76 ], [ %.sink, %.sink.split ]
  %.0513 = phi i32 [ 1, %76 ], [ %.0513.ph, %.sink.split ]
  %86 = load float, ptr %2, align 4, !tbaa !9
  %87 = fcmp une float %86, 0.000000e+00
  br i1 %87, label %.preheader, label %.loopexit

.preheader:                                       ; preds = %84
  %88 = mul nsw i64 %indvars.iv715, %69
  %89 = sext i32 %.0521633 to i64
  %90 = getelementptr inbounds float, ptr %16, i64 %89
  %invariant.gep768 = getelementptr %struct.complex, ptr %14, i64 %88
  br label %91

91:                                               ; preds = %.preheader, %._crit_edge732
  %indvars.iv709 = phi i64 [ 1, %.preheader ], [ %indvars.iv.next710, %._crit_edge732 ]
  %.1514624 = phi i32 [ %.0513, %.preheader ], [ %110, %._crit_edge732 ]
  %gep769 = getelementptr %struct.complex, ptr %invariant.gep768, i64 %indvars.iv709
  %92 = load float, ptr %gep769, align 4, !tbaa !11
  %93 = fcmp oge float %92, 0.000000e+00
  %94 = fneg float %92
  %95 = select i1 %93, float %92, float %94
  %96 = tail call <2 x float> @Cf(ptr noundef nonnull %gep769)
  %.sroa.015.4.vec.extract = extractelement <2 x float> %96, i64 1
  %97 = fcmp oge float %.sroa.015.4.vec.extract, 0.000000e+00
  %98 = fneg float %.sroa.015.4.vec.extract
  %99 = select i1 %97, float %.sroa.015.4.vec.extract, float %98
  %100 = fadd float %95, %99
  %.not570 = icmp eq i32 %.1514624, 0
  %.phi.trans.insert733 = getelementptr inbounds %struct.complex, ptr %15, i64 %indvars.iv709
  %.pre734 = load float, ptr %.phi.trans.insert733, align 4, !tbaa !11
  br i1 %.not570, label %._crit_edge732, label %101

101:                                              ; preds = %91
  %102 = fcmp oeq float %.pre734, 0.000000e+00
  br i1 %102, label %103, label %107

103:                                              ; preds = %101
  %104 = getelementptr inbounds i8, ptr %.phi.trans.insert733, i64 4
  %105 = load float, ptr %104, align 4, !tbaa !13
  %106 = fcmp oeq float %105, 0.000000e+00
  br i1 %106, label %._crit_edge732, label %107

107:                                              ; preds = %103, %101
  %108 = fcmp oeq float %100, 0.000000e+00
  br label %._crit_edge732

._crit_edge732:                                   ; preds = %91, %103, %107
  %109 = phi i1 [ true, %103 ], [ %108, %107 ], [ false, %91 ]
  %110 = zext i1 %109 to i32
  %111 = load float, ptr %2, align 4, !tbaa !9
  %112 = getelementptr inbounds %struct.complex, ptr %15, i64 %indvars.iv709
  %113 = fcmp oge float %.pre734, 0.000000e+00
  %114 = fneg float %.pre734
  %115 = select i1 %113, float %.pre734, float %114
  %116 = tail call <2 x float> @Cf(ptr noundef nonnull %112)
  %.sroa.014.4.vec.extract = extractelement <2 x float> %116, i64 1
  %117 = fcmp oge float %.sroa.014.4.vec.extract, 0.000000e+00
  %118 = fneg float %.sroa.014.4.vec.extract
  %119 = select i1 %117, float %.sroa.014.4.vec.extract, float %118
  %120 = fadd float %115, %119
  %121 = fmul float %111, %120
  %122 = load float, ptr %90, align 4, !tbaa !9
  %123 = tail call float @llvm.fmuladd.f32(float %121, float %100, float %122)
  store float %123, ptr %90, align 4, !tbaa !9
  %indvars.iv.next710 = add nuw nsw i64 %indvars.iv709, 1
  %exitcond714.not = icmp eq i64 %indvars.iv.next710, %indvars.iv722
  br i1 %exitcond714.not, label %124, label %91, !llvm.loop !14

124:                                              ; preds = %._crit_edge732
  %125 = load i32, ptr %1, align 4, !tbaa !5
  %126 = sext i32 %125 to i64
  %.not566.not627 = icmp slt i64 %indvars.iv715, %126
  br i1 %.not566.not627, label %.lr.ph630, label %.loopexit

.lr.ph630:                                        ; preds = %124
  %wide.trip.count720 = zext i32 %125 to i64
  %invariant.gep770 = getelementptr %struct.complex, ptr %14, i64 %indvars.iv715
  br label %127

127:                                              ; preds = %.lr.ph630, %._crit_edge735
  %indvars.iv717 = phi i64 [ %indvars.iv715, %.lr.ph630 ], [ %indvars.iv.next718, %._crit_edge735 ]
  %.2515628 = phi i32 [ %110, %.lr.ph630 ], [ %147, %._crit_edge735 ]
  %indvars.iv.next718 = add nuw nsw i64 %indvars.iv717, 1
  %128 = mul nsw i64 %indvars.iv.next718, %69
  %gep771 = getelementptr %struct.complex, ptr %invariant.gep770, i64 %128
  %129 = load float, ptr %gep771, align 4, !tbaa !11
  %130 = fcmp oge float %129, 0.000000e+00
  %131 = fneg float %129
  %132 = select i1 %130, float %129, float %131
  %133 = tail call <2 x float> @Cf(ptr noundef nonnull %gep771)
  %.sroa.013.4.vec.extract = extractelement <2 x float> %133, i64 1
  %134 = fcmp oge float %.sroa.013.4.vec.extract, 0.000000e+00
  %135 = fneg float %.sroa.013.4.vec.extract
  %136 = select i1 %134, float %.sroa.013.4.vec.extract, float %135
  %137 = fadd float %132, %136
  %.not569 = icmp eq i32 %.2515628, 0
  %.phi.trans.insert736 = getelementptr %struct.complex, ptr %5, i64 %indvars.iv717
  %.pre737 = load float, ptr %.phi.trans.insert736, align 4, !tbaa !11
  br i1 %.not569, label %._crit_edge735, label %138

138:                                              ; preds = %127
  %139 = fcmp oeq float %.pre737, 0.000000e+00
  br i1 %139, label %140, label %144

140:                                              ; preds = %138
  %141 = getelementptr inbounds i8, ptr %.phi.trans.insert736, i64 4
  %142 = load float, ptr %141, align 4, !tbaa !13
  %143 = fcmp oeq float %142, 0.000000e+00
  br i1 %143, label %._crit_edge735, label %144

144:                                              ; preds = %140, %138
  %145 = fcmp oeq float %137, 0.000000e+00
  br label %._crit_edge735

._crit_edge735:                                   ; preds = %127, %140, %144
  %146 = phi i1 [ true, %140 ], [ %145, %144 ], [ false, %127 ]
  %147 = zext i1 %146 to i32
  %148 = load float, ptr %2, align 4, !tbaa !9
  %149 = getelementptr %struct.complex, ptr %5, i64 %indvars.iv717
  %150 = fcmp oge float %.pre737, 0.000000e+00
  %151 = fneg float %.pre737
  %152 = select i1 %150, float %.pre737, float %151
  %153 = tail call <2 x float> @Cf(ptr noundef nonnull %149)
  %.sroa.012.4.vec.extract = extractelement <2 x float> %153, i64 1
  %154 = fcmp oge float %.sroa.012.4.vec.extract, 0.000000e+00
  %155 = fneg float %.sroa.012.4.vec.extract
  %156 = select i1 %154, float %.sroa.012.4.vec.extract, float %155
  %157 = fadd float %152, %156
  %158 = fmul float %148, %157
  %159 = load float, ptr %90, align 4, !tbaa !9
  %160 = tail call float @llvm.fmuladd.f32(float %158, float %137, float %159)
  store float %160, ptr %90, align 4, !tbaa !9
  %exitcond721.not = icmp eq i64 %indvars.iv.next718, %wide.trip.count720
  br i1 %exitcond721.not, label %.loopexit, label %127, !llvm.loop !16

.loopexit:                                        ; preds = %._crit_edge735, %124, %84
  %161 = phi float [ %85, %84 ], [ %123, %124 ], [ %160, %._crit_edge735 ]
  %.3516 = phi i32 [ %.0513, %84 ], [ %110, %124 ], [ %147, %._crit_edge735 ]
  %.not567 = icmp eq i32 %.3516, 0
  br i1 %.not567, label %162, label %168

162:                                              ; preds = %.loopexit
  %163 = sext i32 %.0521633 to i64
  %164 = getelementptr inbounds float, ptr %16, i64 %163
  %165 = fcmp ult float %161, 0.000000e+00
  %166 = xor i1 %67, %165
  %. = select i1 %166, float %58, float %68
  %167 = fadd float %161, %.
  store float %167, ptr %164, align 4, !tbaa !9
  br label %168

168:                                              ; preds = %162, %.loopexit
  %169 = load i32, ptr %9, align 4, !tbaa !5
  %170 = add nsw i32 %169, %.0521633
  %indvars.iv.next716 = add nuw nsw i64 %indvars.iv715, 1
  %indvars.iv.next723 = add nuw nsw i64 %indvars.iv722, 1
  %exitcond728.not = icmp eq i64 %indvars.iv.next723, %wide.trip.count727
  br i1 %exitcond728.not, label %.loopexit573, label %71, !llvm.loop !17

171:                                              ; preds = %65
  br i1 %.not564632, label %.loopexit573, label %.lr.ph623

.lr.ph623:                                        ; preds = %171
  %172 = fcmp oge float %58, 0.000000e+00
  %173 = fneg float %58
  %174 = sext i32 %12 to i64
  %175 = add nuw i32 %64, 2
  %wide.trip.count707 = zext i32 %175 to i64
  br label %176

176:                                              ; preds = %.lr.ph623, %273
  %indvars.iv702 = phi i64 [ 2, %.lr.ph623 ], [ %indvars.iv.next703, %273 ]
  %indvars.iv695 = phi i64 [ 1, %.lr.ph623 ], [ %indvars.iv.next696, %273 ]
  %.1522620 = phi i32 [ %.0530, %.lr.ph623 ], [ %275, %273 ]
  %177 = load float, ptr %7, align 4, !tbaa !9
  %178 = fcmp oeq float %177, 0.000000e+00
  %179 = sext i32 %.1522620 to i64
  %180 = getelementptr inbounds float, ptr %16, i64 %179
  br i1 %178, label %.sink.split772, label %181

181:                                              ; preds = %176
  %182 = load float, ptr %180, align 4, !tbaa !9
  %183 = fcmp oeq float %182, 0.000000e+00
  br i1 %183, label %189, label %184

184:                                              ; preds = %181
  %185 = fcmp oge float %182, 0.000000e+00
  %186 = fneg float %182
  %187 = select i1 %185, float %182, float %186
  %188 = fmul float %177, %187
  br label %.sink.split772

.sink.split772:                                   ; preds = %176, %184
  %.sink774 = phi float [ %188, %184 ], [ 0.000000e+00, %176 ]
  %.4517.ph = phi i32 [ 0, %184 ], [ 1, %176 ]
  store float %.sink774, ptr %180, align 4, !tbaa !9
  br label %189

189:                                              ; preds = %.sink.split772, %181
  %190 = phi float [ %182, %181 ], [ %.sink774, %.sink.split772 ]
  %.4517 = phi i32 [ 1, %181 ], [ %.4517.ph, %.sink.split772 ]
  %191 = load float, ptr %2, align 4, !tbaa !9
  %192 = fcmp une float %191, 0.000000e+00
  br i1 %192, label %.preheader575, label %.loopexit574

.preheader575:                                    ; preds = %189
  %193 = sext i32 %.1522620 to i64
  %194 = getelementptr inbounds float, ptr %16, i64 %193
  %invariant.gep764 = getelementptr %struct.complex, ptr %14, i64 %indvars.iv695
  br label %195

195:                                              ; preds = %.preheader575, %._crit_edge
  %indvars.iv689 = phi i64 [ 1, %.preheader575 ], [ %indvars.iv.next690, %._crit_edge ]
  %.5518611 = phi i32 [ %.4517, %.preheader575 ], [ %215, %._crit_edge ]
  %196 = mul nsw i64 %indvars.iv689, %174
  %gep765 = getelementptr %struct.complex, ptr %invariant.gep764, i64 %196
  %197 = load float, ptr %gep765, align 4, !tbaa !11
  %198 = fcmp oge float %197, 0.000000e+00
  %199 = fneg float %197
  %200 = select i1 %198, float %197, float %199
  %201 = tail call <2 x float> @Cf(ptr noundef nonnull %gep765)
  %.sroa.011.4.vec.extract = extractelement <2 x float> %201, i64 1
  %202 = fcmp oge float %.sroa.011.4.vec.extract, 0.000000e+00
  %203 = fneg float %.sroa.011.4.vec.extract
  %204 = select i1 %202, float %.sroa.011.4.vec.extract, float %203
  %205 = fadd float %200, %204
  %.not563 = icmp eq i32 %.5518611, 0
  %.phi.trans.insert = getelementptr inbounds %struct.complex, ptr %15, i64 %indvars.iv689
  %.pre = load float, ptr %.phi.trans.insert, align 4, !tbaa !11
  br i1 %.not563, label %._crit_edge, label %206

206:                                              ; preds = %195
  %207 = fcmp oeq float %.pre, 0.000000e+00
  br i1 %207, label %208, label %212

208:                                              ; preds = %206
  %209 = getelementptr inbounds i8, ptr %.phi.trans.insert, i64 4
  %210 = load float, ptr %209, align 4, !tbaa !13
  %211 = fcmp oeq float %210, 0.000000e+00
  br i1 %211, label %._crit_edge, label %212

212:                                              ; preds = %208, %206
  %213 = fcmp oeq float %205, 0.000000e+00
  br label %._crit_edge

._crit_edge:                                      ; preds = %195, %208, %212
  %214 = phi i1 [ true, %208 ], [ %213, %212 ], [ false, %195 ]
  %215 = zext i1 %214 to i32
  %216 = load float, ptr %2, align 4, !tbaa !9
  %217 = getelementptr inbounds %struct.complex, ptr %15, i64 %indvars.iv689
  %218 = fcmp oge float %.pre, 0.000000e+00
  %219 = fneg float %.pre
  %220 = select i1 %218, float %.pre, float %219
  %221 = tail call <2 x float> @Cf(ptr noundef nonnull %217)
  %.sroa.010.4.vec.extract = extractelement <2 x float> %221, i64 1
  %222 = fcmp oge float %.sroa.010.4.vec.extract, 0.000000e+00
  %223 = fneg float %.sroa.010.4.vec.extract
  %224 = select i1 %222, float %.sroa.010.4.vec.extract, float %223
  %225 = fadd float %220, %224
  %226 = fmul float %216, %225
  %227 = load float, ptr %194, align 4, !tbaa !9
  %228 = tail call float @llvm.fmuladd.f32(float %226, float %205, float %227)
  store float %228, ptr %194, align 4, !tbaa !9
  %indvars.iv.next690 = add nuw nsw i64 %indvars.iv689, 1
  %exitcond694.not = icmp eq i64 %indvars.iv.next690, %indvars.iv702
  br i1 %exitcond694.not, label %229, label %195, !llvm.loop !18

229:                                              ; preds = %._crit_edge
  %230 = load i32, ptr %1, align 4, !tbaa !5
  %231 = sext i32 %230 to i64
  %.not559.not614 = icmp slt i64 %indvars.iv695, %231
  br i1 %.not559.not614, label %.lr.ph617, label %.loopexit574

.lr.ph617:                                        ; preds = %229
  %232 = mul nsw i64 %indvars.iv695, %174
  %wide.trip.count700 = zext i32 %230 to i64
  %invariant.gep766 = getelementptr %struct.complex, ptr %14, i64 %232
  br label %233

233:                                              ; preds = %.lr.ph617, %._crit_edge729
  %indvars.iv697 = phi i64 [ %indvars.iv695, %.lr.ph617 ], [ %indvars.iv.next698, %._crit_edge729 ]
  %.6519615 = phi i32 [ %215, %.lr.ph617 ], [ %252, %._crit_edge729 ]
  %indvars.iv.next698 = add nuw nsw i64 %indvars.iv697, 1
  %gep767 = getelementptr %struct.complex, ptr %invariant.gep766, i64 %indvars.iv.next698
  %234 = load float, ptr %gep767, align 4, !tbaa !11
  %235 = fcmp oge float %234, 0.000000e+00
  %236 = fneg float %234
  %237 = select i1 %235, float %234, float %236
  %238 = tail call <2 x float> @Cf(ptr noundef nonnull %gep767)
  %.sroa.09.4.vec.extract = extractelement <2 x float> %238, i64 1
  %239 = fcmp oge float %.sroa.09.4.vec.extract, 0.000000e+00
  %240 = fneg float %.sroa.09.4.vec.extract
  %241 = select i1 %239, float %.sroa.09.4.vec.extract, float %240
  %242 = fadd float %237, %241
  %.not562 = icmp eq i32 %.6519615, 0
  %.phi.trans.insert730 = getelementptr %struct.complex, ptr %5, i64 %indvars.iv697
  %.pre731 = load float, ptr %.phi.trans.insert730, align 4, !tbaa !11
  br i1 %.not562, label %._crit_edge729, label %243

243:                                              ; preds = %233
  %244 = fcmp oeq float %.pre731, 0.000000e+00
  br i1 %244, label %245, label %249

245:                                              ; preds = %243
  %246 = getelementptr inbounds i8, ptr %.phi.trans.insert730, i64 4
  %247 = load float, ptr %246, align 4, !tbaa !13
  %248 = fcmp oeq float %247, 0.000000e+00
  br i1 %248, label %._crit_edge729, label %249

249:                                              ; preds = %245, %243
  %250 = fcmp oeq float %242, 0.000000e+00
  br label %._crit_edge729

._crit_edge729:                                   ; preds = %233, %245, %249
  %251 = phi i1 [ true, %245 ], [ %250, %249 ], [ false, %233 ]
  %252 = zext i1 %251 to i32
  %253 = load float, ptr %2, align 4, !tbaa !9
  %254 = getelementptr %struct.complex, ptr %5, i64 %indvars.iv697
  %255 = fcmp oge float %.pre731, 0.000000e+00
  %256 = fneg float %.pre731
  %257 = select i1 %255, float %.pre731, float %256
  %258 = tail call <2 x float> @Cf(ptr noundef nonnull %254)
  %.sroa.08.4.vec.extract = extractelement <2 x float> %258, i64 1
  %259 = fcmp oge float %.sroa.08.4.vec.extract, 0.000000e+00
  %260 = fneg float %.sroa.08.4.vec.extract
  %261 = select i1 %259, float %.sroa.08.4.vec.extract, float %260
  %262 = fadd float %257, %261
  %263 = fmul float %253, %262
  %264 = load float, ptr %194, align 4, !tbaa !9
  %265 = tail call float @llvm.fmuladd.f32(float %263, float %242, float %264)
  store float %265, ptr %194, align 4, !tbaa !9
  %exitcond701.not = icmp eq i64 %indvars.iv.next698, %wide.trip.count700
  br i1 %exitcond701.not, label %.loopexit574, label %233, !llvm.loop !19

.loopexit574:                                     ; preds = %._crit_edge729, %229, %189
  %266 = phi float [ %190, %189 ], [ %228, %229 ], [ %265, %._crit_edge729 ]
  %.7520 = phi i32 [ %.4517, %189 ], [ %215, %229 ], [ %252, %._crit_edge729 ]
  %.not560 = icmp eq i32 %.7520, 0
  br i1 %.not560, label %267, label %273

267:                                              ; preds = %.loopexit574
  %268 = sext i32 %.1522620 to i64
  %269 = getelementptr inbounds float, ptr %16, i64 %268
  %270 = fcmp ult float %266, 0.000000e+00
  %271 = xor i1 %172, %270
  %.637 = select i1 %271, float %58, float %173
  %272 = fadd float %266, %.637
  store float %272, ptr %269, align 4, !tbaa !9
  br label %273

273:                                              ; preds = %267, %.loopexit574
  %274 = load i32, ptr %9, align 4, !tbaa !5
  %275 = add nsw i32 %274, %.1522620
  %indvars.iv.next696 = add nuw nsw i64 %indvars.iv695, 1
  %indvars.iv.next703 = add nuw nsw i64 %indvars.iv702, 1
  %exitcond708.not = icmp eq i64 %indvars.iv.next703, %wide.trip.count707
  br i1 %exitcond708.not, label %.loopexit573, label %176, !llvm.loop !20

276:                                              ; preds = %48
  br i1 %63, label %277, label %396

277:                                              ; preds = %276
  br i1 %.not564632, label %.loopexit573, label %.lr.ph610

.lr.ph610:                                        ; preds = %277
  %278 = fcmp oge float %58, 0.000000e+00
  %279 = fneg float %58
  %280 = sext i32 %12 to i64
  %281 = add nuw i32 %64, 2
  %wide.trip.count687 = zext i32 %281 to i64
  br label %282

282:                                              ; preds = %.lr.ph610, %393
  %indvars.iv682 = phi i64 [ 2, %.lr.ph610 ], [ %indvars.iv.next683, %393 ]
  %indvars.iv675 = phi i64 [ 1, %.lr.ph610 ], [ %indvars.iv.next676, %393 ]
  %.2523607 = phi i32 [ %.0530, %.lr.ph610 ], [ %395, %393 ]
  %283 = load float, ptr %7, align 4, !tbaa !9
  %284 = fcmp oeq float %283, 0.000000e+00
  %285 = sext i32 %.2523607 to i64
  %286 = getelementptr inbounds float, ptr %16, i64 %285
  br i1 %284, label %.sink.split775, label %287

287:                                              ; preds = %282
  %288 = load float, ptr %286, align 4, !tbaa !9
  %289 = fcmp oeq float %288, 0.000000e+00
  br i1 %289, label %295, label %290

290:                                              ; preds = %287
  %291 = fcmp oge float %288, 0.000000e+00
  %292 = fneg float %288
  %293 = select i1 %291, float %288, float %292
  %294 = fmul float %283, %293
  br label %.sink.split775

.sink.split775:                                   ; preds = %282, %290
  %.sink777 = phi float [ %294, %290 ], [ 0.000000e+00, %282 ]
  %.8.ph = phi i32 [ 0, %290 ], [ 1, %282 ]
  store float %.sink777, ptr %286, align 4, !tbaa !9
  br label %295

295:                                              ; preds = %.sink.split775, %287
  %296 = phi float [ %288, %287 ], [ %.sink777, %.sink.split775 ]
  %.8 = phi i32 [ 1, %287 ], [ %.8.ph, %.sink.split775 ]
  %297 = load float, ptr %2, align 4, !tbaa !9
  %298 = fcmp une float %297, 0.000000e+00
  br i1 %298, label %.preheader578, label %.loopexit577

.preheader578:                                    ; preds = %295
  %299 = mul nsw i64 %indvars.iv675, %280
  %300 = sext i32 %.2523607 to i64
  %301 = getelementptr inbounds float, ptr %16, i64 %300
  %invariant.gep760 = getelementptr %struct.complex, ptr %14, i64 %299
  br label %302

302:                                              ; preds = %.preheader578, %322
  %indvars.iv669 = phi i64 [ 1, %.preheader578 ], [ %indvars.iv.next670, %322 ]
  %.9597 = phi i32 [ %.8, %.preheader578 ], [ %324, %322 ]
  %.0525596 = phi i32 [ %.0529, %.preheader578 ], [ %341, %322 ]
  %gep761 = getelementptr %struct.complex, ptr %invariant.gep760, i64 %indvars.iv669
  %303 = load float, ptr %gep761, align 4, !tbaa !11
  %304 = fcmp oge float %303, 0.000000e+00
  %305 = fneg float %303
  %306 = select i1 %304, float %303, float %305
  %307 = tail call <2 x float> @Cf(ptr noundef nonnull %gep761)
  %.sroa.07.4.vec.extract = extractelement <2 x float> %307, i64 1
  %308 = fcmp oge float %.sroa.07.4.vec.extract, 0.000000e+00
  %309 = fneg float %.sroa.07.4.vec.extract
  %310 = select i1 %308, float %.sroa.07.4.vec.extract, float %309
  %311 = fadd float %306, %310
  %.not556 = icmp eq i32 %.9597, 0
  br i1 %.not556, label %322, label %312

312:                                              ; preds = %302
  %313 = getelementptr inbounds %struct.complex, ptr %15, i64 %indvars.iv669
  %314 = load float, ptr %313, align 4, !tbaa !11
  %315 = fcmp oeq float %314, 0.000000e+00
  br i1 %315, label %316, label %320

316:                                              ; preds = %312
  %317 = getelementptr inbounds i8, ptr %313, i64 4
  %318 = load float, ptr %317, align 4, !tbaa !13
  %319 = fcmp oeq float %318, 0.000000e+00
  br i1 %319, label %322, label %320

320:                                              ; preds = %316, %312
  %321 = fcmp oeq float %311, 0.000000e+00
  br label %322

322:                                              ; preds = %316, %320, %302
  %323 = phi i1 [ false, %302 ], [ true, %316 ], [ %321, %320 ]
  %324 = zext i1 %323 to i32
  %325 = load float, ptr %2, align 4, !tbaa !9
  %326 = sext i32 %.0525596 to i64
  %327 = getelementptr inbounds %struct.complex, ptr %15, i64 %326
  %328 = load float, ptr %327, align 4, !tbaa !11
  %329 = fcmp oge float %328, 0.000000e+00
  %330 = fneg float %328
  %331 = select i1 %329, float %328, float %330
  %332 = tail call <2 x float> @Cf(ptr noundef nonnull %327)
  %.sroa.06.4.vec.extract = extractelement <2 x float> %332, i64 1
  %333 = fcmp oge float %.sroa.06.4.vec.extract, 0.000000e+00
  %334 = fneg float %.sroa.06.4.vec.extract
  %335 = select i1 %333, float %.sroa.06.4.vec.extract, float %334
  %336 = fadd float %331, %335
  %337 = fmul float %325, %336
  %338 = load float, ptr %301, align 4, !tbaa !9
  %339 = tail call float @llvm.fmuladd.f32(float %337, float %311, float %338)
  store float %339, ptr %301, align 4, !tbaa !9
  %340 = load i32, ptr %6, align 4, !tbaa !5
  %341 = add nsw i32 %340, %.0525596
  %indvars.iv.next670 = add nuw nsw i64 %indvars.iv669, 1
  %exitcond674.not = icmp eq i64 %indvars.iv.next670, %indvars.iv682
  br i1 %exitcond674.not, label %342, label %302, !llvm.loop !21

342:                                              ; preds = %322
  %343 = load i32, ptr %1, align 4, !tbaa !5
  %344 = sext i32 %343 to i64
  %.not552.not600 = icmp slt i64 %indvars.iv675, %344
  br i1 %.not552.not600, label %.lr.ph604, label %.loopexit577

.lr.ph604:                                        ; preds = %342
  %wide.trip.count680 = zext i32 %343 to i64
  %invariant.gep762 = getelementptr %struct.complex, ptr %14, i64 %indvars.iv675
  br label %345

345:                                              ; preds = %.lr.ph604, %366
  %indvars.iv677 = phi i64 [ %indvars.iv675, %.lr.ph604 ], [ %indvars.iv.next678, %366 ]
  %.10602 = phi i32 [ %324, %.lr.ph604 ], [ %368, %366 ]
  %.1526601 = phi i32 [ %341, %.lr.ph604 ], [ %385, %366 ]
  %indvars.iv.next678 = add nuw nsw i64 %indvars.iv677, 1
  %346 = mul nsw i64 %indvars.iv.next678, %280
  %gep763 = getelementptr %struct.complex, ptr %invariant.gep762, i64 %346
  %347 = load float, ptr %gep763, align 4, !tbaa !11
  %348 = fcmp oge float %347, 0.000000e+00
  %349 = fneg float %347
  %350 = select i1 %348, float %347, float %349
  %351 = tail call <2 x float> @Cf(ptr noundef nonnull %gep763)
  %.sroa.05.4.vec.extract = extractelement <2 x float> %351, i64 1
  %352 = fcmp oge float %.sroa.05.4.vec.extract, 0.000000e+00
  %353 = fneg float %.sroa.05.4.vec.extract
  %354 = select i1 %352, float %.sroa.05.4.vec.extract, float %353
  %355 = fadd float %350, %354
  %.not555 = icmp eq i32 %.10602, 0
  br i1 %.not555, label %366, label %356

356:                                              ; preds = %345
  %357 = getelementptr %struct.complex, ptr %5, i64 %indvars.iv677
  %358 = load float, ptr %357, align 4, !tbaa !11
  %359 = fcmp oeq float %358, 0.000000e+00
  br i1 %359, label %360, label %364

360:                                              ; preds = %356
  %361 = getelementptr inbounds i8, ptr %357, i64 4
  %362 = load float, ptr %361, align 4, !tbaa !13
  %363 = fcmp oeq float %362, 0.000000e+00
  br i1 %363, label %366, label %364

364:                                              ; preds = %360, %356
  %365 = fcmp oeq float %355, 0.000000e+00
  br label %366

366:                                              ; preds = %360, %364, %345
  %367 = phi i1 [ false, %345 ], [ true, %360 ], [ %365, %364 ]
  %368 = zext i1 %367 to i32
  %369 = load float, ptr %2, align 4, !tbaa !9
  %370 = sext i32 %.1526601 to i64
  %371 = getelementptr inbounds %struct.complex, ptr %15, i64 %370
  %372 = load float, ptr %371, align 4, !tbaa !11
  %373 = fcmp oge float %372, 0.000000e+00
  %374 = fneg float %372
  %375 = select i1 %373, float %372, float %374
  %376 = tail call <2 x float> @Cf(ptr noundef nonnull %371)
  %.sroa.04.4.vec.extract = extractelement <2 x float> %376, i64 1
  %377 = fcmp oge float %.sroa.04.4.vec.extract, 0.000000e+00
  %378 = fneg float %.sroa.04.4.vec.extract
  %379 = select i1 %377, float %.sroa.04.4.vec.extract, float %378
  %380 = fadd float %375, %379
  %381 = fmul float %369, %380
  %382 = load float, ptr %301, align 4, !tbaa !9
  %383 = tail call float @llvm.fmuladd.f32(float %381, float %355, float %382)
  store float %383, ptr %301, align 4, !tbaa !9
  %384 = load i32, ptr %6, align 4, !tbaa !5
  %385 = add nsw i32 %384, %.1526601
  %exitcond681.not = icmp eq i64 %indvars.iv.next678, %wide.trip.count680
  br i1 %exitcond681.not, label %.loopexit577, label %345, !llvm.loop !22

.loopexit577:                                     ; preds = %366, %342, %295
  %386 = phi float [ %296, %295 ], [ %339, %342 ], [ %383, %366 ]
  %.11 = phi i32 [ %.8, %295 ], [ %324, %342 ], [ %368, %366 ]
  %.not553 = icmp eq i32 %.11, 0
  br i1 %.not553, label %387, label %393

387:                                              ; preds = %.loopexit577
  %388 = sext i32 %.2523607 to i64
  %389 = getelementptr inbounds float, ptr %16, i64 %388
  %390 = fcmp ult float %386, 0.000000e+00
  %391 = xor i1 %278, %390
  %.638 = select i1 %391, float %58, float %279
  %392 = fadd float %386, %.638
  store float %392, ptr %389, align 4, !tbaa !9
  br label %393

393:                                              ; preds = %387, %.loopexit577
  %394 = load i32, ptr %9, align 4, !tbaa !5
  %395 = add nsw i32 %394, %.2523607
  %indvars.iv.next676 = add nuw nsw i64 %indvars.iv675, 1
  %indvars.iv.next683 = add nuw nsw i64 %indvars.iv682, 1
  %exitcond688.not = icmp eq i64 %indvars.iv.next683, %wide.trip.count687
  br i1 %exitcond688.not, label %.loopexit573, label %282, !llvm.loop !23

396:                                              ; preds = %276
  br i1 %.not564632, label %.loopexit573, label %.lr.ph595

.lr.ph595:                                        ; preds = %396
  %397 = fcmp oge float %58, 0.000000e+00
  %398 = fneg float %58
  %399 = sext i32 %12 to i64
  %400 = add nuw i32 %64, 2
  %wide.trip.count667 = zext i32 %400 to i64
  br label %401

401:                                              ; preds = %.lr.ph595, %512
  %indvars.iv662 = phi i64 [ 2, %.lr.ph595 ], [ %indvars.iv.next663, %512 ]
  %indvars.iv655 = phi i64 [ 1, %.lr.ph595 ], [ %indvars.iv.next656, %512 ]
  %.3524592 = phi i32 [ %.0530, %.lr.ph595 ], [ %514, %512 ]
  %402 = load float, ptr %7, align 4, !tbaa !9
  %403 = fcmp oeq float %402, 0.000000e+00
  %404 = sext i32 %.3524592 to i64
  %405 = getelementptr inbounds float, ptr %16, i64 %404
  br i1 %403, label %.sink.split778, label %406

406:                                              ; preds = %401
  %407 = load float, ptr %405, align 4, !tbaa !9
  %408 = fcmp oeq float %407, 0.000000e+00
  br i1 %408, label %414, label %409

409:                                              ; preds = %406
  %410 = fcmp oge float %407, 0.000000e+00
  %411 = fneg float %407
  %412 = select i1 %410, float %407, float %411
  %413 = fmul float %402, %412
  br label %.sink.split778

.sink.split778:                                   ; preds = %401, %409
  %.sink780 = phi float [ %413, %409 ], [ 0.000000e+00, %401 ]
  %.12.ph = phi i32 [ 0, %409 ], [ 1, %401 ]
  store float %.sink780, ptr %405, align 4, !tbaa !9
  br label %414

414:                                              ; preds = %.sink.split778, %406
  %415 = phi float [ %407, %406 ], [ %.sink780, %.sink.split778 ]
  %.12 = phi i32 [ 1, %406 ], [ %.12.ph, %.sink.split778 ]
  %416 = load float, ptr %2, align 4, !tbaa !9
  %417 = fcmp une float %416, 0.000000e+00
  br i1 %417, label %.preheader581, label %.loopexit580

.preheader581:                                    ; preds = %414
  %418 = sext i32 %.3524592 to i64
  %419 = getelementptr inbounds float, ptr %16, i64 %418
  %invariant.gep = getelementptr %struct.complex, ptr %14, i64 %indvars.iv655
  br label %420

420:                                              ; preds = %.preheader581, %441
  %indvars.iv = phi i64 [ 1, %.preheader581 ], [ %indvars.iv.next, %441 ]
  %.13584 = phi i32 [ %.12, %.preheader581 ], [ %443, %441 ]
  %.2527583 = phi i32 [ %.0529, %.preheader581 ], [ %460, %441 ]
  %421 = mul nsw i64 %indvars.iv, %399
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %421
  %422 = load float, ptr %gep, align 4, !tbaa !11
  %423 = fcmp oge float %422, 0.000000e+00
  %424 = fneg float %422
  %425 = select i1 %423, float %422, float %424
  %426 = tail call <2 x float> @Cf(ptr noundef nonnull %gep)
  %.sroa.03.4.vec.extract = extractelement <2 x float> %426, i64 1
  %427 = fcmp oge float %.sroa.03.4.vec.extract, 0.000000e+00
  %428 = fneg float %.sroa.03.4.vec.extract
  %429 = select i1 %427, float %.sroa.03.4.vec.extract, float %428
  %430 = fadd float %425, %429
  %.not549 = icmp eq i32 %.13584, 0
  br i1 %.not549, label %441, label %431

431:                                              ; preds = %420
  %432 = getelementptr inbounds %struct.complex, ptr %15, i64 %indvars.iv
  %433 = load float, ptr %432, align 4, !tbaa !11
  %434 = fcmp oeq float %433, 0.000000e+00
  br i1 %434, label %435, label %439

435:                                              ; preds = %431
  %436 = getelementptr inbounds i8, ptr %432, i64 4
  %437 = load float, ptr %436, align 4, !tbaa !13
  %438 = fcmp oeq float %437, 0.000000e+00
  br i1 %438, label %441, label %439

439:                                              ; preds = %435, %431
  %440 = fcmp oeq float %430, 0.000000e+00
  br label %441

441:                                              ; preds = %435, %439, %420
  %442 = phi i1 [ false, %420 ], [ true, %435 ], [ %440, %439 ]
  %443 = zext i1 %442 to i32
  %444 = load float, ptr %2, align 4, !tbaa !9
  %445 = sext i32 %.2527583 to i64
  %446 = getelementptr inbounds %struct.complex, ptr %15, i64 %445
  %447 = load float, ptr %446, align 4, !tbaa !11
  %448 = fcmp oge float %447, 0.000000e+00
  %449 = fneg float %447
  %450 = select i1 %448, float %447, float %449
  %451 = tail call <2 x float> @Cf(ptr noundef nonnull %446)
  %.sroa.02.4.vec.extract = extractelement <2 x float> %451, i64 1
  %452 = fcmp oge float %.sroa.02.4.vec.extract, 0.000000e+00
  %453 = fneg float %.sroa.02.4.vec.extract
  %454 = select i1 %452, float %.sroa.02.4.vec.extract, float %453
  %455 = fadd float %450, %454
  %456 = fmul float %444, %455
  %457 = load float, ptr %419, align 4, !tbaa !9
  %458 = tail call float @llvm.fmuladd.f32(float %456, float %430, float %457)
  store float %458, ptr %419, align 4, !tbaa !9
  %459 = load i32, ptr %6, align 4, !tbaa !5
  %460 = add nsw i32 %459, %.2527583
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %indvars.iv662
  br i1 %exitcond.not, label %461, label %420, !llvm.loop !24

461:                                              ; preds = %441
  %462 = load i32, ptr %1, align 4, !tbaa !5
  %463 = sext i32 %462 to i64
  %.not546.not587 = icmp slt i64 %indvars.iv655, %463
  br i1 %.not546.not587, label %.lr.ph, label %.loopexit580

.lr.ph:                                           ; preds = %461
  %464 = mul nsw i64 %indvars.iv655, %399
  %wide.trip.count660 = zext i32 %462 to i64
  %invariant.gep758 = getelementptr %struct.complex, ptr %14, i64 %464
  br label %465

465:                                              ; preds = %.lr.ph, %485
  %indvars.iv657 = phi i64 [ %indvars.iv655, %.lr.ph ], [ %indvars.iv.next658, %485 ]
  %.14589 = phi i32 [ %443, %.lr.ph ], [ %487, %485 ]
  %.3528588 = phi i32 [ %460, %.lr.ph ], [ %504, %485 ]
  %indvars.iv.next658 = add nuw nsw i64 %indvars.iv657, 1
  %gep759 = getelementptr %struct.complex, ptr %invariant.gep758, i64 %indvars.iv.next658
  %466 = load float, ptr %gep759, align 4, !tbaa !11
  %467 = fcmp oge float %466, 0.000000e+00
  %468 = fneg float %466
  %469 = select i1 %467, float %466, float %468
  %470 = tail call <2 x float> @Cf(ptr noundef nonnull %gep759)
  %.sroa.01.4.vec.extract = extractelement <2 x float> %470, i64 1
  %471 = fcmp oge float %.sroa.01.4.vec.extract, 0.000000e+00
  %472 = fneg float %.sroa.01.4.vec.extract
  %473 = select i1 %471, float %.sroa.01.4.vec.extract, float %472
  %474 = fadd float %469, %473
  %.not548 = icmp eq i32 %.14589, 0
  br i1 %.not548, label %485, label %475

475:                                              ; preds = %465
  %476 = getelementptr %struct.complex, ptr %5, i64 %indvars.iv657
  %477 = load float, ptr %476, align 4, !tbaa !11
  %478 = fcmp oeq float %477, 0.000000e+00
  br i1 %478, label %479, label %483

479:                                              ; preds = %475
  %480 = getelementptr inbounds i8, ptr %476, i64 4
  %481 = load float, ptr %480, align 4, !tbaa !13
  %482 = fcmp oeq float %481, 0.000000e+00
  br i1 %482, label %485, label %483

483:                                              ; preds = %479, %475
  %484 = fcmp oeq float %474, 0.000000e+00
  br label %485

485:                                              ; preds = %479, %483, %465
  %486 = phi i1 [ false, %465 ], [ true, %479 ], [ %484, %483 ]
  %487 = zext i1 %486 to i32
  %488 = load float, ptr %2, align 4, !tbaa !9
  %489 = sext i32 %.3528588 to i64
  %490 = getelementptr inbounds %struct.complex, ptr %15, i64 %489
  %491 = load float, ptr %490, align 4, !tbaa !11
  %492 = fcmp oge float %491, 0.000000e+00
  %493 = fneg float %491
  %494 = select i1 %492, float %491, float %493
  %495 = tail call <2 x float> @Cf(ptr noundef nonnull %490)
  %.sroa.0.4.vec.extract = extractelement <2 x float> %495, i64 1
  %496 = fcmp oge float %.sroa.0.4.vec.extract, 0.000000e+00
  %497 = fneg float %.sroa.0.4.vec.extract
  %498 = select i1 %496, float %.sroa.0.4.vec.extract, float %497
  %499 = fadd float %494, %498
  %500 = fmul float %488, %499
  %501 = load float, ptr %419, align 4, !tbaa !9
  %502 = tail call float @llvm.fmuladd.f32(float %500, float %474, float %501)
  store float %502, ptr %419, align 4, !tbaa !9
  %503 = load i32, ptr %6, align 4, !tbaa !5
  %504 = add nsw i32 %503, %.3528588
  %exitcond661.not = icmp eq i64 %indvars.iv.next658, %wide.trip.count660
  br i1 %exitcond661.not, label %.loopexit580, label %465, !llvm.loop !25

.loopexit580:                                     ; preds = %485, %461, %414
  %505 = phi float [ %415, %414 ], [ %458, %461 ], [ %502, %485 ]
  %.15 = phi i32 [ %.12, %414 ], [ %443, %461 ], [ %487, %485 ]
  %.not547 = icmp eq i32 %.15, 0
  br i1 %.not547, label %506, label %512

506:                                              ; preds = %.loopexit580
  %507 = sext i32 %.3524592 to i64
  %508 = getelementptr inbounds float, ptr %16, i64 %507
  %509 = fcmp ult float %505, 0.000000e+00
  %510 = xor i1 %397, %509
  %.639 = select i1 %510, float %58, float %398
  %511 = fadd float %505, %.639
  store float %511, ptr %508, align 4, !tbaa !9
  br label %512

512:                                              ; preds = %506, %.loopexit580
  %513 = load i32, ptr %9, align 4, !tbaa !5
  %514 = add nsw i32 %513, %.3524592
  %indvars.iv.next656 = add nuw nsw i64 %indvars.iv655, 1
  %indvars.iv.next663 = add nuw nsw i64 %indvars.iv662, 1
  %exitcond668.not = icmp eq i64 %indvars.iv.next663, %wide.trip.count667
  br i1 %exitcond668.not, label %.loopexit573, label %401, !llvm.loop !26

.loopexit573:                                     ; preds = %512, %393, %273, %168, %396, %277, %171, %66, %40, %45, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #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 @ilauplo_(ptr noundef) local_unnamed_addr #2

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

; 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.umax.i32(i32, i32) #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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
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, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 4}
!13 = !{!12, !10, i64 4}
!14 = distinct !{!14, !15}
!15 = !{!"llvm.loop.mustprogress"}
!16 = distinct !{!16, !15}
!17 = distinct !{!17, !15}
!18 = distinct !{!18, !15}
!19 = distinct !{!19, !15}
!20 = distinct !{!20, !15}
!21 = distinct !{!21, !15}
!22 = distinct !{!22, !15}
!23 = distinct !{!23, !15}
!24 = distinct !{!24, !15}
!25 = distinct !{!25, !15}
!26 = distinct !{!26, !15}


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