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

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

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

116:                                              ; preds = %15
  %117 = load ptr, ptr %16, align 8, !tbaa !5
  %118 = call i32 @lsame_(ptr noundef %117, ptr noundef @.str.1)
  %119 = icmp ne i32 %118, 0
  br i1 %119, label %122, label %120

120:                                              ; preds = %116
  %121 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -1, ptr %121, align 4, !tbaa !9
  br label %168

122:                                              ; preds = %116, %15
  %123 = load ptr, ptr %17, align 8, !tbaa !5
  %124 = load i32, ptr %123, align 4, !tbaa !9
  %125 = icmp slt i32 %124, 0
  br i1 %125, label %126, label %128

126:                                              ; preds = %122
  %127 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -2, ptr %127, align 4, !tbaa !9
  br label %167

128:                                              ; preds = %122
  %129 = load ptr, ptr %18, align 8, !tbaa !5
  %130 = load i32, ptr %129, align 4, !tbaa !9
  %131 = icmp slt i32 %130, 0
  br i1 %131, label %132, label %134

132:                                              ; preds = %128
  %133 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -3, ptr %133, align 4, !tbaa !9
  br label %166

134:                                              ; preds = %128
  %135 = load ptr, ptr %23, align 8, !tbaa !5
  %136 = load i32, ptr %135, align 4, !tbaa !9
  %137 = load ptr, ptr %17, align 8, !tbaa !5
  %138 = load i32, ptr %137, align 4, !tbaa !9
  %139 = icmp sge i32 1, %138
  br i1 %139, label %140, label %141

140:                                              ; preds = %134
  br label %144

141:                                              ; preds = %134
  %142 = load ptr, ptr %17, align 8, !tbaa !5
  %143 = load i32, ptr %142, align 4, !tbaa !9
  br label %144

144:                                              ; preds = %141, %140
  %145 = phi i32 [ 1, %140 ], [ %143, %141 ]
  %146 = icmp slt i32 %136, %145
  br i1 %146, label %147, label %149

147:                                              ; preds = %144
  %148 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -8, ptr %148, align 4, !tbaa !9
  br label %165

149:                                              ; preds = %144
  %150 = load ptr, ptr %25, align 8, !tbaa !5
  %151 = load i32, ptr %150, align 4, !tbaa !9
  %152 = load ptr, ptr %17, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = icmp sge i32 1, %153
  br i1 %154, label %155, label %156

155:                                              ; preds = %149
  br label %159

156:                                              ; preds = %149
  %157 = load ptr, ptr %17, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  br label %159

159:                                              ; preds = %156, %155
  %160 = phi i32 [ 1, %155 ], [ %158, %156 ]
  %161 = icmp slt i32 %151, %160
  br i1 %161, label %162, label %164

162:                                              ; preds = %159
  %163 = load ptr, ptr %30, align 8, !tbaa !5
  store i32 -10, ptr %163, align 4, !tbaa !9
  br label %164

164:                                              ; preds = %162, %159
  br label %165

165:                                              ; preds = %164, %147
  br label %166

166:                                              ; preds = %165, %132
  br label %167

167:                                              ; preds = %166, %126
  br label %168

168:                                              ; preds = %167, %120
  %169 = load ptr, ptr %30, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %172, label %177

172:                                              ; preds = %168
  %173 = load ptr, ptr %30, align 8, !tbaa !5
  %174 = load i32, ptr %173, align 4, !tbaa !9
  %175 = sub nsw i32 0, %174
  store i32 %175, ptr %35, align 4, !tbaa !9
  %176 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %35, i32 noundef 6)
  store i32 1, ptr %62, align 4
  br label %1305

177:                                              ; preds = %168
  %178 = load ptr, ptr %17, align 8, !tbaa !5
  %179 = load i32, ptr %178, align 4, !tbaa !9
  %180 = icmp eq i32 %179, 0
  br i1 %180, label %185, label %181

181:                                              ; preds = %177
  %182 = load ptr, ptr %18, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  %184 = icmp eq i32 %183, 0
  br i1 %184, label %185, label %205

185:                                              ; preds = %181, %177
  %186 = load ptr, ptr %18, align 8, !tbaa !5
  %187 = load i32, ptr %186, align 4, !tbaa !9
  store i32 %187, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %188

188:                                              ; preds = %201, %185
  %189 = load i32, ptr %49, align 4, !tbaa !9
  %190 = load i32, ptr %35, align 4, !tbaa !9
  %191 = icmp sle i32 %189, %190
  br i1 %191, label %192, label %204

192:                                              ; preds = %188
  %193 = load ptr, ptr %26, align 8, !tbaa !5
  %194 = load i32, ptr %49, align 4, !tbaa !9
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds float, ptr %193, i64 %195
  store float 0.000000e+00, ptr %196, align 4, !tbaa !11
  %197 = load ptr, ptr %27, align 8, !tbaa !5
  %198 = load i32, ptr %49, align 4, !tbaa !9
  %199 = sext i32 %198 to i64
  %200 = getelementptr inbounds float, ptr %197, i64 %199
  store float 0.000000e+00, ptr %200, align 4, !tbaa !11
  br label %201

201:                                              ; preds = %192
  %202 = load i32, ptr %49, align 4, !tbaa !9
  %203 = add nsw i32 %202, 1
  store i32 %203, ptr %49, align 4, !tbaa !9
  br label %188, !llvm.loop !13

204:                                              ; preds = %188
  store i32 1, ptr %62, align 4
  br label %1305

205:                                              ; preds = %181
  %206 = load ptr, ptr %17, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = add nsw i32 %207, 1
  store i32 %208, ptr %58, align 4, !tbaa !9
  %209 = call float @slamch_(ptr noundef @.str.3)
  store float %209, ptr %61, align 4, !tbaa !11
  %210 = call float @slamch_(ptr noundef @.str.4)
  store float %210, ptr %59, align 4, !tbaa !11
  %211 = load i32, ptr %58, align 4, !tbaa !9
  %212 = sitofp i32 %211 to float
  %213 = load float, ptr %59, align 4, !tbaa !11
  %214 = fmul float %212, %213
  store float %214, ptr %46, align 4, !tbaa !11
  %215 = load float, ptr %46, align 4, !tbaa !11
  %216 = load float, ptr %61, align 4, !tbaa !11
  %217 = fdiv float %215, %216
  store float %217, ptr %47, align 4, !tbaa !11
  %218 = load ptr, ptr %18, align 8, !tbaa !5
  %219 = load i32, ptr %218, align 4, !tbaa !9
  store i32 %219, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %49, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %1301, %205
  %221 = load i32, ptr %49, align 4, !tbaa !9
  %222 = load i32, ptr %35, align 4, !tbaa !9
  %223 = icmp sle i32 %221, %222
  br i1 %223, label %224, label %1304

224:                                              ; preds = %220
  store i32 1, ptr %53, align 4, !tbaa !9
  store float 3.000000e+00, ptr %60, align 4, !tbaa !11
  br label %225

225:                                              ; preds = %920, %224
  %226 = load ptr, ptr %17, align 8, !tbaa !5
  %227 = load ptr, ptr %22, align 8, !tbaa !5
  %228 = load i32, ptr %49, align 4, !tbaa !9
  %229 = load i32, ptr %31, align 4, !tbaa !9
  %230 = mul nsw i32 %228, %229
  %231 = add nsw i32 %230, 1
  %232 = sext i32 %231 to i64
  %233 = getelementptr inbounds %struct.complex, ptr %227, i64 %232
  %234 = load ptr, ptr %28, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.complex, ptr %234, i64 1
  call void @ccopy_(ptr noundef %226, ptr noundef %233, ptr noundef @c__1, ptr noundef %235, ptr noundef @c__1)
  %236 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float -1.000000e+00, ptr %236, align 4, !tbaa !15
  %237 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float 0.000000e+00, ptr %237, align 4, !tbaa !17
  %238 = load ptr, ptr %16, align 8, !tbaa !5
  %239 = load ptr, ptr %17, align 8, !tbaa !5
  %240 = load ptr, ptr %19, align 8, !tbaa !5
  %241 = getelementptr inbounds %struct.complex, ptr %240, i64 1
  %242 = load ptr, ptr %24, align 8, !tbaa !5
  %243 = load i32, ptr %49, align 4, !tbaa !9
  %244 = load i32, ptr %33, align 4, !tbaa !9
  %245 = mul nsw i32 %243, %244
  %246 = add nsw i32 %245, 1
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds %struct.complex, ptr %242, i64 %247
  %249 = load ptr, ptr %28, align 8, !tbaa !5
  %250 = getelementptr inbounds %struct.complex, ptr %249, i64 1
  call void @chpmv_(ptr noundef %238, ptr noundef %239, ptr noundef %44, ptr noundef %241, ptr noundef %248, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %250, ptr noundef @c__1)
  %251 = load ptr, ptr %17, align 8, !tbaa !5
  %252 = load i32, ptr %251, align 4, !tbaa !9
  store i32 %252, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %253

253:                                              ; preds = %305, %225
  %254 = load i32, ptr %48, align 4, !tbaa !9
  %255 = load i32, ptr %36, align 4, !tbaa !9
  %256 = icmp sle i32 %254, %255
  br i1 %256, label %257, label %308

257:                                              ; preds = %253
  %258 = load i32, ptr %48, align 4, !tbaa !9
  %259 = load i32, ptr %49, align 4, !tbaa !9
  %260 = load i32, ptr %31, align 4, !tbaa !9
  %261 = mul nsw i32 %259, %260
  %262 = add nsw i32 %258, %261
  store i32 %262, ptr %37, align 4, !tbaa !9
  %263 = load ptr, ptr %22, align 8, !tbaa !5
  %264 = load i32, ptr %37, align 4, !tbaa !9
  %265 = sext i32 %264 to i64
  %266 = getelementptr inbounds %struct.complex, ptr %263, i64 %265
  %267 = getelementptr inbounds %struct.complex, ptr %266, i32 0, i32 0
  %268 = load float, ptr %267, align 4, !tbaa !15
  store float %268, ptr %40, align 4, !tbaa !11
  %269 = load float, ptr %40, align 4, !tbaa !11
  %270 = fcmp oge float %269, 0.000000e+00
  br i1 %270, label %271, label %273

271:                                              ; preds = %257
  %272 = load float, ptr %40, align 4, !tbaa !11
  br label %276

273:                                              ; preds = %257
  %274 = load float, ptr %40, align 4, !tbaa !11
  %275 = fneg float %274
  br label %276

276:                                              ; preds = %273, %271
  %277 = phi float [ %272, %271 ], [ %275, %273 ]
  %278 = load ptr, ptr %22, align 8, !tbaa !5
  %279 = load i32, ptr %48, align 4, !tbaa !9
  %280 = load i32, ptr %49, align 4, !tbaa !9
  %281 = load i32, ptr %31, align 4, !tbaa !9
  %282 = mul nsw i32 %280, %281
  %283 = add nsw i32 %279, %282
  %284 = sext i32 %283 to i64
  %285 = getelementptr inbounds %struct.complex, ptr %278, i64 %284
  %286 = call <2 x float> @Cf(ptr noundef %285)
  store <2 x float> %286, ptr %63, align 4
  %287 = getelementptr inbounds { float, float }, ptr %63, i32 0, i32 0
  %288 = load float, ptr %287, align 4
  %289 = getelementptr inbounds { float, float }, ptr %63, i32 0, i32 1
  %290 = load float, ptr %289, align 4
  store float %290, ptr %41, align 4, !tbaa !11
  %291 = load float, ptr %41, align 4, !tbaa !11
  %292 = fcmp oge float %291, 0.000000e+00
  br i1 %292, label %293, label %295

293:                                              ; preds = %276
  %294 = load float, ptr %41, align 4, !tbaa !11
  br label %298

295:                                              ; preds = %276
  %296 = load float, ptr %41, align 4, !tbaa !11
  %297 = fneg float %296
  br label %298

298:                                              ; preds = %295, %293
  %299 = phi float [ %294, %293 ], [ %297, %295 ]
  %300 = fadd float %277, %299
  %301 = load ptr, ptr %29, align 8, !tbaa !5
  %302 = load i32, ptr %48, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds float, ptr %301, i64 %303
  store float %300, ptr %304, align 4, !tbaa !11
  br label %305

305:                                              ; preds = %298
  %306 = load i32, ptr %48, align 4, !tbaa !9
  %307 = add nsw i32 %306, 1
  store i32 %307, ptr %48, align 4, !tbaa !9
  br label %253, !llvm.loop !18

308:                                              ; preds = %253
  store i32 1, ptr %56, align 4, !tbaa !9
  %309 = load i32, ptr %54, align 4, !tbaa !9
  %310 = icmp ne i32 %309, 0
  br i1 %310, label %311, label %537

311:                                              ; preds = %308
  %312 = load ptr, ptr %17, align 8, !tbaa !5
  %313 = load i32, ptr %312, align 4, !tbaa !9
  store i32 %313, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %533, %311
  %315 = load i32, ptr %50, align 4, !tbaa !9
  %316 = load i32, ptr %36, align 4, !tbaa !9
  %317 = icmp sle i32 %315, %316
  br i1 %317, label %318, label %536

318:                                              ; preds = %314
  store float 0.000000e+00, ptr %51, align 4, !tbaa !11
  %319 = load i32, ptr %50, align 4, !tbaa !9
  %320 = load i32, ptr %49, align 4, !tbaa !9
  %321 = load i32, ptr %33, align 4, !tbaa !9
  %322 = mul nsw i32 %320, %321
  %323 = add nsw i32 %319, %322
  store i32 %323, ptr %37, align 4, !tbaa !9
  %324 = load ptr, ptr %24, align 8, !tbaa !5
  %325 = load i32, ptr %37, align 4, !tbaa !9
  %326 = sext i32 %325 to i64
  %327 = getelementptr inbounds %struct.complex, ptr %324, i64 %326
  %328 = getelementptr inbounds %struct.complex, ptr %327, i32 0, i32 0
  %329 = load float, ptr %328, align 4, !tbaa !15
  store float %329, ptr %40, align 4, !tbaa !11
  %330 = load float, ptr %40, align 4, !tbaa !11
  %331 = fcmp oge float %330, 0.000000e+00
  br i1 %331, label %332, label %334

332:                                              ; preds = %318
  %333 = load float, ptr %40, align 4, !tbaa !11
  br label %337

334:                                              ; preds = %318
  %335 = load float, ptr %40, align 4, !tbaa !11
  %336 = fneg float %335
  br label %337

337:                                              ; preds = %334, %332
  %338 = phi float [ %333, %332 ], [ %336, %334 ]
  %339 = load ptr, ptr %24, align 8, !tbaa !5
  %340 = load i32, ptr %50, align 4, !tbaa !9
  %341 = load i32, ptr %49, align 4, !tbaa !9
  %342 = load i32, ptr %33, align 4, !tbaa !9
  %343 = mul nsw i32 %341, %342
  %344 = add nsw i32 %340, %343
  %345 = sext i32 %344 to i64
  %346 = getelementptr inbounds %struct.complex, ptr %339, i64 %345
  %347 = call <2 x float> @Cf(ptr noundef %346)
  store <2 x float> %347, ptr %64, align 4
  %348 = getelementptr inbounds { float, float }, ptr %64, i32 0, i32 0
  %349 = load float, ptr %348, align 4
  %350 = getelementptr inbounds { float, float }, ptr %64, i32 0, i32 1
  %351 = load float, ptr %350, align 4
  store float %351, ptr %41, align 4, !tbaa !11
  %352 = load float, ptr %41, align 4, !tbaa !11
  %353 = fcmp oge float %352, 0.000000e+00
  br i1 %353, label %354, label %356

354:                                              ; preds = %337
  %355 = load float, ptr %41, align 4, !tbaa !11
  br label %359

356:                                              ; preds = %337
  %357 = load float, ptr %41, align 4, !tbaa !11
  %358 = fneg float %357
  br label %359

359:                                              ; preds = %356, %354
  %360 = phi float [ %355, %354 ], [ %358, %356 ]
  %361 = fadd float %338, %360
  store float %361, ptr %57, align 4, !tbaa !11
  %362 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %362, ptr %55, align 4, !tbaa !9
  %363 = load i32, ptr %50, align 4, !tbaa !9
  %364 = sub nsw i32 %363, 1
  store i32 %364, ptr %37, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %365

365:                                              ; preds = %494, %359
  %366 = load i32, ptr %48, align 4, !tbaa !9
  %367 = load i32, ptr %37, align 4, !tbaa !9
  %368 = icmp sle i32 %366, %367
  br i1 %368, label %369, label %497

369:                                              ; preds = %365
  %370 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %370, ptr %38, align 4, !tbaa !9
  %371 = load ptr, ptr %19, align 8, !tbaa !5
  %372 = load i32, ptr %38, align 4, !tbaa !9
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds %struct.complex, ptr %371, i64 %373
  %375 = getelementptr inbounds %struct.complex, ptr %374, i32 0, i32 0
  %376 = load float, ptr %375, align 4, !tbaa !15
  store float %376, ptr %40, align 4, !tbaa !11
  %377 = load float, ptr %40, align 4, !tbaa !11
  %378 = fcmp oge float %377, 0.000000e+00
  br i1 %378, label %379, label %381

379:                                              ; preds = %369
  %380 = load float, ptr %40, align 4, !tbaa !11
  br label %384

381:                                              ; preds = %369
  %382 = load float, ptr %40, align 4, !tbaa !11
  %383 = fneg float %382
  br label %384

384:                                              ; preds = %381, %379
  %385 = phi float [ %380, %379 ], [ %383, %381 ]
  %386 = load ptr, ptr %19, align 8, !tbaa !5
  %387 = load i32, ptr %55, align 4, !tbaa !9
  %388 = sext i32 %387 to i64
  %389 = getelementptr inbounds %struct.complex, ptr %386, i64 %388
  %390 = call <2 x float> @Cf(ptr noundef %389)
  store <2 x float> %390, ptr %65, align 4
  %391 = getelementptr inbounds { float, float }, ptr %65, i32 0, i32 0
  %392 = load float, ptr %391, align 4
  %393 = getelementptr inbounds { float, float }, ptr %65, i32 0, i32 1
  %394 = load float, ptr %393, align 4
  store float %394, ptr %41, align 4, !tbaa !11
  %395 = load float, ptr %41, align 4, !tbaa !11
  %396 = fcmp oge float %395, 0.000000e+00
  br i1 %396, label %397, label %399

397:                                              ; preds = %384
  %398 = load float, ptr %41, align 4, !tbaa !11
  br label %402

399:                                              ; preds = %384
  %400 = load float, ptr %41, align 4, !tbaa !11
  %401 = fneg float %400
  br label %402

402:                                              ; preds = %399, %397
  %403 = phi float [ %398, %397 ], [ %401, %399 ]
  %404 = fadd float %385, %403
  %405 = load float, ptr %57, align 4, !tbaa !11
  %406 = load ptr, ptr %29, align 8, !tbaa !5
  %407 = load i32, ptr %48, align 4, !tbaa !9
  %408 = sext i32 %407 to i64
  %409 = getelementptr inbounds float, ptr %406, i64 %408
  %410 = load float, ptr %409, align 4, !tbaa !11
  %411 = call float @llvm.fmuladd.f32(float %404, float %405, float %410)
  store float %411, ptr %409, align 4, !tbaa !11
  %412 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %412, ptr %38, align 4, !tbaa !9
  %413 = load i32, ptr %48, align 4, !tbaa !9
  %414 = load i32, ptr %49, align 4, !tbaa !9
  %415 = load i32, ptr %33, align 4, !tbaa !9
  %416 = mul nsw i32 %414, %415
  %417 = add nsw i32 %413, %416
  store i32 %417, ptr %39, align 4, !tbaa !9
  %418 = load ptr, ptr %19, align 8, !tbaa !5
  %419 = load i32, ptr %38, align 4, !tbaa !9
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds %struct.complex, ptr %418, i64 %420
  %422 = getelementptr inbounds %struct.complex, ptr %421, i32 0, i32 0
  %423 = load float, ptr %422, align 4, !tbaa !15
  store float %423, ptr %40, align 4, !tbaa !11
  %424 = load float, ptr %40, align 4, !tbaa !11
  %425 = fcmp oge float %424, 0.000000e+00
  br i1 %425, label %426, label %428

426:                                              ; preds = %402
  %427 = load float, ptr %40, align 4, !tbaa !11
  br label %431

428:                                              ; preds = %402
  %429 = load float, ptr %40, align 4, !tbaa !11
  %430 = fneg float %429
  br label %431

431:                                              ; preds = %428, %426
  %432 = phi float [ %427, %426 ], [ %430, %428 ]
  %433 = load ptr, ptr %19, align 8, !tbaa !5
  %434 = load i32, ptr %55, align 4, !tbaa !9
  %435 = sext i32 %434 to i64
  %436 = getelementptr inbounds %struct.complex, ptr %433, i64 %435
  %437 = call <2 x float> @Cf(ptr noundef %436)
  store <2 x float> %437, ptr %66, align 4
  %438 = getelementptr inbounds { float, float }, ptr %66, i32 0, i32 0
  %439 = load float, ptr %438, align 4
  %440 = getelementptr inbounds { float, float }, ptr %66, i32 0, i32 1
  %441 = load float, ptr %440, align 4
  store float %441, ptr %41, align 4, !tbaa !11
  %442 = load float, ptr %41, align 4, !tbaa !11
  %443 = fcmp oge float %442, 0.000000e+00
  br i1 %443, label %444, label %446

444:                                              ; preds = %431
  %445 = load float, ptr %41, align 4, !tbaa !11
  br label %449

446:                                              ; preds = %431
  %447 = load float, ptr %41, align 4, !tbaa !11
  %448 = fneg float %447
  br label %449

449:                                              ; preds = %446, %444
  %450 = phi float [ %445, %444 ], [ %448, %446 ]
  %451 = fadd float %432, %450
  %452 = load ptr, ptr %24, align 8, !tbaa !5
  %453 = load i32, ptr %39, align 4, !tbaa !9
  %454 = sext i32 %453 to i64
  %455 = getelementptr inbounds %struct.complex, ptr %452, i64 %454
  %456 = getelementptr inbounds %struct.complex, ptr %455, i32 0, i32 0
  %457 = load float, ptr %456, align 4, !tbaa !15
  store float %457, ptr %42, align 4, !tbaa !11
  %458 = load float, ptr %42, align 4, !tbaa !11
  %459 = fcmp oge float %458, 0.000000e+00
  br i1 %459, label %460, label %462

460:                                              ; preds = %449
  %461 = load float, ptr %42, align 4, !tbaa !11
  br label %465

462:                                              ; preds = %449
  %463 = load float, ptr %42, align 4, !tbaa !11
  %464 = fneg float %463
  br label %465

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

482:                                              ; preds = %465
  %483 = load float, ptr %43, align 4, !tbaa !11
  br label %487

484:                                              ; preds = %465
  %485 = load float, ptr %43, align 4, !tbaa !11
  %486 = fneg float %485
  br label %487

487:                                              ; preds = %484, %482
  %488 = phi float [ %483, %482 ], [ %486, %484 ]
  %489 = fadd float %466, %488
  %490 = load float, ptr %51, align 4, !tbaa !11
  %491 = call float @llvm.fmuladd.f32(float %451, float %489, float %490)
  store float %491, ptr %51, align 4, !tbaa !11
  %492 = load i32, ptr %55, align 4, !tbaa !9
  %493 = add nsw i32 %492, 1
  store i32 %493, ptr %55, align 4, !tbaa !9
  br label %494

494:                                              ; preds = %487
  %495 = load i32, ptr %48, align 4, !tbaa !9
  %496 = add nsw i32 %495, 1
  store i32 %496, ptr %48, align 4, !tbaa !9
  br label %365, !llvm.loop !19

497:                                              ; preds = %365
  %498 = load i32, ptr %56, align 4, !tbaa !9
  %499 = load i32, ptr %50, align 4, !tbaa !9
  %500 = add nsw i32 %498, %499
  %501 = sub nsw i32 %500, 1
  store i32 %501, ptr %37, align 4, !tbaa !9
  %502 = load ptr, ptr %29, align 8, !tbaa !5
  %503 = load i32, ptr %50, align 4, !tbaa !9
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds float, ptr %502, i64 %504
  %506 = load float, ptr %505, align 4, !tbaa !11
  %507 = load ptr, ptr %19, align 8, !tbaa !5
  %508 = load i32, ptr %37, align 4, !tbaa !9
  %509 = sext i32 %508 to i64
  %510 = getelementptr inbounds %struct.complex, ptr %507, i64 %509
  %511 = getelementptr inbounds %struct.complex, ptr %510, i32 0, i32 0
  %512 = load float, ptr %511, align 4, !tbaa !15
  store float %512, ptr %40, align 4, !tbaa !11
  %513 = load float, ptr %40, align 4, !tbaa !11
  %514 = fcmp oge float %513, 0.000000e+00
  br i1 %514, label %515, label %517

515:                                              ; preds = %497
  %516 = load float, ptr %40, align 4, !tbaa !11
  br label %520

517:                                              ; preds = %497
  %518 = load float, ptr %40, align 4, !tbaa !11
  %519 = fneg float %518
  br label %520

520:                                              ; preds = %517, %515
  %521 = phi float [ %516, %515 ], [ %519, %517 ]
  %522 = load float, ptr %57, align 4, !tbaa !11
  %523 = call float @llvm.fmuladd.f32(float %521, float %522, float %506)
  %524 = load float, ptr %51, align 4, !tbaa !11
  %525 = fadd float %523, %524
  %526 = load ptr, ptr %29, align 8, !tbaa !5
  %527 = load i32, ptr %50, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds float, ptr %526, i64 %528
  store float %525, ptr %529, align 4, !tbaa !11
  %530 = load i32, ptr %50, align 4, !tbaa !9
  %531 = load i32, ptr %56, align 4, !tbaa !9
  %532 = add nsw i32 %531, %530
  store i32 %532, ptr %56, align 4, !tbaa !9
  br label %533

533:                                              ; preds = %520
  %534 = load i32, ptr %50, align 4, !tbaa !9
  %535 = add nsw i32 %534, 1
  store i32 %535, ptr %50, align 4, !tbaa !9
  br label %314, !llvm.loop !20

536:                                              ; preds = %314
  br label %768

537:                                              ; preds = %308
  %538 = load ptr, ptr %17, align 8, !tbaa !5
  %539 = load i32, ptr %538, align 4, !tbaa !9
  store i32 %539, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %50, align 4, !tbaa !9
  br label %540

540:                                              ; preds = %764, %537
  %541 = load i32, ptr %50, align 4, !tbaa !9
  %542 = load i32, ptr %36, align 4, !tbaa !9
  %543 = icmp sle i32 %541, %542
  br i1 %543, label %544, label %767

544:                                              ; preds = %540
  store float 0.000000e+00, ptr %51, align 4, !tbaa !11
  %545 = load i32, ptr %50, align 4, !tbaa !9
  %546 = load i32, ptr %49, align 4, !tbaa !9
  %547 = load i32, ptr %33, align 4, !tbaa !9
  %548 = mul nsw i32 %546, %547
  %549 = add nsw i32 %545, %548
  store i32 %549, ptr %37, align 4, !tbaa !9
  %550 = load ptr, ptr %24, align 8, !tbaa !5
  %551 = load i32, ptr %37, align 4, !tbaa !9
  %552 = sext i32 %551 to i64
  %553 = getelementptr inbounds %struct.complex, ptr %550, i64 %552
  %554 = getelementptr inbounds %struct.complex, ptr %553, i32 0, i32 0
  %555 = load float, ptr %554, align 4, !tbaa !15
  store float %555, ptr %40, align 4, !tbaa !11
  %556 = load float, ptr %40, align 4, !tbaa !11
  %557 = fcmp oge float %556, 0.000000e+00
  br i1 %557, label %558, label %560

558:                                              ; preds = %544
  %559 = load float, ptr %40, align 4, !tbaa !11
  br label %563

560:                                              ; preds = %544
  %561 = load float, ptr %40, align 4, !tbaa !11
  %562 = fneg float %561
  br label %563

563:                                              ; preds = %560, %558
  %564 = phi float [ %559, %558 ], [ %562, %560 ]
  %565 = load ptr, ptr %24, align 8, !tbaa !5
  %566 = load i32, ptr %50, align 4, !tbaa !9
  %567 = load i32, ptr %49, align 4, !tbaa !9
  %568 = load i32, ptr %33, align 4, !tbaa !9
  %569 = mul nsw i32 %567, %568
  %570 = add nsw i32 %566, %569
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds %struct.complex, ptr %565, i64 %571
  %573 = call <2 x float> @Cf(ptr noundef %572)
  store <2 x float> %573, ptr %68, align 4
  %574 = getelementptr inbounds { float, float }, ptr %68, i32 0, i32 0
  %575 = load float, ptr %574, align 4
  %576 = getelementptr inbounds { float, float }, ptr %68, i32 0, i32 1
  %577 = load float, ptr %576, align 4
  store float %577, ptr %41, align 4, !tbaa !11
  %578 = load float, ptr %41, align 4, !tbaa !11
  %579 = fcmp oge float %578, 0.000000e+00
  br i1 %579, label %580, label %582

580:                                              ; preds = %563
  %581 = load float, ptr %41, align 4, !tbaa !11
  br label %585

582:                                              ; preds = %563
  %583 = load float, ptr %41, align 4, !tbaa !11
  %584 = fneg float %583
  br label %585

585:                                              ; preds = %582, %580
  %586 = phi float [ %581, %580 ], [ %584, %582 ]
  %587 = fadd float %564, %586
  store float %587, ptr %57, align 4, !tbaa !11
  %588 = load i32, ptr %56, align 4, !tbaa !9
  store i32 %588, ptr %37, align 4, !tbaa !9
  %589 = load ptr, ptr %19, align 8, !tbaa !5
  %590 = load i32, ptr %37, 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 !15
  store float %594, ptr %40, align 4, !tbaa !11
  %595 = load float, ptr %40, align 4, !tbaa !11
  %596 = fcmp oge float %595, 0.000000e+00
  br i1 %596, label %597, label %599

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

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

602:                                              ; preds = %599, %597
  %603 = phi float [ %598, %597 ], [ %601, %599 ]
  %604 = load float, ptr %57, align 4, !tbaa !11
  %605 = load ptr, ptr %29, align 8, !tbaa !5
  %606 = load i32, ptr %50, align 4, !tbaa !9
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds float, ptr %605, i64 %607
  %609 = load float, ptr %608, align 4, !tbaa !11
  %610 = call float @llvm.fmuladd.f32(float %603, float %604, float %609)
  store float %610, ptr %608, align 4, !tbaa !11
  %611 = load i32, ptr %56, align 4, !tbaa !9
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr %55, align 4, !tbaa !9
  %613 = load ptr, ptr %17, align 8, !tbaa !5
  %614 = load i32, ptr %613, align 4, !tbaa !9
  store i32 %614, ptr %37, align 4, !tbaa !9
  %615 = load i32, ptr %50, align 4, !tbaa !9
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr %48, align 4, !tbaa !9
  br label %617

617:                                              ; preds = %746, %602
  %618 = load i32, ptr %48, align 4, !tbaa !9
  %619 = load i32, ptr %37, align 4, !tbaa !9
  %620 = icmp sle i32 %618, %619
  br i1 %620, label %621, label %749

621:                                              ; preds = %617
  %622 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %622, ptr %38, align 4, !tbaa !9
  %623 = load ptr, ptr %19, align 8, !tbaa !5
  %624 = load i32, ptr %38, align 4, !tbaa !9
  %625 = sext i32 %624 to i64
  %626 = getelementptr inbounds %struct.complex, ptr %623, i64 %625
  %627 = getelementptr inbounds %struct.complex, ptr %626, i32 0, i32 0
  %628 = load float, ptr %627, align 4, !tbaa !15
  store float %628, ptr %40, align 4, !tbaa !11
  %629 = load float, ptr %40, align 4, !tbaa !11
  %630 = fcmp oge float %629, 0.000000e+00
  br i1 %630, label %631, label %633

631:                                              ; preds = %621
  %632 = load float, ptr %40, align 4, !tbaa !11
  br label %636

633:                                              ; preds = %621
  %634 = load float, ptr %40, align 4, !tbaa !11
  %635 = fneg float %634
  br label %636

636:                                              ; preds = %633, %631
  %637 = phi float [ %632, %631 ], [ %635, %633 ]
  %638 = load ptr, ptr %19, align 8, !tbaa !5
  %639 = load i32, ptr %55, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds %struct.complex, ptr %638, i64 %640
  %642 = call <2 x float> @Cf(ptr noundef %641)
  store <2 x float> %642, ptr %69, align 4
  %643 = getelementptr inbounds { float, float }, ptr %69, i32 0, i32 0
  %644 = load float, ptr %643, align 4
  %645 = getelementptr inbounds { float, float }, ptr %69, i32 0, i32 1
  %646 = load float, ptr %645, align 4
  store float %646, ptr %41, align 4, !tbaa !11
  %647 = load float, ptr %41, align 4, !tbaa !11
  %648 = fcmp oge float %647, 0.000000e+00
  br i1 %648, label %649, label %651

649:                                              ; preds = %636
  %650 = load float, ptr %41, align 4, !tbaa !11
  br label %654

651:                                              ; preds = %636
  %652 = load float, ptr %41, align 4, !tbaa !11
  %653 = fneg float %652
  br label %654

654:                                              ; preds = %651, %649
  %655 = phi float [ %650, %649 ], [ %653, %651 ]
  %656 = fadd float %637, %655
  %657 = load float, ptr %57, align 4, !tbaa !11
  %658 = load ptr, ptr %29, align 8, !tbaa !5
  %659 = load i32, ptr %48, align 4, !tbaa !9
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds float, ptr %658, i64 %660
  %662 = load float, ptr %661, align 4, !tbaa !11
  %663 = call float @llvm.fmuladd.f32(float %656, float %657, float %662)
  store float %663, ptr %661, align 4, !tbaa !11
  %664 = load i32, ptr %55, align 4, !tbaa !9
  store i32 %664, ptr %38, align 4, !tbaa !9
  %665 = load i32, ptr %48, align 4, !tbaa !9
  %666 = load i32, ptr %49, align 4, !tbaa !9
  %667 = load i32, ptr %33, align 4, !tbaa !9
  %668 = mul nsw i32 %666, %667
  %669 = add nsw i32 %665, %668
  store i32 %669, ptr %39, align 4, !tbaa !9
  %670 = load ptr, ptr %19, align 8, !tbaa !5
  %671 = load i32, ptr %38, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds %struct.complex, ptr %670, i64 %672
  %674 = getelementptr inbounds %struct.complex, ptr %673, i32 0, i32 0
  %675 = load float, ptr %674, align 4, !tbaa !15
  store float %675, ptr %40, align 4, !tbaa !11
  %676 = load float, ptr %40, align 4, !tbaa !11
  %677 = fcmp oge float %676, 0.000000e+00
  br i1 %677, label %678, label %680

678:                                              ; preds = %654
  %679 = load float, ptr %40, align 4, !tbaa !11
  br label %683

680:                                              ; preds = %654
  %681 = load float, ptr %40, align 4, !tbaa !11
  %682 = fneg float %681
  br label %683

683:                                              ; preds = %680, %678
  %684 = phi float [ %679, %678 ], [ %682, %680 ]
  %685 = load ptr, ptr %19, align 8, !tbaa !5
  %686 = load i32, ptr %55, align 4, !tbaa !9
  %687 = sext i32 %686 to i64
  %688 = getelementptr inbounds %struct.complex, ptr %685, i64 %687
  %689 = call <2 x float> @Cf(ptr noundef %688)
  store <2 x float> %689, ptr %70, align 4
  %690 = getelementptr inbounds { float, float }, ptr %70, i32 0, i32 0
  %691 = load float, ptr %690, align 4
  %692 = getelementptr inbounds { float, float }, ptr %70, i32 0, i32 1
  %693 = load float, ptr %692, align 4
  store float %693, ptr %41, align 4, !tbaa !11
  %694 = load float, ptr %41, align 4, !tbaa !11
  %695 = fcmp oge float %694, 0.000000e+00
  br i1 %695, label %696, label %698

696:                                              ; preds = %683
  %697 = load float, ptr %41, align 4, !tbaa !11
  br label %701

698:                                              ; preds = %683
  %699 = load float, ptr %41, align 4, !tbaa !11
  %700 = fneg float %699
  br label %701

701:                                              ; preds = %698, %696
  %702 = phi float [ %697, %696 ], [ %700, %698 ]
  %703 = fadd float %684, %702
  %704 = load ptr, ptr %24, align 8, !tbaa !5
  %705 = load i32, ptr %39, align 4, !tbaa !9
  %706 = sext i32 %705 to i64
  %707 = getelementptr inbounds %struct.complex, ptr %704, i64 %706
  %708 = getelementptr inbounds %struct.complex, ptr %707, i32 0, i32 0
  %709 = load float, ptr %708, align 4, !tbaa !15
  store float %709, ptr %42, align 4, !tbaa !11
  %710 = load float, ptr %42, align 4, !tbaa !11
  %711 = fcmp oge float %710, 0.000000e+00
  br i1 %711, label %712, label %714

712:                                              ; preds = %701
  %713 = load float, ptr %42, align 4, !tbaa !11
  br label %717

714:                                              ; preds = %701
  %715 = load float, ptr %42, align 4, !tbaa !11
  %716 = fneg float %715
  br label %717

717:                                              ; preds = %714, %712
  %718 = phi float [ %713, %712 ], [ %716, %714 ]
  %719 = load ptr, ptr %24, align 8, !tbaa !5
  %720 = load i32, ptr %48, align 4, !tbaa !9
  %721 = load i32, ptr %49, align 4, !tbaa !9
  %722 = load i32, ptr %33, align 4, !tbaa !9
  %723 = mul nsw i32 %721, %722
  %724 = add nsw i32 %720, %723
  %725 = sext i32 %724 to i64
  %726 = getelementptr inbounds %struct.complex, ptr %719, i64 %725
  %727 = call <2 x float> @Cf(ptr noundef %726)
  store <2 x float> %727, ptr %71, align 4
  %728 = getelementptr inbounds { float, float }, ptr %71, i32 0, i32 0
  %729 = load float, ptr %728, align 4
  %730 = getelementptr inbounds { float, float }, ptr %71, i32 0, i32 1
  %731 = load float, ptr %730, align 4
  store float %731, ptr %43, align 4, !tbaa !11
  %732 = load float, ptr %43, align 4, !tbaa !11
  %733 = fcmp oge float %732, 0.000000e+00
  br i1 %733, label %734, label %736

734:                                              ; preds = %717
  %735 = load float, ptr %43, align 4, !tbaa !11
  br label %739

736:                                              ; preds = %717
  %737 = load float, ptr %43, align 4, !tbaa !11
  %738 = fneg float %737
  br label %739

739:                                              ; preds = %736, %734
  %740 = phi float [ %735, %734 ], [ %738, %736 ]
  %741 = fadd float %718, %740
  %742 = load float, ptr %51, align 4, !tbaa !11
  %743 = call float @llvm.fmuladd.f32(float %703, float %741, float %742)
  store float %743, ptr %51, align 4, !tbaa !11
  %744 = load i32, ptr %55, align 4, !tbaa !9
  %745 = add nsw i32 %744, 1
  store i32 %745, ptr %55, align 4, !tbaa !9
  br label %746

746:                                              ; preds = %739
  %747 = load i32, ptr %48, align 4, !tbaa !9
  %748 = add nsw i32 %747, 1
  store i32 %748, ptr %48, align 4, !tbaa !9
  br label %617, !llvm.loop !21

749:                                              ; preds = %617
  %750 = load float, ptr %51, align 4, !tbaa !11
  %751 = load ptr, ptr %29, align 8, !tbaa !5
  %752 = load i32, ptr %50, align 4, !tbaa !9
  %753 = sext i32 %752 to i64
  %754 = getelementptr inbounds float, ptr %751, i64 %753
  %755 = load float, ptr %754, align 4, !tbaa !11
  %756 = fadd float %755, %750
  store float %756, ptr %754, align 4, !tbaa !11
  %757 = load ptr, ptr %17, align 8, !tbaa !5
  %758 = load i32, ptr %757, align 4, !tbaa !9
  %759 = load i32, ptr %50, align 4, !tbaa !9
  %760 = sub nsw i32 %758, %759
  %761 = add nsw i32 %760, 1
  %762 = load i32, ptr %56, align 4, !tbaa !9
  %763 = add nsw i32 %762, %761
  store i32 %763, ptr %56, align 4, !tbaa !9
  br label %764

764:                                              ; preds = %749
  %765 = load i32, ptr %50, align 4, !tbaa !9
  %766 = add nsw i32 %765, 1
  store i32 %766, ptr %50, align 4, !tbaa !9
  br label %540, !llvm.loop !22

767:                                              ; preds = %540
  br label %768

768:                                              ; preds = %767, %536
  store float 0.000000e+00, ptr %51, align 4, !tbaa !11
  %769 = load ptr, ptr %17, align 8, !tbaa !5
  %770 = load i32, ptr %769, align 4, !tbaa !9
  store i32 %770, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %771

771:                                              ; preds = %892, %768
  %772 = load i32, ptr %48, align 4, !tbaa !9
  %773 = load i32, ptr %36, align 4, !tbaa !9
  %774 = icmp sle i32 %772, %773
  br i1 %774, label %775, label %895

775:                                              ; preds = %771
  %776 = load ptr, ptr %29, align 8, !tbaa !5
  %777 = load i32, ptr %48, align 4, !tbaa !9
  %778 = sext i32 %777 to i64
  %779 = getelementptr inbounds float, ptr %776, i64 %778
  %780 = load float, ptr %779, align 4, !tbaa !11
  %781 = load float, ptr %47, align 4, !tbaa !11
  %782 = fcmp ogt float %780, %781
  br i1 %782, label %783, label %835

783:                                              ; preds = %775
  %784 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %784, ptr %37, align 4, !tbaa !9
  %785 = load float, ptr %51, align 4, !tbaa !11
  store float %785, ptr %42, align 4, !tbaa !11
  %786 = load ptr, ptr %28, align 8, !tbaa !5
  %787 = load i32, ptr %37, align 4, !tbaa !9
  %788 = sext i32 %787 to i64
  %789 = getelementptr inbounds %struct.complex, ptr %786, i64 %788
  %790 = getelementptr inbounds %struct.complex, ptr %789, i32 0, i32 0
  %791 = load float, ptr %790, align 4, !tbaa !15
  store float %791, ptr %40, align 4, !tbaa !11
  %792 = load float, ptr %40, align 4, !tbaa !11
  %793 = fcmp oge float %792, 0.000000e+00
  br i1 %793, label %794, label %796

794:                                              ; preds = %783
  %795 = load float, ptr %40, align 4, !tbaa !11
  br label %799

796:                                              ; preds = %783
  %797 = load float, ptr %40, align 4, !tbaa !11
  %798 = fneg float %797
  br label %799

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

812:                                              ; preds = %799
  %813 = load float, ptr %41, align 4, !tbaa !11
  br label %817

814:                                              ; preds = %799
  %815 = load float, ptr %41, align 4, !tbaa !11
  %816 = fneg float %815
  br label %817

817:                                              ; preds = %814, %812
  %818 = phi float [ %813, %812 ], [ %816, %814 ]
  %819 = fadd float %800, %818
  %820 = load ptr, ptr %29, align 8, !tbaa !5
  %821 = load i32, ptr %48, align 4, !tbaa !9
  %822 = sext i32 %821 to i64
  %823 = getelementptr inbounds float, ptr %820, i64 %822
  %824 = load float, ptr %823, align 4, !tbaa !11
  %825 = fdiv float %819, %824
  store float %825, ptr %43, align 4, !tbaa !11
  %826 = load float, ptr %42, align 4, !tbaa !11
  %827 = load float, ptr %43, align 4, !tbaa !11
  %828 = fcmp oge float %826, %827
  br i1 %828, label %829, label %831

829:                                              ; preds = %817
  %830 = load float, ptr %42, align 4, !tbaa !11
  br label %833

831:                                              ; preds = %817
  %832 = load float, ptr %43, align 4, !tbaa !11
  br label %833

833:                                              ; preds = %831, %829
  %834 = phi float [ %830, %829 ], [ %832, %831 ]
  store float %834, ptr %51, align 4, !tbaa !11
  br label %891

835:                                              ; preds = %775
  %836 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %836, ptr %37, align 4, !tbaa !9
  %837 = load float, ptr %51, align 4, !tbaa !11
  store float %837, ptr %42, align 4, !tbaa !11
  %838 = load ptr, ptr %28, align 8, !tbaa !5
  %839 = load i32, ptr %37, align 4, !tbaa !9
  %840 = sext i32 %839 to i64
  %841 = getelementptr inbounds %struct.complex, ptr %838, i64 %840
  %842 = getelementptr inbounds %struct.complex, ptr %841, i32 0, i32 0
  %843 = load float, ptr %842, align 4, !tbaa !15
  store float %843, ptr %40, align 4, !tbaa !11
  %844 = load float, ptr %40, align 4, !tbaa !11
  %845 = fcmp oge float %844, 0.000000e+00
  br i1 %845, label %846, label %848

846:                                              ; preds = %835
  %847 = load float, ptr %40, align 4, !tbaa !11
  br label %851

848:                                              ; preds = %835
  %849 = load float, ptr %40, align 4, !tbaa !11
  %850 = fneg float %849
  br label %851

851:                                              ; preds = %848, %846
  %852 = phi float [ %847, %846 ], [ %850, %848 ]
  %853 = load ptr, ptr %28, align 8, !tbaa !5
  %854 = load i32, ptr %48, align 4, !tbaa !9
  %855 = sext i32 %854 to i64
  %856 = getelementptr inbounds %struct.complex, ptr %853, i64 %855
  %857 = call <2 x float> @Cf(ptr noundef %856)
  store <2 x float> %857, ptr %73, align 4
  %858 = getelementptr inbounds { float, float }, ptr %73, i32 0, i32 0
  %859 = load float, ptr %858, align 4
  %860 = getelementptr inbounds { float, float }, ptr %73, i32 0, i32 1
  %861 = load float, ptr %860, align 4
  store float %861, ptr %41, align 4, !tbaa !11
  %862 = load float, ptr %41, align 4, !tbaa !11
  %863 = fcmp oge float %862, 0.000000e+00
  br i1 %863, label %864, label %866

864:                                              ; preds = %851
  %865 = load float, ptr %41, align 4, !tbaa !11
  br label %869

866:                                              ; preds = %851
  %867 = load float, ptr %41, align 4, !tbaa !11
  %868 = fneg float %867
  br label %869

869:                                              ; preds = %866, %864
  %870 = phi float [ %865, %864 ], [ %868, %866 ]
  %871 = fadd float %852, %870
  %872 = load float, ptr %46, align 4, !tbaa !11
  %873 = fadd float %871, %872
  %874 = load ptr, ptr %29, align 8, !tbaa !5
  %875 = load i32, ptr %48, align 4, !tbaa !9
  %876 = sext i32 %875 to i64
  %877 = getelementptr inbounds float, ptr %874, i64 %876
  %878 = load float, ptr %877, align 4, !tbaa !11
  %879 = load float, ptr %46, align 4, !tbaa !11
  %880 = fadd float %878, %879
  %881 = fdiv float %873, %880
  store float %881, ptr %43, align 4, !tbaa !11
  %882 = load float, ptr %42, align 4, !tbaa !11
  %883 = load float, ptr %43, align 4, !tbaa !11
  %884 = fcmp oge float %882, %883
  br i1 %884, label %885, label %887

885:                                              ; preds = %869
  %886 = load float, ptr %42, align 4, !tbaa !11
  br label %889

887:                                              ; preds = %869
  %888 = load float, ptr %43, align 4, !tbaa !11
  br label %889

889:                                              ; preds = %887, %885
  %890 = phi float [ %886, %885 ], [ %888, %887 ]
  store float %890, ptr %51, align 4, !tbaa !11
  br label %891

891:                                              ; preds = %889, %833
  br label %892

892:                                              ; preds = %891
  %893 = load i32, ptr %48, align 4, !tbaa !9
  %894 = add nsw i32 %893, 1
  store i32 %894, ptr %48, align 4, !tbaa !9
  br label %771, !llvm.loop !23

895:                                              ; preds = %771
  %896 = load float, ptr %51, align 4, !tbaa !11
  %897 = load ptr, ptr %27, align 8, !tbaa !5
  %898 = load i32, ptr %49, align 4, !tbaa !9
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds float, ptr %897, i64 %899
  store float %896, ptr %900, align 4, !tbaa !11
  %901 = load ptr, ptr %27, align 8, !tbaa !5
  %902 = load i32, ptr %49, align 4, !tbaa !9
  %903 = sext i32 %902 to i64
  %904 = getelementptr inbounds float, ptr %901, i64 %903
  %905 = load float, ptr %904, align 4, !tbaa !11
  %906 = load float, ptr %61, align 4, !tbaa !11
  %907 = fcmp ogt float %905, %906
  br i1 %907, label %908, label %948

908:                                              ; preds = %895
  %909 = load ptr, ptr %27, align 8, !tbaa !5
  %910 = load i32, ptr %49, align 4, !tbaa !9
  %911 = sext i32 %910 to i64
  %912 = getelementptr inbounds float, ptr %909, i64 %911
  %913 = load float, ptr %912, align 4, !tbaa !11
  %914 = fmul float %913, 2.000000e+00
  %915 = load float, ptr %60, align 4, !tbaa !11
  %916 = fcmp ole float %914, %915
  br i1 %916, label %917, label %948

917:                                              ; preds = %908
  %918 = load i32, ptr %53, align 4, !tbaa !9
  %919 = icmp sle i32 %918, 5
  br i1 %919, label %920, label %948

920:                                              ; preds = %917
  %921 = load ptr, ptr %16, align 8, !tbaa !5
  %922 = load ptr, ptr %17, align 8, !tbaa !5
  %923 = load ptr, ptr %20, align 8, !tbaa !5
  %924 = getelementptr inbounds %struct.complex, ptr %923, i64 1
  %925 = load ptr, ptr %21, align 8, !tbaa !5
  %926 = getelementptr inbounds i32, ptr %925, i64 1
  %927 = load ptr, ptr %28, align 8, !tbaa !5
  %928 = getelementptr inbounds %struct.complex, ptr %927, i64 1
  %929 = load ptr, ptr %17, align 8, !tbaa !5
  %930 = load ptr, ptr %30, align 8, !tbaa !5
  call void @chptrs_(ptr noundef %921, ptr noundef %922, ptr noundef @c__1, ptr noundef %924, ptr noundef %926, ptr noundef %928, ptr noundef %929, ptr noundef %930)
  %931 = load ptr, ptr %17, align 8, !tbaa !5
  %932 = load ptr, ptr %28, align 8, !tbaa !5
  %933 = getelementptr inbounds %struct.complex, ptr %932, i64 1
  %934 = load ptr, ptr %24, align 8, !tbaa !5
  %935 = load i32, ptr %49, align 4, !tbaa !9
  %936 = load i32, ptr %33, align 4, !tbaa !9
  %937 = mul nsw i32 %935, %936
  %938 = add nsw i32 %937, 1
  %939 = sext i32 %938 to i64
  %940 = getelementptr inbounds %struct.complex, ptr %934, i64 %939
  call void @caxpy_(ptr noundef %931, ptr noundef @c_b1, ptr noundef %933, ptr noundef @c__1, ptr noundef %940, ptr noundef @c__1)
  %941 = load ptr, ptr %27, align 8, !tbaa !5
  %942 = load i32, ptr %49, align 4, !tbaa !9
  %943 = sext i32 %942 to i64
  %944 = getelementptr inbounds float, ptr %941, i64 %943
  %945 = load float, ptr %944, align 4, !tbaa !11
  store float %945, ptr %60, align 4, !tbaa !11
  %946 = load i32, ptr %53, align 4, !tbaa !9
  %947 = add nsw i32 %946, 1
  store i32 %947, ptr %53, align 4, !tbaa !9
  br label %225

948:                                              ; preds = %917, %908, %895
  %949 = load ptr, ptr %17, align 8, !tbaa !5
  %950 = load i32, ptr %949, align 4, !tbaa !9
  store i32 %950, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %951

951:                                              ; preds = %1066, %948
  %952 = load i32, ptr %48, align 4, !tbaa !9
  %953 = load i32, ptr %36, align 4, !tbaa !9
  %954 = icmp sle i32 %952, %953
  br i1 %954, label %955, label %1069

955:                                              ; preds = %951
  %956 = load ptr, ptr %29, align 8, !tbaa !5
  %957 = load i32, ptr %48, align 4, !tbaa !9
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds float, ptr %956, i64 %958
  %960 = load float, ptr %959, align 4, !tbaa !11
  %961 = load float, ptr %47, align 4, !tbaa !11
  %962 = fcmp ogt float %960, %961
  br i1 %962, label %963, label %1013

963:                                              ; preds = %955
  %964 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %964, ptr %37, align 4, !tbaa !9
  %965 = load ptr, ptr %28, align 8, !tbaa !5
  %966 = load i32, ptr %37, align 4, !tbaa !9
  %967 = sext i32 %966 to i64
  %968 = getelementptr inbounds %struct.complex, ptr %965, i64 %967
  %969 = getelementptr inbounds %struct.complex, ptr %968, i32 0, i32 0
  %970 = load float, ptr %969, align 4, !tbaa !15
  store float %970, ptr %40, align 4, !tbaa !11
  %971 = load float, ptr %40, align 4, !tbaa !11
  %972 = fcmp oge float %971, 0.000000e+00
  br i1 %972, label %973, label %975

973:                                              ; preds = %963
  %974 = load float, ptr %40, align 4, !tbaa !11
  br label %978

975:                                              ; preds = %963
  %976 = load float, ptr %40, align 4, !tbaa !11
  %977 = fneg float %976
  br label %978

978:                                              ; preds = %975, %973
  %979 = phi float [ %974, %973 ], [ %977, %975 ]
  %980 = load ptr, ptr %28, align 8, !tbaa !5
  %981 = load i32, ptr %48, align 4, !tbaa !9
  %982 = sext i32 %981 to i64
  %983 = getelementptr inbounds %struct.complex, ptr %980, i64 %982
  %984 = call <2 x float> @Cf(ptr noundef %983)
  store <2 x float> %984, ptr %74, align 4
  %985 = getelementptr inbounds { float, float }, ptr %74, i32 0, i32 0
  %986 = load float, ptr %985, align 4
  %987 = getelementptr inbounds { float, float }, ptr %74, i32 0, i32 1
  %988 = load float, ptr %987, align 4
  store float %988, ptr %41, align 4, !tbaa !11
  %989 = load float, ptr %41, align 4, !tbaa !11
  %990 = fcmp oge float %989, 0.000000e+00
  br i1 %990, label %991, label %993

991:                                              ; preds = %978
  %992 = load float, ptr %41, align 4, !tbaa !11
  br label %996

993:                                              ; preds = %978
  %994 = load float, ptr %41, align 4, !tbaa !11
  %995 = fneg float %994
  br label %996

996:                                              ; preds = %993, %991
  %997 = phi float [ %992, %991 ], [ %995, %993 ]
  %998 = fadd float %979, %997
  %999 = load i32, ptr %58, align 4, !tbaa !9
  %1000 = sitofp i32 %999 to float
  %1001 = load float, ptr %61, align 4, !tbaa !11
  %1002 = fmul float %1000, %1001
  %1003 = load ptr, ptr %29, align 8, !tbaa !5
  %1004 = load i32, ptr %48, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds float, ptr %1003, i64 %1005
  %1007 = load float, ptr %1006, align 4, !tbaa !11
  %1008 = call float @llvm.fmuladd.f32(float %1002, float %1007, float %998)
  %1009 = load ptr, ptr %29, align 8, !tbaa !5
  %1010 = load i32, ptr %48, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds float, ptr %1009, i64 %1011
  store float %1008, ptr %1012, align 4, !tbaa !11
  br label %1065

1013:                                             ; preds = %955
  %1014 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1014, ptr %37, align 4, !tbaa !9
  %1015 = load ptr, ptr %28, align 8, !tbaa !5
  %1016 = load i32, ptr %37, align 4, !tbaa !9
  %1017 = sext i32 %1016 to i64
  %1018 = getelementptr inbounds %struct.complex, ptr %1015, i64 %1017
  %1019 = getelementptr inbounds %struct.complex, ptr %1018, i32 0, i32 0
  %1020 = load float, ptr %1019, align 4, !tbaa !15
  store float %1020, ptr %40, align 4, !tbaa !11
  %1021 = load float, ptr %40, align 4, !tbaa !11
  %1022 = fcmp oge float %1021, 0.000000e+00
  br i1 %1022, label %1023, label %1025

1023:                                             ; preds = %1013
  %1024 = load float, ptr %40, align 4, !tbaa !11
  br label %1028

1025:                                             ; preds = %1013
  %1026 = load float, ptr %40, align 4, !tbaa !11
  %1027 = fneg float %1026
  br label %1028

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

1041:                                             ; preds = %1028
  %1042 = load float, ptr %41, align 4, !tbaa !11
  br label %1046

1043:                                             ; preds = %1028
  %1044 = load float, ptr %41, align 4, !tbaa !11
  %1045 = fneg float %1044
  br label %1046

1046:                                             ; preds = %1043, %1041
  %1047 = phi float [ %1042, %1041 ], [ %1045, %1043 ]
  %1048 = fadd float %1029, %1047
  %1049 = load i32, ptr %58, align 4, !tbaa !9
  %1050 = sitofp i32 %1049 to float
  %1051 = load float, ptr %61, align 4, !tbaa !11
  %1052 = fmul float %1050, %1051
  %1053 = load ptr, ptr %29, align 8, !tbaa !5
  %1054 = load i32, ptr %48, 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 %1052, float %1057, float %1048)
  %1059 = load float, ptr %46, align 4, !tbaa !11
  %1060 = fadd float %1058, %1059
  %1061 = load ptr, ptr %29, align 8, !tbaa !5
  %1062 = load i32, ptr %48, align 4, !tbaa !9
  %1063 = sext i32 %1062 to i64
  %1064 = getelementptr inbounds float, ptr %1061, i64 %1063
  store float %1060, ptr %1064, align 4, !tbaa !11
  br label %1065

1065:                                             ; preds = %1046, %996
  br label %1066

1066:                                             ; preds = %1065
  %1067 = load i32, ptr %48, align 4, !tbaa !9
  %1068 = add nsw i32 %1067, 1
  store i32 %1068, ptr %48, align 4, !tbaa !9
  br label %951, !llvm.loop !24

1069:                                             ; preds = %951
  store i32 0, ptr %45, align 4, !tbaa !9
  br label %1070

1070:                                             ; preds = %1224, %1069
  %1071 = load ptr, ptr %17, align 8, !tbaa !5
  %1072 = load ptr, ptr %28, align 8, !tbaa !5
  %1073 = load ptr, ptr %17, align 8, !tbaa !5
  %1074 = load i32, ptr %1073, align 4, !tbaa !9
  %1075 = add nsw i32 %1074, 1
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds %struct.complex, ptr %1072, i64 %1076
  %1078 = load ptr, ptr %28, align 8, !tbaa !5
  %1079 = getelementptr inbounds %struct.complex, ptr %1078, i64 1
  %1080 = load ptr, ptr %26, align 8, !tbaa !5
  %1081 = load i32, ptr %49, align 4, !tbaa !9
  %1082 = sext i32 %1081 to i64
  %1083 = getelementptr inbounds float, ptr %1080, i64 %1082
  %1084 = getelementptr inbounds [3 x i32], ptr %52, i64 0, i64 0
  call void @clacn2_(ptr noundef %1071, ptr noundef %1077, ptr noundef %1079, ptr noundef %1083, ptr noundef %45, ptr noundef %1084)
  %1085 = load i32, ptr %45, align 4, !tbaa !9
  %1086 = icmp ne i32 %1085, 0
  br i1 %1086, label %1087, label %1225

1087:                                             ; preds = %1070
  %1088 = load i32, ptr %45, align 4, !tbaa !9
  %1089 = icmp eq i32 %1088, 1
  br i1 %1089, label %1090, label %1155

1090:                                             ; preds = %1087
  %1091 = load ptr, ptr %16, align 8, !tbaa !5
  %1092 = load ptr, ptr %17, align 8, !tbaa !5
  %1093 = load ptr, ptr %20, align 8, !tbaa !5
  %1094 = getelementptr inbounds %struct.complex, ptr %1093, i64 1
  %1095 = load ptr, ptr %21, align 8, !tbaa !5
  %1096 = getelementptr inbounds i32, ptr %1095, i64 1
  %1097 = load ptr, ptr %28, align 8, !tbaa !5
  %1098 = getelementptr inbounds %struct.complex, ptr %1097, i64 1
  %1099 = load ptr, ptr %17, align 8, !tbaa !5
  %1100 = load ptr, ptr %30, align 8, !tbaa !5
  call void @chptrs_(ptr noundef %1091, ptr noundef %1092, ptr noundef @c__1, ptr noundef %1094, ptr noundef %1096, ptr noundef %1098, ptr noundef %1099, ptr noundef %1100)
  %1101 = load ptr, ptr %17, align 8, !tbaa !5
  %1102 = load i32, ptr %1101, align 4, !tbaa !9
  store i32 %1102, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1103

1103:                                             ; preds = %1151, %1090
  %1104 = load i32, ptr %48, align 4, !tbaa !9
  %1105 = load i32, ptr %36, align 4, !tbaa !9
  %1106 = icmp sle i32 %1104, %1105
  br i1 %1106, label %1107, label %1154

1107:                                             ; preds = %1103
  %1108 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1108, ptr %37, align 4, !tbaa !9
  %1109 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1109, ptr %38, align 4, !tbaa !9
  %1110 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1110, ptr %39, align 4, !tbaa !9
  %1111 = load ptr, ptr %29, align 8, !tbaa !5
  %1112 = load i32, ptr %38, align 4, !tbaa !9
  %1113 = sext i32 %1112 to i64
  %1114 = getelementptr inbounds float, ptr %1111, i64 %1113
  %1115 = load float, ptr %1114, align 4, !tbaa !11
  %1116 = load ptr, ptr %28, align 8, !tbaa !5
  %1117 = load i32, ptr %39, align 4, !tbaa !9
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds %struct.complex, ptr %1116, i64 %1118
  %1120 = getelementptr inbounds %struct.complex, ptr %1119, i32 0, i32 0
  %1121 = load float, ptr %1120, align 4, !tbaa !15
  %1122 = fmul float %1115, %1121
  %1123 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %1122, ptr %1123, align 4, !tbaa !15
  %1124 = load ptr, ptr %29, align 8, !tbaa !5
  %1125 = load i32, ptr %38, align 4, !tbaa !9
  %1126 = sext i32 %1125 to i64
  %1127 = getelementptr inbounds float, ptr %1124, i64 %1126
  %1128 = load float, ptr %1127, align 4, !tbaa !11
  %1129 = load ptr, ptr %28, align 8, !tbaa !5
  %1130 = load i32, ptr %39, align 4, !tbaa !9
  %1131 = sext i32 %1130 to i64
  %1132 = getelementptr inbounds %struct.complex, ptr %1129, i64 %1131
  %1133 = getelementptr inbounds %struct.complex, ptr %1132, i32 0, i32 1
  %1134 = load float, ptr %1133, align 4, !tbaa !17
  %1135 = fmul float %1128, %1134
  %1136 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float %1135, ptr %1136, align 4, !tbaa !17
  %1137 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %1138 = load float, ptr %1137, align 4, !tbaa !15
  %1139 = load ptr, ptr %28, align 8, !tbaa !5
  %1140 = load i32, ptr %37, align 4, !tbaa !9
  %1141 = sext i32 %1140 to i64
  %1142 = getelementptr inbounds %struct.complex, ptr %1139, i64 %1141
  %1143 = getelementptr inbounds %struct.complex, ptr %1142, i32 0, i32 0
  store float %1138, ptr %1143, align 4, !tbaa !15
  %1144 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %1145 = load float, ptr %1144, align 4, !tbaa !17
  %1146 = load ptr, ptr %28, align 8, !tbaa !5
  %1147 = load i32, ptr %37, align 4, !tbaa !9
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds %struct.complex, ptr %1146, i64 %1148
  %1150 = getelementptr inbounds %struct.complex, ptr %1149, i32 0, i32 1
  store float %1145, ptr %1150, align 4, !tbaa !17
  br label %1151

1151:                                             ; preds = %1107
  %1152 = load i32, ptr %48, align 4, !tbaa !9
  %1153 = add nsw i32 %1152, 1
  store i32 %1153, ptr %48, align 4, !tbaa !9
  br label %1103, !llvm.loop !25

1154:                                             ; preds = %1103
  br label %1224

1155:                                             ; preds = %1087
  %1156 = load i32, ptr %45, align 4, !tbaa !9
  %1157 = icmp eq i32 %1156, 2
  br i1 %1157, label %1158, label %1223

1158:                                             ; preds = %1155
  %1159 = load ptr, ptr %17, align 8, !tbaa !5
  %1160 = load i32, ptr %1159, align 4, !tbaa !9
  store i32 %1160, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1161

1161:                                             ; preds = %1209, %1158
  %1162 = load i32, ptr %48, align 4, !tbaa !9
  %1163 = load i32, ptr %36, align 4, !tbaa !9
  %1164 = icmp sle i32 %1162, %1163
  br i1 %1164, label %1165, label %1212

1165:                                             ; preds = %1161
  %1166 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1166, ptr %37, align 4, !tbaa !9
  %1167 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1167, ptr %38, align 4, !tbaa !9
  %1168 = load i32, ptr %48, align 4, !tbaa !9
  store i32 %1168, ptr %39, align 4, !tbaa !9
  %1169 = load ptr, ptr %29, align 8, !tbaa !5
  %1170 = load i32, ptr %38, align 4, !tbaa !9
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds float, ptr %1169, i64 %1171
  %1173 = load float, ptr %1172, align 4, !tbaa !11
  %1174 = load ptr, ptr %28, align 8, !tbaa !5
  %1175 = load i32, ptr %39, align 4, !tbaa !9
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds %struct.complex, ptr %1174, i64 %1176
  %1178 = getelementptr inbounds %struct.complex, ptr %1177, i32 0, i32 0
  %1179 = load float, ptr %1178, align 4, !tbaa !15
  %1180 = fmul float %1173, %1179
  %1181 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  store float %1180, ptr %1181, align 4, !tbaa !15
  %1182 = load ptr, ptr %29, align 8, !tbaa !5
  %1183 = load i32, ptr %38, align 4, !tbaa !9
  %1184 = sext i32 %1183 to i64
  %1185 = getelementptr inbounds float, ptr %1182, i64 %1184
  %1186 = load float, ptr %1185, align 4, !tbaa !11
  %1187 = load ptr, ptr %28, align 8, !tbaa !5
  %1188 = load i32, ptr %39, align 4, !tbaa !9
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds %struct.complex, ptr %1187, i64 %1189
  %1191 = getelementptr inbounds %struct.complex, ptr %1190, i32 0, i32 1
  %1192 = load float, ptr %1191, align 4, !tbaa !17
  %1193 = fmul float %1186, %1192
  %1194 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  store float %1193, ptr %1194, align 4, !tbaa !17
  %1195 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 0
  %1196 = load float, ptr %1195, align 4, !tbaa !15
  %1197 = load ptr, ptr %28, align 8, !tbaa !5
  %1198 = load i32, ptr %37, align 4, !tbaa !9
  %1199 = sext i32 %1198 to i64
  %1200 = getelementptr inbounds %struct.complex, ptr %1197, i64 %1199
  %1201 = getelementptr inbounds %struct.complex, ptr %1200, i32 0, i32 0
  store float %1196, ptr %1201, align 4, !tbaa !15
  %1202 = getelementptr inbounds %struct.complex, ptr %44, i32 0, i32 1
  %1203 = load float, ptr %1202, align 4, !tbaa !17
  %1204 = load ptr, ptr %28, align 8, !tbaa !5
  %1205 = load i32, ptr %37, align 4, !tbaa !9
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds %struct.complex, ptr %1204, i64 %1206
  %1208 = getelementptr inbounds %struct.complex, ptr %1207, i32 0, i32 1
  store float %1203, ptr %1208, align 4, !tbaa !17
  br label %1209

1209:                                             ; preds = %1165
  %1210 = load i32, ptr %48, align 4, !tbaa !9
  %1211 = add nsw i32 %1210, 1
  store i32 %1211, ptr %48, align 4, !tbaa !9
  br label %1161, !llvm.loop !26

1212:                                             ; preds = %1161
  %1213 = load ptr, ptr %16, align 8, !tbaa !5
  %1214 = load ptr, ptr %17, align 8, !tbaa !5
  %1215 = load ptr, ptr %20, align 8, !tbaa !5
  %1216 = getelementptr inbounds %struct.complex, ptr %1215, i64 1
  %1217 = load ptr, ptr %21, align 8, !tbaa !5
  %1218 = getelementptr inbounds i32, ptr %1217, i64 1
  %1219 = load ptr, ptr %28, align 8, !tbaa !5
  %1220 = getelementptr inbounds %struct.complex, ptr %1219, i64 1
  %1221 = load ptr, ptr %17, align 8, !tbaa !5
  %1222 = load ptr, ptr %30, align 8, !tbaa !5
  call void @chptrs_(ptr noundef %1213, ptr noundef %1214, ptr noundef @c__1, ptr noundef %1216, ptr noundef %1218, ptr noundef %1220, ptr noundef %1221, ptr noundef %1222)
  br label %1223

1223:                                             ; preds = %1212, %1155
  br label %1224

1224:                                             ; preds = %1223, %1154
  br label %1070

1225:                                             ; preds = %1070
  store float 0.000000e+00, ptr %60, align 4, !tbaa !11
  %1226 = load ptr, ptr %17, align 8, !tbaa !5
  %1227 = load i32, ptr %1226, align 4, !tbaa !9
  store i32 %1227, ptr %36, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %1228

1228:                                             ; preds = %1286, %1225
  %1229 = load i32, ptr %48, align 4, !tbaa !9
  %1230 = load i32, ptr %36, align 4, !tbaa !9
  %1231 = icmp sle i32 %1229, %1230
  br i1 %1231, label %1232, label %1289

1232:                                             ; preds = %1228
  %1233 = load i32, ptr %48, align 4, !tbaa !9
  %1234 = load i32, ptr %49, align 4, !tbaa !9
  %1235 = load i32, ptr %33, align 4, !tbaa !9
  %1236 = mul nsw i32 %1234, %1235
  %1237 = add nsw i32 %1233, %1236
  store i32 %1237, ptr %37, align 4, !tbaa !9
  %1238 = load float, ptr %60, align 4, !tbaa !11
  store float %1238, ptr %42, align 4, !tbaa !11
  %1239 = load ptr, ptr %24, align 8, !tbaa !5
  %1240 = load i32, ptr %37, align 4, !tbaa !9
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds %struct.complex, ptr %1239, i64 %1241
  %1243 = getelementptr inbounds %struct.complex, ptr %1242, i32 0, i32 0
  %1244 = load float, ptr %1243, align 4, !tbaa !15
  store float %1244, ptr %40, align 4, !tbaa !11
  %1245 = load float, ptr %40, align 4, !tbaa !11
  %1246 = fcmp oge float %1245, 0.000000e+00
  br i1 %1246, label %1247, label %1249

1247:                                             ; preds = %1232
  %1248 = load float, ptr %40, align 4, !tbaa !11
  br label %1252

1249:                                             ; preds = %1232
  %1250 = load float, ptr %40, align 4, !tbaa !11
  %1251 = fneg float %1250
  br label %1252

1252:                                             ; preds = %1249, %1247
  %1253 = phi float [ %1248, %1247 ], [ %1251, %1249 ]
  %1254 = load ptr, ptr %24, align 8, !tbaa !5
  %1255 = load i32, ptr %48, align 4, !tbaa !9
  %1256 = load i32, ptr %49, align 4, !tbaa !9
  %1257 = load i32, ptr %33, align 4, !tbaa !9
  %1258 = mul nsw i32 %1256, %1257
  %1259 = add nsw i32 %1255, %1258
  %1260 = sext i32 %1259 to i64
  %1261 = getelementptr inbounds %struct.complex, ptr %1254, i64 %1260
  %1262 = call <2 x float> @Cf(ptr noundef %1261)
  store <2 x float> %1262, ptr %76, align 4
  %1263 = getelementptr inbounds { float, float }, ptr %76, i32 0, i32 0
  %1264 = load float, ptr %1263, align 4
  %1265 = getelementptr inbounds { float, float }, ptr %76, i32 0, i32 1
  %1266 = load float, ptr %1265, align 4
  store float %1266, ptr %41, align 4, !tbaa !11
  %1267 = load float, ptr %41, align 4, !tbaa !11
  %1268 = fcmp oge float %1267, 0.000000e+00
  br i1 %1268, label %1269, label %1271

1269:                                             ; preds = %1252
  %1270 = load float, ptr %41, align 4, !tbaa !11
  br label %1274

1271:                                             ; preds = %1252
  %1272 = load float, ptr %41, align 4, !tbaa !11
  %1273 = fneg float %1272
  br label %1274

1274:                                             ; preds = %1271, %1269
  %1275 = phi float [ %1270, %1269 ], [ %1273, %1271 ]
  %1276 = fadd float %1253, %1275
  store float %1276, ptr %43, align 4, !tbaa !11
  %1277 = load float, ptr %42, align 4, !tbaa !11
  %1278 = load float, ptr %43, align 4, !tbaa !11
  %1279 = fcmp oge float %1277, %1278
  br i1 %1279, label %1280, label %1282

1280:                                             ; preds = %1274
  %1281 = load float, ptr %42, align 4, !tbaa !11
  br label %1284

1282:                                             ; preds = %1274
  %1283 = load float, ptr %43, align 4, !tbaa !11
  br label %1284

1284:                                             ; preds = %1282, %1280
  %1285 = phi float [ %1281, %1280 ], [ %1283, %1282 ]
  store float %1285, ptr %60, align 4, !tbaa !11
  br label %1286

1286:                                             ; preds = %1284
  %1287 = load i32, ptr %48, align 4, !tbaa !9
  %1288 = add nsw i32 %1287, 1
  store i32 %1288, ptr %48, align 4, !tbaa !9
  br label %1228, !llvm.loop !27

1289:                                             ; preds = %1228
  %1290 = load float, ptr %60, align 4, !tbaa !11
  %1291 = fcmp une float %1290, 0.000000e+00
  br i1 %1291, label %1292, label %1300

1292:                                             ; preds = %1289
  %1293 = load float, ptr %60, align 4, !tbaa !11
  %1294 = load ptr, ptr %26, align 8, !tbaa !5
  %1295 = load i32, ptr %49, align 4, !tbaa !9
  %1296 = sext i32 %1295 to i64
  %1297 = getelementptr inbounds float, ptr %1294, i64 %1296
  %1298 = load float, ptr %1297, align 4, !tbaa !11
  %1299 = fdiv float %1298, %1293
  store float %1299, ptr %1297, align 4, !tbaa !11
  br label %1300

1300:                                             ; preds = %1292, %1289
  br label %1301

1301:                                             ; preds = %1300
  %1302 = load i32, ptr %49, align 4, !tbaa !9
  %1303 = add nsw i32 %1302, 1
  store i32 %1303, ptr %49, align 4, !tbaa !9
  br label %220, !llvm.loop !28

1304:                                             ; preds = %220
  store i32 1, ptr %62, align 4
  br label %1305

1305:                                             ; preds = %1304, %204, %172
  call void @llvm.lifetime.end.p0(i64 4, ptr %61) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %60) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 12, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %50) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %49) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %48) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %47) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %46) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %45) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %41) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #5
  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
  ret void
}

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

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

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

declare float @slamch_(ptr noundef) #2

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

declare void @chpmv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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

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

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

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

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

attributes #0 = { nounwind uwtable "min-legal-vector-width"="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 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = !{!16, !12, i64 0}
!16 = !{!"", !12, i64 0, !12, i64 4}
!17 = !{!16, !12, i64 4}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = distinct !{!20, !14}
!21 = distinct !{!21, !14}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = distinct !{!28, !14}


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

; Function Attrs: nounwind uwtable
define dso_local void @chprfs_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr nocapture noundef readonly %7, ptr noundef %8, ptr nocapture noundef readonly %9, ptr noundef %10, ptr nocapture noundef %11, ptr noundef %12, ptr nocapture noundef %13, ptr noundef %14) local_unnamed_addr #0 {
  %16 = ptrtoint ptr %10 to i64
  %17 = ptrtoint ptr %11 to i64
  %18 = alloca i32, align 4
  %19 = alloca %struct.complex, align 8
  %20 = alloca i32, align 4
  %21 = alloca [3 x i32], align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %21) #6
  %22 = getelementptr inbounds i8, ptr %3, i64 -8
  %23 = load i32, ptr %7, align 4, !tbaa !5
  %narrow = xor i32 %23, -1
  %24 = sext i32 %narrow to i64
  %25 = getelementptr inbounds %struct.complex, ptr %6, i64 %24
  %26 = load i32, ptr %9, align 4, !tbaa !5
  %narrow479 = xor i32 %26, -1
  %27 = sext i32 %narrow479 to i64
  %28 = getelementptr inbounds %struct.complex, ptr %8, i64 %27
  %29 = getelementptr inbounds i8, ptr %10, i64 -4
  %30 = getelementptr inbounds i8, ptr %11, i64 -4
  %31 = getelementptr inbounds i8, ptr %12, i64 -8
  %32 = getelementptr inbounds i8, ptr %13, i64 -4
  store i32 0, ptr %14, align 4, !tbaa !5
  %33 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i32 %33, 0
  br i1 %.not, label %34, label %36

34:                                               ; preds = %15
  %35 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #6
  %.not480 = icmp eq i32 %35, 0
  br i1 %.not480, label %.thread.sink.split, label %36

36:                                               ; preds = %34, %15
  %37 = load i32, ptr %1, align 4, !tbaa !5
  %38 = icmp slt i32 %37, 0
  br i1 %38, label %.thread.sink.split, label %39

39:                                               ; preds = %36
  %40 = load i32, ptr %2, align 4, !tbaa !5
  %41 = icmp slt i32 %40, 0
  br i1 %41, label %.thread.sink.split, label %42

42:                                               ; preds = %39
  %43 = load i32, ptr %7, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %37, i32 1)
  %44 = icmp slt i32 %43, %spec.select
  br i1 %44, label %.thread.sink.split, label %45

45:                                               ; preds = %42
  %46 = load i32, ptr %9, align 4, !tbaa !5
  %47 = icmp slt i32 %46, %spec.select
  br i1 %47, label %.thread.sink.split, label %48

48:                                               ; preds = %45
  %.pr = load i32, ptr %14, align 4, !tbaa !5
  %.not481 = icmp eq i32 %.pr, 0
  br i1 %.not481, label %52, label %.thread

.thread.sink.split:                               ; preds = %45, %42, %39, %36, %34
  %.sink = phi i32 [ -1, %34 ], [ -2, %36 ], [ -3, %39 ], [ -8, %42 ], [ -10, %45 ]
  store i32 %.sink, ptr %14, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %48
  %49 = phi i32 [ %.pr, %48 ], [ %.sink, %.thread.sink.split ]
  %50 = sub nsw i32 0, %49
  store i32 %50, ptr %18, align 4, !tbaa !5
  %51 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %18, i32 noundef 6) #6
  br label %.loopexit

52:                                               ; preds = %48
  %53 = icmp eq i32 %37, 0
  %.not494570 = icmp eq i32 %40, 0
  br i1 %53, label %55, label %54

54:                                               ; preds = %52
  br i1 %.not494570, label %.loopexit, label %78

55:                                               ; preds = %52
  br i1 %.not494570, label %.loopexit, label %.lr.ph573.preheader

.lr.ph573.preheader:                              ; preds = %55
  %56 = add nuw i32 %40, 1
  %wide.trip.count643 = zext i32 %56 to i64
  %57 = zext nneg i32 %40 to i64
  %min.iters.check716 = icmp ult i32 %40, 8
  %58 = sub i64 %17, %16
  %diff.check = icmp ult i64 %58, 32
  %or.cond727 = or i1 %min.iters.check716, %diff.check
  br i1 %or.cond727, label %.lr.ph573.preheader728, label %vector.ph717

vector.ph717:                                     ; preds = %.lr.ph573.preheader
  %n.vec719 = and i64 %57, 2147483640
  %ind.end720 = or disjoint i64 %n.vec719, 1
  br label %vector.body722

vector.body722:                                   ; preds = %vector.body722, %vector.ph717
  %index723 = phi i64 [ 0, %vector.ph717 ], [ %index.next725, %vector.body722 ]
  %59 = getelementptr float, ptr %10, i64 %index723
  %60 = getelementptr inbounds i8, ptr %59, i64 16
  store <4 x float> zeroinitializer, ptr %59, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %60, align 4, !tbaa !9
  %61 = getelementptr float, ptr %11, i64 %index723
  %62 = getelementptr inbounds i8, ptr %61, i64 16
  store <4 x float> zeroinitializer, ptr %61, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %62, align 4, !tbaa !9
  %index.next725 = add nuw i64 %index723, 8
  %63 = icmp eq i64 %index.next725, %n.vec719
  br i1 %63, label %middle.block714, label %vector.body722, !llvm.loop !11

middle.block714:                                  ; preds = %vector.body722
  %cmp.n726 = icmp eq i64 %n.vec719, %57
  br i1 %cmp.n726, label %.loopexit, label %.lr.ph573.preheader728

.lr.ph573.preheader728:                           ; preds = %middle.block714, %.lr.ph573.preheader
  %indvars.iv640.ph = phi i64 [ 1, %.lr.ph573.preheader ], [ %ind.end720, %middle.block714 ]
  %64 = sub nsw i64 %wide.trip.count643, %indvars.iv640.ph
  %65 = zext nneg i32 %40 to i64
  %66 = sub nsw i64 %65, %indvars.iv640.ph
  %xtraiter744 = and i64 %64, 3
  %lcmp.mod745.not = icmp eq i64 %xtraiter744, 0
  br i1 %lcmp.mod745.not, label %.lr.ph573.prol.loopexit, label %.lr.ph573.prol

.lr.ph573.prol:                                   ; preds = %.lr.ph573.preheader728, %.lr.ph573.prol
  %indvars.iv640.prol = phi i64 [ %indvars.iv.next641.prol, %.lr.ph573.prol ], [ %indvars.iv640.ph, %.lr.ph573.preheader728 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph573.prol ], [ 0, %.lr.ph573.preheader728 ]
  %67 = getelementptr inbounds float, ptr %29, i64 %indvars.iv640.prol
  store float 0.000000e+00, ptr %67, align 4, !tbaa !9
  %68 = getelementptr inbounds float, ptr %30, i64 %indvars.iv640.prol
  store float 0.000000e+00, ptr %68, align 4, !tbaa !9
  %indvars.iv.next641.prol = add nuw nsw i64 %indvars.iv640.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter744
  br i1 %prol.iter.cmp.not, label %.lr.ph573.prol.loopexit, label %.lr.ph573.prol, !llvm.loop !15

.lr.ph573.prol.loopexit:                          ; preds = %.lr.ph573.prol, %.lr.ph573.preheader728
  %indvars.iv640.unr = phi i64 [ %indvars.iv640.ph, %.lr.ph573.preheader728 ], [ %indvars.iv.next641.prol, %.lr.ph573.prol ]
  %69 = icmp ult i64 %66, 3
  br i1 %69, label %.loopexit, label %.lr.ph573

.lr.ph573:                                        ; preds = %.lr.ph573.prol.loopexit, %.lr.ph573
  %indvars.iv640 = phi i64 [ %indvars.iv.next641.3, %.lr.ph573 ], [ %indvars.iv640.unr, %.lr.ph573.prol.loopexit ]
  %70 = getelementptr inbounds float, ptr %29, i64 %indvars.iv640
  store float 0.000000e+00, ptr %70, align 4, !tbaa !9
  %71 = getelementptr inbounds float, ptr %30, i64 %indvars.iv640
  store float 0.000000e+00, ptr %71, align 4, !tbaa !9
  %72 = getelementptr float, ptr %10, i64 %indvars.iv640
  store float 0.000000e+00, ptr %72, align 4, !tbaa !9
  %73 = getelementptr float, ptr %11, i64 %indvars.iv640
  store float 0.000000e+00, ptr %73, align 4, !tbaa !9
  %indvars.iv.next641.1 = add nuw nsw i64 %indvars.iv640, 2
  %74 = getelementptr inbounds float, ptr %29, i64 %indvars.iv.next641.1
  store float 0.000000e+00, ptr %74, align 4, !tbaa !9
  %75 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.next641.1
  store float 0.000000e+00, ptr %75, align 4, !tbaa !9
  %indvars.iv.next641.2 = add nuw nsw i64 %indvars.iv640, 3
  %76 = getelementptr inbounds float, ptr %29, i64 %indvars.iv.next641.2
  store float 0.000000e+00, ptr %76, align 4, !tbaa !9
  %77 = getelementptr inbounds float, ptr %30, i64 %indvars.iv.next641.2
  store float 0.000000e+00, ptr %77, align 4, !tbaa !9
  %indvars.iv.next641.3 = add nuw nsw i64 %indvars.iv640, 4
  %exitcond644.not.3 = icmp eq i64 %indvars.iv.next641.3, %wide.trip.count643
  br i1 %exitcond644.not.3, label %.loopexit, label %.lr.ph573, !llvm.loop !17

78:                                               ; preds = %54
  %79 = add nuw nsw i32 %37, 1
  %80 = tail call float @slamch_(ptr noundef nonnull @.str.3) #6
  %81 = tail call float @slamch_(ptr noundef nonnull @.str.4) #6
  %82 = uitofp nneg i32 %79 to float
  %83 = fmul float %81, %82
  %84 = fdiv float %83, %80
  %85 = load i32, ptr %2, align 4, !tbaa !5
  %invariant.gep566 = getelementptr i8, ptr %25, i64 8
  %.not482568 = icmp slt i32 %85, 1
  br i1 %.not482568, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %78
  %invariant.gep537 = getelementptr i8, ptr %28, i64 8
  %invariant.gep = getelementptr i8, ptr %3, i64 -16
  %86 = fmul float %80, %82
  %87 = sext i32 %23 to i64
  %88 = sext i32 %26 to i64
  %89 = zext nneg i32 %85 to i64
  %scevgep = getelementptr i8, ptr %12, i64 -8
  %scevgep684 = getelementptr i8, ptr %13, i64 -4
  %scevgep688 = getelementptr i8, ptr %12, i64 -8
  %scevgep690 = getelementptr i8, ptr %13, i64 -4
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge564.thread
  %indvars.iv637 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next638, %._crit_edge564.thread ]
  %90 = getelementptr inbounds float, ptr %30, i64 %indvars.iv637
  %91 = mul nsw i64 %indvars.iv637, %87
  %gep567 = getelementptr %struct.complex, ptr %invariant.gep566, i64 %91
  %92 = mul nsw i64 %indvars.iv637, %88
  %gep538 = getelementptr %struct.complex, ptr %invariant.gep537, i64 %92
  %invariant.gep659 = getelementptr %struct.complex, ptr %25, i64 %91
  %invariant.gep663 = getelementptr %struct.complex, ptr %28, i64 %92
  %invariant.gep661 = getelementptr %struct.complex, ptr %28, i64 %92
  %invariant.gep667 = getelementptr %struct.complex, ptr %28, i64 %92
  %invariant.gep665 = getelementptr %struct.complex, ptr %28, i64 %92
  br label %93

93:                                               ; preds = %.preheader, %255
  %.0465 = phi i32 [ %257, %255 ], [ 1, %.preheader ]
  %.0 = phi float [ %256, %255 ], [ 3.000000e+00, %.preheader ]
  call void @ccopy_(ptr noundef nonnull %1, ptr noundef %gep567, ptr noundef nonnull @c__1, ptr noundef %12, ptr noundef nonnull @c__1) #6
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %19, align 8, !tbaa !9
  call void @chpmv_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %19, ptr noundef %3, ptr noundef %gep538, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %12, ptr noundef nonnull @c__1) #6
  %94 = load i32, ptr %1, align 4, !tbaa !5
  %.not483503 = icmp slt i32 %94, 1
  br i1 %.not483503, label %._crit_edge, label %.lr.ph.preheader

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

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv = phi i64 [ 1, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %gep660 = getelementptr %struct.complex, ptr %invariant.gep659, i64 %indvars.iv
  %96 = load float, ptr %gep660, align 4, !tbaa !18
  %97 = fcmp oge float %96, 0.000000e+00
  %98 = fneg float %96
  %99 = select i1 %97, float %96, float %98
  %100 = call <2 x float> @Cf(ptr noundef nonnull %gep660)
  %.sroa.014.4.vec.extract = extractelement <2 x float> %100, i64 1
  %101 = fcmp oge float %.sroa.014.4.vec.extract, 0.000000e+00
  %102 = fneg float %.sroa.014.4.vec.extract
  %103 = select i1 %101, float %.sroa.014.4.vec.extract, float %102
  %104 = fadd float %99, %103
  %105 = getelementptr inbounds float, ptr %32, i64 %indvars.iv
  store float %104, ptr %105, align 4, !tbaa !9
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %._crit_edge, label %.lr.ph, !llvm.loop !20

._crit_edge:                                      ; preds = %.lr.ph, %93
  %106 = load i32, ptr %1, align 4, !tbaa !5
  %.not484525 = icmp slt i32 %106, 1
  br i1 %.not, label %162, label %107

107:                                              ; preds = %._crit_edge
  br i1 %.not484525, label %._crit_edge535, label %.lr.ph516.preheader

.lr.ph516.preheader:                              ; preds = %107
  %108 = add nuw i32 %106, 1
  %wide.trip.count595 = zext i32 %108 to i64
  br label %.lr.ph516

.lr.ph516:                                        ; preds = %.lr.ph516.preheader, %._crit_edge511
  %indvars.iv592 = phi i64 [ 1, %.lr.ph516.preheader ], [ %indvars.iv.next593, %._crit_edge511 ]
  %.0459514 = phi i32 [ 1, %.lr.ph516.preheader ], [ %152, %._crit_edge511 ]
  %gep664 = getelementptr %struct.complex, ptr %invariant.gep663, i64 %indvars.iv592
  %109 = load float, ptr %gep664, align 4, !tbaa !18
  %110 = fcmp oge float %109, 0.000000e+00
  %111 = fneg float %109
  %112 = select i1 %110, float %109, float %111
  %113 = call <2 x float> @Cf(ptr noundef nonnull %gep664)
  %.sroa.013.4.vec.extract = extractelement <2 x float> %113, i64 1
  %114 = fcmp oge float %.sroa.013.4.vec.extract, 0.000000e+00
  %115 = fneg float %.sroa.013.4.vec.extract
  %116 = select i1 %114, float %.sroa.013.4.vec.extract, float %115
  %117 = fadd float %112, %116
  %.not493.not505 = icmp ugt i64 %indvars.iv592, 1
  br i1 %.not493.not505, label %.lr.ph510.preheader, label %._crit_edge511

.lr.ph510.preheader:                              ; preds = %.lr.ph516
  %118 = zext i32 %.0459514 to i64
  br label %.lr.ph510

.lr.ph510:                                        ; preds = %.lr.ph510.preheader, %.lr.ph510
  %indvars.iv585 = phi i64 [ 1, %.lr.ph510.preheader ], [ %indvars.iv.next586, %.lr.ph510 ]
  %indvars.iv583 = phi i64 [ %118, %.lr.ph510.preheader ], [ %indvars.iv.next584, %.lr.ph510 ]
  %.0466506 = phi float [ 0.000000e+00, %.lr.ph510.preheader ], [ %150, %.lr.ph510 ]
  %119 = getelementptr inbounds %struct.complex, ptr %22, i64 %indvars.iv583
  %120 = load float, ptr %119, align 4, !tbaa !18
  %121 = fcmp oge float %120, 0.000000e+00
  %122 = fneg float %120
  %123 = select i1 %121, float %120, float %122
  %124 = call <2 x float> @Cf(ptr noundef nonnull %119)
  %.sroa.012.4.vec.extract = extractelement <2 x float> %124, i64 1
  %125 = fcmp oge float %.sroa.012.4.vec.extract, 0.000000e+00
  %126 = fneg float %.sroa.012.4.vec.extract
  %127 = select i1 %125, float %.sroa.012.4.vec.extract, float %126
  %128 = fadd float %123, %127
  %129 = getelementptr inbounds float, ptr %32, i64 %indvars.iv585
  %130 = load float, ptr %129, align 4, !tbaa !9
  %131 = call float @llvm.fmuladd.f32(float %128, float %117, float %130)
  store float %131, ptr %129, align 4, !tbaa !9
  %132 = load float, ptr %119, align 4, !tbaa !18
  %133 = fcmp oge float %132, 0.000000e+00
  %134 = fneg float %132
  %135 = select i1 %133, float %132, float %134
  %136 = call <2 x float> @Cf(ptr noundef nonnull %119)
  %.sroa.011.4.vec.extract = extractelement <2 x float> %136, i64 1
  %137 = fcmp oge float %.sroa.011.4.vec.extract, 0.000000e+00
  %138 = fneg float %.sroa.011.4.vec.extract
  %139 = select i1 %137, float %.sroa.011.4.vec.extract, float %138
  %140 = fadd float %135, %139
  %gep662 = getelementptr %struct.complex, ptr %invariant.gep661, i64 %indvars.iv585
  %141 = load float, ptr %gep662, align 4, !tbaa !18
  %142 = fcmp oge float %141, 0.000000e+00
  %143 = fneg float %141
  %144 = select i1 %142, float %141, float %143
  %145 = call <2 x float> @Cf(ptr noundef nonnull %gep662)
  %.sroa.010.4.vec.extract = extractelement <2 x float> %145, i64 1
  %146 = fcmp oge float %.sroa.010.4.vec.extract, 0.000000e+00
  %147 = fneg float %.sroa.010.4.vec.extract
  %148 = select i1 %146, float %.sroa.010.4.vec.extract, float %147
  %149 = fadd float %144, %148
  %150 = call float @llvm.fmuladd.f32(float %140, float %149, float %.0466506)
  %indvars.iv.next584 = add nuw nsw i64 %indvars.iv583, 1
  %indvars.iv.next586 = add nuw nsw i64 %indvars.iv585, 1
  %exitcond591.not = icmp eq i64 %indvars.iv.next586, %indvars.iv592
  br i1 %exitcond591.not, label %._crit_edge511, label %.lr.ph510, !llvm.loop !21

._crit_edge511:                                   ; preds = %.lr.ph510, %.lr.ph516
  %.0466.lcssa = phi float [ 0.000000e+00, %.lr.ph516 ], [ %150, %.lr.ph510 ]
  %151 = trunc nuw nsw i64 %indvars.iv592 to i32
  %152 = add nuw nsw i32 %.0459514, %151
  %153 = getelementptr inbounds float, ptr %32, i64 %indvars.iv592
  %154 = load float, ptr %153, align 4, !tbaa !9
  %155 = zext nneg i32 %152 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %155
  %156 = load float, ptr %gep, align 4, !tbaa !18
  %157 = fcmp oge float %156, 0.000000e+00
  %158 = fneg float %156
  %159 = select i1 %157, float %156, float %158
  %160 = call float @llvm.fmuladd.f32(float %159, float %117, float %154)
  %161 = fadd float %.0466.lcssa, %160
  store float %161, ptr %153, align 4, !tbaa !9
  %indvars.iv.next593 = add nuw nsw i64 %indvars.iv592, 1
  %exitcond596.not = icmp eq i64 %indvars.iv.next593, %wide.trip.count595
  br i1 %exitcond596.not, label %.loopexit498.loopexit574, label %.lr.ph516, !llvm.loop !22

162:                                              ; preds = %._crit_edge
  br i1 %.not484525, label %._crit_edge535, label %.lr.ph529.preheader

.lr.ph529.preheader:                              ; preds = %162
  %163 = add nuw i32 %106, 1
  %wide.trip.count610 = zext i32 %163 to i64
  br label %.lr.ph529

.lr.ph529:                                        ; preds = %.lr.ph529.preheader, %._crit_edge523
  %indvars.iv607 = phi i64 [ 1, %.lr.ph529.preheader ], [ %indvars.iv.next608, %._crit_edge523 ]
  %indvars.iv599 = phi i32 [ 2, %.lr.ph529.preheader ], [ %indvars.iv.next600, %._crit_edge523 ]
  %.1460527 = phi i32 [ 1, %.lr.ph529.preheader ], [ %223, %._crit_edge523 ]
  %gep668 = getelementptr %struct.complex, ptr %invariant.gep667, i64 %indvars.iv607
  %164 = load float, ptr %gep668, align 4, !tbaa !18
  %165 = fcmp oge float %164, 0.000000e+00
  %166 = fneg float %164
  %167 = select i1 %165, float %164, float %166
  %168 = call <2 x float> @Cf(ptr noundef nonnull %gep668)
  %.sroa.09.4.vec.extract = extractelement <2 x float> %168, i64 1
  %169 = fcmp oge float %.sroa.09.4.vec.extract, 0.000000e+00
  %170 = fneg float %.sroa.09.4.vec.extract
  %171 = select i1 %169, float %.sroa.09.4.vec.extract, float %170
  %172 = fadd float %167, %171
  %173 = sext i32 %.1460527 to i64
  %174 = getelementptr inbounds %struct.complex, ptr %22, i64 %173
  %175 = load float, ptr %174, align 4, !tbaa !18
  %176 = fcmp oge float %175, 0.000000e+00
  %177 = fneg float %175
  %178 = select i1 %176, float %175, float %177
  %179 = getelementptr inbounds float, ptr %32, i64 %indvars.iv607
  %180 = load float, ptr %179, align 4, !tbaa !9
  %181 = call float @llvm.fmuladd.f32(float %178, float %172, float %180)
  store float %181, ptr %179, align 4, !tbaa !9
  %182 = load i32, ptr %1, align 4, !tbaa !5
  %indvars.iv.next608 = add nuw nsw i64 %indvars.iv607, 1
  %183 = sext i32 %182 to i64
  %.not485517.not = icmp slt i64 %indvars.iv607, %183
  br i1 %.not485517.not, label %.lr.ph522.preheader, label %._crit_edge523

.lr.ph522.preheader:                              ; preds = %.lr.ph529
  %184 = sext i32 %indvars.iv599 to i64
  %185 = add i32 %182, 1
  br label %.lr.ph522

.lr.ph522:                                        ; preds = %.lr.ph522.preheader, %.lr.ph522
  %indvars.iv601 = phi i64 [ %184, %.lr.ph522.preheader ], [ %indvars.iv.next602, %.lr.ph522 ]
  %indvars.iv597 = phi i64 [ %173, %.lr.ph522.preheader ], [ %indvars.iv.next598, %.lr.ph522 ]
  %.1467518 = phi float [ 0.000000e+00, %.lr.ph522.preheader ], [ %217, %.lr.ph522 ]
  %indvars.iv.next598 = add nsw i64 %indvars.iv597, 1
  %186 = getelementptr %struct.complex, ptr %3, i64 %indvars.iv597
  %187 = load float, ptr %186, align 4, !tbaa !18
  %188 = fcmp oge float %187, 0.000000e+00
  %189 = fneg float %187
  %190 = select i1 %188, float %187, float %189
  %191 = call <2 x float> @Cf(ptr noundef nonnull %186)
  %.sroa.08.4.vec.extract = extractelement <2 x float> %191, i64 1
  %192 = fcmp oge float %.sroa.08.4.vec.extract, 0.000000e+00
  %193 = fneg float %.sroa.08.4.vec.extract
  %194 = select i1 %192, float %.sroa.08.4.vec.extract, float %193
  %195 = fadd float %190, %194
  %196 = getelementptr inbounds float, ptr %32, i64 %indvars.iv601
  %197 = load float, ptr %196, align 4, !tbaa !9
  %198 = call float @llvm.fmuladd.f32(float %195, float %172, float %197)
  store float %198, ptr %196, align 4, !tbaa !9
  %199 = load float, ptr %186, align 4, !tbaa !18
  %200 = fcmp oge float %199, 0.000000e+00
  %201 = fneg float %199
  %202 = select i1 %200, float %199, float %201
  %203 = call <2 x float> @Cf(ptr noundef nonnull %186)
  %.sroa.07.4.vec.extract = extractelement <2 x float> %203, i64 1
  %204 = fcmp oge float %.sroa.07.4.vec.extract, 0.000000e+00
  %205 = fneg float %.sroa.07.4.vec.extract
  %206 = select i1 %204, float %.sroa.07.4.vec.extract, float %205
  %207 = fadd float %202, %206
  %gep666 = getelementptr %struct.complex, ptr %invariant.gep665, i64 %indvars.iv601
  %208 = load float, ptr %gep666, align 4, !tbaa !18
  %209 = fcmp oge float %208, 0.000000e+00
  %210 = fneg float %208
  %211 = select i1 %209, float %208, float %210
  %212 = call <2 x float> @Cf(ptr noundef nonnull %gep666)
  %.sroa.06.4.vec.extract = extractelement <2 x float> %212, i64 1
  %213 = fcmp oge float %.sroa.06.4.vec.extract, 0.000000e+00
  %214 = fneg float %.sroa.06.4.vec.extract
  %215 = select i1 %213, float %.sroa.06.4.vec.extract, float %214
  %216 = fadd float %211, %215
  %217 = call float @llvm.fmuladd.f32(float %207, float %216, float %.1467518)
  %indvars.iv.next602 = add nsw i64 %indvars.iv601, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next602 to i32
  %exitcond606.not = icmp eq i32 %185, %lftr.wideiv
  br i1 %exitcond606.not, label %._crit_edge523.loopexit, label %.lr.ph522, !llvm.loop !23

._crit_edge523.loopexit:                          ; preds = %.lr.ph522
  %.pre = load float, ptr %179, align 4, !tbaa !9
  %.pre645 = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge523

._crit_edge523:                                   ; preds = %._crit_edge523.loopexit, %.lr.ph529
  %218 = phi i32 [ %182, %.lr.ph529 ], [ %.pre645, %._crit_edge523.loopexit ]
  %219 = phi float [ %181, %.lr.ph529 ], [ %.pre, %._crit_edge523.loopexit ]
  %.1467.lcssa = phi float [ 0.000000e+00, %.lr.ph529 ], [ %217, %._crit_edge523.loopexit ]
  %220 = fadd float %.1467.lcssa, %219
  store float %220, ptr %179, align 4, !tbaa !9
  %221 = trunc nuw nsw i64 %indvars.iv607 to i32
  %reass.sub = sub i32 %.1460527, %221
  %222 = add i32 %reass.sub, 1
  %223 = add i32 %222, %218
  %indvars.iv.next600 = add nuw i32 %indvars.iv599, 1
  %exitcond611.not = icmp eq i64 %indvars.iv.next608, %wide.trip.count610
  br i1 %exitcond611.not, label %.loopexit498, label %.lr.ph529, !llvm.loop !24

.loopexit498.loopexit574:                         ; preds = %._crit_edge511
  %.pre646 = load i32, ptr %1, align 4, !tbaa !5
  br label %.loopexit498

.loopexit498:                                     ; preds = %._crit_edge523, %.loopexit498.loopexit574
  %224 = phi i32 [ %.pre646, %.loopexit498.loopexit574 ], [ %218, %._crit_edge523 ]
  %.not487530 = icmp slt i32 %224, 1
  br i1 %.not487530, label %._crit_edge535, label %.lr.ph534.preheader

.lr.ph534.preheader:                              ; preds = %.loopexit498
  %225 = add nuw i32 %224, 1
  %wide.trip.count615 = zext i32 %225 to i64
  br label %.lr.ph534

.lr.ph534:                                        ; preds = %.lr.ph534.preheader, %247
  %indvars.iv612 = phi i64 [ 1, %.lr.ph534.preheader ], [ %indvars.iv.next613, %247 ]
  %.2468531 = phi float [ 0.000000e+00, %.lr.ph534.preheader ], [ %249, %247 ]
  %226 = getelementptr inbounds float, ptr %32, i64 %indvars.iv612
  %227 = load float, ptr %226, align 4, !tbaa !9
  %228 = fcmp ogt float %227, %84
  %229 = getelementptr inbounds %struct.complex, ptr %31, i64 %indvars.iv612
  %230 = load float, ptr %229, align 4, !tbaa !18
  %231 = fcmp oge float %230, 0.000000e+00
  %232 = fneg float %230
  %233 = select i1 %231, float %230, float %232
  %234 = call <2 x float> @Cf(ptr noundef nonnull %229)
  %.sroa.05.4.vec.extract = extractelement <2 x float> %234, i64 1
  %235 = fcmp oge float %.sroa.05.4.vec.extract, 0.000000e+00
  %236 = fneg float %.sroa.05.4.vec.extract
  %237 = select i1 %235, float %.sroa.05.4.vec.extract, float %236
  %238 = fadd float %233, %237
  br i1 %228, label %239, label %242

239:                                              ; preds = %.lr.ph534
  %240 = load float, ptr %226, align 4, !tbaa !9
  %241 = fdiv float %238, %240
  br label %247

242:                                              ; preds = %.lr.ph534
  %243 = fadd float %83, %238
  %244 = load float, ptr %226, align 4, !tbaa !9
  %245 = fadd float %83, %244
  %246 = fdiv float %243, %245
  br label %247

247:                                              ; preds = %239, %242
  %.sink673 = phi float [ %241, %239 ], [ %246, %242 ]
  %248 = fcmp oge float %.2468531, %.sink673
  %249 = select i1 %248, float %.2468531, float %.sink673
  %indvars.iv.next613 = add nuw nsw i64 %indvars.iv612, 1
  %exitcond616.not = icmp eq i64 %indvars.iv.next613, %wide.trip.count615
  br i1 %exitcond616.not, label %._crit_edge535, label %.lr.ph534, !llvm.loop !25

._crit_edge535:                                   ; preds = %247, %162, %107, %.loopexit498
  %.2468.lcssa = phi float [ 0.000000e+00, %.loopexit498 ], [ 0.000000e+00, %107 ], [ 0.000000e+00, %162 ], [ %249, %247 ]
  store float %.2468.lcssa, ptr %90, align 4, !tbaa !9
  %250 = fcmp ogt float %.2468.lcssa, %80
  br i1 %250, label %251, label %258

251:                                              ; preds = %._crit_edge535
  %252 = fmul float %.2468.lcssa, 2.000000e+00
  %253 = fcmp ole float %252, %.0
  %254 = icmp ult i32 %.0465, 6
  %or.cond = select i1 %253, i1 %254, i1 false
  br i1 %or.cond, label %255, label %258

255:                                              ; preds = %251
  call void @chptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %12, ptr noundef nonnull %1, ptr noundef nonnull %14) #6
  call void @caxpy_(ptr noundef nonnull %1, ptr noundef nonnull @c_b1, ptr noundef %12, ptr noundef nonnull @c__1, ptr noundef %gep538, ptr noundef nonnull @c__1) #6
  %256 = load float, ptr %90, align 4, !tbaa !9
  %257 = add nuw nsw i32 %.0465, 1
  br label %93

258:                                              ; preds = %251, %._crit_edge535
  %259 = load i32, ptr %1, align 4, !tbaa !5
  %.not488539 = icmp slt i32 %259, 1
  br i1 %.not488539, label %._crit_edge543, label %.lr.ph542.preheader

.lr.ph542.preheader:                              ; preds = %258
  %260 = add nuw i32 %259, 1
  %wide.trip.count620 = zext i32 %260 to i64
  br label %.lr.ph542

.lr.ph542:                                        ; preds = %.lr.ph542.preheader, %.lr.ph542
  %indvars.iv617 = phi i64 [ 1, %.lr.ph542.preheader ], [ %indvars.iv.next618, %.lr.ph542 ]
  %261 = getelementptr inbounds float, ptr %32, i64 %indvars.iv617
  %262 = load float, ptr %261, align 4, !tbaa !9
  %263 = fcmp ogt float %262, %84
  %264 = getelementptr inbounds %struct.complex, ptr %31, i64 %indvars.iv617
  %265 = load float, ptr %264, align 4, !tbaa !18
  %266 = fcmp oge float %265, 0.000000e+00
  %267 = fneg float %265
  %268 = select i1 %266, float %265, float %267
  %269 = call <2 x float> @Cf(ptr noundef nonnull %264)
  %.sroa.03.4.vec.extract = extractelement <2 x float> %269, i64 1
  %270 = fcmp oge float %.sroa.03.4.vec.extract, 0.000000e+00
  %271 = fneg float %.sroa.03.4.vec.extract
  %272 = select i1 %270, float %.sroa.03.4.vec.extract, float %271
  %273 = fadd float %268, %272
  %274 = load float, ptr %261, align 4, !tbaa !9
  %275 = call float @llvm.fmuladd.f32(float %86, float %274, float %273)
  %276 = fadd float %83, %275
  %storemerge = select i1 %263, float %275, float %276
  store float %storemerge, ptr %261, align 4, !tbaa !9
  %indvars.iv.next618 = add nuw nsw i64 %indvars.iv617, 1
  %exitcond621.not = icmp eq i64 %indvars.iv.next618, %wide.trip.count620
  br i1 %exitcond621.not, label %._crit_edge543, label %.lr.ph542, !llvm.loop !26

._crit_edge543:                                   ; preds = %.lr.ph542, %258
  store i32 0, ptr %20, align 4, !tbaa !5
  %277 = getelementptr inbounds float, ptr %29, i64 %indvars.iv637
  br label %.loopexit497

.loopexit497:                                     ; preds = %.loopexit497.backedge, %._crit_edge543
  %278 = load i32, ptr %1, align 4, !tbaa !5
  %279 = sext i32 %278 to i64
  %gep558 = getelementptr %struct.complex, ptr %12, i64 %279
  call void @clacn2_(ptr noundef nonnull %1, ptr noundef %gep558, ptr noundef %12, ptr noundef nonnull %277, ptr noundef nonnull %20, ptr noundef nonnull %21) #6
  %280 = load i32, ptr %20, align 4, !tbaa !5
  switch i32 %280, label %.loopexit497.backedge [
    i32 0, label %356
    i32 1, label %281
    i32 2, label %317
  ]

281:                                              ; preds = %.loopexit497
  call void @chptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %12, ptr noundef nonnull %1, ptr noundef nonnull %14) #6
  %282 = load i32, ptr %1, align 4, !tbaa !5
  %.not492551 = icmp slt i32 %282, 1
  br i1 %.not492551, label %.loopexit497.backedge, label %.lr.ph554.preheader

.loopexit497.backedge:                            ; preds = %281, %..loopexit497_crit_edge, %.loopexit497, %354
  br label %.loopexit497

.lr.ph554.preheader:                              ; preds = %281
  %283 = add nuw i32 %282, 1
  %wide.trip.count630 = zext i32 %283 to i64
  %284 = zext nneg i32 %282 to i64
  %min.iters.check = icmp eq i32 %282, 1
  br i1 %min.iters.check, label %.lr.ph554.preheader729, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph554.preheader
  %285 = shl nuw nsw i64 %wide.trip.count630, 3
  %scevgep683 = getelementptr i8, ptr %scevgep, i64 %285
  %286 = shl nuw nsw i64 %wide.trip.count630, 2
  %scevgep685 = getelementptr i8, ptr %scevgep684, i64 %286
  %bound0 = icmp ugt ptr %scevgep685, %12
  %bound1 = icmp ugt ptr %scevgep683, %13
  %found.conflict = and i1 %bound0, %bound1
  br i1 %found.conflict, label %.lr.ph554.preheader729, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %284, 2147483646
  %ind.end = or i64 %284, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %287 = getelementptr float, ptr %13, i64 %index
  %wide.load = load <2 x float>, ptr %287, align 4, !tbaa !9, !alias.scope !27
  %288 = getelementptr %struct.complex, ptr %12, i64 %index
  %wide.vec = load <4 x float>, ptr %288, align 4, !tbaa !9
  %strided.vec = shufflevector <4 x float> %wide.vec, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec686 = shufflevector <4 x float> %wide.vec, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %289 = fmul <2 x float> %wide.load, %strided.vec
  %290 = fmul <2 x float> %wide.load, %strided.vec686
  %interleaved.vec = shufflevector <2 x float> %289, <2 x float> %290, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec, ptr %288, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 2
  %291 = icmp eq i64 %index.next, %n.vec
  br i1 %291, label %middle.block, label %vector.body, !llvm.loop !30

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %284
  %292 = shufflevector <2 x float> %289, <2 x float> %290, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %..loopexit497_crit_edge, label %.lr.ph554.preheader729

.lr.ph554.preheader729:                           ; preds = %middle.block, %vector.memcheck, %.lr.ph554.preheader
  %indvars.iv627.ph = phi i64 [ 1, %vector.memcheck ], [ 1, %.lr.ph554.preheader ], [ %ind.end, %middle.block ]
  %293 = zext nneg i32 %282 to i64
  %294 = and i32 %282, 1
  %lcmp.mod743.not = icmp eq i32 %294, 0
  br i1 %lcmp.mod743.not, label %.lr.ph554.prol.loopexit, label %.lr.ph554.prol

.lr.ph554.prol:                                   ; preds = %.lr.ph554.preheader729
  %295 = getelementptr inbounds float, ptr %32, i64 %indvars.iv627.ph
  %296 = load float, ptr %295, align 4, !tbaa !9
  %297 = getelementptr inbounds %struct.complex, ptr %31, i64 %indvars.iv627.ph
  %298 = load <2 x float>, ptr %297, align 4, !tbaa !9
  %299 = insertelement <2 x float> poison, float %296, i64 0
  %300 = shufflevector <2 x float> %299, <2 x float> poison, <2 x i32> zeroinitializer
  %301 = fmul <2 x float> %300, %298
  store <2 x float> %301, ptr %297, align 4, !tbaa !9
  %indvars.iv.next628.prol = add nuw nsw i64 %indvars.iv627.ph, 1
  br label %.lr.ph554.prol.loopexit

.lr.ph554.prol.loopexit:                          ; preds = %.lr.ph554.prol, %.lr.ph554.preheader729
  %.lcssa740.unr = phi <2 x float> [ poison, %.lr.ph554.preheader729 ], [ %301, %.lr.ph554.prol ]
  %indvars.iv627.unr = phi i64 [ %indvars.iv627.ph, %.lr.ph554.preheader729 ], [ %indvars.iv.next628.prol, %.lr.ph554.prol ]
  %302 = icmp eq i64 %indvars.iv627.ph, %293
  br i1 %302, label %..loopexit497_crit_edge, label %.lr.ph554

.lr.ph554:                                        ; preds = %.lr.ph554.prol.loopexit, %.lr.ph554
  %indvars.iv627 = phi i64 [ %indvars.iv.next628.1, %.lr.ph554 ], [ %indvars.iv627.unr, %.lr.ph554.prol.loopexit ]
  %303 = getelementptr inbounds float, ptr %32, i64 %indvars.iv627
  %304 = load float, ptr %303, align 4, !tbaa !9
  %305 = getelementptr inbounds %struct.complex, ptr %31, i64 %indvars.iv627
  %306 = load <2 x float>, ptr %305, align 4, !tbaa !9
  %307 = insertelement <2 x float> poison, float %304, i64 0
  %308 = shufflevector <2 x float> %307, <2 x float> poison, <2 x i32> zeroinitializer
  %309 = fmul <2 x float> %308, %306
  store <2 x float> %309, ptr %305, align 4, !tbaa !9
  %310 = getelementptr float, ptr %13, i64 %indvars.iv627
  %311 = load float, ptr %310, align 4, !tbaa !9
  %312 = getelementptr %struct.complex, ptr %12, i64 %indvars.iv627
  %313 = load <2 x float>, ptr %312, align 4, !tbaa !9
  %314 = insertelement <2 x float> poison, float %311, i64 0
  %315 = shufflevector <2 x float> %314, <2 x float> poison, <2 x i32> zeroinitializer
  %316 = fmul <2 x float> %315, %313
  store <2 x float> %316, ptr %312, align 4, !tbaa !9
  %indvars.iv.next628.1 = add nuw nsw i64 %indvars.iv627, 2
  %exitcond631.not.1 = icmp eq i64 %indvars.iv.next628.1, %wide.trip.count630
  br i1 %exitcond631.not.1, label %..loopexit497_crit_edge, label %.lr.ph554, !llvm.loop !31

317:                                              ; preds = %.loopexit497
  %318 = load i32, ptr %1, align 4, !tbaa !5
  %.not491544 = icmp slt i32 %318, 1
  br i1 %.not491544, label %354, label %.lr.ph547.preheader

.lr.ph547.preheader:                              ; preds = %317
  %319 = add nuw i32 %318, 1
  %wide.trip.count625 = zext i32 %319 to i64
  %320 = zext nneg i32 %318 to i64
  %min.iters.check697 = icmp eq i32 %318, 1
  br i1 %min.iters.check697, label %.lr.ph547.preheader730, label %vector.memcheck687

vector.memcheck687:                               ; preds = %.lr.ph547.preheader
  %321 = shl nuw nsw i64 %wide.trip.count625, 3
  %scevgep689 = getelementptr i8, ptr %scevgep688, i64 %321
  %322 = shl nuw nsw i64 %wide.trip.count625, 2
  %scevgep691 = getelementptr i8, ptr %scevgep690, i64 %322
  %bound0692 = icmp ugt ptr %scevgep691, %12
  %bound1693 = icmp ugt ptr %scevgep689, %13
  %found.conflict694 = and i1 %bound0692, %bound1693
  br i1 %found.conflict694, label %.lr.ph547.preheader730, label %vector.ph698

vector.ph698:                                     ; preds = %vector.memcheck687
  %n.vec700 = and i64 %320, 2147483646
  %ind.end701 = or i64 %320, 1
  br label %vector.body703

vector.body703:                                   ; preds = %vector.body703, %vector.ph698
  %index704 = phi i64 [ 0, %vector.ph698 ], [ %index.next711, %vector.body703 ]
  %323 = getelementptr float, ptr %13, i64 %index704
  %wide.load706 = load <2 x float>, ptr %323, align 4, !tbaa !9, !alias.scope !32
  %324 = getelementptr %struct.complex, ptr %12, i64 %index704
  %wide.vec707 = load <4 x float>, ptr %324, align 4, !tbaa !9
  %strided.vec708 = shufflevector <4 x float> %wide.vec707, <4 x float> poison, <2 x i32> <i32 0, i32 2>
  %strided.vec709 = shufflevector <4 x float> %wide.vec707, <4 x float> poison, <2 x i32> <i32 1, i32 3>
  %325 = fmul <2 x float> %wide.load706, %strided.vec708
  %326 = fmul <2 x float> %wide.load706, %strided.vec709
  %interleaved.vec710 = shufflevector <2 x float> %325, <2 x float> %326, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x float> %interleaved.vec710, ptr %324, align 4, !tbaa !9
  %index.next711 = add nuw i64 %index704, 2
  %327 = icmp eq i64 %index.next711, %n.vec700
  br i1 %327, label %middle.block695, label %vector.body703, !llvm.loop !35

middle.block695:                                  ; preds = %vector.body703
  %cmp.n712 = icmp eq i64 %n.vec700, %320
  %328 = shufflevector <2 x float> %325, <2 x float> %326, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n712, label %._crit_edge548, label %.lr.ph547.preheader730

.lr.ph547.preheader730:                           ; preds = %middle.block695, %vector.memcheck687, %.lr.ph547.preheader
  %indvars.iv622.ph = phi i64 [ 1, %vector.memcheck687 ], [ 1, %.lr.ph547.preheader ], [ %ind.end701, %middle.block695 ]
  %329 = zext nneg i32 %318 to i64
  %330 = and i32 %318, 1
  %lcmp.mod.not = icmp eq i32 %330, 0
  br i1 %lcmp.mod.not, label %.lr.ph547.prol.loopexit, label %.lr.ph547.prol

.lr.ph547.prol:                                   ; preds = %.lr.ph547.preheader730
  %331 = getelementptr inbounds float, ptr %32, i64 %indvars.iv622.ph
  %332 = load float, ptr %331, align 4, !tbaa !9
  %333 = getelementptr inbounds %struct.complex, ptr %31, i64 %indvars.iv622.ph
  %334 = load <2 x float>, ptr %333, align 4, !tbaa !9
  %335 = insertelement <2 x float> poison, float %332, i64 0
  %336 = shufflevector <2 x float> %335, <2 x float> poison, <2 x i32> zeroinitializer
  %337 = fmul <2 x float> %336, %334
  store <2 x float> %337, ptr %333, align 4, !tbaa !9
  %indvars.iv.next623.prol = add nuw nsw i64 %indvars.iv622.ph, 1
  br label %.lr.ph547.prol.loopexit

.lr.ph547.prol.loopexit:                          ; preds = %.lr.ph547.prol, %.lr.ph547.preheader730
  %.lcssa737.unr = phi <2 x float> [ poison, %.lr.ph547.preheader730 ], [ %337, %.lr.ph547.prol ]
  %indvars.iv622.unr = phi i64 [ %indvars.iv622.ph, %.lr.ph547.preheader730 ], [ %indvars.iv.next623.prol, %.lr.ph547.prol ]
  %338 = icmp eq i64 %indvars.iv622.ph, %329
  br i1 %338, label %._crit_edge548, label %.lr.ph547

.lr.ph547:                                        ; preds = %.lr.ph547.prol.loopexit, %.lr.ph547
  %indvars.iv622 = phi i64 [ %indvars.iv.next623.1, %.lr.ph547 ], [ %indvars.iv622.unr, %.lr.ph547.prol.loopexit ]
  %339 = getelementptr inbounds float, ptr %32, i64 %indvars.iv622
  %340 = load float, ptr %339, align 4, !tbaa !9
  %341 = getelementptr inbounds %struct.complex, ptr %31, i64 %indvars.iv622
  %342 = load <2 x float>, ptr %341, align 4, !tbaa !9
  %343 = insertelement <2 x float> poison, float %340, i64 0
  %344 = shufflevector <2 x float> %343, <2 x float> poison, <2 x i32> zeroinitializer
  %345 = fmul <2 x float> %344, %342
  store <2 x float> %345, ptr %341, align 4, !tbaa !9
  %346 = getelementptr float, ptr %13, i64 %indvars.iv622
  %347 = load float, ptr %346, align 4, !tbaa !9
  %348 = getelementptr %struct.complex, ptr %12, i64 %indvars.iv622
  %349 = load <2 x float>, ptr %348, align 4, !tbaa !9
  %350 = insertelement <2 x float> poison, float %347, i64 0
  %351 = shufflevector <2 x float> %350, <2 x float> poison, <2 x i32> zeroinitializer
  %352 = fmul <2 x float> %351, %349
  store <2 x float> %352, ptr %348, align 4, !tbaa !9
  %indvars.iv.next623.1 = add nuw nsw i64 %indvars.iv622, 2
  %exitcond626.not.1 = icmp eq i64 %indvars.iv.next623.1, %wide.trip.count625
  br i1 %exitcond626.not.1, label %._crit_edge548, label %.lr.ph547, !llvm.loop !36

._crit_edge548:                                   ; preds = %.lr.ph547.prol.loopexit, %.lr.ph547, %middle.block695
  %353 = phi <2 x float> [ %328, %middle.block695 ], [ %.lcssa737.unr, %.lr.ph547.prol.loopexit ], [ %352, %.lr.ph547 ]
  store <2 x float> %353, ptr %19, align 8, !tbaa !9
  br label %354

354:                                              ; preds = %._crit_edge548, %317
  call void @chptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %5, ptr noundef %12, ptr noundef nonnull %1, ptr noundef nonnull %14) #6
  br label %.loopexit497.backedge

..loopexit497_crit_edge:                          ; preds = %.lr.ph554.prol.loopexit, %.lr.ph554, %middle.block
  %355 = phi <2 x float> [ %292, %middle.block ], [ %.lcssa740.unr, %.lr.ph554.prol.loopexit ], [ %316, %.lr.ph554 ]
  store <2 x float> %355, ptr %19, align 8, !tbaa !9
  br label %.loopexit497.backedge

356:                                              ; preds = %.loopexit497
  %357 = load i32, ptr %1, align 4, !tbaa !5
  %.not490559 = icmp slt i32 %357, 1
  br i1 %.not490559, label %._crit_edge564.thread, label %.lr.ph563.preheader

.lr.ph563.preheader:                              ; preds = %356
  %358 = add nuw i32 %357, 1
  %wide.trip.count635 = zext i32 %358 to i64
  %invariant.gep669 = getelementptr %struct.complex, ptr %28, i64 %92
  br label %.lr.ph563

.lr.ph563:                                        ; preds = %.lr.ph563.preheader, %.lr.ph563
  %indvars.iv632 = phi i64 [ 1, %.lr.ph563.preheader ], [ %indvars.iv.next633, %.lr.ph563 ]
  %.1561 = phi float [ 0.000000e+00, %.lr.ph563.preheader ], [ %369, %.lr.ph563 ]
  %gep670 = getelementptr %struct.complex, ptr %invariant.gep669, i64 %indvars.iv632
  %359 = load float, ptr %gep670, align 4, !tbaa !18
  %360 = fcmp oge float %359, 0.000000e+00
  %361 = fneg float %359
  %362 = select i1 %360, float %359, float %361
  %363 = call <2 x float> @Cf(ptr noundef nonnull %gep670)
  %.sroa.0.4.vec.extract = extractelement <2 x float> %363, i64 1
  %364 = fcmp oge float %.sroa.0.4.vec.extract, 0.000000e+00
  %365 = fneg float %.sroa.0.4.vec.extract
  %366 = select i1 %364, float %.sroa.0.4.vec.extract, float %365
  %367 = fadd float %362, %366
  %368 = fcmp oge float %.1561, %367
  %369 = select i1 %368, float %.1561, float %367
  %indvars.iv.next633 = add nuw nsw i64 %indvars.iv632, 1
  %exitcond636.not = icmp eq i64 %indvars.iv.next633, %wide.trip.count635
  br i1 %exitcond636.not, label %._crit_edge564, label %.lr.ph563, !llvm.loop !37

._crit_edge564:                                   ; preds = %.lr.ph563
  %370 = fcmp une float %369, 0.000000e+00
  br i1 %370, label %371, label %._crit_edge564.thread

371:                                              ; preds = %._crit_edge564
  %372 = load float, ptr %277, align 4, !tbaa !9
  %373 = fdiv float %372, %369
  store float %373, ptr %277, align 4, !tbaa !9
  br label %._crit_edge564.thread

._crit_edge564.thread:                            ; preds = %356, %._crit_edge564, %371
  %indvars.iv.next638 = add nuw nsw i64 %indvars.iv637, 1
  %.not482.not = icmp ult i64 %indvars.iv637, %89
  br i1 %.not482.not, label %.preheader, label %.loopexit, !llvm.loop !38

.loopexit:                                        ; preds = %._crit_edge564.thread, %.lr.ph573.prol.loopexit, %.lr.ph573, %middle.block714, %54, %78, %55, %.thread
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %21) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #6
  ret void
}

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

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

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

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

declare void @chpmv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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

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

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

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

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.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 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = !{!19, !10, i64 0}
!19 = !{!"", !10, i64 0, !10, i64 4}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = !{!28}
!28 = distinct !{!28, !29}
!29 = distinct !{!29, !"LVerDomain"}
!30 = distinct !{!30, !12, !13, !14}
!31 = distinct !{!31, !12, !13}
!32 = !{!33}
!33 = distinct !{!33, !34}
!34 = distinct !{!34, !"LVerDomain"}
!35 = distinct !{!35, !12, !13, !14}
!36 = distinct !{!36, !12, !13}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}


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