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

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

112:                                              ; preds = %14
  %113 = load ptr, ptr %15, align 8, !tbaa !5
  %114 = call i32 @lsame_(ptr noundef %113, ptr noundef @.str.1)
  %115 = icmp ne i32 %114, 0
  br i1 %115, label %118, label %116

116:                                              ; preds = %112
  %117 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -1, ptr %117, align 4, !tbaa !9
  br label %164

118:                                              ; preds = %112, %14
  %119 = load ptr, ptr %16, align 8, !tbaa !5
  %120 = load i32, ptr %119, align 4, !tbaa !9
  %121 = icmp slt i32 %120, 0
  br i1 %121, label %122, label %124

122:                                              ; preds = %118
  %123 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -2, ptr %123, align 4, !tbaa !9
  br label %163

124:                                              ; preds = %118
  %125 = load ptr, ptr %17, align 8, !tbaa !5
  %126 = load i32, ptr %125, align 4, !tbaa !9
  %127 = icmp slt i32 %126, 0
  br i1 %127, label %128, label %130

128:                                              ; preds = %124
  %129 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -3, ptr %129, align 4, !tbaa !9
  br label %162

130:                                              ; preds = %124
  %131 = load ptr, ptr %21, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = load ptr, ptr %16, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = icmp sge i32 1, %134
  br i1 %135, label %136, label %137

136:                                              ; preds = %130
  br label %140

137:                                              ; preds = %130
  %138 = load ptr, ptr %16, align 8, !tbaa !5
  %139 = load i32, ptr %138, align 4, !tbaa !9
  br label %140

140:                                              ; preds = %137, %136
  %141 = phi i32 [ 1, %136 ], [ %139, %137 ]
  %142 = icmp slt i32 %132, %141
  br i1 %142, label %143, label %145

143:                                              ; preds = %140
  %144 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -7, ptr %144, align 4, !tbaa !9
  br label %161

145:                                              ; preds = %140
  %146 = load ptr, ptr %23, align 8, !tbaa !5
  %147 = load i32, ptr %146, align 4, !tbaa !9
  %148 = load ptr, ptr %16, align 8, !tbaa !5
  %149 = load i32, ptr %148, align 4, !tbaa !9
  %150 = icmp sge i32 1, %149
  br i1 %150, label %151, label %152

151:                                              ; preds = %145
  br label %155

152:                                              ; preds = %145
  %153 = load ptr, ptr %16, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  br label %155

155:                                              ; preds = %152, %151
  %156 = phi i32 [ 1, %151 ], [ %154, %152 ]
  %157 = icmp slt i32 %147, %156
  br i1 %157, label %158, label %160

158:                                              ; preds = %155
  %159 = load ptr, ptr %28, align 8, !tbaa !5
  store i32 -9, ptr %159, align 4, !tbaa !9
  br label %160

160:                                              ; preds = %158, %155
  br label %161

161:                                              ; preds = %160, %143
  br label %162

162:                                              ; preds = %161, %128
  br label %163

163:                                              ; preds = %162, %122
  br label %164

164:                                              ; preds = %163, %116
  %165 = load ptr, ptr %28, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = icmp ne i32 %166, 0
  br i1 %167, label %168, label %173

168:                                              ; preds = %164
  %169 = load ptr, ptr %28, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = sub nsw i32 0, %170
  store i32 %171, ptr %33, align 4, !tbaa !9
  %172 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %33, i32 noundef 6)
  store i32 1, ptr %60, align 4
  br label %1295

173:                                              ; preds = %164
  %174 = load ptr, ptr %16, align 8, !tbaa !5
  %175 = load i32, ptr %174, align 4, !tbaa !9
  %176 = icmp eq i32 %175, 0
  br i1 %176, label %181, label %177

177:                                              ; preds = %173
  %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 %181, label %201

181:                                              ; preds = %177, %173
  %182 = load ptr, ptr %17, align 8, !tbaa !5
  %183 = load i32, ptr %182, align 4, !tbaa !9
  store i32 %183, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %184

184:                                              ; preds = %197, %181
  %185 = load i32, ptr %47, align 4, !tbaa !9
  %186 = load i32, ptr %33, align 4, !tbaa !9
  %187 = icmp sle i32 %185, %186
  br i1 %187, label %188, label %200

188:                                              ; preds = %184
  %189 = load ptr, ptr %24, align 8, !tbaa !5
  %190 = load i32, ptr %47, align 4, !tbaa !9
  %191 = sext i32 %190 to i64
  %192 = getelementptr inbounds float, ptr %189, i64 %191
  store float 0.000000e+00, ptr %192, align 4, !tbaa !11
  %193 = load ptr, ptr %25, align 8, !tbaa !5
  %194 = load i32, ptr %47, 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
  br label %197

197:                                              ; preds = %188
  %198 = load i32, ptr %47, align 4, !tbaa !9
  %199 = add nsw i32 %198, 1
  store i32 %199, ptr %47, align 4, !tbaa !9
  br label %184, !llvm.loop !13

200:                                              ; preds = %184
  store i32 1, ptr %60, align 4
  br label %1295

201:                                              ; preds = %177
  %202 = load ptr, ptr %16, align 8, !tbaa !5
  %203 = load i32, ptr %202, align 4, !tbaa !9
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %56, align 4, !tbaa !9
  %205 = call float @slamch_(ptr noundef @.str.3)
  store float %205, ptr %59, align 4, !tbaa !11
  %206 = call float @slamch_(ptr noundef @.str.4)
  store float %206, ptr %57, align 4, !tbaa !11
  %207 = load i32, ptr %56, align 4, !tbaa !9
  %208 = sitofp i32 %207 to float
  %209 = load float, ptr %57, align 4, !tbaa !11
  %210 = fmul float %208, %209
  store float %210, ptr %44, align 4, !tbaa !11
  %211 = load float, ptr %44, align 4, !tbaa !11
  %212 = load float, ptr %59, align 4, !tbaa !11
  %213 = fdiv float %211, %212
  store float %213, ptr %45, align 4, !tbaa !11
  %214 = load ptr, ptr %17, align 8, !tbaa !5
  %215 = load i32, ptr %214, align 4, !tbaa !9
  store i32 %215, ptr %33, align 4, !tbaa !9
  store i32 1, ptr %47, align 4, !tbaa !9
  br label %216

216:                                              ; preds = %1291, %201
  %217 = load i32, ptr %47, align 4, !tbaa !9
  %218 = load i32, ptr %33, align 4, !tbaa !9
  %219 = icmp sle i32 %217, %218
  br i1 %219, label %220, label %1294

220:                                              ; preds = %216
  store i32 1, ptr %51, align 4, !tbaa !9
  store float 3.000000e+00, ptr %58, align 4, !tbaa !11
  br label %221

221:                                              ; preds = %916, %220
  %222 = load ptr, ptr %16, align 8, !tbaa !5
  %223 = load ptr, ptr %20, align 8, !tbaa !5
  %224 = load i32, ptr %47, align 4, !tbaa !9
  %225 = load i32, ptr %29, align 4, !tbaa !9
  %226 = mul nsw i32 %224, %225
  %227 = add nsw i32 %226, 1
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds %struct.complex, ptr %223, i64 %228
  %230 = load ptr, ptr %26, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.complex, ptr %230, i64 1
  call void @ccopy_(ptr noundef %222, ptr noundef %229, ptr noundef @c__1, ptr noundef %231, ptr noundef @c__1)
  %232 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float -1.000000e+00, ptr %232, align 4, !tbaa !15
  %233 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float 0.000000e+00, ptr %233, align 4, !tbaa !17
  %234 = load ptr, ptr %15, align 8, !tbaa !5
  %235 = load ptr, ptr %16, align 8, !tbaa !5
  %236 = load ptr, ptr %18, align 8, !tbaa !5
  %237 = getelementptr inbounds %struct.complex, ptr %236, i64 1
  %238 = load ptr, ptr %22, align 8, !tbaa !5
  %239 = load i32, ptr %47, align 4, !tbaa !9
  %240 = load i32, ptr %31, align 4, !tbaa !9
  %241 = mul nsw i32 %239, %240
  %242 = add nsw i32 %241, 1
  %243 = sext i32 %242 to i64
  %244 = getelementptr inbounds %struct.complex, ptr %238, i64 %243
  %245 = load ptr, ptr %26, align 8, !tbaa !5
  %246 = getelementptr inbounds %struct.complex, ptr %245, i64 1
  call void @chpmv_(ptr noundef %234, ptr noundef %235, ptr noundef %42, ptr noundef %237, ptr noundef %244, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %246, ptr noundef @c__1)
  %247 = load ptr, ptr %16, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  store i32 %248, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %249

249:                                              ; preds = %301, %221
  %250 = load i32, ptr %46, align 4, !tbaa !9
  %251 = load i32, ptr %34, align 4, !tbaa !9
  %252 = icmp sle i32 %250, %251
  br i1 %252, label %253, label %304

253:                                              ; preds = %249
  %254 = load i32, ptr %46, align 4, !tbaa !9
  %255 = load i32, ptr %47, align 4, !tbaa !9
  %256 = load i32, ptr %29, align 4, !tbaa !9
  %257 = mul nsw i32 %255, %256
  %258 = add nsw i32 %254, %257
  store i32 %258, ptr %35, align 4, !tbaa !9
  %259 = load ptr, ptr %20, align 8, !tbaa !5
  %260 = load i32, ptr %35, align 4, !tbaa !9
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds %struct.complex, ptr %259, i64 %261
  %263 = getelementptr inbounds %struct.complex, ptr %262, i32 0, i32 0
  %264 = load float, ptr %263, align 4, !tbaa !15
  store float %264, ptr %38, align 4, !tbaa !11
  %265 = load float, ptr %38, align 4, !tbaa !11
  %266 = fcmp oge float %265, 0.000000e+00
  br i1 %266, label %267, label %269

267:                                              ; preds = %253
  %268 = load float, ptr %38, align 4, !tbaa !11
  br label %272

269:                                              ; preds = %253
  %270 = load float, ptr %38, align 4, !tbaa !11
  %271 = fneg float %270
  br label %272

272:                                              ; preds = %269, %267
  %273 = phi float [ %268, %267 ], [ %271, %269 ]
  %274 = load ptr, ptr %20, align 8, !tbaa !5
  %275 = load i32, ptr %46, align 4, !tbaa !9
  %276 = load i32, ptr %47, align 4, !tbaa !9
  %277 = load i32, ptr %29, align 4, !tbaa !9
  %278 = mul nsw i32 %276, %277
  %279 = add nsw i32 %275, %278
  %280 = sext i32 %279 to i64
  %281 = getelementptr inbounds %struct.complex, ptr %274, i64 %280
  %282 = call <2 x float> @Cf(ptr noundef %281)
  store <2 x float> %282, ptr %61, align 4
  %283 = getelementptr inbounds { float, float }, ptr %61, i32 0, i32 0
  %284 = load float, ptr %283, align 4
  %285 = getelementptr inbounds { float, float }, ptr %61, i32 0, i32 1
  %286 = load float, ptr %285, align 4
  store float %286, ptr %39, align 4, !tbaa !11
  %287 = load float, ptr %39, align 4, !tbaa !11
  %288 = fcmp oge float %287, 0.000000e+00
  br i1 %288, label %289, label %291

289:                                              ; preds = %272
  %290 = load float, ptr %39, align 4, !tbaa !11
  br label %294

291:                                              ; preds = %272
  %292 = load float, ptr %39, align 4, !tbaa !11
  %293 = fneg float %292
  br label %294

294:                                              ; preds = %291, %289
  %295 = phi float [ %290, %289 ], [ %293, %291 ]
  %296 = fadd float %273, %295
  %297 = load ptr, ptr %27, align 8, !tbaa !5
  %298 = load i32, ptr %46, align 4, !tbaa !9
  %299 = sext i32 %298 to i64
  %300 = getelementptr inbounds float, ptr %297, i64 %299
  store float %296, ptr %300, align 4, !tbaa !11
  br label %301

301:                                              ; preds = %294
  %302 = load i32, ptr %46, align 4, !tbaa !9
  %303 = add nsw i32 %302, 1
  store i32 %303, ptr %46, align 4, !tbaa !9
  br label %249, !llvm.loop !18

304:                                              ; preds = %249
  store i32 1, ptr %54, align 4, !tbaa !9
  %305 = load i32, ptr %52, align 4, !tbaa !9
  %306 = icmp ne i32 %305, 0
  br i1 %306, label %307, label %533

307:                                              ; preds = %304
  %308 = load ptr, ptr %16, align 8, !tbaa !5
  %309 = load i32, ptr %308, align 4, !tbaa !9
  store i32 %309, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %310

310:                                              ; preds = %529, %307
  %311 = load i32, ptr %48, align 4, !tbaa !9
  %312 = load i32, ptr %34, align 4, !tbaa !9
  %313 = icmp sle i32 %311, %312
  br i1 %313, label %314, label %532

314:                                              ; preds = %310
  store float 0.000000e+00, ptr %49, align 4, !tbaa !11
  %315 = load i32, ptr %48, align 4, !tbaa !9
  %316 = load i32, ptr %47, align 4, !tbaa !9
  %317 = load i32, ptr %31, align 4, !tbaa !9
  %318 = mul nsw i32 %316, %317
  %319 = add nsw i32 %315, %318
  store i32 %319, ptr %35, align 4, !tbaa !9
  %320 = load ptr, ptr %22, align 8, !tbaa !5
  %321 = load i32, ptr %35, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.complex, ptr %320, i64 %322
  %324 = getelementptr inbounds %struct.complex, ptr %323, i32 0, i32 0
  %325 = load float, ptr %324, align 4, !tbaa !15
  store float %325, ptr %38, align 4, !tbaa !11
  %326 = load float, ptr %38, align 4, !tbaa !11
  %327 = fcmp oge float %326, 0.000000e+00
  br i1 %327, label %328, label %330

328:                                              ; preds = %314
  %329 = load float, ptr %38, align 4, !tbaa !11
  br label %333

330:                                              ; preds = %314
  %331 = load float, ptr %38, align 4, !tbaa !11
  %332 = fneg float %331
  br label %333

333:                                              ; preds = %330, %328
  %334 = phi float [ %329, %328 ], [ %332, %330 ]
  %335 = load ptr, ptr %22, align 8, !tbaa !5
  %336 = load i32, ptr %48, align 4, !tbaa !9
  %337 = load i32, ptr %47, align 4, !tbaa !9
  %338 = load i32, ptr %31, align 4, !tbaa !9
  %339 = mul nsw i32 %337, %338
  %340 = add nsw i32 %336, %339
  %341 = sext i32 %340 to i64
  %342 = getelementptr inbounds %struct.complex, ptr %335, i64 %341
  %343 = call <2 x float> @Cf(ptr noundef %342)
  store <2 x float> %343, ptr %62, align 4
  %344 = getelementptr inbounds { float, float }, ptr %62, i32 0, i32 0
  %345 = load float, ptr %344, align 4
  %346 = getelementptr inbounds { float, float }, ptr %62, i32 0, i32 1
  %347 = load float, ptr %346, align 4
  store float %347, ptr %39, align 4, !tbaa !11
  %348 = load float, ptr %39, align 4, !tbaa !11
  %349 = fcmp oge float %348, 0.000000e+00
  br i1 %349, label %350, label %352

350:                                              ; preds = %333
  %351 = load float, ptr %39, align 4, !tbaa !11
  br label %355

352:                                              ; preds = %333
  %353 = load float, ptr %39, align 4, !tbaa !11
  %354 = fneg float %353
  br label %355

355:                                              ; preds = %352, %350
  %356 = phi float [ %351, %350 ], [ %354, %352 ]
  %357 = fadd float %334, %356
  store float %357, ptr %55, align 4, !tbaa !11
  %358 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %358, ptr %53, align 4, !tbaa !9
  %359 = load i32, ptr %48, align 4, !tbaa !9
  %360 = sub nsw i32 %359, 1
  store i32 %360, ptr %35, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %361

361:                                              ; preds = %490, %355
  %362 = load i32, ptr %46, align 4, !tbaa !9
  %363 = load i32, ptr %35, align 4, !tbaa !9
  %364 = icmp sle i32 %362, %363
  br i1 %364, label %365, label %493

365:                                              ; preds = %361
  %366 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %366, ptr %36, align 4, !tbaa !9
  %367 = load ptr, ptr %18, align 8, !tbaa !5
  %368 = load i32, ptr %36, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds %struct.complex, ptr %367, i64 %369
  %371 = getelementptr inbounds %struct.complex, ptr %370, i32 0, i32 0
  %372 = load float, ptr %371, align 4, !tbaa !15
  store float %372, ptr %38, align 4, !tbaa !11
  %373 = load float, ptr %38, align 4, !tbaa !11
  %374 = fcmp oge float %373, 0.000000e+00
  br i1 %374, label %375, label %377

375:                                              ; preds = %365
  %376 = load float, ptr %38, align 4, !tbaa !11
  br label %380

377:                                              ; preds = %365
  %378 = load float, ptr %38, align 4, !tbaa !11
  %379 = fneg float %378
  br label %380

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

393:                                              ; preds = %380
  %394 = load float, ptr %39, align 4, !tbaa !11
  br label %398

395:                                              ; preds = %380
  %396 = load float, ptr %39, align 4, !tbaa !11
  %397 = fneg float %396
  br label %398

398:                                              ; preds = %395, %393
  %399 = phi float [ %394, %393 ], [ %397, %395 ]
  %400 = fadd float %381, %399
  %401 = load float, ptr %55, align 4, !tbaa !11
  %402 = load ptr, ptr %27, align 8, !tbaa !5
  %403 = load i32, ptr %46, align 4, !tbaa !9
  %404 = sext i32 %403 to i64
  %405 = getelementptr inbounds float, ptr %402, i64 %404
  %406 = load float, ptr %405, align 4, !tbaa !11
  %407 = call float @llvm.fmuladd.f32(float %400, float %401, float %406)
  store float %407, ptr %405, align 4, !tbaa !11
  %408 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %408, ptr %36, align 4, !tbaa !9
  %409 = load i32, ptr %46, align 4, !tbaa !9
  %410 = load i32, ptr %47, align 4, !tbaa !9
  %411 = load i32, ptr %31, align 4, !tbaa !9
  %412 = mul nsw i32 %410, %411
  %413 = add nsw i32 %409, %412
  store i32 %413, ptr %37, align 4, !tbaa !9
  %414 = load ptr, ptr %18, align 8, !tbaa !5
  %415 = load i32, ptr %36, align 4, !tbaa !9
  %416 = sext i32 %415 to i64
  %417 = getelementptr inbounds %struct.complex, ptr %414, i64 %416
  %418 = getelementptr inbounds %struct.complex, ptr %417, i32 0, i32 0
  %419 = load float, ptr %418, align 4, !tbaa !15
  store float %419, ptr %38, align 4, !tbaa !11
  %420 = load float, ptr %38, align 4, !tbaa !11
  %421 = fcmp oge float %420, 0.000000e+00
  br i1 %421, label %422, label %424

422:                                              ; preds = %398
  %423 = load float, ptr %38, align 4, !tbaa !11
  br label %427

424:                                              ; preds = %398
  %425 = load float, ptr %38, align 4, !tbaa !11
  %426 = fneg float %425
  br label %427

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

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

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

445:                                              ; preds = %442, %440
  %446 = phi float [ %441, %440 ], [ %444, %442 ]
  %447 = fadd float %428, %446
  %448 = load ptr, ptr %22, align 8, !tbaa !5
  %449 = load i32, ptr %37, align 4, !tbaa !9
  %450 = sext i32 %449 to i64
  %451 = getelementptr inbounds %struct.complex, ptr %448, i64 %450
  %452 = getelementptr inbounds %struct.complex, ptr %451, i32 0, i32 0
  %453 = load float, ptr %452, align 4, !tbaa !15
  store float %453, ptr %40, align 4, !tbaa !11
  %454 = load float, ptr %40, align 4, !tbaa !11
  %455 = fcmp oge float %454, 0.000000e+00
  br i1 %455, label %456, label %458

456:                                              ; preds = %445
  %457 = load float, ptr %40, align 4, !tbaa !11
  br label %461

458:                                              ; preds = %445
  %459 = load float, ptr %40, align 4, !tbaa !11
  %460 = fneg float %459
  br label %461

461:                                              ; preds = %458, %456
  %462 = phi float [ %457, %456 ], [ %460, %458 ]
  %463 = load ptr, ptr %22, align 8, !tbaa !5
  %464 = load i32, ptr %46, align 4, !tbaa !9
  %465 = load i32, ptr %47, align 4, !tbaa !9
  %466 = load i32, ptr %31, align 4, !tbaa !9
  %467 = mul nsw i32 %465, %466
  %468 = add nsw i32 %464, %467
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds %struct.complex, ptr %463, i64 %469
  %471 = call <2 x float> @Cf(ptr noundef %470)
  store <2 x float> %471, ptr %65, align 4
  %472 = getelementptr inbounds { float, float }, ptr %65, i32 0, i32 0
  %473 = load float, ptr %472, align 4
  %474 = getelementptr inbounds { float, float }, ptr %65, i32 0, i32 1
  %475 = load float, ptr %474, align 4
  store float %475, ptr %41, align 4, !tbaa !11
  %476 = load float, ptr %41, align 4, !tbaa !11
  %477 = fcmp oge float %476, 0.000000e+00
  br i1 %477, label %478, label %480

478:                                              ; preds = %461
  %479 = load float, ptr %41, align 4, !tbaa !11
  br label %483

480:                                              ; preds = %461
  %481 = load float, ptr %41, align 4, !tbaa !11
  %482 = fneg float %481
  br label %483

483:                                              ; preds = %480, %478
  %484 = phi float [ %479, %478 ], [ %482, %480 ]
  %485 = fadd float %462, %484
  %486 = load float, ptr %49, align 4, !tbaa !11
  %487 = call float @llvm.fmuladd.f32(float %447, float %485, float %486)
  store float %487, ptr %49, align 4, !tbaa !11
  %488 = load i32, ptr %53, align 4, !tbaa !9
  %489 = add nsw i32 %488, 1
  store i32 %489, ptr %53, align 4, !tbaa !9
  br label %490

490:                                              ; preds = %483
  %491 = load i32, ptr %46, align 4, !tbaa !9
  %492 = add nsw i32 %491, 1
  store i32 %492, ptr %46, align 4, !tbaa !9
  br label %361, !llvm.loop !19

493:                                              ; preds = %361
  %494 = load i32, ptr %54, align 4, !tbaa !9
  %495 = load i32, ptr %48, align 4, !tbaa !9
  %496 = add nsw i32 %494, %495
  %497 = sub nsw i32 %496, 1
  store i32 %497, ptr %35, align 4, !tbaa !9
  %498 = load ptr, ptr %27, align 8, !tbaa !5
  %499 = load i32, ptr %48, align 4, !tbaa !9
  %500 = sext i32 %499 to i64
  %501 = getelementptr inbounds float, ptr %498, i64 %500
  %502 = load float, ptr %501, align 4, !tbaa !11
  %503 = load ptr, ptr %18, align 8, !tbaa !5
  %504 = load i32, ptr %35, align 4, !tbaa !9
  %505 = sext i32 %504 to i64
  %506 = getelementptr inbounds %struct.complex, ptr %503, i64 %505
  %507 = getelementptr inbounds %struct.complex, ptr %506, i32 0, i32 0
  %508 = load float, ptr %507, align 4, !tbaa !15
  store float %508, ptr %38, align 4, !tbaa !11
  %509 = load float, ptr %38, align 4, !tbaa !11
  %510 = fcmp oge float %509, 0.000000e+00
  br i1 %510, label %511, label %513

511:                                              ; preds = %493
  %512 = load float, ptr %38, align 4, !tbaa !11
  br label %516

513:                                              ; preds = %493
  %514 = load float, ptr %38, align 4, !tbaa !11
  %515 = fneg float %514
  br label %516

516:                                              ; preds = %513, %511
  %517 = phi float [ %512, %511 ], [ %515, %513 ]
  %518 = load float, ptr %55, align 4, !tbaa !11
  %519 = call float @llvm.fmuladd.f32(float %517, float %518, float %502)
  %520 = load float, ptr %49, align 4, !tbaa !11
  %521 = fadd float %519, %520
  %522 = load ptr, ptr %27, align 8, !tbaa !5
  %523 = load i32, ptr %48, align 4, !tbaa !9
  %524 = sext i32 %523 to i64
  %525 = getelementptr inbounds float, ptr %522, i64 %524
  store float %521, ptr %525, align 4, !tbaa !11
  %526 = load i32, ptr %48, align 4, !tbaa !9
  %527 = load i32, ptr %54, align 4, !tbaa !9
  %528 = add nsw i32 %527, %526
  store i32 %528, ptr %54, align 4, !tbaa !9
  br label %529

529:                                              ; preds = %516
  %530 = load i32, ptr %48, align 4, !tbaa !9
  %531 = add nsw i32 %530, 1
  store i32 %531, ptr %48, align 4, !tbaa !9
  br label %310, !llvm.loop !20

532:                                              ; preds = %310
  br label %764

533:                                              ; preds = %304
  %534 = load ptr, ptr %16, align 8, !tbaa !5
  %535 = load i32, ptr %534, align 4, !tbaa !9
  store i32 %535, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %48, align 4, !tbaa !9
  br label %536

536:                                              ; preds = %760, %533
  %537 = load i32, ptr %48, align 4, !tbaa !9
  %538 = load i32, ptr %34, align 4, !tbaa !9
  %539 = icmp sle i32 %537, %538
  br i1 %539, label %540, label %763

540:                                              ; preds = %536
  store float 0.000000e+00, ptr %49, align 4, !tbaa !11
  %541 = load i32, ptr %48, align 4, !tbaa !9
  %542 = load i32, ptr %47, align 4, !tbaa !9
  %543 = load i32, ptr %31, align 4, !tbaa !9
  %544 = mul nsw i32 %542, %543
  %545 = add nsw i32 %541, %544
  store i32 %545, ptr %35, align 4, !tbaa !9
  %546 = load ptr, ptr %22, align 8, !tbaa !5
  %547 = load i32, ptr %35, align 4, !tbaa !9
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.complex, ptr %546, i64 %548
  %550 = getelementptr inbounds %struct.complex, ptr %549, i32 0, i32 0
  %551 = load float, ptr %550, align 4, !tbaa !15
  store float %551, ptr %38, align 4, !tbaa !11
  %552 = load float, ptr %38, align 4, !tbaa !11
  %553 = fcmp oge float %552, 0.000000e+00
  br i1 %553, label %554, label %556

554:                                              ; preds = %540
  %555 = load float, ptr %38, align 4, !tbaa !11
  br label %559

556:                                              ; preds = %540
  %557 = load float, ptr %38, align 4, !tbaa !11
  %558 = fneg float %557
  br label %559

559:                                              ; preds = %556, %554
  %560 = phi float [ %555, %554 ], [ %558, %556 ]
  %561 = load ptr, ptr %22, align 8, !tbaa !5
  %562 = load i32, ptr %48, align 4, !tbaa !9
  %563 = load i32, ptr %47, align 4, !tbaa !9
  %564 = load i32, ptr %31, align 4, !tbaa !9
  %565 = mul nsw i32 %563, %564
  %566 = add nsw i32 %562, %565
  %567 = sext i32 %566 to i64
  %568 = getelementptr inbounds %struct.complex, ptr %561, i64 %567
  %569 = call <2 x float> @Cf(ptr noundef %568)
  store <2 x float> %569, ptr %66, align 4
  %570 = getelementptr inbounds { float, float }, ptr %66, i32 0, i32 0
  %571 = load float, ptr %570, align 4
  %572 = getelementptr inbounds { float, float }, ptr %66, i32 0, i32 1
  %573 = load float, ptr %572, align 4
  store float %573, ptr %39, align 4, !tbaa !11
  %574 = load float, ptr %39, align 4, !tbaa !11
  %575 = fcmp oge float %574, 0.000000e+00
  br i1 %575, label %576, label %578

576:                                              ; preds = %559
  %577 = load float, ptr %39, align 4, !tbaa !11
  br label %581

578:                                              ; preds = %559
  %579 = load float, ptr %39, align 4, !tbaa !11
  %580 = fneg float %579
  br label %581

581:                                              ; preds = %578, %576
  %582 = phi float [ %577, %576 ], [ %580, %578 ]
  %583 = fadd float %560, %582
  store float %583, ptr %55, align 4, !tbaa !11
  %584 = load i32, ptr %54, align 4, !tbaa !9
  store i32 %584, ptr %35, align 4, !tbaa !9
  %585 = load ptr, ptr %18, align 8, !tbaa !5
  %586 = load i32, ptr %35, align 4, !tbaa !9
  %587 = sext i32 %586 to i64
  %588 = getelementptr inbounds %struct.complex, ptr %585, i64 %587
  %589 = getelementptr inbounds %struct.complex, ptr %588, i32 0, i32 0
  %590 = load float, ptr %589, align 4, !tbaa !15
  store float %590, ptr %38, align 4, !tbaa !11
  %591 = load float, ptr %38, align 4, !tbaa !11
  %592 = fcmp oge float %591, 0.000000e+00
  br i1 %592, label %593, label %595

593:                                              ; preds = %581
  %594 = load float, ptr %38, align 4, !tbaa !11
  br label %598

595:                                              ; preds = %581
  %596 = load float, ptr %38, align 4, !tbaa !11
  %597 = fneg float %596
  br label %598

598:                                              ; preds = %595, %593
  %599 = phi float [ %594, %593 ], [ %597, %595 ]
  %600 = load float, ptr %55, align 4, !tbaa !11
  %601 = load ptr, ptr %27, align 8, !tbaa !5
  %602 = load i32, ptr %48, align 4, !tbaa !9
  %603 = sext i32 %602 to i64
  %604 = getelementptr inbounds float, ptr %601, i64 %603
  %605 = load float, ptr %604, align 4, !tbaa !11
  %606 = call float @llvm.fmuladd.f32(float %599, float %600, float %605)
  store float %606, ptr %604, align 4, !tbaa !11
  %607 = load i32, ptr %54, align 4, !tbaa !9
  %608 = add nsw i32 %607, 1
  store i32 %608, ptr %53, align 4, !tbaa !9
  %609 = load ptr, ptr %16, align 8, !tbaa !5
  %610 = load i32, ptr %609, align 4, !tbaa !9
  store i32 %610, ptr %35, align 4, !tbaa !9
  %611 = load i32, ptr %48, align 4, !tbaa !9
  %612 = add nsw i32 %611, 1
  store i32 %612, ptr %46, align 4, !tbaa !9
  br label %613

613:                                              ; preds = %742, %598
  %614 = load i32, ptr %46, align 4, !tbaa !9
  %615 = load i32, ptr %35, align 4, !tbaa !9
  %616 = icmp sle i32 %614, %615
  br i1 %616, label %617, label %745

617:                                              ; preds = %613
  %618 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %618, ptr %36, align 4, !tbaa !9
  %619 = load ptr, ptr %18, align 8, !tbaa !5
  %620 = load i32, ptr %36, align 4, !tbaa !9
  %621 = sext i32 %620 to i64
  %622 = getelementptr inbounds %struct.complex, ptr %619, i64 %621
  %623 = getelementptr inbounds %struct.complex, ptr %622, i32 0, i32 0
  %624 = load float, ptr %623, align 4, !tbaa !15
  store float %624, ptr %38, align 4, !tbaa !11
  %625 = load float, ptr %38, align 4, !tbaa !11
  %626 = fcmp oge float %625, 0.000000e+00
  br i1 %626, label %627, label %629

627:                                              ; preds = %617
  %628 = load float, ptr %38, align 4, !tbaa !11
  br label %632

629:                                              ; preds = %617
  %630 = load float, ptr %38, align 4, !tbaa !11
  %631 = fneg float %630
  br label %632

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

645:                                              ; preds = %632
  %646 = load float, ptr %39, align 4, !tbaa !11
  br label %650

647:                                              ; preds = %632
  %648 = load float, ptr %39, align 4, !tbaa !11
  %649 = fneg float %648
  br label %650

650:                                              ; preds = %647, %645
  %651 = phi float [ %646, %645 ], [ %649, %647 ]
  %652 = fadd float %633, %651
  %653 = load float, ptr %55, align 4, !tbaa !11
  %654 = load ptr, ptr %27, align 8, !tbaa !5
  %655 = load i32, ptr %46, align 4, !tbaa !9
  %656 = sext i32 %655 to i64
  %657 = getelementptr inbounds float, ptr %654, i64 %656
  %658 = load float, ptr %657, align 4, !tbaa !11
  %659 = call float @llvm.fmuladd.f32(float %652, float %653, float %658)
  store float %659, ptr %657, align 4, !tbaa !11
  %660 = load i32, ptr %53, align 4, !tbaa !9
  store i32 %660, ptr %36, align 4, !tbaa !9
  %661 = load i32, ptr %46, align 4, !tbaa !9
  %662 = load i32, ptr %47, align 4, !tbaa !9
  %663 = load i32, ptr %31, align 4, !tbaa !9
  %664 = mul nsw i32 %662, %663
  %665 = add nsw i32 %661, %664
  store i32 %665, ptr %37, align 4, !tbaa !9
  %666 = load ptr, ptr %18, align 8, !tbaa !5
  %667 = load i32, ptr %36, align 4, !tbaa !9
  %668 = sext i32 %667 to i64
  %669 = getelementptr inbounds %struct.complex, ptr %666, i64 %668
  %670 = getelementptr inbounds %struct.complex, ptr %669, i32 0, i32 0
  %671 = load float, ptr %670, align 4, !tbaa !15
  store float %671, ptr %38, align 4, !tbaa !11
  %672 = load float, ptr %38, align 4, !tbaa !11
  %673 = fcmp oge float %672, 0.000000e+00
  br i1 %673, label %674, label %676

674:                                              ; preds = %650
  %675 = load float, ptr %38, align 4, !tbaa !11
  br label %679

676:                                              ; preds = %650
  %677 = load float, ptr %38, align 4, !tbaa !11
  %678 = fneg float %677
  br label %679

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

692:                                              ; preds = %679
  %693 = load float, ptr %39, align 4, !tbaa !11
  br label %697

694:                                              ; preds = %679
  %695 = load float, ptr %39, align 4, !tbaa !11
  %696 = fneg float %695
  br label %697

697:                                              ; preds = %694, %692
  %698 = phi float [ %693, %692 ], [ %696, %694 ]
  %699 = fadd float %680, %698
  %700 = load ptr, ptr %22, align 8, !tbaa !5
  %701 = load i32, ptr %37, align 4, !tbaa !9
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds %struct.complex, ptr %700, i64 %702
  %704 = getelementptr inbounds %struct.complex, ptr %703, i32 0, i32 0
  %705 = load float, ptr %704, align 4, !tbaa !15
  store float %705, ptr %40, align 4, !tbaa !11
  %706 = load float, ptr %40, align 4, !tbaa !11
  %707 = fcmp oge float %706, 0.000000e+00
  br i1 %707, label %708, label %710

708:                                              ; preds = %697
  %709 = load float, ptr %40, align 4, !tbaa !11
  br label %713

710:                                              ; preds = %697
  %711 = load float, ptr %40, align 4, !tbaa !11
  %712 = fneg float %711
  br label %713

713:                                              ; preds = %710, %708
  %714 = phi float [ %709, %708 ], [ %712, %710 ]
  %715 = load ptr, ptr %22, align 8, !tbaa !5
  %716 = load i32, ptr %46, align 4, !tbaa !9
  %717 = load i32, ptr %47, align 4, !tbaa !9
  %718 = load i32, ptr %31, align 4, !tbaa !9
  %719 = mul nsw i32 %717, %718
  %720 = add nsw i32 %716, %719
  %721 = sext i32 %720 to i64
  %722 = getelementptr inbounds %struct.complex, ptr %715, i64 %721
  %723 = call <2 x float> @Cf(ptr noundef %722)
  store <2 x float> %723, ptr %69, align 4
  %724 = getelementptr inbounds { float, float }, ptr %69, i32 0, i32 0
  %725 = load float, ptr %724, align 4
  %726 = getelementptr inbounds { float, float }, ptr %69, i32 0, i32 1
  %727 = load float, ptr %726, align 4
  store float %727, ptr %41, align 4, !tbaa !11
  %728 = load float, ptr %41, align 4, !tbaa !11
  %729 = fcmp oge float %728, 0.000000e+00
  br i1 %729, label %730, label %732

730:                                              ; preds = %713
  %731 = load float, ptr %41, align 4, !tbaa !11
  br label %735

732:                                              ; preds = %713
  %733 = load float, ptr %41, align 4, !tbaa !11
  %734 = fneg float %733
  br label %735

735:                                              ; preds = %732, %730
  %736 = phi float [ %731, %730 ], [ %734, %732 ]
  %737 = fadd float %714, %736
  %738 = load float, ptr %49, align 4, !tbaa !11
  %739 = call float @llvm.fmuladd.f32(float %699, float %737, float %738)
  store float %739, ptr %49, align 4, !tbaa !11
  %740 = load i32, ptr %53, align 4, !tbaa !9
  %741 = add nsw i32 %740, 1
  store i32 %741, ptr %53, align 4, !tbaa !9
  br label %742

742:                                              ; preds = %735
  %743 = load i32, ptr %46, align 4, !tbaa !9
  %744 = add nsw i32 %743, 1
  store i32 %744, ptr %46, align 4, !tbaa !9
  br label %613, !llvm.loop !21

745:                                              ; preds = %613
  %746 = load float, ptr %49, align 4, !tbaa !11
  %747 = load ptr, ptr %27, align 8, !tbaa !5
  %748 = load i32, ptr %48, align 4, !tbaa !9
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds float, ptr %747, i64 %749
  %751 = load float, ptr %750, align 4, !tbaa !11
  %752 = fadd float %751, %746
  store float %752, ptr %750, align 4, !tbaa !11
  %753 = load ptr, ptr %16, align 8, !tbaa !5
  %754 = load i32, ptr %753, align 4, !tbaa !9
  %755 = load i32, ptr %48, align 4, !tbaa !9
  %756 = sub nsw i32 %754, %755
  %757 = add nsw i32 %756, 1
  %758 = load i32, ptr %54, align 4, !tbaa !9
  %759 = add nsw i32 %758, %757
  store i32 %759, ptr %54, align 4, !tbaa !9
  br label %760

760:                                              ; preds = %745
  %761 = load i32, ptr %48, align 4, !tbaa !9
  %762 = add nsw i32 %761, 1
  store i32 %762, ptr %48, align 4, !tbaa !9
  br label %536, !llvm.loop !22

763:                                              ; preds = %536
  br label %764

764:                                              ; preds = %763, %532
  store float 0.000000e+00, ptr %49, align 4, !tbaa !11
  %765 = load ptr, ptr %16, align 8, !tbaa !5
  %766 = load i32, ptr %765, align 4, !tbaa !9
  store i32 %766, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %767

767:                                              ; preds = %888, %764
  %768 = load i32, ptr %46, align 4, !tbaa !9
  %769 = load i32, ptr %34, align 4, !tbaa !9
  %770 = icmp sle i32 %768, %769
  br i1 %770, label %771, label %891

771:                                              ; preds = %767
  %772 = load ptr, ptr %27, align 8, !tbaa !5
  %773 = load i32, ptr %46, align 4, !tbaa !9
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds float, ptr %772, i64 %774
  %776 = load float, ptr %775, align 4, !tbaa !11
  %777 = load float, ptr %45, align 4, !tbaa !11
  %778 = fcmp ogt float %776, %777
  br i1 %778, label %779, label %831

779:                                              ; preds = %771
  %780 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %780, ptr %35, align 4, !tbaa !9
  %781 = load float, ptr %49, align 4, !tbaa !11
  store float %781, ptr %40, align 4, !tbaa !11
  %782 = load ptr, ptr %26, align 8, !tbaa !5
  %783 = load i32, ptr %35, align 4, !tbaa !9
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds %struct.complex, ptr %782, i64 %784
  %786 = getelementptr inbounds %struct.complex, ptr %785, i32 0, i32 0
  %787 = load float, ptr %786, align 4, !tbaa !15
  store float %787, ptr %38, align 4, !tbaa !11
  %788 = load float, ptr %38, align 4, !tbaa !11
  %789 = fcmp oge float %788, 0.000000e+00
  br i1 %789, label %790, label %792

790:                                              ; preds = %779
  %791 = load float, ptr %38, align 4, !tbaa !11
  br label %795

792:                                              ; preds = %779
  %793 = load float, ptr %38, align 4, !tbaa !11
  %794 = fneg float %793
  br label %795

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

808:                                              ; preds = %795
  %809 = load float, ptr %39, align 4, !tbaa !11
  br label %813

810:                                              ; preds = %795
  %811 = load float, ptr %39, align 4, !tbaa !11
  %812 = fneg float %811
  br label %813

813:                                              ; preds = %810, %808
  %814 = phi float [ %809, %808 ], [ %812, %810 ]
  %815 = fadd float %796, %814
  %816 = load ptr, ptr %27, align 8, !tbaa !5
  %817 = load i32, ptr %46, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds float, ptr %816, i64 %818
  %820 = load float, ptr %819, align 4, !tbaa !11
  %821 = fdiv float %815, %820
  store float %821, ptr %41, align 4, !tbaa !11
  %822 = load float, ptr %40, align 4, !tbaa !11
  %823 = load float, ptr %41, align 4, !tbaa !11
  %824 = fcmp oge float %822, %823
  br i1 %824, label %825, label %827

825:                                              ; preds = %813
  %826 = load float, ptr %40, align 4, !tbaa !11
  br label %829

827:                                              ; preds = %813
  %828 = load float, ptr %41, align 4, !tbaa !11
  br label %829

829:                                              ; preds = %827, %825
  %830 = phi float [ %826, %825 ], [ %828, %827 ]
  store float %830, ptr %49, align 4, !tbaa !11
  br label %887

831:                                              ; preds = %771
  %832 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %832, ptr %35, align 4, !tbaa !9
  %833 = load float, ptr %49, align 4, !tbaa !11
  store float %833, ptr %40, align 4, !tbaa !11
  %834 = load ptr, ptr %26, align 8, !tbaa !5
  %835 = load i32, ptr %35, align 4, !tbaa !9
  %836 = sext i32 %835 to i64
  %837 = getelementptr inbounds %struct.complex, ptr %834, i64 %836
  %838 = getelementptr inbounds %struct.complex, ptr %837, i32 0, i32 0
  %839 = load float, ptr %838, align 4, !tbaa !15
  store float %839, ptr %38, align 4, !tbaa !11
  %840 = load float, ptr %38, align 4, !tbaa !11
  %841 = fcmp oge float %840, 0.000000e+00
  br i1 %841, label %842, label %844

842:                                              ; preds = %831
  %843 = load float, ptr %38, align 4, !tbaa !11
  br label %847

844:                                              ; preds = %831
  %845 = load float, ptr %38, align 4, !tbaa !11
  %846 = fneg float %845
  br label %847

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

860:                                              ; preds = %847
  %861 = load float, ptr %39, align 4, !tbaa !11
  br label %865

862:                                              ; preds = %847
  %863 = load float, ptr %39, align 4, !tbaa !11
  %864 = fneg float %863
  br label %865

865:                                              ; preds = %862, %860
  %866 = phi float [ %861, %860 ], [ %864, %862 ]
  %867 = fadd float %848, %866
  %868 = load float, ptr %44, align 4, !tbaa !11
  %869 = fadd float %867, %868
  %870 = load ptr, ptr %27, align 8, !tbaa !5
  %871 = load i32, ptr %46, align 4, !tbaa !9
  %872 = sext i32 %871 to i64
  %873 = getelementptr inbounds float, ptr %870, i64 %872
  %874 = load float, ptr %873, align 4, !tbaa !11
  %875 = load float, ptr %44, align 4, !tbaa !11
  %876 = fadd float %874, %875
  %877 = fdiv float %869, %876
  store float %877, ptr %41, align 4, !tbaa !11
  %878 = load float, ptr %40, align 4, !tbaa !11
  %879 = load float, ptr %41, align 4, !tbaa !11
  %880 = fcmp oge float %878, %879
  br i1 %880, label %881, label %883

881:                                              ; preds = %865
  %882 = load float, ptr %40, align 4, !tbaa !11
  br label %885

883:                                              ; preds = %865
  %884 = load float, ptr %41, align 4, !tbaa !11
  br label %885

885:                                              ; preds = %883, %881
  %886 = phi float [ %882, %881 ], [ %884, %883 ]
  store float %886, ptr %49, align 4, !tbaa !11
  br label %887

887:                                              ; preds = %885, %829
  br label %888

888:                                              ; preds = %887
  %889 = load i32, ptr %46, align 4, !tbaa !9
  %890 = add nsw i32 %889, 1
  store i32 %890, ptr %46, align 4, !tbaa !9
  br label %767, !llvm.loop !23

891:                                              ; preds = %767
  %892 = load float, ptr %49, align 4, !tbaa !11
  %893 = load ptr, ptr %25, align 8, !tbaa !5
  %894 = load i32, ptr %47, align 4, !tbaa !9
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds float, ptr %893, i64 %895
  store float %892, ptr %896, align 4, !tbaa !11
  %897 = load ptr, ptr %25, align 8, !tbaa !5
  %898 = load i32, ptr %47, align 4, !tbaa !9
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds float, ptr %897, i64 %899
  %901 = load float, ptr %900, align 4, !tbaa !11
  %902 = load float, ptr %59, align 4, !tbaa !11
  %903 = fcmp ogt float %901, %902
  br i1 %903, label %904, label %942

904:                                              ; preds = %891
  %905 = load ptr, ptr %25, align 8, !tbaa !5
  %906 = load i32, ptr %47, align 4, !tbaa !9
  %907 = sext i32 %906 to i64
  %908 = getelementptr inbounds float, ptr %905, i64 %907
  %909 = load float, ptr %908, align 4, !tbaa !11
  %910 = fmul float %909, 2.000000e+00
  %911 = load float, ptr %58, align 4, !tbaa !11
  %912 = fcmp ole float %910, %911
  br i1 %912, label %913, label %942

913:                                              ; preds = %904
  %914 = load i32, ptr %51, align 4, !tbaa !9
  %915 = icmp sle i32 %914, 5
  br i1 %915, label %916, label %942

916:                                              ; preds = %913
  %917 = load ptr, ptr %15, align 8, !tbaa !5
  %918 = load ptr, ptr %16, align 8, !tbaa !5
  %919 = load ptr, ptr %19, align 8, !tbaa !5
  %920 = getelementptr inbounds %struct.complex, ptr %919, i64 1
  %921 = load ptr, ptr %26, align 8, !tbaa !5
  %922 = getelementptr inbounds %struct.complex, ptr %921, i64 1
  %923 = load ptr, ptr %16, align 8, !tbaa !5
  %924 = load ptr, ptr %28, align 8, !tbaa !5
  call void @cpptrs_(ptr noundef %917, ptr noundef %918, ptr noundef @c__1, ptr noundef %920, ptr noundef %922, ptr noundef %923, ptr noundef %924)
  %925 = load ptr, ptr %16, align 8, !tbaa !5
  %926 = load ptr, ptr %26, align 8, !tbaa !5
  %927 = getelementptr inbounds %struct.complex, ptr %926, i64 1
  %928 = load ptr, ptr %22, align 8, !tbaa !5
  %929 = load i32, ptr %47, align 4, !tbaa !9
  %930 = load i32, ptr %31, align 4, !tbaa !9
  %931 = mul nsw i32 %929, %930
  %932 = add nsw i32 %931, 1
  %933 = sext i32 %932 to i64
  %934 = getelementptr inbounds %struct.complex, ptr %928, i64 %933
  call void @caxpy_(ptr noundef %925, ptr noundef @c_b1, ptr noundef %927, ptr noundef @c__1, ptr noundef %934, ptr noundef @c__1)
  %935 = load ptr, ptr %25, align 8, !tbaa !5
  %936 = load i32, ptr %47, align 4, !tbaa !9
  %937 = sext i32 %936 to i64
  %938 = getelementptr inbounds float, ptr %935, i64 %937
  %939 = load float, ptr %938, align 4, !tbaa !11
  store float %939, ptr %58, align 4, !tbaa !11
  %940 = load i32, ptr %51, align 4, !tbaa !9
  %941 = add nsw i32 %940, 1
  store i32 %941, ptr %51, align 4, !tbaa !9
  br label %221

942:                                              ; preds = %913, %904, %891
  %943 = load ptr, ptr %16, align 8, !tbaa !5
  %944 = load i32, ptr %943, align 4, !tbaa !9
  store i32 %944, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %945

945:                                              ; preds = %1060, %942
  %946 = load i32, ptr %46, align 4, !tbaa !9
  %947 = load i32, ptr %34, align 4, !tbaa !9
  %948 = icmp sle i32 %946, %947
  br i1 %948, label %949, label %1063

949:                                              ; preds = %945
  %950 = load ptr, ptr %27, align 8, !tbaa !5
  %951 = load i32, ptr %46, align 4, !tbaa !9
  %952 = sext i32 %951 to i64
  %953 = getelementptr inbounds float, ptr %950, i64 %952
  %954 = load float, ptr %953, align 4, !tbaa !11
  %955 = load float, ptr %45, align 4, !tbaa !11
  %956 = fcmp ogt float %954, %955
  br i1 %956, label %957, label %1007

957:                                              ; preds = %949
  %958 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %958, ptr %35, align 4, !tbaa !9
  %959 = load ptr, ptr %26, align 8, !tbaa !5
  %960 = load i32, ptr %35, align 4, !tbaa !9
  %961 = sext i32 %960 to i64
  %962 = getelementptr inbounds %struct.complex, ptr %959, i64 %961
  %963 = getelementptr inbounds %struct.complex, ptr %962, i32 0, i32 0
  %964 = load float, ptr %963, align 4, !tbaa !15
  store float %964, ptr %38, align 4, !tbaa !11
  %965 = load float, ptr %38, align 4, !tbaa !11
  %966 = fcmp oge float %965, 0.000000e+00
  br i1 %966, label %967, label %969

967:                                              ; preds = %957
  %968 = load float, ptr %38, align 4, !tbaa !11
  br label %972

969:                                              ; preds = %957
  %970 = load float, ptr %38, align 4, !tbaa !11
  %971 = fneg float %970
  br label %972

972:                                              ; preds = %969, %967
  %973 = phi float [ %968, %967 ], [ %971, %969 ]
  %974 = load ptr, ptr %26, align 8, !tbaa !5
  %975 = load i32, ptr %46, align 4, !tbaa !9
  %976 = sext i32 %975 to i64
  %977 = getelementptr inbounds %struct.complex, ptr %974, i64 %976
  %978 = call <2 x float> @Cf(ptr noundef %977)
  store <2 x float> %978, ptr %72, align 4
  %979 = getelementptr inbounds { float, float }, ptr %72, i32 0, i32 0
  %980 = load float, ptr %979, align 4
  %981 = getelementptr inbounds { float, float }, ptr %72, i32 0, i32 1
  %982 = load float, ptr %981, align 4
  store float %982, ptr %39, align 4, !tbaa !11
  %983 = load float, ptr %39, align 4, !tbaa !11
  %984 = fcmp oge float %983, 0.000000e+00
  br i1 %984, label %985, label %987

985:                                              ; preds = %972
  %986 = load float, ptr %39, align 4, !tbaa !11
  br label %990

987:                                              ; preds = %972
  %988 = load float, ptr %39, align 4, !tbaa !11
  %989 = fneg float %988
  br label %990

990:                                              ; preds = %987, %985
  %991 = phi float [ %986, %985 ], [ %989, %987 ]
  %992 = fadd float %973, %991
  %993 = load i32, ptr %56, align 4, !tbaa !9
  %994 = sitofp i32 %993 to float
  %995 = load float, ptr %59, align 4, !tbaa !11
  %996 = fmul float %994, %995
  %997 = load ptr, ptr %27, align 8, !tbaa !5
  %998 = load i32, ptr %46, align 4, !tbaa !9
  %999 = sext i32 %998 to i64
  %1000 = getelementptr inbounds float, ptr %997, i64 %999
  %1001 = load float, ptr %1000, align 4, !tbaa !11
  %1002 = call float @llvm.fmuladd.f32(float %996, float %1001, float %992)
  %1003 = load ptr, ptr %27, align 8, !tbaa !5
  %1004 = load i32, ptr %46, align 4, !tbaa !9
  %1005 = sext i32 %1004 to i64
  %1006 = getelementptr inbounds float, ptr %1003, i64 %1005
  store float %1002, ptr %1006, align 4, !tbaa !11
  br label %1059

1007:                                             ; preds = %949
  %1008 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1008, ptr %35, align 4, !tbaa !9
  %1009 = load ptr, ptr %26, align 8, !tbaa !5
  %1010 = load i32, ptr %35, align 4, !tbaa !9
  %1011 = sext i32 %1010 to i64
  %1012 = getelementptr inbounds %struct.complex, ptr %1009, i64 %1011
  %1013 = getelementptr inbounds %struct.complex, ptr %1012, i32 0, i32 0
  %1014 = load float, ptr %1013, align 4, !tbaa !15
  store float %1014, ptr %38, align 4, !tbaa !11
  %1015 = load float, ptr %38, align 4, !tbaa !11
  %1016 = fcmp oge float %1015, 0.000000e+00
  br i1 %1016, label %1017, label %1019

1017:                                             ; preds = %1007
  %1018 = load float, ptr %38, align 4, !tbaa !11
  br label %1022

1019:                                             ; preds = %1007
  %1020 = load float, ptr %38, align 4, !tbaa !11
  %1021 = fneg float %1020
  br label %1022

1022:                                             ; preds = %1019, %1017
  %1023 = phi float [ %1018, %1017 ], [ %1021, %1019 ]
  %1024 = load ptr, ptr %26, align 8, !tbaa !5
  %1025 = load i32, ptr %46, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds %struct.complex, ptr %1024, i64 %1026
  %1028 = call <2 x float> @Cf(ptr noundef %1027)
  store <2 x float> %1028, ptr %73, align 4
  %1029 = getelementptr inbounds { float, float }, ptr %73, i32 0, i32 0
  %1030 = load float, ptr %1029, align 4
  %1031 = getelementptr inbounds { float, float }, ptr %73, i32 0, i32 1
  %1032 = load float, ptr %1031, align 4
  store float %1032, ptr %39, align 4, !tbaa !11
  %1033 = load float, ptr %39, align 4, !tbaa !11
  %1034 = fcmp oge float %1033, 0.000000e+00
  br i1 %1034, label %1035, label %1037

1035:                                             ; preds = %1022
  %1036 = load float, ptr %39, align 4, !tbaa !11
  br label %1040

1037:                                             ; preds = %1022
  %1038 = load float, ptr %39, align 4, !tbaa !11
  %1039 = fneg float %1038
  br label %1040

1040:                                             ; preds = %1037, %1035
  %1041 = phi float [ %1036, %1035 ], [ %1039, %1037 ]
  %1042 = fadd float %1023, %1041
  %1043 = load i32, ptr %56, align 4, !tbaa !9
  %1044 = sitofp i32 %1043 to float
  %1045 = load float, ptr %59, align 4, !tbaa !11
  %1046 = fmul float %1044, %1045
  %1047 = load ptr, ptr %27, align 8, !tbaa !5
  %1048 = load i32, ptr %46, align 4, !tbaa !9
  %1049 = sext i32 %1048 to i64
  %1050 = getelementptr inbounds float, ptr %1047, i64 %1049
  %1051 = load float, ptr %1050, align 4, !tbaa !11
  %1052 = call float @llvm.fmuladd.f32(float %1046, float %1051, float %1042)
  %1053 = load float, ptr %44, align 4, !tbaa !11
  %1054 = fadd float %1052, %1053
  %1055 = load ptr, ptr %27, align 8, !tbaa !5
  %1056 = load i32, ptr %46, align 4, !tbaa !9
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds float, ptr %1055, i64 %1057
  store float %1054, ptr %1058, align 4, !tbaa !11
  br label %1059

1059:                                             ; preds = %1040, %990
  br label %1060

1060:                                             ; preds = %1059
  %1061 = load i32, ptr %46, align 4, !tbaa !9
  %1062 = add nsw i32 %1061, 1
  store i32 %1062, ptr %46, align 4, !tbaa !9
  br label %945, !llvm.loop !24

1063:                                             ; preds = %945
  store i32 0, ptr %43, align 4, !tbaa !9
  br label %1064

1064:                                             ; preds = %1214, %1063
  %1065 = load ptr, ptr %16, align 8, !tbaa !5
  %1066 = load ptr, ptr %26, align 8, !tbaa !5
  %1067 = load ptr, ptr %16, align 8, !tbaa !5
  %1068 = load i32, ptr %1067, align 4, !tbaa !9
  %1069 = add nsw i32 %1068, 1
  %1070 = sext i32 %1069 to i64
  %1071 = getelementptr inbounds %struct.complex, ptr %1066, i64 %1070
  %1072 = load ptr, ptr %26, align 8, !tbaa !5
  %1073 = getelementptr inbounds %struct.complex, ptr %1072, i64 1
  %1074 = load ptr, ptr %24, align 8, !tbaa !5
  %1075 = load i32, ptr %47, align 4, !tbaa !9
  %1076 = sext i32 %1075 to i64
  %1077 = getelementptr inbounds float, ptr %1074, i64 %1076
  %1078 = getelementptr inbounds [3 x i32], ptr %50, i64 0, i64 0
  call void @clacn2_(ptr noundef %1065, ptr noundef %1071, ptr noundef %1073, ptr noundef %1077, ptr noundef %43, ptr noundef %1078)
  %1079 = load i32, ptr %43, align 4, !tbaa !9
  %1080 = icmp ne i32 %1079, 0
  br i1 %1080, label %1081, label %1215

1081:                                             ; preds = %1064
  %1082 = load i32, ptr %43, align 4, !tbaa !9
  %1083 = icmp eq i32 %1082, 1
  br i1 %1083, label %1084, label %1147

1084:                                             ; preds = %1081
  %1085 = load ptr, ptr %15, align 8, !tbaa !5
  %1086 = load ptr, ptr %16, align 8, !tbaa !5
  %1087 = load ptr, ptr %19, align 8, !tbaa !5
  %1088 = getelementptr inbounds %struct.complex, ptr %1087, i64 1
  %1089 = load ptr, ptr %26, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.complex, ptr %1089, i64 1
  %1091 = load ptr, ptr %16, align 8, !tbaa !5
  %1092 = load ptr, ptr %28, align 8, !tbaa !5
  call void @cpptrs_(ptr noundef %1085, ptr noundef %1086, ptr noundef @c__1, ptr noundef %1088, ptr noundef %1090, ptr noundef %1091, ptr noundef %1092)
  %1093 = load ptr, ptr %16, align 8, !tbaa !5
  %1094 = load i32, ptr %1093, align 4, !tbaa !9
  store i32 %1094, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %1095

1095:                                             ; preds = %1143, %1084
  %1096 = load i32, ptr %46, align 4, !tbaa !9
  %1097 = load i32, ptr %34, align 4, !tbaa !9
  %1098 = icmp sle i32 %1096, %1097
  br i1 %1098, label %1099, label %1146

1099:                                             ; preds = %1095
  %1100 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1100, ptr %35, align 4, !tbaa !9
  %1101 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1101, ptr %36, align 4, !tbaa !9
  %1102 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1102, ptr %37, align 4, !tbaa !9
  %1103 = load ptr, ptr %27, align 8, !tbaa !5
  %1104 = load i32, ptr %36, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds float, ptr %1103, i64 %1105
  %1107 = load float, ptr %1106, align 4, !tbaa !11
  %1108 = load ptr, ptr %26, align 8, !tbaa !5
  %1109 = load i32, ptr %37, align 4, !tbaa !9
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds %struct.complex, ptr %1108, i64 %1110
  %1112 = getelementptr inbounds %struct.complex, ptr %1111, i32 0, i32 0
  %1113 = load float, ptr %1112, align 4, !tbaa !15
  %1114 = fmul float %1107, %1113
  %1115 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1114, ptr %1115, align 4, !tbaa !15
  %1116 = load ptr, ptr %27, align 8, !tbaa !5
  %1117 = load i32, ptr %36, align 4, !tbaa !9
  %1118 = sext i32 %1117 to i64
  %1119 = getelementptr inbounds float, ptr %1116, i64 %1118
  %1120 = load float, ptr %1119, align 4, !tbaa !11
  %1121 = load ptr, ptr %26, align 8, !tbaa !5
  %1122 = load i32, ptr %37, align 4, !tbaa !9
  %1123 = sext i32 %1122 to i64
  %1124 = getelementptr inbounds %struct.complex, ptr %1121, i64 %1123
  %1125 = getelementptr inbounds %struct.complex, ptr %1124, i32 0, i32 1
  %1126 = load float, ptr %1125, align 4, !tbaa !17
  %1127 = fmul float %1120, %1126
  %1128 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1127, ptr %1128, align 4, !tbaa !17
  %1129 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1130 = load float, ptr %1129, align 4, !tbaa !15
  %1131 = load ptr, ptr %26, align 8, !tbaa !5
  %1132 = load i32, ptr %35, align 4, !tbaa !9
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.complex, ptr %1131, i64 %1133
  %1135 = getelementptr inbounds %struct.complex, ptr %1134, i32 0, i32 0
  store float %1130, ptr %1135, align 4, !tbaa !15
  %1136 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1137 = load float, ptr %1136, align 4, !tbaa !17
  %1138 = load ptr, ptr %26, align 8, !tbaa !5
  %1139 = load i32, ptr %35, align 4, !tbaa !9
  %1140 = sext i32 %1139 to i64
  %1141 = getelementptr inbounds %struct.complex, ptr %1138, i64 %1140
  %1142 = getelementptr inbounds %struct.complex, ptr %1141, i32 0, i32 1
  store float %1137, ptr %1142, align 4, !tbaa !17
  br label %1143

1143:                                             ; preds = %1099
  %1144 = load i32, ptr %46, align 4, !tbaa !9
  %1145 = add nsw i32 %1144, 1
  store i32 %1145, ptr %46, align 4, !tbaa !9
  br label %1095, !llvm.loop !25

1146:                                             ; preds = %1095
  br label %1214

1147:                                             ; preds = %1081
  %1148 = load i32, ptr %43, align 4, !tbaa !9
  %1149 = icmp eq i32 %1148, 2
  br i1 %1149, label %1150, label %1213

1150:                                             ; preds = %1147
  %1151 = load ptr, ptr %16, align 8, !tbaa !5
  %1152 = load i32, ptr %1151, align 4, !tbaa !9
  store i32 %1152, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %1153

1153:                                             ; preds = %1201, %1150
  %1154 = load i32, ptr %46, align 4, !tbaa !9
  %1155 = load i32, ptr %34, align 4, !tbaa !9
  %1156 = icmp sle i32 %1154, %1155
  br i1 %1156, label %1157, label %1204

1157:                                             ; preds = %1153
  %1158 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1158, ptr %35, align 4, !tbaa !9
  %1159 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1159, ptr %36, align 4, !tbaa !9
  %1160 = load i32, ptr %46, align 4, !tbaa !9
  store i32 %1160, ptr %37, align 4, !tbaa !9
  %1161 = load ptr, ptr %27, align 8, !tbaa !5
  %1162 = load i32, ptr %36, align 4, !tbaa !9
  %1163 = sext i32 %1162 to i64
  %1164 = getelementptr inbounds float, ptr %1161, i64 %1163
  %1165 = load float, ptr %1164, align 4, !tbaa !11
  %1166 = load ptr, ptr %26, align 8, !tbaa !5
  %1167 = load i32, ptr %37, align 4, !tbaa !9
  %1168 = sext i32 %1167 to i64
  %1169 = getelementptr inbounds %struct.complex, ptr %1166, i64 %1168
  %1170 = getelementptr inbounds %struct.complex, ptr %1169, i32 0, i32 0
  %1171 = load float, ptr %1170, align 4, !tbaa !15
  %1172 = fmul float %1165, %1171
  %1173 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  store float %1172, ptr %1173, align 4, !tbaa !15
  %1174 = load ptr, ptr %27, align 8, !tbaa !5
  %1175 = load i32, ptr %36, align 4, !tbaa !9
  %1176 = sext i32 %1175 to i64
  %1177 = getelementptr inbounds float, ptr %1174, i64 %1176
  %1178 = load float, ptr %1177, align 4, !tbaa !11
  %1179 = load ptr, ptr %26, align 8, !tbaa !5
  %1180 = load i32, ptr %37, align 4, !tbaa !9
  %1181 = sext i32 %1180 to i64
  %1182 = getelementptr inbounds %struct.complex, ptr %1179, i64 %1181
  %1183 = getelementptr inbounds %struct.complex, ptr %1182, i32 0, i32 1
  %1184 = load float, ptr %1183, align 4, !tbaa !17
  %1185 = fmul float %1178, %1184
  %1186 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  store float %1185, ptr %1186, align 4, !tbaa !17
  %1187 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 0
  %1188 = load float, ptr %1187, align 4, !tbaa !15
  %1189 = load ptr, ptr %26, align 8, !tbaa !5
  %1190 = load i32, ptr %35, align 4, !tbaa !9
  %1191 = sext i32 %1190 to i64
  %1192 = getelementptr inbounds %struct.complex, ptr %1189, i64 %1191
  %1193 = getelementptr inbounds %struct.complex, ptr %1192, i32 0, i32 0
  store float %1188, ptr %1193, align 4, !tbaa !15
  %1194 = getelementptr inbounds %struct.complex, ptr %42, i32 0, i32 1
  %1195 = load float, ptr %1194, align 4, !tbaa !17
  %1196 = load ptr, ptr %26, align 8, !tbaa !5
  %1197 = load i32, ptr %35, align 4, !tbaa !9
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.complex, ptr %1196, i64 %1198
  %1200 = getelementptr inbounds %struct.complex, ptr %1199, i32 0, i32 1
  store float %1195, ptr %1200, align 4, !tbaa !17
  br label %1201

1201:                                             ; preds = %1157
  %1202 = load i32, ptr %46, align 4, !tbaa !9
  %1203 = add nsw i32 %1202, 1
  store i32 %1203, ptr %46, align 4, !tbaa !9
  br label %1153, !llvm.loop !26

1204:                                             ; preds = %1153
  %1205 = load ptr, ptr %15, align 8, !tbaa !5
  %1206 = load ptr, ptr %16, align 8, !tbaa !5
  %1207 = load ptr, ptr %19, align 8, !tbaa !5
  %1208 = getelementptr inbounds %struct.complex, ptr %1207, i64 1
  %1209 = load ptr, ptr %26, align 8, !tbaa !5
  %1210 = getelementptr inbounds %struct.complex, ptr %1209, i64 1
  %1211 = load ptr, ptr %16, align 8, !tbaa !5
  %1212 = load ptr, ptr %28, align 8, !tbaa !5
  call void @cpptrs_(ptr noundef %1205, ptr noundef %1206, ptr noundef @c__1, ptr noundef %1208, ptr noundef %1210, ptr noundef %1211, ptr noundef %1212)
  br label %1213

1213:                                             ; preds = %1204, %1147
  br label %1214

1214:                                             ; preds = %1213, %1146
  br label %1064

1215:                                             ; preds = %1064
  store float 0.000000e+00, ptr %58, align 4, !tbaa !11
  %1216 = load ptr, ptr %16, align 8, !tbaa !5
  %1217 = load i32, ptr %1216, align 4, !tbaa !9
  store i32 %1217, ptr %34, align 4, !tbaa !9
  store i32 1, ptr %46, align 4, !tbaa !9
  br label %1218

1218:                                             ; preds = %1276, %1215
  %1219 = load i32, ptr %46, align 4, !tbaa !9
  %1220 = load i32, ptr %34, align 4, !tbaa !9
  %1221 = icmp sle i32 %1219, %1220
  br i1 %1221, label %1222, label %1279

1222:                                             ; preds = %1218
  %1223 = load i32, ptr %46, align 4, !tbaa !9
  %1224 = load i32, ptr %47, align 4, !tbaa !9
  %1225 = load i32, ptr %31, align 4, !tbaa !9
  %1226 = mul nsw i32 %1224, %1225
  %1227 = add nsw i32 %1223, %1226
  store i32 %1227, ptr %35, align 4, !tbaa !9
  %1228 = load float, ptr %58, align 4, !tbaa !11
  store float %1228, ptr %40, align 4, !tbaa !11
  %1229 = load ptr, ptr %22, align 8, !tbaa !5
  %1230 = load i32, ptr %35, align 4, !tbaa !9
  %1231 = sext i32 %1230 to i64
  %1232 = getelementptr inbounds %struct.complex, ptr %1229, i64 %1231
  %1233 = getelementptr inbounds %struct.complex, ptr %1232, i32 0, i32 0
  %1234 = load float, ptr %1233, align 4, !tbaa !15
  store float %1234, ptr %38, align 4, !tbaa !11
  %1235 = load float, ptr %38, align 4, !tbaa !11
  %1236 = fcmp oge float %1235, 0.000000e+00
  br i1 %1236, label %1237, label %1239

1237:                                             ; preds = %1222
  %1238 = load float, ptr %38, align 4, !tbaa !11
  br label %1242

1239:                                             ; preds = %1222
  %1240 = load float, ptr %38, align 4, !tbaa !11
  %1241 = fneg float %1240
  br label %1242

1242:                                             ; preds = %1239, %1237
  %1243 = phi float [ %1238, %1237 ], [ %1241, %1239 ]
  %1244 = load ptr, ptr %22, align 8, !tbaa !5
  %1245 = load i32, ptr %46, align 4, !tbaa !9
  %1246 = load i32, ptr %47, align 4, !tbaa !9
  %1247 = load i32, ptr %31, align 4, !tbaa !9
  %1248 = mul nsw i32 %1246, %1247
  %1249 = add nsw i32 %1245, %1248
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds %struct.complex, ptr %1244, i64 %1250
  %1252 = call <2 x float> @Cf(ptr noundef %1251)
  store <2 x float> %1252, ptr %74, align 4
  %1253 = getelementptr inbounds { float, float }, ptr %74, i32 0, i32 0
  %1254 = load float, ptr %1253, align 4
  %1255 = getelementptr inbounds { float, float }, ptr %74, i32 0, i32 1
  %1256 = load float, ptr %1255, align 4
  store float %1256, ptr %39, align 4, !tbaa !11
  %1257 = load float, ptr %39, align 4, !tbaa !11
  %1258 = fcmp oge float %1257, 0.000000e+00
  br i1 %1258, label %1259, label %1261

1259:                                             ; preds = %1242
  %1260 = load float, ptr %39, align 4, !tbaa !11
  br label %1264

1261:                                             ; preds = %1242
  %1262 = load float, ptr %39, align 4, !tbaa !11
  %1263 = fneg float %1262
  br label %1264

1264:                                             ; preds = %1261, %1259
  %1265 = phi float [ %1260, %1259 ], [ %1263, %1261 ]
  %1266 = fadd float %1243, %1265
  store float %1266, ptr %41, align 4, !tbaa !11
  %1267 = load float, ptr %40, align 4, !tbaa !11
  %1268 = load float, ptr %41, align 4, !tbaa !11
  %1269 = fcmp oge float %1267, %1268
  br i1 %1269, label %1270, label %1272

1270:                                             ; preds = %1264
  %1271 = load float, ptr %40, align 4, !tbaa !11
  br label %1274

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

1274:                                             ; preds = %1272, %1270
  %1275 = phi float [ %1271, %1270 ], [ %1273, %1272 ]
  store float %1275, ptr %58, align 4, !tbaa !11
  br label %1276

1276:                                             ; preds = %1274
  %1277 = load i32, ptr %46, align 4, !tbaa !9
  %1278 = add nsw i32 %1277, 1
  store i32 %1278, ptr %46, align 4, !tbaa !9
  br label %1218, !llvm.loop !27

1279:                                             ; preds = %1218
  %1280 = load float, ptr %58, align 4, !tbaa !11
  %1281 = fcmp une float %1280, 0.000000e+00
  br i1 %1281, label %1282, label %1290

1282:                                             ; preds = %1279
  %1283 = load float, ptr %58, align 4, !tbaa !11
  %1284 = load ptr, ptr %24, align 8, !tbaa !5
  %1285 = load i32, ptr %47, align 4, !tbaa !9
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds float, ptr %1284, i64 %1286
  %1288 = load float, ptr %1287, align 4, !tbaa !11
  %1289 = fdiv float %1288, %1283
  store float %1289, ptr %1287, align 4, !tbaa !11
  br label %1290

1290:                                             ; preds = %1282, %1279
  br label %1291

1291:                                             ; preds = %1290
  %1292 = load i32, ptr %47, align 4, !tbaa !9
  %1293 = add nsw i32 %1292, 1
  store i32 %1293, ptr %47, align 4, !tbaa !9
  br label %216, !llvm.loop !28

1294:                                             ; preds = %216
  store i32 1, ptr %60, align 4
  br label %1295

1295:                                             ; preds = %1294, %200, %168
  call void @llvm.lifetime.end.p0(i64 4, ptr %59) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %56) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %54) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %52) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #5
  call void @llvm.lifetime.end.p0(i64 12, 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 4, ptr %44) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %43) #5
  call void @llvm.lifetime.end.p0(i64 8, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #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 @cpptrs_(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 @cpprfs_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef readonly %6, ptr noundef %7, ptr nocapture noundef readonly %8, ptr noundef %9, ptr nocapture noundef %10, ptr noundef %11, ptr nocapture noundef %12, ptr noundef %13) local_unnamed_addr #0 {
  %15 = ptrtoint ptr %9 to i64
  %16 = ptrtoint ptr %10 to i64
  %17 = alloca i32, align 4
  %18 = alloca %struct.complex, align 8
  %19 = alloca i32, align 4
  %20 = alloca [3 x i32], align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #6
  %21 = getelementptr inbounds i8, ptr %3, i64 -8
  %22 = load i32, ptr %6, align 4, !tbaa !5
  %narrow = xor i32 %22, -1
  %23 = sext i32 %narrow to i64
  %24 = getelementptr inbounds %struct.complex, ptr %5, i64 %23
  %25 = load i32, ptr %8, align 4, !tbaa !5
  %narrow475 = xor i32 %25, -1
  %26 = sext i32 %narrow475 to i64
  %27 = getelementptr inbounds %struct.complex, ptr %7, i64 %26
  %28 = getelementptr inbounds i8, ptr %9, i64 -4
  %29 = getelementptr inbounds i8, ptr %10, i64 -4
  %30 = getelementptr inbounds i8, ptr %11, i64 -8
  %31 = getelementptr inbounds i8, ptr %12, i64 -4
  store i32 0, ptr %13, align 4, !tbaa !5
  %32 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %.not = icmp eq i32 %32, 0
  br i1 %.not, label %33, label %35

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

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

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

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

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

47:                                               ; preds = %44
  %.pr = load i32, ptr %13, align 4, !tbaa !5
  %.not477 = icmp eq i32 %.pr, 0
  br i1 %.not477, label %51, label %.thread

.thread.sink.split:                               ; preds = %44, %41, %38, %35, %33
  %.sink = phi i32 [ -1, %33 ], [ -2, %35 ], [ -3, %38 ], [ -7, %41 ], [ -9, %44 ]
  store i32 %.sink, ptr %13, align 4, !tbaa !5
  br label %.thread

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

51:                                               ; preds = %47
  %52 = icmp eq i32 %36, 0
  %.not490566 = icmp eq i32 %39, 0
  br i1 %52, label %54, label %53

53:                                               ; preds = %51
  br i1 %.not490566, label %.loopexit, label %77

54:                                               ; preds = %51
  br i1 %.not490566, label %.loopexit, label %.lr.ph569.preheader

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

vector.ph717:                                     ; preds = %.lr.ph569.preheader
  %n.vec719 = and i64 %56, 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 ]
  %58 = getelementptr float, ptr %9, i64 %index723
  %59 = getelementptr inbounds i8, ptr %58, i64 16
  store <4 x float> zeroinitializer, ptr %58, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %59, align 4, !tbaa !9
  %60 = getelementptr float, ptr %10, i64 %index723
  %61 = getelementptr inbounds i8, ptr %60, i64 16
  store <4 x float> zeroinitializer, ptr %60, align 4, !tbaa !9
  store <4 x float> zeroinitializer, ptr %61, align 4, !tbaa !9
  %index.next725 = add nuw i64 %index723, 8
  %62 = icmp eq i64 %index.next725, %n.vec719
  br i1 %62, label %middle.block714, label %vector.body722, !llvm.loop !11

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

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

.lr.ph569.prol:                                   ; preds = %.lr.ph569.preheader728, %.lr.ph569.prol
  %indvars.iv640.prol = phi i64 [ %indvars.iv.next641.prol, %.lr.ph569.prol ], [ %indvars.iv640.ph, %.lr.ph569.preheader728 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph569.prol ], [ 0, %.lr.ph569.preheader728 ]
  %66 = getelementptr inbounds float, ptr %28, i64 %indvars.iv640.prol
  store float 0.000000e+00, ptr %66, align 4, !tbaa !9
  %67 = getelementptr inbounds float, ptr %29, i64 %indvars.iv640.prol
  store float 0.000000e+00, ptr %67, 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.ph569.prol.loopexit, label %.lr.ph569.prol, !llvm.loop !15

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

.lr.ph569:                                        ; preds = %.lr.ph569.prol.loopexit, %.lr.ph569
  %indvars.iv640 = phi i64 [ %indvars.iv.next641.3, %.lr.ph569 ], [ %indvars.iv640.unr, %.lr.ph569.prol.loopexit ]
  %69 = getelementptr inbounds float, ptr %28, i64 %indvars.iv640
  store float 0.000000e+00, ptr %69, align 4, !tbaa !9
  %70 = getelementptr inbounds float, ptr %29, i64 %indvars.iv640
  store float 0.000000e+00, ptr %70, align 4, !tbaa !9
  %71 = getelementptr float, ptr %9, 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
  %indvars.iv.next641.1 = add nuw nsw i64 %indvars.iv640, 2
  %73 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.next641.1
  store float 0.000000e+00, ptr %73, align 4, !tbaa !9
  %74 = getelementptr inbounds float, ptr %29, i64 %indvars.iv.next641.1
  store float 0.000000e+00, ptr %74, align 4, !tbaa !9
  %indvars.iv.next641.2 = add nuw nsw i64 %indvars.iv640, 3
  %75 = getelementptr inbounds float, ptr %28, i64 %indvars.iv.next641.2
  store float 0.000000e+00, ptr %75, align 4, !tbaa !9
  %76 = getelementptr inbounds float, ptr %29, i64 %indvars.iv.next641.2
  store float 0.000000e+00, ptr %76, 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.ph569, !llvm.loop !17

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

.preheader.lr.ph:                                 ; preds = %77
  %invariant.gep533 = getelementptr i8, ptr %27, i64 8
  %invariant.gep = getelementptr i8, ptr %3, i64 -16
  %85 = fmul float %79, %81
  %86 = sext i32 %22 to i64
  %87 = sext i32 %25 to i64
  %88 = zext nneg i32 %84 to i64
  %scevgep = getelementptr i8, ptr %11, i64 -8
  %scevgep684 = getelementptr i8, ptr %12, i64 -4
  %scevgep688 = getelementptr i8, ptr %11, i64 -8
  %scevgep690 = getelementptr i8, ptr %12, i64 -4
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge560.thread
  %indvars.iv637 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next638, %._crit_edge560.thread ]
  %89 = getelementptr inbounds float, ptr %29, i64 %indvars.iv637
  %90 = mul nsw i64 %indvars.iv637, %86
  %gep563 = getelementptr %struct.complex, ptr %invariant.gep562, i64 %90
  %91 = mul nsw i64 %indvars.iv637, %87
  %gep534 = getelementptr %struct.complex, ptr %invariant.gep533, i64 %91
  %invariant.gep659 = getelementptr %struct.complex, ptr %24, i64 %90
  %invariant.gep663 = getelementptr %struct.complex, ptr %27, i64 %91
  %invariant.gep661 = getelementptr %struct.complex, ptr %27, i64 %91
  %invariant.gep667 = getelementptr %struct.complex, ptr %27, i64 %91
  %invariant.gep665 = getelementptr %struct.complex, ptr %27, i64 %91
  br label %92

92:                                               ; preds = %.preheader, %254
  %.0463 = phi i32 [ %256, %254 ], [ 1, %.preheader ]
  %.0 = phi float [ %255, %254 ], [ 3.000000e+00, %.preheader ]
  call void @ccopy_(ptr noundef nonnull %1, ptr noundef %gep563, ptr noundef nonnull @c__1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %18, align 8, !tbaa !9
  call void @chpmv_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull %18, ptr noundef %3, ptr noundef %gep534, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %11, ptr noundef nonnull @c__1) #6
  %93 = load i32, ptr %1, align 4, !tbaa !5
  %.not479499 = icmp slt i32 %93, 1
  br i1 %.not479499, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %92
  %94 = add nuw i32 %93, 1
  %wide.trip.count = zext i32 %94 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
  %95 = load float, ptr %gep660, align 4, !tbaa !18
  %96 = fcmp oge float %95, 0.000000e+00
  %97 = fneg float %95
  %98 = select i1 %96, float %95, float %97
  %99 = call <2 x float> @Cf(ptr noundef nonnull %gep660)
  %.sroa.014.4.vec.extract = extractelement <2 x float> %99, i64 1
  %100 = fcmp oge float %.sroa.014.4.vec.extract, 0.000000e+00
  %101 = fneg float %.sroa.014.4.vec.extract
  %102 = select i1 %100, float %.sroa.014.4.vec.extract, float %101
  %103 = fadd float %98, %102
  %104 = getelementptr inbounds float, ptr %31, i64 %indvars.iv
  store float %103, ptr %104, 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, %92
  %105 = load i32, ptr %1, align 4, !tbaa !5
  %.not480521 = icmp slt i32 %105, 1
  br i1 %.not, label %161, label %106

106:                                              ; preds = %._crit_edge
  br i1 %.not480521, label %._crit_edge531, label %.lr.ph512.preheader

.lr.ph512.preheader:                              ; preds = %106
  %107 = add nuw i32 %105, 1
  %wide.trip.count594 = zext i32 %107 to i64
  br label %.lr.ph512

.lr.ph512:                                        ; preds = %.lr.ph512.preheader, %._crit_edge507
  %indvars.iv591 = phi i64 [ 1, %.lr.ph512.preheader ], [ %indvars.iv.next592, %._crit_edge507 ]
  %indvars.iv588 = phi i32 [ 1, %.lr.ph512.preheader ], [ %indvars.iv.next589, %._crit_edge507 ]
  %indvars.iv586 = phi i32 [ 2, %.lr.ph512.preheader ], [ %indvars.iv.next587, %._crit_edge507 ]
  %.0457510 = phi i32 [ 1, %.lr.ph512.preheader ], [ %151, %._crit_edge507 ]
  %gep664 = getelementptr %struct.complex, ptr %invariant.gep663, i64 %indvars.iv591
  %108 = load float, ptr %gep664, align 4, !tbaa !18
  %109 = fcmp oge float %108, 0.000000e+00
  %110 = fneg float %108
  %111 = select i1 %109, float %108, float %110
  %112 = call <2 x float> @Cf(ptr noundef nonnull %gep664)
  %.sroa.013.4.vec.extract = extractelement <2 x float> %112, i64 1
  %113 = fcmp oge float %.sroa.013.4.vec.extract, 0.000000e+00
  %114 = fneg float %.sroa.013.4.vec.extract
  %115 = select i1 %113, float %.sroa.013.4.vec.extract, float %114
  %116 = fadd float %111, %115
  %.not489.not501 = icmp ugt i64 %indvars.iv591, 1
  br i1 %.not489.not501, label %.lr.ph506.preheader, label %._crit_edge507

.lr.ph506.preheader:                              ; preds = %.lr.ph512
  %117 = zext i32 %.0457510 to i64
  br label %.lr.ph506

.lr.ph506:                                        ; preds = %.lr.ph506.preheader, %.lr.ph506
  %indvars.iv581 = phi i64 [ %117, %.lr.ph506.preheader ], [ %indvars.iv.next582, %.lr.ph506 ]
  %indvars.iv579 = phi i64 [ 1, %.lr.ph506.preheader ], [ %indvars.iv.next580, %.lr.ph506 ]
  %.0464502 = phi float [ 0.000000e+00, %.lr.ph506.preheader ], [ %149, %.lr.ph506 ]
  %118 = getelementptr inbounds %struct.complex, ptr %21, i64 %indvars.iv581
  %119 = load float, ptr %118, align 4, !tbaa !18
  %120 = fcmp oge float %119, 0.000000e+00
  %121 = fneg float %119
  %122 = select i1 %120, float %119, float %121
  %123 = call <2 x float> @Cf(ptr noundef nonnull %118)
  %.sroa.012.4.vec.extract = extractelement <2 x float> %123, i64 1
  %124 = fcmp oge float %.sroa.012.4.vec.extract, 0.000000e+00
  %125 = fneg float %.sroa.012.4.vec.extract
  %126 = select i1 %124, float %.sroa.012.4.vec.extract, float %125
  %127 = fadd float %122, %126
  %128 = getelementptr inbounds float, ptr %31, i64 %indvars.iv579
  %129 = load float, ptr %128, align 4, !tbaa !9
  %130 = call float @llvm.fmuladd.f32(float %127, float %116, float %129)
  store float %130, ptr %128, align 4, !tbaa !9
  %131 = load float, ptr %118, align 4, !tbaa !18
  %132 = fcmp oge float %131, 0.000000e+00
  %133 = fneg float %131
  %134 = select i1 %132, float %131, float %133
  %135 = call <2 x float> @Cf(ptr noundef nonnull %118)
  %.sroa.011.4.vec.extract = extractelement <2 x float> %135, i64 1
  %136 = fcmp oge float %.sroa.011.4.vec.extract, 0.000000e+00
  %137 = fneg float %.sroa.011.4.vec.extract
  %138 = select i1 %136, float %.sroa.011.4.vec.extract, float %137
  %139 = fadd float %134, %138
  %gep662 = getelementptr %struct.complex, ptr %invariant.gep661, i64 %indvars.iv579
  %140 = load float, ptr %gep662, align 4, !tbaa !18
  %141 = fcmp oge float %140, 0.000000e+00
  %142 = fneg float %140
  %143 = select i1 %141, float %140, float %142
  %144 = call <2 x float> @Cf(ptr noundef nonnull %gep662)
  %.sroa.010.4.vec.extract = extractelement <2 x float> %144, i64 1
  %145 = fcmp oge float %.sroa.010.4.vec.extract, 0.000000e+00
  %146 = fneg float %.sroa.010.4.vec.extract
  %147 = select i1 %145, float %.sroa.010.4.vec.extract, float %146
  %148 = fadd float %143, %147
  %149 = call float @llvm.fmuladd.f32(float %139, float %148, float %.0464502)
  %indvars.iv.next582 = add nuw nsw i64 %indvars.iv581, 1
  %indvars.iv.next580 = add nuw nsw i64 %indvars.iv579, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next582 to i32
  %exitcond590.not = icmp eq i32 %indvars.iv588, %lftr.wideiv
  br i1 %exitcond590.not, label %._crit_edge507, label %.lr.ph506, !llvm.loop !21

._crit_edge507:                                   ; preds = %.lr.ph506, %.lr.ph512
  %.0464.lcssa = phi float [ 0.000000e+00, %.lr.ph512 ], [ %149, %.lr.ph506 ]
  %150 = trunc nuw nsw i64 %indvars.iv591 to i32
  %151 = add nuw nsw i32 %.0457510, %150
  %152 = getelementptr inbounds float, ptr %31, i64 %indvars.iv591
  %153 = load float, ptr %152, align 4, !tbaa !9
  %154 = zext nneg i32 %151 to i64
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %154
  %155 = load float, ptr %gep, align 4, !tbaa !18
  %156 = fcmp oge float %155, 0.000000e+00
  %157 = fneg float %155
  %158 = select i1 %156, float %155, float %157
  %159 = call float @llvm.fmuladd.f32(float %158, float %116, float %153)
  %160 = fadd float %.0464.lcssa, %159
  store float %160, ptr %152, align 4, !tbaa !9
  %indvars.iv.next592 = add nuw nsw i64 %indvars.iv591, 1
  %indvars.iv.next587 = add nuw i32 %indvars.iv586, 1
  %indvars.iv.next589 = add i32 %indvars.iv588, %indvars.iv586
  %exitcond595.not = icmp eq i64 %indvars.iv.next592, %wide.trip.count594
  br i1 %exitcond595.not, label %.loopexit494.loopexit570, label %.lr.ph512, !llvm.loop !22

161:                                              ; preds = %._crit_edge
  br i1 %.not480521, label %._crit_edge531, label %.lr.ph525.preheader

.lr.ph525.preheader:                              ; preds = %161
  %162 = add nuw i32 %105, 1
  %wide.trip.count610 = zext i32 %162 to i64
  br label %.lr.ph525

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

.lr.ph518.preheader:                              ; preds = %.lr.ph525
  %183 = sext i32 %indvars.iv596 to i64
  %184 = add i32 %181, 1
  br label %.lr.ph518

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

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

._crit_edge519:                                   ; preds = %._crit_edge519.loopexit, %.lr.ph525
  %217 = phi i32 [ %181, %.lr.ph525 ], [ %.pre645, %._crit_edge519.loopexit ]
  %218 = phi float [ %180, %.lr.ph525 ], [ %.pre, %._crit_edge519.loopexit ]
  %.1465.lcssa = phi float [ 0.000000e+00, %.lr.ph525 ], [ %216, %._crit_edge519.loopexit ]
  %219 = fadd float %.1465.lcssa, %218
  store float %219, ptr %178, align 4, !tbaa !9
  %220 = trunc nuw nsw i64 %indvars.iv607 to i32
  %reass.sub = sub i32 %.1458523, %220
  %221 = add i32 %reass.sub, 1
  %222 = add i32 %221, %217
  %indvars.iv.next597 = add nuw i32 %indvars.iv596, 1
  %exitcond611.not = icmp eq i64 %indvars.iv.next608, %wide.trip.count610
  br i1 %exitcond611.not, label %.loopexit494, label %.lr.ph525, !llvm.loop !24

.loopexit494.loopexit570:                         ; preds = %._crit_edge507
  %.pre646 = load i32, ptr %1, align 4, !tbaa !5
  br label %.loopexit494

.loopexit494:                                     ; preds = %._crit_edge519, %.loopexit494.loopexit570
  %223 = phi i32 [ %.pre646, %.loopexit494.loopexit570 ], [ %217, %._crit_edge519 ]
  %.not483526 = icmp slt i32 %223, 1
  br i1 %.not483526, label %._crit_edge531, label %.lr.ph530.preheader

.lr.ph530.preheader:                              ; preds = %.loopexit494
  %224 = add nuw i32 %223, 1
  %wide.trip.count615 = zext i32 %224 to i64
  br label %.lr.ph530

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

238:                                              ; preds = %.lr.ph530
  %239 = load float, ptr %225, align 4, !tbaa !9
  %240 = fdiv float %237, %239
  br label %246

241:                                              ; preds = %.lr.ph530
  %242 = fadd float %82, %237
  %243 = load float, ptr %225, align 4, !tbaa !9
  %244 = fadd float %82, %243
  %245 = fdiv float %242, %244
  br label %246

246:                                              ; preds = %238, %241
  %.sink673 = phi float [ %240, %238 ], [ %245, %241 ]
  %247 = fcmp oge float %.2466527, %.sink673
  %248 = select i1 %247, float %.2466527, 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_edge531, label %.lr.ph530, !llvm.loop !25

._crit_edge531:                                   ; preds = %246, %161, %106, %.loopexit494
  %.2466.lcssa = phi float [ 0.000000e+00, %.loopexit494 ], [ 0.000000e+00, %106 ], [ 0.000000e+00, %161 ], [ %248, %246 ]
  store float %.2466.lcssa, ptr %89, align 4, !tbaa !9
  %249 = fcmp ogt float %.2466.lcssa, %79
  br i1 %249, label %250, label %257

250:                                              ; preds = %._crit_edge531
  %251 = fmul float %.2466.lcssa, 2.000000e+00
  %252 = fcmp ole float %251, %.0
  %253 = icmp ult i32 %.0463, 6
  %or.cond = select i1 %252, i1 %253, i1 false
  br i1 %or.cond, label %254, label %257

254:                                              ; preds = %250
  call void @cpptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %11, ptr noundef nonnull %1, ptr noundef nonnull %13) #6
  call void @caxpy_(ptr noundef nonnull %1, ptr noundef nonnull @c_b1, ptr noundef %11, ptr noundef nonnull @c__1, ptr noundef %gep534, ptr noundef nonnull @c__1) #6
  %255 = load float, ptr %89, align 4, !tbaa !9
  %256 = add nuw nsw i32 %.0463, 1
  br label %92

257:                                              ; preds = %250, %._crit_edge531
  %258 = load i32, ptr %1, align 4, !tbaa !5
  %.not484535 = icmp slt i32 %258, 1
  br i1 %.not484535, label %._crit_edge539, label %.lr.ph538.preheader

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

.lr.ph538:                                        ; preds = %.lr.ph538.preheader, %.lr.ph538
  %indvars.iv617 = phi i64 [ 1, %.lr.ph538.preheader ], [ %indvars.iv.next618, %.lr.ph538 ]
  %260 = getelementptr inbounds float, ptr %31, i64 %indvars.iv617
  %261 = load float, ptr %260, align 4, !tbaa !9
  %262 = fcmp ogt float %261, %83
  %263 = getelementptr inbounds %struct.complex, ptr %30, i64 %indvars.iv617
  %264 = load float, ptr %263, align 4, !tbaa !18
  %265 = fcmp oge float %264, 0.000000e+00
  %266 = fneg float %264
  %267 = select i1 %265, float %264, float %266
  %268 = call <2 x float> @Cf(ptr noundef nonnull %263)
  %.sroa.03.4.vec.extract = extractelement <2 x float> %268, i64 1
  %269 = fcmp oge float %.sroa.03.4.vec.extract, 0.000000e+00
  %270 = fneg float %.sroa.03.4.vec.extract
  %271 = select i1 %269, float %.sroa.03.4.vec.extract, float %270
  %272 = fadd float %267, %271
  %273 = load float, ptr %260, align 4, !tbaa !9
  %274 = call float @llvm.fmuladd.f32(float %85, float %273, float %272)
  %275 = fadd float %82, %274
  %storemerge = select i1 %262, float %274, float %275
  store float %storemerge, ptr %260, 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_edge539, label %.lr.ph538, !llvm.loop !26

._crit_edge539:                                   ; preds = %.lr.ph538, %257
  store i32 0, ptr %19, align 4, !tbaa !5
  %276 = getelementptr inbounds float, ptr %28, i64 %indvars.iv637
  br label %.loopexit493

.loopexit493:                                     ; preds = %.loopexit493.backedge, %._crit_edge539
  %277 = load i32, ptr %1, align 4, !tbaa !5
  %278 = sext i32 %277 to i64
  %gep554 = getelementptr %struct.complex, ptr %11, i64 %278
  call void @clacn2_(ptr noundef nonnull %1, ptr noundef %gep554, ptr noundef %11, ptr noundef nonnull %276, ptr noundef nonnull %19, ptr noundef nonnull %20) #6
  %279 = load i32, ptr %19, align 4, !tbaa !5
  switch i32 %279, label %.loopexit493.backedge [
    i32 0, label %355
    i32 1, label %280
    i32 2, label %316
  ]

280:                                              ; preds = %.loopexit493
  call void @cpptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %11, ptr noundef nonnull %1, ptr noundef nonnull %13) #6
  %281 = load i32, ptr %1, align 4, !tbaa !5
  %.not488547 = icmp slt i32 %281, 1
  br i1 %.not488547, label %.loopexit493.backedge, label %.lr.ph550.preheader

.loopexit493.backedge:                            ; preds = %280, %..loopexit493_crit_edge, %.loopexit493, %353
  br label %.loopexit493

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

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

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

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

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %283
  %291 = shufflevector <2 x float> %288, <2 x float> %289, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n, label %..loopexit493_crit_edge, label %.lr.ph550.preheader729

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

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

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

.lr.ph550:                                        ; preds = %.lr.ph550.prol.loopexit, %.lr.ph550
  %indvars.iv627 = phi i64 [ %indvars.iv.next628.1, %.lr.ph550 ], [ %indvars.iv627.unr, %.lr.ph550.prol.loopexit ]
  %302 = getelementptr inbounds float, ptr %31, i64 %indvars.iv627
  %303 = load float, ptr %302, align 4, !tbaa !9
  %304 = getelementptr inbounds %struct.complex, ptr %30, i64 %indvars.iv627
  %305 = load <2 x float>, ptr %304, align 4, !tbaa !9
  %306 = insertelement <2 x float> poison, float %303, i64 0
  %307 = shufflevector <2 x float> %306, <2 x float> poison, <2 x i32> zeroinitializer
  %308 = fmul <2 x float> %307, %305
  store <2 x float> %308, ptr %304, align 4, !tbaa !9
  %309 = getelementptr float, ptr %12, i64 %indvars.iv627
  %310 = load float, ptr %309, align 4, !tbaa !9
  %311 = getelementptr %struct.complex, ptr %11, i64 %indvars.iv627
  %312 = load <2 x float>, ptr %311, align 4, !tbaa !9
  %313 = insertelement <2 x float> poison, float %310, i64 0
  %314 = shufflevector <2 x float> %313, <2 x float> poison, <2 x i32> zeroinitializer
  %315 = fmul <2 x float> %314, %312
  store <2 x float> %315, ptr %311, 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 %..loopexit493_crit_edge, label %.lr.ph550, !llvm.loop !31

316:                                              ; preds = %.loopexit493
  %317 = load i32, ptr %1, align 4, !tbaa !5
  %.not487540 = icmp slt i32 %317, 1
  br i1 %.not487540, label %353, label %.lr.ph543.preheader

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

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

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

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

middle.block695:                                  ; preds = %vector.body703
  %cmp.n712 = icmp eq i64 %n.vec700, %319
  %327 = shufflevector <2 x float> %324, <2 x float> %325, <2 x i32> <i32 1, i32 3>
  br i1 %cmp.n712, label %._crit_edge544, label %.lr.ph543.preheader730

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

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

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

.lr.ph543:                                        ; preds = %.lr.ph543.prol.loopexit, %.lr.ph543
  %indvars.iv622 = phi i64 [ %indvars.iv.next623.1, %.lr.ph543 ], [ %indvars.iv622.unr, %.lr.ph543.prol.loopexit ]
  %338 = getelementptr inbounds float, ptr %31, i64 %indvars.iv622
  %339 = load float, ptr %338, align 4, !tbaa !9
  %340 = getelementptr inbounds %struct.complex, ptr %30, i64 %indvars.iv622
  %341 = load <2 x float>, ptr %340, align 4, !tbaa !9
  %342 = insertelement <2 x float> poison, float %339, i64 0
  %343 = shufflevector <2 x float> %342, <2 x float> poison, <2 x i32> zeroinitializer
  %344 = fmul <2 x float> %343, %341
  store <2 x float> %344, ptr %340, align 4, !tbaa !9
  %345 = getelementptr float, ptr %12, i64 %indvars.iv622
  %346 = load float, ptr %345, align 4, !tbaa !9
  %347 = getelementptr %struct.complex, ptr %11, i64 %indvars.iv622
  %348 = load <2 x float>, ptr %347, align 4, !tbaa !9
  %349 = insertelement <2 x float> poison, float %346, i64 0
  %350 = shufflevector <2 x float> %349, <2 x float> poison, <2 x i32> zeroinitializer
  %351 = fmul <2 x float> %350, %348
  store <2 x float> %351, ptr %347, 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_edge544, label %.lr.ph543, !llvm.loop !36

._crit_edge544:                                   ; preds = %.lr.ph543.prol.loopexit, %.lr.ph543, %middle.block695
  %352 = phi <2 x float> [ %327, %middle.block695 ], [ %.lcssa737.unr, %.lr.ph543.prol.loopexit ], [ %351, %.lr.ph543 ]
  store <2 x float> %352, ptr %18, align 8, !tbaa !9
  br label %353

353:                                              ; preds = %._crit_edge544, %316
  call void @cpptrs_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef %11, ptr noundef nonnull %1, ptr noundef nonnull %13) #6
  br label %.loopexit493.backedge

..loopexit493_crit_edge:                          ; preds = %.lr.ph550.prol.loopexit, %.lr.ph550, %middle.block
  %354 = phi <2 x float> [ %291, %middle.block ], [ %.lcssa740.unr, %.lr.ph550.prol.loopexit ], [ %315, %.lr.ph550 ]
  store <2 x float> %354, ptr %18, align 8, !tbaa !9
  br label %.loopexit493.backedge

355:                                              ; preds = %.loopexit493
  %356 = load i32, ptr %1, align 4, !tbaa !5
  %.not486555 = icmp slt i32 %356, 1
  br i1 %.not486555, label %._crit_edge560.thread, label %.lr.ph559.preheader

.lr.ph559.preheader:                              ; preds = %355
  %357 = add nuw i32 %356, 1
  %wide.trip.count635 = zext i32 %357 to i64
  %invariant.gep669 = getelementptr %struct.complex, ptr %27, i64 %91
  br label %.lr.ph559

.lr.ph559:                                        ; preds = %.lr.ph559.preheader, %.lr.ph559
  %indvars.iv632 = phi i64 [ 1, %.lr.ph559.preheader ], [ %indvars.iv.next633, %.lr.ph559 ]
  %.1557 = phi float [ 0.000000e+00, %.lr.ph559.preheader ], [ %368, %.lr.ph559 ]
  %gep670 = getelementptr %struct.complex, ptr %invariant.gep669, i64 %indvars.iv632
  %358 = load float, ptr %gep670, align 4, !tbaa !18
  %359 = fcmp oge float %358, 0.000000e+00
  %360 = fneg float %358
  %361 = select i1 %359, float %358, float %360
  %362 = call <2 x float> @Cf(ptr noundef nonnull %gep670)
  %.sroa.0.4.vec.extract = extractelement <2 x float> %362, i64 1
  %363 = fcmp oge float %.sroa.0.4.vec.extract, 0.000000e+00
  %364 = fneg float %.sroa.0.4.vec.extract
  %365 = select i1 %363, float %.sroa.0.4.vec.extract, float %364
  %366 = fadd float %361, %365
  %367 = fcmp oge float %.1557, %366
  %368 = select i1 %367, float %.1557, float %366
  %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_edge560, label %.lr.ph559, !llvm.loop !37

._crit_edge560:                                   ; preds = %.lr.ph559
  %369 = fcmp une float %368, 0.000000e+00
  br i1 %369, label %370, label %._crit_edge560.thread

370:                                              ; preds = %._crit_edge560
  %371 = load float, ptr %276, align 4, !tbaa !9
  %372 = fdiv float %371, %368
  store float %372, ptr %276, align 4, !tbaa !9
  br label %._crit_edge560.thread

._crit_edge560.thread:                            ; preds = %355, %._crit_edge560, %370
  %indvars.iv.next638 = add nuw nsw i64 %indvars.iv637, 1
  %.not478.not = icmp ult i64 %indvars.iv637, %88
  br i1 %.not478.not, label %.preheader, label %.loopexit, !llvm.loop !38

.loopexit:                                        ; preds = %._crit_edge560.thread, %.lr.ph569.prol.loopexit, %.lr.ph569, %middle.block714, %53, %77, %54, %.thread
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #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 @cpptrs_(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