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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@.str.6 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [11 x i8], align 1
@c_b32 = external hidden global float, align 4
@c_b33 = external hidden global float, align 4
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1

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

69:                                               ; preds = %9
  %70 = load ptr, ptr %10, align 8, !tbaa !5
  %71 = call i32 @lsame_(ptr noundef %70, ptr noundef @.str.1)
  %72 = icmp ne i32 %71, 0
  br i1 %72, label %75, label %73

73:                                               ; preds = %69
  %74 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -1, ptr %74, align 4, !tbaa !9
  br label %98

75:                                               ; preds = %69, %9
  %76 = load ptr, ptr %11, align 8, !tbaa !5
  %77 = load i32, ptr %76, align 4, !tbaa !9
  %78 = icmp slt i32 %77, 0
  br i1 %78, label %79, label %81

79:                                               ; preds = %75
  %80 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %80, align 4, !tbaa !9
  br label %97

81:                                               ; preds = %75
  %82 = load ptr, ptr %13, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !9
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = load i32, ptr %84, align 4, !tbaa !9
  %86 = icmp sge i32 1, %85
  br i1 %86, label %87, label %88

87:                                               ; preds = %81
  br label %91

88:                                               ; preds = %81
  %89 = load ptr, ptr %11, align 8, !tbaa !5
  %90 = load i32, ptr %89, align 4, !tbaa !9
  br label %91

91:                                               ; preds = %88, %87
  %92 = phi i32 [ 1, %87 ], [ %90, %88 ]
  %93 = icmp slt i32 %83, %92
  br i1 %93, label %94, label %96

94:                                               ; preds = %91
  %95 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -4, ptr %95, align 4, !tbaa !9
  br label %96

96:                                               ; preds = %94, %91
  br label %97

97:                                               ; preds = %96, %79
  br label %98

98:                                               ; preds = %97, %73
  %99 = load ptr, ptr %18, align 8, !tbaa !5
  %100 = load i32, ptr %99, align 4, !tbaa !9
  %101 = icmp ne i32 %100, 0
  br i1 %101, label %102, label %107

102:                                              ; preds = %98
  %103 = load ptr, ptr %18, align 8, !tbaa !5
  %104 = load i32, ptr %103, align 4, !tbaa !9
  %105 = sub nsw i32 0, %104
  store i32 %105, ptr %21, align 4, !tbaa !9
  %106 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %41, align 4
  br label %1455

107:                                              ; preds = %98
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  %110 = icmp eq i32 %109, 0
  br i1 %110, label %111, label %112

111:                                              ; preds = %107
  store i32 1, ptr %41, align 4
  br label %1455

112:                                              ; preds = %107
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  %114 = load ptr, ptr %11, align 8, !tbaa !5
  %115 = call i32 @ilaenv_(ptr noundef @c__1, ptr noundef @.str.3, ptr noundef %113, ptr noundef %114, ptr noundef @c_n1, ptr noundef @c_n1, ptr noundef @c_n1, i32 noundef 6, i32 noundef 1)
  store i32 %115, ptr %38, align 4, !tbaa !9
  %116 = load i32, ptr %38, align 4, !tbaa !9
  %117 = icmp sle i32 %116, 1
  br i1 %117, label %123, label %118

118:                                              ; preds = %112
  %119 = load i32, ptr %38, align 4, !tbaa !9
  %120 = load ptr, ptr %11, align 8, !tbaa !5
  %121 = load i32, ptr %120, align 4, !tbaa !9
  %122 = icmp sge i32 %119, %121
  br i1 %122, label %123, label %139

123:                                              ; preds = %118, %112
  %124 = load ptr, ptr %10, align 8, !tbaa !5
  %125 = load ptr, ptr %11, align 8, !tbaa !5
  %126 = load ptr, ptr %12, align 8, !tbaa !5
  %127 = load i32, ptr %19, align 4, !tbaa !9
  %128 = add nsw i32 %127, 1
  %129 = sext i32 %128 to i64
  %130 = getelementptr inbounds %struct.complex, ptr %126, i64 %129
  %131 = load ptr, ptr %13, align 8, !tbaa !5
  %132 = load ptr, ptr %14, align 8, !tbaa !5
  %133 = getelementptr inbounds i32, ptr %132, i64 1
  %134 = load ptr, ptr %15, align 8, !tbaa !5
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  %136 = load ptr, ptr %17, align 8, !tbaa !5
  %137 = getelementptr inbounds float, ptr %136, i64 1
  %138 = load ptr, ptr %18, align 8, !tbaa !5
  call void @cpstf2_(ptr noundef %124, ptr noundef %125, ptr noundef %130, ptr noundef %131, ptr noundef %133, ptr noundef %134, ptr noundef %135, ptr noundef %137, ptr noundef %138)
  br label %1454

139:                                              ; preds = %118
  %140 = load ptr, ptr %11, align 8, !tbaa !5
  %141 = load i32, ptr %140, align 4, !tbaa !9
  store i32 %141, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %142

142:                                              ; preds = %152, %139
  %143 = load i32, ptr %29, align 4, !tbaa !9
  %144 = load i32, ptr %21, align 4, !tbaa !9
  %145 = icmp sle i32 %143, %144
  br i1 %145, label %146, label %155

146:                                              ; preds = %142
  %147 = load i32, ptr %29, align 4, !tbaa !9
  %148 = load ptr, ptr %14, align 8, !tbaa !5
  %149 = load i32, ptr %29, align 4, !tbaa !9
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds i32, ptr %148, i64 %150
  store i32 %147, ptr %151, align 4, !tbaa !9
  br label %152

152:                                              ; preds = %146
  %153 = load i32, ptr %29, align 4, !tbaa !9
  %154 = add nsw i32 %153, 1
  store i32 %154, ptr %29, align 4, !tbaa !9
  br label %142, !llvm.loop !11

155:                                              ; preds = %142
  %156 = load ptr, ptr %11, align 8, !tbaa !5
  %157 = load i32, ptr %156, align 4, !tbaa !9
  store i32 %157, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %158

158:                                              ; preds = %178, %155
  %159 = load i32, ptr %29, align 4, !tbaa !9
  %160 = load i32, ptr %21, align 4, !tbaa !9
  %161 = icmp sle i32 %159, %160
  br i1 %161, label %162, label %181

162:                                              ; preds = %158
  %163 = load i32, ptr %29, align 4, !tbaa !9
  %164 = load i32, ptr %29, align 4, !tbaa !9
  %165 = load i32, ptr %19, align 4, !tbaa !9
  %166 = mul nsw i32 %164, %165
  %167 = add nsw i32 %163, %166
  store i32 %167, ptr %22, align 4, !tbaa !9
  %168 = load ptr, ptr %12, align 8, !tbaa !5
  %169 = load i32, ptr %22, align 4, !tbaa !9
  %170 = sext i32 %169 to i64
  %171 = getelementptr inbounds %struct.complex, ptr %168, i64 %170
  %172 = getelementptr inbounds %struct.complex, ptr %171, i32 0, i32 0
  %173 = load float, ptr %172, align 4, !tbaa !13
  %174 = load ptr, ptr %17, align 8, !tbaa !5
  %175 = load i32, ptr %29, align 4, !tbaa !9
  %176 = sext i32 %175 to i64
  %177 = getelementptr inbounds float, ptr %174, i64 %176
  store float %173, ptr %177, align 4, !tbaa !16
  br label %178

178:                                              ; preds = %162
  %179 = load i32, ptr %29, align 4, !tbaa !9
  %180 = add nsw i32 %179, 1
  store i32 %180, ptr %29, align 4, !tbaa !9
  br label %158, !llvm.loop !17

181:                                              ; preds = %158
  %182 = load ptr, ptr %17, align 8, !tbaa !5
  %183 = getelementptr inbounds float, ptr %182, i64 1
  %184 = load i32, ptr @c__1, align 4, !tbaa !9
  %185 = load ptr, ptr %11, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = call i32 @smaxloc_(ptr noundef %183, i32 noundef %184, i32 noundef %186, ptr noundef @c__1)
  store i32 %187, ptr %40, align 4, !tbaa !9
  %188 = load i32, ptr %40, align 4, !tbaa !9
  %189 = load i32, ptr %40, align 4, !tbaa !9
  %190 = load i32, ptr %19, align 4, !tbaa !9
  %191 = mul nsw i32 %189, %190
  %192 = add nsw i32 %188, %191
  store i32 %192, ptr %21, align 4, !tbaa !9
  %193 = load ptr, ptr %12, align 8, !tbaa !5
  %194 = load i32, ptr %21, align 4, !tbaa !9
  %195 = sext i32 %194 to i64
  %196 = getelementptr inbounds %struct.complex, ptr %193, i64 %195
  %197 = getelementptr inbounds %struct.complex, ptr %196, i32 0, i32 0
  %198 = load float, ptr %197, align 4, !tbaa !13
  store float %198, ptr %39, align 4, !tbaa !16
  %199 = load float, ptr %39, align 4, !tbaa !16
  %200 = fcmp ole float %199, 0.000000e+00
  br i1 %200, label %204, label %201

201:                                              ; preds = %181
  %202 = call i32 @sisnan_(ptr noundef %39)
  %203 = icmp ne i32 %202, 0
  br i1 %203, label %204, label %207

204:                                              ; preds = %201, %181
  %205 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 0, ptr %205, align 4, !tbaa !9
  %206 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 1, ptr %206, align 4, !tbaa !9
  br label %1454

207:                                              ; preds = %201
  %208 = load ptr, ptr %16, align 8, !tbaa !5
  %209 = load float, ptr %208, align 4, !tbaa !16
  %210 = fcmp olt float %209, 0.000000e+00
  br i1 %210, label %211, label %219

211:                                              ; preds = %207
  %212 = load ptr, ptr %11, align 8, !tbaa !5
  %213 = load i32, ptr %212, align 4, !tbaa !9
  %214 = sitofp i32 %213 to float
  %215 = call float @slamch_(ptr noundef @.str.4)
  %216 = fmul float %214, %215
  %217 = load float, ptr %39, align 4, !tbaa !16
  %218 = fmul float %216, %217
  store float %218, ptr %36, align 4, !tbaa !16
  br label %222

219:                                              ; preds = %207
  %220 = load ptr, ptr %16, align 8, !tbaa !5
  %221 = load float, ptr %220, align 4, !tbaa !16
  store float %221, ptr %36, align 4, !tbaa !16
  br label %222

222:                                              ; preds = %219, %211
  %223 = load i32, ptr %35, align 4, !tbaa !9
  %224 = icmp ne i32 %223, 0
  br i1 %224, label %225, label %836

225:                                              ; preds = %222
  %226 = load ptr, ptr %11, align 8, !tbaa !5
  %227 = load i32, ptr %226, align 4, !tbaa !9
  store i32 %227, ptr %21, align 4, !tbaa !9
  %228 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %228, ptr %22, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %229

229:                                              ; preds = %831, %225
  %230 = load i32, ptr %22, align 4, !tbaa !9
  %231 = icmp slt i32 %230, 0
  br i1 %231, label %232, label %237

232:                                              ; preds = %229
  %233 = load i32, ptr %31, align 4, !tbaa !9
  %234 = load i32, ptr %21, align 4, !tbaa !9
  %235 = icmp sge i32 %233, %234
  %236 = zext i1 %235 to i32
  br label %242

237:                                              ; preds = %229
  %238 = load i32, ptr %31, align 4, !tbaa !9
  %239 = load i32, ptr %21, align 4, !tbaa !9
  %240 = icmp sle i32 %238, %239
  %241 = zext i1 %240 to i32
  br label %242

242:                                              ; preds = %237, %232
  %243 = phi i32 [ %236, %232 ], [ %241, %237 ]
  %244 = icmp ne i32 %243, 0
  br i1 %244, label %245, label %835

245:                                              ; preds = %242
  %246 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %246, ptr %23, align 4, !tbaa !9
  %247 = load ptr, ptr %11, align 8, !tbaa !5
  %248 = load i32, ptr %247, align 4, !tbaa !9
  %249 = load i32, ptr %31, align 4, !tbaa !9
  %250 = sub nsw i32 %248, %249
  %251 = add nsw i32 %250, 1
  store i32 %251, ptr %24, align 4, !tbaa !9
  %252 = load i32, ptr %23, align 4, !tbaa !9
  %253 = load i32, ptr %24, align 4, !tbaa !9
  %254 = icmp sle i32 %252, %253
  br i1 %254, label %255, label %257

255:                                              ; preds = %245
  %256 = load i32, ptr %23, align 4, !tbaa !9
  br label %259

257:                                              ; preds = %245
  %258 = load i32, ptr %24, align 4, !tbaa !9
  br label %259

259:                                              ; preds = %257, %255
  %260 = phi i32 [ %256, %255 ], [ %258, %257 ]
  store i32 %260, ptr %37, align 4, !tbaa !9
  %261 = load ptr, ptr %11, align 8, !tbaa !5
  %262 = load i32, ptr %261, align 4, !tbaa !9
  store i32 %262, ptr %23, align 4, !tbaa !9
  %263 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %263, ptr %29, align 4, !tbaa !9
  br label %264

264:                                              ; preds = %273, %259
  %265 = load i32, ptr %29, align 4, !tbaa !9
  %266 = load i32, ptr %23, align 4, !tbaa !9
  %267 = icmp sle i32 %265, %266
  br i1 %267, label %268, label %276

268:                                              ; preds = %264
  %269 = load ptr, ptr %17, align 8, !tbaa !5
  %270 = load i32, ptr %29, align 4, !tbaa !9
  %271 = sext i32 %270 to i64
  %272 = getelementptr inbounds float, ptr %269, i64 %271
  store float 0.000000e+00, ptr %272, align 4, !tbaa !16
  br label %273

273:                                              ; preds = %268
  %274 = load i32, ptr %29, align 4, !tbaa !9
  %275 = add nsw i32 %274, 1
  store i32 %275, ptr %29, align 4, !tbaa !9
  br label %264, !llvm.loop !18

276:                                              ; preds = %264
  %277 = load i32, ptr %31, align 4, !tbaa !9
  %278 = load i32, ptr %37, align 4, !tbaa !9
  %279 = add nsw i32 %277, %278
  %280 = sub nsw i32 %279, 1
  store i32 %280, ptr %23, align 4, !tbaa !9
  %281 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %281, ptr %30, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %796, %276
  %283 = load i32, ptr %30, align 4, !tbaa !9
  %284 = load i32, ptr %23, align 4, !tbaa !9
  %285 = icmp sle i32 %283, %284
  br i1 %285, label %286, label %799

286:                                              ; preds = %282
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = load i32, ptr %287, align 4, !tbaa !9
  store i32 %288, ptr %24, align 4, !tbaa !9
  %289 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %289, ptr %29, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %395, %286
  %291 = load i32, ptr %29, align 4, !tbaa !9
  %292 = load i32, ptr %24, align 4, !tbaa !9
  %293 = icmp sle i32 %291, %292
  br i1 %293, label %294, label %398

294:                                              ; preds = %290
  %295 = load i32, ptr %30, align 4, !tbaa !9
  %296 = load i32, ptr %31, align 4, !tbaa !9
  %297 = icmp sgt i32 %295, %296
  br i1 %297, label %298, label %370

298:                                              ; preds = %294
  %299 = load ptr, ptr %12, align 8, !tbaa !5
  %300 = load i32, ptr %30, align 4, !tbaa !9
  %301 = sub nsw i32 %300, 1
  %302 = load i32, ptr %29, align 4, !tbaa !9
  %303 = load i32, ptr %19, align 4, !tbaa !9
  %304 = mul nsw i32 %302, %303
  %305 = add nsw i32 %301, %304
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %struct.complex, ptr %299, i64 %306
  %308 = call <2 x float> @Cf(ptr noundef %307)
  store <2 x float> %308, ptr %42, align 4
  %309 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 0
  %310 = load float, ptr %309, align 4
  %311 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 1
  %312 = load float, ptr %311, align 4
  %313 = fneg float %312
  %314 = call ptr @_pCf(ptr noundef %28)
  %315 = getelementptr inbounds { float, float }, ptr %314, i32 0, i32 0
  %316 = getelementptr inbounds { float, float }, ptr %314, i32 0, i32 1
  store float %310, ptr %315, align 4
  store float %313, ptr %316, align 4
  %317 = load i32, ptr %30, align 4, !tbaa !9
  %318 = sub nsw i32 %317, 1
  %319 = load i32, ptr %29, align 4, !tbaa !9
  %320 = load i32, ptr %19, align 4, !tbaa !9
  %321 = mul nsw i32 %319, %320
  %322 = add nsw i32 %318, %321
  store i32 %322, ptr %25, align 4, !tbaa !9
  %323 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %324 = load float, ptr %323, align 4, !tbaa !13
  %325 = load ptr, ptr %12, align 8, !tbaa !5
  %326 = load i32, ptr %25, align 4, !tbaa !9
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %struct.complex, ptr %325, i64 %327
  %329 = getelementptr inbounds %struct.complex, ptr %328, i32 0, i32 0
  %330 = load float, ptr %329, align 4, !tbaa !13
  %331 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %332 = load float, ptr %331, align 4, !tbaa !19
  %333 = load ptr, ptr %12, align 8, !tbaa !5
  %334 = load i32, ptr %25, align 4, !tbaa !9
  %335 = sext i32 %334 to i64
  %336 = getelementptr inbounds %struct.complex, ptr %333, i64 %335
  %337 = getelementptr inbounds %struct.complex, ptr %336, i32 0, i32 1
  %338 = load float, ptr %337, align 4, !tbaa !19
  %339 = fmul float %332, %338
  %340 = fneg float %339
  %341 = call float @llvm.fmuladd.f32(float %324, float %330, float %340)
  %342 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  store float %341, ptr %342, align 4, !tbaa !13
  %343 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %344 = load float, ptr %343, align 4, !tbaa !13
  %345 = load ptr, ptr %12, align 8, !tbaa !5
  %346 = load i32, ptr %25, align 4, !tbaa !9
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds %struct.complex, ptr %345, i64 %347
  %349 = getelementptr inbounds %struct.complex, ptr %348, i32 0, i32 1
  %350 = load float, ptr %349, align 4, !tbaa !19
  %351 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %352 = load float, ptr %351, align 4, !tbaa !19
  %353 = load ptr, ptr %12, align 8, !tbaa !5
  %354 = load i32, ptr %25, align 4, !tbaa !9
  %355 = sext i32 %354 to i64
  %356 = getelementptr inbounds %struct.complex, ptr %353, i64 %355
  %357 = getelementptr inbounds %struct.complex, ptr %356, i32 0, i32 0
  %358 = load float, ptr %357, align 4, !tbaa !13
  %359 = fmul float %352, %358
  %360 = call float @llvm.fmuladd.f32(float %344, float %350, float %359)
  %361 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  store float %360, ptr %361, align 4, !tbaa !19
  %362 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  %363 = load float, ptr %362, align 4, !tbaa !13
  %364 = load ptr, ptr %17, align 8, !tbaa !5
  %365 = load i32, ptr %29, align 4, !tbaa !9
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds float, ptr %364, i64 %366
  %368 = load float, ptr %367, align 4, !tbaa !16
  %369 = fadd float %368, %363
  store float %369, ptr %367, align 4, !tbaa !16
  br label %370

370:                                              ; preds = %298, %294
  %371 = load i32, ptr %29, align 4, !tbaa !9
  %372 = load i32, ptr %29, align 4, !tbaa !9
  %373 = load i32, ptr %19, align 4, !tbaa !9
  %374 = mul nsw i32 %372, %373
  %375 = add nsw i32 %371, %374
  store i32 %375, ptr %25, align 4, !tbaa !9
  %376 = load ptr, ptr %12, align 8, !tbaa !5
  %377 = load i32, ptr %25, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds %struct.complex, ptr %376, i64 %378
  %380 = getelementptr inbounds %struct.complex, ptr %379, i32 0, i32 0
  %381 = load float, ptr %380, align 4, !tbaa !13
  %382 = load ptr, ptr %17, align 8, !tbaa !5
  %383 = load i32, ptr %29, align 4, !tbaa !9
  %384 = sext i32 %383 to i64
  %385 = getelementptr inbounds float, ptr %382, i64 %384
  %386 = load float, ptr %385, align 4, !tbaa !16
  %387 = fsub float %381, %386
  %388 = load ptr, ptr %17, align 8, !tbaa !5
  %389 = load ptr, ptr %11, align 8, !tbaa !5
  %390 = load i32, ptr %389, align 4, !tbaa !9
  %391 = load i32, ptr %29, align 4, !tbaa !9
  %392 = add nsw i32 %390, %391
  %393 = sext i32 %392 to i64
  %394 = getelementptr inbounds float, ptr %388, i64 %393
  store float %387, ptr %394, align 4, !tbaa !16
  br label %395

395:                                              ; preds = %370
  %396 = load i32, ptr %29, align 4, !tbaa !9
  %397 = add nsw i32 %396, 1
  store i32 %397, ptr %29, align 4, !tbaa !9
  br label %290, !llvm.loop !20

398:                                              ; preds = %290
  %399 = load i32, ptr %30, align 4, !tbaa !9
  %400 = icmp sgt i32 %399, 1
  br i1 %400, label %401, label %450

401:                                              ; preds = %398
  %402 = load ptr, ptr %11, align 8, !tbaa !5
  %403 = load i32, ptr %402, align 4, !tbaa !9
  %404 = load i32, ptr %30, align 4, !tbaa !9
  %405 = add nsw i32 %403, %404
  store i32 %405, ptr %24, align 4, !tbaa !9
  %406 = load ptr, ptr %11, align 8, !tbaa !5
  %407 = load i32, ptr %406, align 4, !tbaa !9
  %408 = shl i32 %407, 1
  store i32 %408, ptr %25, align 4, !tbaa !9
  %409 = load ptr, ptr %17, align 8, !tbaa !5
  %410 = getelementptr inbounds float, ptr %409, i64 1
  %411 = load i32, ptr %24, align 4, !tbaa !9
  %412 = load i32, ptr %25, align 4, !tbaa !9
  %413 = call i32 @smaxloc_(ptr noundef %410, i32 noundef %411, i32 noundef %412, ptr noundef @c__1)
  store i32 %413, ptr %33, align 4, !tbaa !9
  %414 = load i32, ptr %33, align 4, !tbaa !9
  %415 = load i32, ptr %30, align 4, !tbaa !9
  %416 = add nsw i32 %414, %415
  %417 = sub nsw i32 %416, 1
  store i32 %417, ptr %40, align 4, !tbaa !9
  %418 = load ptr, ptr %17, align 8, !tbaa !5
  %419 = load ptr, ptr %11, align 8, !tbaa !5
  %420 = load i32, ptr %419, align 4, !tbaa !9
  %421 = load i32, ptr %40, align 4, !tbaa !9
  %422 = add nsw i32 %420, %421
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds float, ptr %418, i64 %423
  %425 = load float, ptr %424, align 4, !tbaa !16
  store float %425, ptr %39, align 4, !tbaa !16
  %426 = load float, ptr %39, align 4, !tbaa !16
  %427 = load float, ptr %36, align 4, !tbaa !16
  %428 = fcmp ole float %426, %427
  br i1 %428, label %432, label %429

429:                                              ; preds = %401
  %430 = call i32 @sisnan_(ptr noundef %39)
  %431 = icmp ne i32 %430, 0
  br i1 %431, label %432, label %449

432:                                              ; preds = %429, %401
  %433 = load i32, ptr %30, align 4, !tbaa !9
  %434 = load i32, ptr %30, align 4, !tbaa !9
  %435 = load i32, ptr %19, align 4, !tbaa !9
  %436 = mul nsw i32 %434, %435
  %437 = add nsw i32 %433, %436
  store i32 %437, ptr %24, align 4, !tbaa !9
  %438 = load float, ptr %39, align 4, !tbaa !16
  %439 = load ptr, ptr %12, align 8, !tbaa !5
  %440 = load i32, ptr %24, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %struct.complex, ptr %439, i64 %441
  %443 = getelementptr inbounds %struct.complex, ptr %442, i32 0, i32 0
  store float %438, ptr %443, align 4, !tbaa !13
  %444 = load ptr, ptr %12, align 8, !tbaa !5
  %445 = load i32, ptr %24, align 4, !tbaa !9
  %446 = sext i32 %445 to i64
  %447 = getelementptr inbounds %struct.complex, ptr %444, i64 %446
  %448 = getelementptr inbounds %struct.complex, ptr %447, i32 0, i32 1
  store float 0.000000e+00, ptr %448, align 4, !tbaa !19
  br label %1449

449:                                              ; preds = %429
  br label %450

450:                                              ; preds = %449, %398
  %451 = load i32, ptr %30, align 4, !tbaa !9
  %452 = load i32, ptr %40, align 4, !tbaa !9
  %453 = icmp ne i32 %451, %452
  br i1 %453, label %454, label %698

454:                                              ; preds = %450
  %455 = load i32, ptr %40, align 4, !tbaa !9
  %456 = load i32, ptr %40, align 4, !tbaa !9
  %457 = load i32, ptr %19, align 4, !tbaa !9
  %458 = mul nsw i32 %456, %457
  %459 = add nsw i32 %455, %458
  store i32 %459, ptr %24, align 4, !tbaa !9
  %460 = load i32, ptr %30, align 4, !tbaa !9
  %461 = load i32, ptr %30, align 4, !tbaa !9
  %462 = load i32, ptr %19, align 4, !tbaa !9
  %463 = mul nsw i32 %461, %462
  %464 = add nsw i32 %460, %463
  store i32 %464, ptr %25, align 4, !tbaa !9
  %465 = load ptr, ptr %12, align 8, !tbaa !5
  %466 = load i32, ptr %25, align 4, !tbaa !9
  %467 = sext i32 %466 to i64
  %468 = getelementptr inbounds %struct.complex, ptr %465, i64 %467
  %469 = getelementptr inbounds %struct.complex, ptr %468, i32 0, i32 0
  %470 = load float, ptr %469, align 4, !tbaa !13
  %471 = load ptr, ptr %12, align 8, !tbaa !5
  %472 = load i32, ptr %24, align 4, !tbaa !9
  %473 = sext i32 %472 to i64
  %474 = getelementptr inbounds %struct.complex, ptr %471, i64 %473
  %475 = getelementptr inbounds %struct.complex, ptr %474, i32 0, i32 0
  store float %470, ptr %475, align 4, !tbaa !13
  %476 = load ptr, ptr %12, align 8, !tbaa !5
  %477 = load i32, ptr %25, align 4, !tbaa !9
  %478 = sext i32 %477 to i64
  %479 = getelementptr inbounds %struct.complex, ptr %476, i64 %478
  %480 = getelementptr inbounds %struct.complex, ptr %479, i32 0, i32 1
  %481 = load float, ptr %480, align 4, !tbaa !19
  %482 = load ptr, ptr %12, align 8, !tbaa !5
  %483 = load i32, ptr %24, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.complex, ptr %482, i64 %484
  %486 = getelementptr inbounds %struct.complex, ptr %485, i32 0, i32 1
  store float %481, ptr %486, align 4, !tbaa !19
  %487 = load i32, ptr %30, align 4, !tbaa !9
  %488 = sub nsw i32 %487, 1
  store i32 %488, ptr %24, align 4, !tbaa !9
  %489 = load ptr, ptr %12, align 8, !tbaa !5
  %490 = load i32, ptr %30, align 4, !tbaa !9
  %491 = load i32, ptr %19, align 4, !tbaa !9
  %492 = mul nsw i32 %490, %491
  %493 = add nsw i32 %492, 1
  %494 = sext i32 %493 to i64
  %495 = getelementptr inbounds %struct.complex, ptr %489, i64 %494
  %496 = load ptr, ptr %12, align 8, !tbaa !5
  %497 = load i32, ptr %40, align 4, !tbaa !9
  %498 = load i32, ptr %19, align 4, !tbaa !9
  %499 = mul nsw i32 %497, %498
  %500 = add nsw i32 %499, 1
  %501 = sext i32 %500 to i64
  %502 = getelementptr inbounds %struct.complex, ptr %496, i64 %501
  call void @cswap_(ptr noundef %24, ptr noundef %495, ptr noundef @c__1, ptr noundef %502, ptr noundef @c__1)
  %503 = load i32, ptr %40, align 4, !tbaa !9
  %504 = load ptr, ptr %11, align 8, !tbaa !5
  %505 = load i32, ptr %504, align 4, !tbaa !9
  %506 = icmp slt i32 %503, %505
  br i1 %506, label %507, label %532

507:                                              ; preds = %454
  %508 = load ptr, ptr %11, align 8, !tbaa !5
  %509 = load i32, ptr %508, align 4, !tbaa !9
  %510 = load i32, ptr %40, align 4, !tbaa !9
  %511 = sub nsw i32 %509, %510
  store i32 %511, ptr %24, align 4, !tbaa !9
  %512 = load ptr, ptr %12, align 8, !tbaa !5
  %513 = load i32, ptr %30, align 4, !tbaa !9
  %514 = load i32, ptr %40, align 4, !tbaa !9
  %515 = add nsw i32 %514, 1
  %516 = load i32, ptr %19, align 4, !tbaa !9
  %517 = mul nsw i32 %515, %516
  %518 = add nsw i32 %513, %517
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds %struct.complex, ptr %512, i64 %519
  %521 = load ptr, ptr %13, align 8, !tbaa !5
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  %523 = load i32, ptr %40, align 4, !tbaa !9
  %524 = load i32, ptr %40, align 4, !tbaa !9
  %525 = add nsw i32 %524, 1
  %526 = load i32, ptr %19, align 4, !tbaa !9
  %527 = mul nsw i32 %525, %526
  %528 = add nsw i32 %523, %527
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds %struct.complex, ptr %522, i64 %529
  %531 = load ptr, ptr %13, align 8, !tbaa !5
  call void @cswap_(ptr noundef %24, ptr noundef %520, ptr noundef %521, ptr noundef %530, ptr noundef %531)
  br label %532

532:                                              ; preds = %507, %454
  %533 = load i32, ptr %40, align 4, !tbaa !9
  %534 = sub nsw i32 %533, 1
  store i32 %534, ptr %24, align 4, !tbaa !9
  %535 = load i32, ptr %30, align 4, !tbaa !9
  %536 = add nsw i32 %535, 1
  store i32 %536, ptr %29, align 4, !tbaa !9
  br label %537

537:                                              ; preds = %620, %532
  %538 = load i32, ptr %29, align 4, !tbaa !9
  %539 = load i32, ptr %24, align 4, !tbaa !9
  %540 = icmp sle i32 %538, %539
  br i1 %540, label %541, label %623

541:                                              ; preds = %537
  %542 = load ptr, ptr %12, align 8, !tbaa !5
  %543 = load i32, ptr %30, align 4, !tbaa !9
  %544 = load i32, ptr %29, align 4, !tbaa !9
  %545 = load i32, ptr %19, align 4, !tbaa !9
  %546 = mul nsw i32 %544, %545
  %547 = add nsw i32 %543, %546
  %548 = sext i32 %547 to i64
  %549 = getelementptr inbounds %struct.complex, ptr %542, i64 %548
  %550 = call <2 x float> @Cf(ptr noundef %549)
  store <2 x float> %550, ptr %43, align 4
  %551 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 0
  %552 = load float, ptr %551, align 4
  %553 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 1
  %554 = load float, ptr %553, align 4
  %555 = fneg float %554
  %556 = call ptr @_pCf(ptr noundef %27)
  %557 = getelementptr inbounds { float, float }, ptr %556, i32 0, i32 0
  %558 = getelementptr inbounds { float, float }, ptr %556, i32 0, i32 1
  store float %552, ptr %557, align 4
  store float %555, ptr %558, align 4
  %559 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  %560 = load float, ptr %559, align 4, !tbaa !13
  %561 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %560, ptr %561, align 4, !tbaa !13
  %562 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  %563 = load float, ptr %562, align 4, !tbaa !19
  %564 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %563, ptr %564, align 4, !tbaa !19
  %565 = load i32, ptr %30, align 4, !tbaa !9
  %566 = load i32, ptr %29, align 4, !tbaa !9
  %567 = load i32, ptr %19, align 4, !tbaa !9
  %568 = mul nsw i32 %566, %567
  %569 = add nsw i32 %565, %568
  store i32 %569, ptr %25, align 4, !tbaa !9
  %570 = load ptr, ptr %12, align 8, !tbaa !5
  %571 = load i32, ptr %29, align 4, !tbaa !9
  %572 = load i32, ptr %40, align 4, !tbaa !9
  %573 = load i32, ptr %19, align 4, !tbaa !9
  %574 = mul nsw i32 %572, %573
  %575 = add nsw i32 %571, %574
  %576 = sext i32 %575 to i64
  %577 = getelementptr inbounds %struct.complex, ptr %570, i64 %576
  %578 = call <2 x float> @Cf(ptr noundef %577)
  store <2 x float> %578, ptr %44, align 4
  %579 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 0
  %580 = load float, ptr %579, align 4
  %581 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 1
  %582 = load float, ptr %581, align 4
  %583 = fneg float %582
  %584 = call ptr @_pCf(ptr noundef %27)
  %585 = getelementptr inbounds { float, float }, ptr %584, i32 0, i32 0
  %586 = getelementptr inbounds { float, float }, ptr %584, i32 0, i32 1
  store float %580, ptr %585, align 4
  store float %583, ptr %586, align 4
  %587 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  %588 = load float, ptr %587, align 4, !tbaa !13
  %589 = load ptr, ptr %12, align 8, !tbaa !5
  %590 = load i32, ptr %25, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds %struct.complex, ptr %589, i64 %591
  %593 = getelementptr inbounds %struct.complex, ptr %592, i32 0, i32 0
  store float %588, ptr %593, align 4, !tbaa !13
  %594 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  %595 = load float, ptr %594, align 4, !tbaa !19
  %596 = load ptr, ptr %12, align 8, !tbaa !5
  %597 = load i32, ptr %25, align 4, !tbaa !9
  %598 = sext i32 %597 to i64
  %599 = getelementptr inbounds %struct.complex, ptr %596, i64 %598
  %600 = getelementptr inbounds %struct.complex, ptr %599, i32 0, i32 1
  store float %595, ptr %600, align 4, !tbaa !19
  %601 = load i32, ptr %29, align 4, !tbaa !9
  %602 = load i32, ptr %40, align 4, !tbaa !9
  %603 = load i32, ptr %19, align 4, !tbaa !9
  %604 = mul nsw i32 %602, %603
  %605 = add nsw i32 %601, %604
  store i32 %605, ptr %25, align 4, !tbaa !9
  %606 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %607 = load float, ptr %606, align 4, !tbaa !13
  %608 = load ptr, ptr %12, align 8, !tbaa !5
  %609 = load i32, ptr %25, align 4, !tbaa !9
  %610 = sext i32 %609 to i64
  %611 = getelementptr inbounds %struct.complex, ptr %608, i64 %610
  %612 = getelementptr inbounds %struct.complex, ptr %611, i32 0, i32 0
  store float %607, ptr %612, align 4, !tbaa !13
  %613 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %614 = load float, ptr %613, align 4, !tbaa !19
  %615 = load ptr, ptr %12, align 8, !tbaa !5
  %616 = load i32, ptr %25, align 4, !tbaa !9
  %617 = sext i32 %616 to i64
  %618 = getelementptr inbounds %struct.complex, ptr %615, i64 %617
  %619 = getelementptr inbounds %struct.complex, ptr %618, i32 0, i32 1
  store float %614, ptr %619, align 4, !tbaa !19
  br label %620

620:                                              ; preds = %541
  %621 = load i32, ptr %29, align 4, !tbaa !9
  %622 = add nsw i32 %621, 1
  store i32 %622, ptr %29, align 4, !tbaa !9
  br label %537, !llvm.loop !21

623:                                              ; preds = %537
  %624 = load i32, ptr %30, align 4, !tbaa !9
  %625 = load i32, ptr %40, align 4, !tbaa !9
  %626 = load i32, ptr %19, align 4, !tbaa !9
  %627 = mul nsw i32 %625, %626
  %628 = add nsw i32 %624, %627
  store i32 %628, ptr %24, align 4, !tbaa !9
  %629 = load ptr, ptr %12, align 8, !tbaa !5
  %630 = load i32, ptr %30, align 4, !tbaa !9
  %631 = load i32, ptr %40, align 4, !tbaa !9
  %632 = load i32, ptr %19, align 4, !tbaa !9
  %633 = mul nsw i32 %631, %632
  %634 = add nsw i32 %630, %633
  %635 = sext i32 %634 to i64
  %636 = getelementptr inbounds %struct.complex, ptr %629, i64 %635
  %637 = call <2 x float> @Cf(ptr noundef %636)
  store <2 x float> %637, ptr %45, align 4
  %638 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 0
  %639 = load float, ptr %638, align 4
  %640 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 1
  %641 = load float, ptr %640, align 4
  %642 = fneg float %641
  %643 = call ptr @_pCf(ptr noundef %27)
  %644 = getelementptr inbounds { float, float }, ptr %643, i32 0, i32 0
  %645 = getelementptr inbounds { float, float }, ptr %643, i32 0, i32 1
  store float %639, ptr %644, align 4
  store float %642, ptr %645, align 4
  %646 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  %647 = load float, ptr %646, align 4, !tbaa !13
  %648 = load ptr, ptr %12, align 8, !tbaa !5
  %649 = load i32, ptr %24, align 4, !tbaa !9
  %650 = sext i32 %649 to i64
  %651 = getelementptr inbounds %struct.complex, ptr %648, i64 %650
  %652 = getelementptr inbounds %struct.complex, ptr %651, i32 0, i32 0
  store float %647, ptr %652, align 4, !tbaa !13
  %653 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  %654 = load float, ptr %653, align 4, !tbaa !19
  %655 = load ptr, ptr %12, align 8, !tbaa !5
  %656 = load i32, ptr %24, align 4, !tbaa !9
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds %struct.complex, ptr %655, i64 %657
  %659 = getelementptr inbounds %struct.complex, ptr %658, i32 0, i32 1
  store float %654, ptr %659, align 4, !tbaa !19
  %660 = load ptr, ptr %17, align 8, !tbaa !5
  %661 = load i32, ptr %30, align 4, !tbaa !9
  %662 = sext i32 %661 to i64
  %663 = getelementptr inbounds float, ptr %660, i64 %662
  %664 = load float, ptr %663, align 4, !tbaa !16
  store float %664, ptr %34, align 4, !tbaa !16
  %665 = load ptr, ptr %17, align 8, !tbaa !5
  %666 = load i32, ptr %40, align 4, !tbaa !9
  %667 = sext i32 %666 to i64
  %668 = getelementptr inbounds float, ptr %665, i64 %667
  %669 = load float, ptr %668, align 4, !tbaa !16
  %670 = load ptr, ptr %17, align 8, !tbaa !5
  %671 = load i32, ptr %30, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds float, ptr %670, i64 %672
  store float %669, ptr %673, align 4, !tbaa !16
  %674 = load float, ptr %34, align 4, !tbaa !16
  %675 = load ptr, ptr %17, align 8, !tbaa !5
  %676 = load i32, ptr %40, align 4, !tbaa !9
  %677 = sext i32 %676 to i64
  %678 = getelementptr inbounds float, ptr %675, i64 %677
  store float %674, ptr %678, align 4, !tbaa !16
  %679 = load ptr, ptr %14, align 8, !tbaa !5
  %680 = load i32, ptr %40, align 4, !tbaa !9
  %681 = sext i32 %680 to i64
  %682 = getelementptr inbounds i32, ptr %679, i64 %681
  %683 = load i32, ptr %682, align 4, !tbaa !9
  store i32 %683, ptr %33, align 4, !tbaa !9
  %684 = load ptr, ptr %14, align 8, !tbaa !5
  %685 = load i32, ptr %30, align 4, !tbaa !9
  %686 = sext i32 %685 to i64
  %687 = getelementptr inbounds i32, ptr %684, i64 %686
  %688 = load i32, ptr %687, align 4, !tbaa !9
  %689 = load ptr, ptr %14, align 8, !tbaa !5
  %690 = load i32, ptr %40, align 4, !tbaa !9
  %691 = sext i32 %690 to i64
  %692 = getelementptr inbounds i32, ptr %689, i64 %691
  store i32 %688, ptr %692, align 4, !tbaa !9
  %693 = load i32, ptr %33, align 4, !tbaa !9
  %694 = load ptr, ptr %14, align 8, !tbaa !5
  %695 = load i32, ptr %30, align 4, !tbaa !9
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds i32, ptr %694, i64 %696
  store i32 %693, ptr %697, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %623, %450
  %699 = load float, ptr %39, align 4, !tbaa !16
  %700 = fpext float %699 to double
  %701 = call double @sqrt(double noundef %700) #8
  %702 = fptrunc double %701 to float
  store float %702, ptr %39, align 4, !tbaa !16
  %703 = load i32, ptr %30, align 4, !tbaa !9
  %704 = load i32, ptr %30, align 4, !tbaa !9
  %705 = load i32, ptr %19, align 4, !tbaa !9
  %706 = mul nsw i32 %704, %705
  %707 = add nsw i32 %703, %706
  store i32 %707, ptr %24, align 4, !tbaa !9
  %708 = load float, ptr %39, align 4, !tbaa !16
  %709 = load ptr, ptr %12, align 8, !tbaa !5
  %710 = load i32, ptr %24, align 4, !tbaa !9
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds %struct.complex, ptr %709, i64 %711
  %713 = getelementptr inbounds %struct.complex, ptr %712, i32 0, i32 0
  store float %708, ptr %713, align 4, !tbaa !13
  %714 = load ptr, ptr %12, align 8, !tbaa !5
  %715 = load i32, ptr %24, align 4, !tbaa !9
  %716 = sext i32 %715 to i64
  %717 = getelementptr inbounds %struct.complex, ptr %714, i64 %716
  %718 = getelementptr inbounds %struct.complex, ptr %717, i32 0, i32 1
  store float 0.000000e+00, ptr %718, align 4, !tbaa !19
  %719 = load i32, ptr %30, align 4, !tbaa !9
  %720 = load ptr, ptr %11, align 8, !tbaa !5
  %721 = load i32, ptr %720, align 4, !tbaa !9
  %722 = icmp slt i32 %719, %721
  br i1 %722, label %723, label %795

723:                                              ; preds = %698
  %724 = load i32, ptr %30, align 4, !tbaa !9
  %725 = sub nsw i32 %724, 1
  store i32 %725, ptr %24, align 4, !tbaa !9
  %726 = load ptr, ptr %12, align 8, !tbaa !5
  %727 = load i32, ptr %30, align 4, !tbaa !9
  %728 = load i32, ptr %19, align 4, !tbaa !9
  %729 = mul nsw i32 %727, %728
  %730 = add nsw i32 %729, 1
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds %struct.complex, ptr %726, i64 %731
  call void @clacgv_(ptr noundef %24, ptr noundef %732, ptr noundef @c__1)
  %733 = load i32, ptr %30, align 4, !tbaa !9
  %734 = load i32, ptr %31, align 4, !tbaa !9
  %735 = sub nsw i32 %733, %734
  store i32 %735, ptr %24, align 4, !tbaa !9
  %736 = load ptr, ptr %11, align 8, !tbaa !5
  %737 = load i32, ptr %736, align 4, !tbaa !9
  %738 = load i32, ptr %30, align 4, !tbaa !9
  %739 = sub nsw i32 %737, %738
  store i32 %739, ptr %25, align 4, !tbaa !9
  %740 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  store float -1.000000e+00, ptr %740, align 4, !tbaa !13
  %741 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  store float 0.000000e+00, ptr %741, align 4, !tbaa !19
  %742 = load ptr, ptr %12, align 8, !tbaa !5
  %743 = load i32, ptr %31, align 4, !tbaa !9
  %744 = load i32, ptr %30, align 4, !tbaa !9
  %745 = add nsw i32 %744, 1
  %746 = load i32, ptr %19, align 4, !tbaa !9
  %747 = mul nsw i32 %745, %746
  %748 = add nsw i32 %743, %747
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds %struct.complex, ptr %742, i64 %749
  %751 = load ptr, ptr %13, align 8, !tbaa !5
  %752 = load ptr, ptr %12, align 8, !tbaa !5
  %753 = load i32, ptr %31, align 4, !tbaa !9
  %754 = load i32, ptr %30, align 4, !tbaa !9
  %755 = load i32, ptr %19, align 4, !tbaa !9
  %756 = mul nsw i32 %754, %755
  %757 = add nsw i32 %753, %756
  %758 = sext i32 %757 to i64
  %759 = getelementptr inbounds %struct.complex, ptr %752, i64 %758
  %760 = load ptr, ptr %12, align 8, !tbaa !5
  %761 = load i32, ptr %30, align 4, !tbaa !9
  %762 = load i32, ptr %30, align 4, !tbaa !9
  %763 = add nsw i32 %762, 1
  %764 = load i32, ptr %19, align 4, !tbaa !9
  %765 = mul nsw i32 %763, %764
  %766 = add nsw i32 %761, %765
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds %struct.complex, ptr %760, i64 %767
  %769 = load ptr, ptr %13, align 8, !tbaa !5
  call void @cgemv_(ptr noundef @.str.5, ptr noundef %24, ptr noundef %25, ptr noundef %27, ptr noundef %750, ptr noundef %751, ptr noundef %759, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %768, ptr noundef %769)
  %770 = load i32, ptr %30, align 4, !tbaa !9
  %771 = sub nsw i32 %770, 1
  store i32 %771, ptr %24, align 4, !tbaa !9
  %772 = load ptr, ptr %12, align 8, !tbaa !5
  %773 = load i32, ptr %30, align 4, !tbaa !9
  %774 = load i32, ptr %19, align 4, !tbaa !9
  %775 = mul nsw i32 %773, %774
  %776 = add nsw i32 %775, 1
  %777 = sext i32 %776 to i64
  %778 = getelementptr inbounds %struct.complex, ptr %772, i64 %777
  call void @clacgv_(ptr noundef %24, ptr noundef %778, ptr noundef @c__1)
  %779 = load ptr, ptr %11, align 8, !tbaa !5
  %780 = load i32, ptr %779, align 4, !tbaa !9
  %781 = load i32, ptr %30, align 4, !tbaa !9
  %782 = sub nsw i32 %780, %781
  store i32 %782, ptr %24, align 4, !tbaa !9
  %783 = load float, ptr %39, align 4, !tbaa !16
  %784 = fdiv float 1.000000e+00, %783
  store float %784, ptr %26, align 4, !tbaa !16
  %785 = load ptr, ptr %12, align 8, !tbaa !5
  %786 = load i32, ptr %30, align 4, !tbaa !9
  %787 = load i32, ptr %30, align 4, !tbaa !9
  %788 = add nsw i32 %787, 1
  %789 = load i32, ptr %19, align 4, !tbaa !9
  %790 = mul nsw i32 %788, %789
  %791 = add nsw i32 %786, %790
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.complex, ptr %785, i64 %792
  %794 = load ptr, ptr %13, align 8, !tbaa !5
  call void @csscal_(ptr noundef %24, ptr noundef %26, ptr noundef %793, ptr noundef %794)
  br label %795

795:                                              ; preds = %723, %698
  br label %796

796:                                              ; preds = %795
  %797 = load i32, ptr %30, align 4, !tbaa !9
  %798 = add nsw i32 %797, 1
  store i32 %798, ptr %30, align 4, !tbaa !9
  br label %282, !llvm.loop !22

799:                                              ; preds = %282
  %800 = load i32, ptr %31, align 4, !tbaa !9
  %801 = load i32, ptr %37, align 4, !tbaa !9
  %802 = add nsw i32 %800, %801
  %803 = load ptr, ptr %11, align 8, !tbaa !5
  %804 = load i32, ptr %803, align 4, !tbaa !9
  %805 = icmp sle i32 %802, %804
  br i1 %805, label %806, label %830

806:                                              ; preds = %799
  %807 = load ptr, ptr %11, align 8, !tbaa !5
  %808 = load i32, ptr %807, align 4, !tbaa !9
  %809 = load i32, ptr %30, align 4, !tbaa !9
  %810 = sub nsw i32 %808, %809
  %811 = add nsw i32 %810, 1
  store i32 %811, ptr %23, align 4, !tbaa !9
  %812 = load ptr, ptr %12, align 8, !tbaa !5
  %813 = load i32, ptr %31, align 4, !tbaa !9
  %814 = load i32, ptr %30, align 4, !tbaa !9
  %815 = load i32, ptr %19, align 4, !tbaa !9
  %816 = mul nsw i32 %814, %815
  %817 = add nsw i32 %813, %816
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.complex, ptr %812, i64 %818
  %820 = load ptr, ptr %13, align 8, !tbaa !5
  %821 = load ptr, ptr %12, align 8, !tbaa !5
  %822 = load i32, ptr %30, align 4, !tbaa !9
  %823 = load i32, ptr %30, align 4, !tbaa !9
  %824 = load i32, ptr %19, align 4, !tbaa !9
  %825 = mul nsw i32 %823, %824
  %826 = add nsw i32 %822, %825
  %827 = sext i32 %826 to i64
  %828 = getelementptr inbounds %struct.complex, ptr %821, i64 %827
  %829 = load ptr, ptr %13, align 8, !tbaa !5
  call void @cherk_(ptr noundef @.str.6, ptr noundef @.str.7, ptr noundef %23, ptr noundef %37, ptr noundef @c_b32, ptr noundef %819, ptr noundef %820, ptr noundef @c_b33, ptr noundef %828, ptr noundef %829)
  br label %830

830:                                              ; preds = %806, %799
  br label %831

831:                                              ; preds = %830
  %832 = load i32, ptr %22, align 4, !tbaa !9
  %833 = load i32, ptr %31, align 4, !tbaa !9
  %834 = add nsw i32 %833, %832
  store i32 %834, ptr %31, align 4, !tbaa !9
  br label %229, !llvm.loop !23

835:                                              ; preds = %242
  br label %1444

836:                                              ; preds = %222
  %837 = load ptr, ptr %11, align 8, !tbaa !5
  %838 = load i32, ptr %837, align 4, !tbaa !9
  store i32 %838, ptr %22, align 4, !tbaa !9
  %839 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %839, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %31, align 4, !tbaa !9
  br label %840

840:                                              ; preds = %1439, %836
  %841 = load i32, ptr %21, align 4, !tbaa !9
  %842 = icmp slt i32 %841, 0
  br i1 %842, label %843, label %848

843:                                              ; preds = %840
  %844 = load i32, ptr %31, align 4, !tbaa !9
  %845 = load i32, ptr %22, align 4, !tbaa !9
  %846 = icmp sge i32 %844, %845
  %847 = zext i1 %846 to i32
  br label %853

848:                                              ; preds = %840
  %849 = load i32, ptr %31, align 4, !tbaa !9
  %850 = load i32, ptr %22, align 4, !tbaa !9
  %851 = icmp sle i32 %849, %850
  %852 = zext i1 %851 to i32
  br label %853

853:                                              ; preds = %848, %843
  %854 = phi i32 [ %847, %843 ], [ %852, %848 ]
  %855 = icmp ne i32 %854, 0
  br i1 %855, label %856, label %1443

856:                                              ; preds = %853
  %857 = load i32, ptr %38, align 4, !tbaa !9
  store i32 %857, ptr %23, align 4, !tbaa !9
  %858 = load ptr, ptr %11, align 8, !tbaa !5
  %859 = load i32, ptr %858, align 4, !tbaa !9
  %860 = load i32, ptr %31, align 4, !tbaa !9
  %861 = sub nsw i32 %859, %860
  %862 = add nsw i32 %861, 1
  store i32 %862, ptr %24, align 4, !tbaa !9
  %863 = load i32, ptr %23, align 4, !tbaa !9
  %864 = load i32, ptr %24, align 4, !tbaa !9
  %865 = icmp sle i32 %863, %864
  br i1 %865, label %866, label %868

866:                                              ; preds = %856
  %867 = load i32, ptr %23, align 4, !tbaa !9
  br label %870

868:                                              ; preds = %856
  %869 = load i32, ptr %24, align 4, !tbaa !9
  br label %870

870:                                              ; preds = %868, %866
  %871 = phi i32 [ %867, %866 ], [ %869, %868 ]
  store i32 %871, ptr %37, align 4, !tbaa !9
  %872 = load ptr, ptr %11, align 8, !tbaa !5
  %873 = load i32, ptr %872, align 4, !tbaa !9
  store i32 %873, ptr %23, align 4, !tbaa !9
  %874 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %874, ptr %29, align 4, !tbaa !9
  br label %875

875:                                              ; preds = %884, %870
  %876 = load i32, ptr %29, align 4, !tbaa !9
  %877 = load i32, ptr %23, align 4, !tbaa !9
  %878 = icmp sle i32 %876, %877
  br i1 %878, label %879, label %887

879:                                              ; preds = %875
  %880 = load ptr, ptr %17, align 8, !tbaa !5
  %881 = load i32, ptr %29, align 4, !tbaa !9
  %882 = sext i32 %881 to i64
  %883 = getelementptr inbounds float, ptr %880, i64 %882
  store float 0.000000e+00, ptr %883, align 4, !tbaa !16
  br label %884

884:                                              ; preds = %879
  %885 = load i32, ptr %29, align 4, !tbaa !9
  %886 = add nsw i32 %885, 1
  store i32 %886, ptr %29, align 4, !tbaa !9
  br label %875, !llvm.loop !24

887:                                              ; preds = %875
  %888 = load i32, ptr %31, align 4, !tbaa !9
  %889 = load i32, ptr %37, align 4, !tbaa !9
  %890 = add nsw i32 %888, %889
  %891 = sub nsw i32 %890, 1
  store i32 %891, ptr %23, align 4, !tbaa !9
  %892 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %892, ptr %30, align 4, !tbaa !9
  br label %893

893:                                              ; preds = %1404, %887
  %894 = load i32, ptr %30, align 4, !tbaa !9
  %895 = load i32, ptr %23, align 4, !tbaa !9
  %896 = icmp sle i32 %894, %895
  br i1 %896, label %897, label %1407

897:                                              ; preds = %893
  %898 = load ptr, ptr %11, align 8, !tbaa !5
  %899 = load i32, ptr %898, align 4, !tbaa !9
  store i32 %899, ptr %24, align 4, !tbaa !9
  %900 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %900, ptr %29, align 4, !tbaa !9
  br label %901

901:                                              ; preds = %1006, %897
  %902 = load i32, ptr %29, align 4, !tbaa !9
  %903 = load i32, ptr %24, align 4, !tbaa !9
  %904 = icmp sle i32 %902, %903
  br i1 %904, label %905, label %1009

905:                                              ; preds = %901
  %906 = load i32, ptr %30, align 4, !tbaa !9
  %907 = load i32, ptr %31, align 4, !tbaa !9
  %908 = icmp sgt i32 %906, %907
  br i1 %908, label %909, label %981

909:                                              ; preds = %905
  %910 = load ptr, ptr %12, align 8, !tbaa !5
  %911 = load i32, ptr %29, align 4, !tbaa !9
  %912 = load i32, ptr %30, align 4, !tbaa !9
  %913 = sub nsw i32 %912, 1
  %914 = load i32, ptr %19, align 4, !tbaa !9
  %915 = mul nsw i32 %913, %914
  %916 = add nsw i32 %911, %915
  %917 = sext i32 %916 to i64
  %918 = getelementptr inbounds %struct.complex, ptr %910, i64 %917
  %919 = call <2 x float> @Cf(ptr noundef %918)
  store <2 x float> %919, ptr %46, align 4
  %920 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 0
  %921 = load float, ptr %920, align 4
  %922 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 1
  %923 = load float, ptr %922, align 4
  %924 = fneg float %923
  %925 = call ptr @_pCf(ptr noundef %28)
  %926 = getelementptr inbounds { float, float }, ptr %925, i32 0, i32 0
  %927 = getelementptr inbounds { float, float }, ptr %925, i32 0, i32 1
  store float %921, ptr %926, align 4
  store float %924, ptr %927, align 4
  %928 = load i32, ptr %29, align 4, !tbaa !9
  %929 = load i32, ptr %30, align 4, !tbaa !9
  %930 = sub nsw i32 %929, 1
  %931 = load i32, ptr %19, align 4, !tbaa !9
  %932 = mul nsw i32 %930, %931
  %933 = add nsw i32 %928, %932
  store i32 %933, ptr %25, align 4, !tbaa !9
  %934 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %935 = load float, ptr %934, align 4, !tbaa !13
  %936 = load ptr, ptr %12, align 8, !tbaa !5
  %937 = load i32, ptr %25, align 4, !tbaa !9
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds %struct.complex, ptr %936, i64 %938
  %940 = getelementptr inbounds %struct.complex, ptr %939, i32 0, i32 0
  %941 = load float, ptr %940, align 4, !tbaa !13
  %942 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %943 = load float, ptr %942, align 4, !tbaa !19
  %944 = load ptr, ptr %12, align 8, !tbaa !5
  %945 = load i32, ptr %25, align 4, !tbaa !9
  %946 = sext i32 %945 to i64
  %947 = getelementptr inbounds %struct.complex, ptr %944, i64 %946
  %948 = getelementptr inbounds %struct.complex, ptr %947, i32 0, i32 1
  %949 = load float, ptr %948, align 4, !tbaa !19
  %950 = fmul float %943, %949
  %951 = fneg float %950
  %952 = call float @llvm.fmuladd.f32(float %935, float %941, float %951)
  %953 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  store float %952, ptr %953, align 4, !tbaa !13
  %954 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %955 = load float, ptr %954, align 4, !tbaa !13
  %956 = load ptr, ptr %12, align 8, !tbaa !5
  %957 = load i32, ptr %25, align 4, !tbaa !9
  %958 = sext i32 %957 to i64
  %959 = getelementptr inbounds %struct.complex, ptr %956, i64 %958
  %960 = getelementptr inbounds %struct.complex, ptr %959, i32 0, i32 1
  %961 = load float, ptr %960, align 4, !tbaa !19
  %962 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %963 = load float, ptr %962, align 4, !tbaa !19
  %964 = load ptr, ptr %12, align 8, !tbaa !5
  %965 = load i32, ptr %25, align 4, !tbaa !9
  %966 = sext i32 %965 to i64
  %967 = getelementptr inbounds %struct.complex, ptr %964, i64 %966
  %968 = getelementptr inbounds %struct.complex, ptr %967, i32 0, i32 0
  %969 = load float, ptr %968, align 4, !tbaa !13
  %970 = fmul float %963, %969
  %971 = call float @llvm.fmuladd.f32(float %955, float %961, float %970)
  %972 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  store float %971, ptr %972, align 4, !tbaa !19
  %973 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  %974 = load float, ptr %973, align 4, !tbaa !13
  %975 = load ptr, ptr %17, align 8, !tbaa !5
  %976 = load i32, ptr %29, align 4, !tbaa !9
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds float, ptr %975, i64 %977
  %979 = load float, ptr %978, align 4, !tbaa !16
  %980 = fadd float %979, %974
  store float %980, ptr %978, align 4, !tbaa !16
  br label %981

981:                                              ; preds = %909, %905
  %982 = load i32, ptr %29, align 4, !tbaa !9
  %983 = load i32, ptr %29, align 4, !tbaa !9
  %984 = load i32, ptr %19, align 4, !tbaa !9
  %985 = mul nsw i32 %983, %984
  %986 = add nsw i32 %982, %985
  store i32 %986, ptr %25, align 4, !tbaa !9
  %987 = load ptr, ptr %12, align 8, !tbaa !5
  %988 = load i32, ptr %25, align 4, !tbaa !9
  %989 = sext i32 %988 to i64
  %990 = getelementptr inbounds %struct.complex, ptr %987, i64 %989
  %991 = getelementptr inbounds %struct.complex, ptr %990, i32 0, i32 0
  %992 = load float, ptr %991, align 4, !tbaa !13
  %993 = load ptr, ptr %17, align 8, !tbaa !5
  %994 = load i32, ptr %29, align 4, !tbaa !9
  %995 = sext i32 %994 to i64
  %996 = getelementptr inbounds float, ptr %993, i64 %995
  %997 = load float, ptr %996, align 4, !tbaa !16
  %998 = fsub float %992, %997
  %999 = load ptr, ptr %17, align 8, !tbaa !5
  %1000 = load ptr, ptr %11, align 8, !tbaa !5
  %1001 = load i32, ptr %1000, align 4, !tbaa !9
  %1002 = load i32, ptr %29, align 4, !tbaa !9
  %1003 = add nsw i32 %1001, %1002
  %1004 = sext i32 %1003 to i64
  %1005 = getelementptr inbounds float, ptr %999, i64 %1004
  store float %998, ptr %1005, align 4, !tbaa !16
  br label %1006

1006:                                             ; preds = %981
  %1007 = load i32, ptr %29, align 4, !tbaa !9
  %1008 = add nsw i32 %1007, 1
  store i32 %1008, ptr %29, align 4, !tbaa !9
  br label %901, !llvm.loop !25

1009:                                             ; preds = %901
  %1010 = load i32, ptr %30, align 4, !tbaa !9
  %1011 = icmp sgt i32 %1010, 1
  br i1 %1011, label %1012, label %1061

1012:                                             ; preds = %1009
  %1013 = load ptr, ptr %11, align 8, !tbaa !5
  %1014 = load i32, ptr %1013, align 4, !tbaa !9
  %1015 = load i32, ptr %30, align 4, !tbaa !9
  %1016 = add nsw i32 %1014, %1015
  store i32 %1016, ptr %24, align 4, !tbaa !9
  %1017 = load ptr, ptr %11, align 8, !tbaa !5
  %1018 = load i32, ptr %1017, align 4, !tbaa !9
  %1019 = shl i32 %1018, 1
  store i32 %1019, ptr %25, align 4, !tbaa !9
  %1020 = load ptr, ptr %17, align 8, !tbaa !5
  %1021 = getelementptr inbounds float, ptr %1020, i64 1
  %1022 = load i32, ptr %24, align 4, !tbaa !9
  %1023 = load i32, ptr %25, align 4, !tbaa !9
  %1024 = call i32 @smaxloc_(ptr noundef %1021, i32 noundef %1022, i32 noundef %1023, ptr noundef @c__1)
  store i32 %1024, ptr %33, align 4, !tbaa !9
  %1025 = load i32, ptr %33, align 4, !tbaa !9
  %1026 = load i32, ptr %30, align 4, !tbaa !9
  %1027 = add nsw i32 %1025, %1026
  %1028 = sub nsw i32 %1027, 1
  store i32 %1028, ptr %40, align 4, !tbaa !9
  %1029 = load ptr, ptr %17, align 8, !tbaa !5
  %1030 = load ptr, ptr %11, align 8, !tbaa !5
  %1031 = load i32, ptr %1030, align 4, !tbaa !9
  %1032 = load i32, ptr %40, align 4, !tbaa !9
  %1033 = add nsw i32 %1031, %1032
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds float, ptr %1029, i64 %1034
  %1036 = load float, ptr %1035, align 4, !tbaa !16
  store float %1036, ptr %39, align 4, !tbaa !16
  %1037 = load float, ptr %39, align 4, !tbaa !16
  %1038 = load float, ptr %36, align 4, !tbaa !16
  %1039 = fcmp ole float %1037, %1038
  br i1 %1039, label %1043, label %1040

1040:                                             ; preds = %1012
  %1041 = call i32 @sisnan_(ptr noundef %39)
  %1042 = icmp ne i32 %1041, 0
  br i1 %1042, label %1043, label %1060

1043:                                             ; preds = %1040, %1012
  %1044 = load i32, ptr %30, align 4, !tbaa !9
  %1045 = load i32, ptr %30, align 4, !tbaa !9
  %1046 = load i32, ptr %19, align 4, !tbaa !9
  %1047 = mul nsw i32 %1045, %1046
  %1048 = add nsw i32 %1044, %1047
  store i32 %1048, ptr %24, align 4, !tbaa !9
  %1049 = load float, ptr %39, align 4, !tbaa !16
  %1050 = load ptr, ptr %12, align 8, !tbaa !5
  %1051 = load i32, ptr %24, align 4, !tbaa !9
  %1052 = sext i32 %1051 to i64
  %1053 = getelementptr inbounds %struct.complex, ptr %1050, i64 %1052
  %1054 = getelementptr inbounds %struct.complex, ptr %1053, i32 0, i32 0
  store float %1049, ptr %1054, align 4, !tbaa !13
  %1055 = load ptr, ptr %12, align 8, !tbaa !5
  %1056 = load i32, ptr %24, align 4, !tbaa !9
  %1057 = sext i32 %1056 to i64
  %1058 = getelementptr inbounds %struct.complex, ptr %1055, i64 %1057
  %1059 = getelementptr inbounds %struct.complex, ptr %1058, i32 0, i32 1
  store float 0.000000e+00, ptr %1059, align 4, !tbaa !19
  br label %1449

1060:                                             ; preds = %1040
  br label %1061

1061:                                             ; preds = %1060, %1009
  %1062 = load i32, ptr %30, align 4, !tbaa !9
  %1063 = load i32, ptr %40, align 4, !tbaa !9
  %1064 = icmp ne i32 %1062, %1063
  br i1 %1064, label %1065, label %1307

1065:                                             ; preds = %1061
  %1066 = load i32, ptr %40, align 4, !tbaa !9
  %1067 = load i32, ptr %40, align 4, !tbaa !9
  %1068 = load i32, ptr %19, align 4, !tbaa !9
  %1069 = mul nsw i32 %1067, %1068
  %1070 = add nsw i32 %1066, %1069
  store i32 %1070, ptr %24, align 4, !tbaa !9
  %1071 = load i32, ptr %30, align 4, !tbaa !9
  %1072 = load i32, ptr %30, align 4, !tbaa !9
  %1073 = load i32, ptr %19, align 4, !tbaa !9
  %1074 = mul nsw i32 %1072, %1073
  %1075 = add nsw i32 %1071, %1074
  store i32 %1075, ptr %25, align 4, !tbaa !9
  %1076 = load ptr, ptr %12, align 8, !tbaa !5
  %1077 = load i32, ptr %25, align 4, !tbaa !9
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds %struct.complex, ptr %1076, i64 %1078
  %1080 = getelementptr inbounds %struct.complex, ptr %1079, i32 0, i32 0
  %1081 = load float, ptr %1080, align 4, !tbaa !13
  %1082 = load ptr, ptr %12, align 8, !tbaa !5
  %1083 = load i32, ptr %24, align 4, !tbaa !9
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds %struct.complex, ptr %1082, i64 %1084
  %1086 = getelementptr inbounds %struct.complex, ptr %1085, i32 0, i32 0
  store float %1081, ptr %1086, align 4, !tbaa !13
  %1087 = load ptr, ptr %12, align 8, !tbaa !5
  %1088 = load i32, ptr %25, align 4, !tbaa !9
  %1089 = sext i32 %1088 to i64
  %1090 = getelementptr inbounds %struct.complex, ptr %1087, i64 %1089
  %1091 = getelementptr inbounds %struct.complex, ptr %1090, i32 0, i32 1
  %1092 = load float, ptr %1091, align 4, !tbaa !19
  %1093 = load ptr, ptr %12, align 8, !tbaa !5
  %1094 = load i32, ptr %24, align 4, !tbaa !9
  %1095 = sext i32 %1094 to i64
  %1096 = getelementptr inbounds %struct.complex, ptr %1093, i64 %1095
  %1097 = getelementptr inbounds %struct.complex, ptr %1096, i32 0, i32 1
  store float %1092, ptr %1097, align 4, !tbaa !19
  %1098 = load i32, ptr %30, align 4, !tbaa !9
  %1099 = sub nsw i32 %1098, 1
  store i32 %1099, ptr %24, align 4, !tbaa !9
  %1100 = load ptr, ptr %12, align 8, !tbaa !5
  %1101 = load i32, ptr %30, align 4, !tbaa !9
  %1102 = load i32, ptr %19, align 4, !tbaa !9
  %1103 = add nsw i32 %1101, %1102
  %1104 = sext i32 %1103 to i64
  %1105 = getelementptr inbounds %struct.complex, ptr %1100, i64 %1104
  %1106 = load ptr, ptr %13, align 8, !tbaa !5
  %1107 = load ptr, ptr %12, align 8, !tbaa !5
  %1108 = load i32, ptr %40, align 4, !tbaa !9
  %1109 = load i32, ptr %19, align 4, !tbaa !9
  %1110 = add nsw i32 %1108, %1109
  %1111 = sext i32 %1110 to i64
  %1112 = getelementptr inbounds %struct.complex, ptr %1107, i64 %1111
  %1113 = load ptr, ptr %13, align 8, !tbaa !5
  call void @cswap_(ptr noundef %24, ptr noundef %1105, ptr noundef %1106, ptr noundef %1112, ptr noundef %1113)
  %1114 = load i32, ptr %40, align 4, !tbaa !9
  %1115 = load ptr, ptr %11, align 8, !tbaa !5
  %1116 = load i32, ptr %1115, align 4, !tbaa !9
  %1117 = icmp slt i32 %1114, %1116
  br i1 %1117, label %1118, label %1141

1118:                                             ; preds = %1065
  %1119 = load ptr, ptr %11, align 8, !tbaa !5
  %1120 = load i32, ptr %1119, align 4, !tbaa !9
  %1121 = load i32, ptr %40, align 4, !tbaa !9
  %1122 = sub nsw i32 %1120, %1121
  store i32 %1122, ptr %24, align 4, !tbaa !9
  %1123 = load ptr, ptr %12, align 8, !tbaa !5
  %1124 = load i32, ptr %40, align 4, !tbaa !9
  %1125 = add nsw i32 %1124, 1
  %1126 = load i32, ptr %30, align 4, !tbaa !9
  %1127 = load i32, ptr %19, align 4, !tbaa !9
  %1128 = mul nsw i32 %1126, %1127
  %1129 = add nsw i32 %1125, %1128
  %1130 = sext i32 %1129 to i64
  %1131 = getelementptr inbounds %struct.complex, ptr %1123, i64 %1130
  %1132 = load ptr, ptr %12, align 8, !tbaa !5
  %1133 = load i32, ptr %40, align 4, !tbaa !9
  %1134 = add nsw i32 %1133, 1
  %1135 = load i32, ptr %40, align 4, !tbaa !9
  %1136 = load i32, ptr %19, align 4, !tbaa !9
  %1137 = mul nsw i32 %1135, %1136
  %1138 = add nsw i32 %1134, %1137
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds %struct.complex, ptr %1132, i64 %1139
  call void @cswap_(ptr noundef %24, ptr noundef %1131, ptr noundef @c__1, ptr noundef %1140, ptr noundef @c__1)
  br label %1141

1141:                                             ; preds = %1118, %1065
  %1142 = load i32, ptr %40, align 4, !tbaa !9
  %1143 = sub nsw i32 %1142, 1
  store i32 %1143, ptr %24, align 4, !tbaa !9
  %1144 = load i32, ptr %30, align 4, !tbaa !9
  %1145 = add nsw i32 %1144, 1
  store i32 %1145, ptr %29, align 4, !tbaa !9
  br label %1146

1146:                                             ; preds = %1229, %1141
  %1147 = load i32, ptr %29, align 4, !tbaa !9
  %1148 = load i32, ptr %24, align 4, !tbaa !9
  %1149 = icmp sle i32 %1147, %1148
  br i1 %1149, label %1150, label %1232

1150:                                             ; preds = %1146
  %1151 = load ptr, ptr %12, align 8, !tbaa !5
  %1152 = load i32, ptr %29, align 4, !tbaa !9
  %1153 = load i32, ptr %30, align 4, !tbaa !9
  %1154 = load i32, ptr %19, align 4, !tbaa !9
  %1155 = mul nsw i32 %1153, %1154
  %1156 = add nsw i32 %1152, %1155
  %1157 = sext i32 %1156 to i64
  %1158 = getelementptr inbounds %struct.complex, ptr %1151, i64 %1157
  %1159 = call <2 x float> @Cf(ptr noundef %1158)
  store <2 x float> %1159, ptr %47, align 4
  %1160 = getelementptr inbounds { float, float }, ptr %47, i32 0, i32 0
  %1161 = load float, ptr %1160, align 4
  %1162 = getelementptr inbounds { float, float }, ptr %47, i32 0, i32 1
  %1163 = load float, ptr %1162, align 4
  %1164 = fneg float %1163
  %1165 = call ptr @_pCf(ptr noundef %27)
  %1166 = getelementptr inbounds { float, float }, ptr %1165, i32 0, i32 0
  %1167 = getelementptr inbounds { float, float }, ptr %1165, i32 0, i32 1
  store float %1161, ptr %1166, align 4
  store float %1164, ptr %1167, align 4
  %1168 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  %1169 = load float, ptr %1168, align 4, !tbaa !13
  %1170 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %1169, ptr %1170, align 4, !tbaa !13
  %1171 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  %1172 = load float, ptr %1171, align 4, !tbaa !19
  %1173 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %1172, ptr %1173, align 4, !tbaa !19
  %1174 = load i32, ptr %29, align 4, !tbaa !9
  %1175 = load i32, ptr %30, align 4, !tbaa !9
  %1176 = load i32, ptr %19, align 4, !tbaa !9
  %1177 = mul nsw i32 %1175, %1176
  %1178 = add nsw i32 %1174, %1177
  store i32 %1178, ptr %25, align 4, !tbaa !9
  %1179 = load ptr, ptr %12, align 8, !tbaa !5
  %1180 = load i32, ptr %40, align 4, !tbaa !9
  %1181 = load i32, ptr %29, align 4, !tbaa !9
  %1182 = load i32, ptr %19, align 4, !tbaa !9
  %1183 = mul nsw i32 %1181, %1182
  %1184 = add nsw i32 %1180, %1183
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds %struct.complex, ptr %1179, i64 %1185
  %1187 = call <2 x float> @Cf(ptr noundef %1186)
  store <2 x float> %1187, ptr %48, align 4
  %1188 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 0
  %1189 = load float, ptr %1188, align 4
  %1190 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 1
  %1191 = load float, ptr %1190, align 4
  %1192 = fneg float %1191
  %1193 = call ptr @_pCf(ptr noundef %27)
  %1194 = getelementptr inbounds { float, float }, ptr %1193, i32 0, i32 0
  %1195 = getelementptr inbounds { float, float }, ptr %1193, i32 0, i32 1
  store float %1189, ptr %1194, align 4
  store float %1192, ptr %1195, align 4
  %1196 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  %1197 = load float, ptr %1196, align 4, !tbaa !13
  %1198 = load ptr, ptr %12, align 8, !tbaa !5
  %1199 = load i32, ptr %25, align 4, !tbaa !9
  %1200 = sext i32 %1199 to i64
  %1201 = getelementptr inbounds %struct.complex, ptr %1198, i64 %1200
  %1202 = getelementptr inbounds %struct.complex, ptr %1201, i32 0, i32 0
  store float %1197, ptr %1202, align 4, !tbaa !13
  %1203 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  %1204 = load float, ptr %1203, align 4, !tbaa !19
  %1205 = load ptr, ptr %12, align 8, !tbaa !5
  %1206 = load i32, ptr %25, align 4, !tbaa !9
  %1207 = sext i32 %1206 to i64
  %1208 = getelementptr inbounds %struct.complex, ptr %1205, i64 %1207
  %1209 = getelementptr inbounds %struct.complex, ptr %1208, i32 0, i32 1
  store float %1204, ptr %1209, align 4, !tbaa !19
  %1210 = load i32, ptr %40, align 4, !tbaa !9
  %1211 = load i32, ptr %29, align 4, !tbaa !9
  %1212 = load i32, ptr %19, align 4, !tbaa !9
  %1213 = mul nsw i32 %1211, %1212
  %1214 = add nsw i32 %1210, %1213
  store i32 %1214, ptr %25, align 4, !tbaa !9
  %1215 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  %1216 = load float, ptr %1215, align 4, !tbaa !13
  %1217 = load ptr, ptr %12, align 8, !tbaa !5
  %1218 = load i32, ptr %25, align 4, !tbaa !9
  %1219 = sext i32 %1218 to i64
  %1220 = getelementptr inbounds %struct.complex, ptr %1217, i64 %1219
  %1221 = getelementptr inbounds %struct.complex, ptr %1220, i32 0, i32 0
  store float %1216, ptr %1221, align 4, !tbaa !13
  %1222 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  %1223 = load float, ptr %1222, align 4, !tbaa !19
  %1224 = load ptr, ptr %12, align 8, !tbaa !5
  %1225 = load i32, ptr %25, align 4, !tbaa !9
  %1226 = sext i32 %1225 to i64
  %1227 = getelementptr inbounds %struct.complex, ptr %1224, i64 %1226
  %1228 = getelementptr inbounds %struct.complex, ptr %1227, i32 0, i32 1
  store float %1223, ptr %1228, align 4, !tbaa !19
  br label %1229

1229:                                             ; preds = %1150
  %1230 = load i32, ptr %29, align 4, !tbaa !9
  %1231 = add nsw i32 %1230, 1
  store i32 %1231, ptr %29, align 4, !tbaa !9
  br label %1146, !llvm.loop !26

1232:                                             ; preds = %1146
  %1233 = load i32, ptr %40, align 4, !tbaa !9
  %1234 = load i32, ptr %30, align 4, !tbaa !9
  %1235 = load i32, ptr %19, align 4, !tbaa !9
  %1236 = mul nsw i32 %1234, %1235
  %1237 = add nsw i32 %1233, %1236
  store i32 %1237, ptr %24, align 4, !tbaa !9
  %1238 = load ptr, ptr %12, align 8, !tbaa !5
  %1239 = load i32, ptr %40, align 4, !tbaa !9
  %1240 = load i32, ptr %30, align 4, !tbaa !9
  %1241 = load i32, ptr %19, align 4, !tbaa !9
  %1242 = mul nsw i32 %1240, %1241
  %1243 = add nsw i32 %1239, %1242
  %1244 = sext i32 %1243 to i64
  %1245 = getelementptr inbounds %struct.complex, ptr %1238, i64 %1244
  %1246 = call <2 x float> @Cf(ptr noundef %1245)
  store <2 x float> %1246, ptr %49, align 4
  %1247 = getelementptr inbounds { float, float }, ptr %49, i32 0, i32 0
  %1248 = load float, ptr %1247, align 4
  %1249 = getelementptr inbounds { float, float }, ptr %49, i32 0, i32 1
  %1250 = load float, ptr %1249, align 4
  %1251 = fneg float %1250
  %1252 = call ptr @_pCf(ptr noundef %27)
  %1253 = getelementptr inbounds { float, float }, ptr %1252, i32 0, i32 0
  %1254 = getelementptr inbounds { float, float }, ptr %1252, i32 0, i32 1
  store float %1248, ptr %1253, align 4
  store float %1251, ptr %1254, align 4
  %1255 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  %1256 = load float, ptr %1255, align 4, !tbaa !13
  %1257 = load ptr, ptr %12, align 8, !tbaa !5
  %1258 = load i32, ptr %24, align 4, !tbaa !9
  %1259 = sext i32 %1258 to i64
  %1260 = getelementptr inbounds %struct.complex, ptr %1257, i64 %1259
  %1261 = getelementptr inbounds %struct.complex, ptr %1260, i32 0, i32 0
  store float %1256, ptr %1261, align 4, !tbaa !13
  %1262 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  %1263 = load float, ptr %1262, align 4, !tbaa !19
  %1264 = load ptr, ptr %12, align 8, !tbaa !5
  %1265 = load i32, ptr %24, align 4, !tbaa !9
  %1266 = sext i32 %1265 to i64
  %1267 = getelementptr inbounds %struct.complex, ptr %1264, i64 %1266
  %1268 = getelementptr inbounds %struct.complex, ptr %1267, i32 0, i32 1
  store float %1263, ptr %1268, align 4, !tbaa !19
  %1269 = load ptr, ptr %17, align 8, !tbaa !5
  %1270 = load i32, ptr %30, align 4, !tbaa !9
  %1271 = sext i32 %1270 to i64
  %1272 = getelementptr inbounds float, ptr %1269, i64 %1271
  %1273 = load float, ptr %1272, align 4, !tbaa !16
  store float %1273, ptr %34, align 4, !tbaa !16
  %1274 = load ptr, ptr %17, align 8, !tbaa !5
  %1275 = load i32, ptr %40, align 4, !tbaa !9
  %1276 = sext i32 %1275 to i64
  %1277 = getelementptr inbounds float, ptr %1274, i64 %1276
  %1278 = load float, ptr %1277, align 4, !tbaa !16
  %1279 = load ptr, ptr %17, align 8, !tbaa !5
  %1280 = load i32, ptr %30, align 4, !tbaa !9
  %1281 = sext i32 %1280 to i64
  %1282 = getelementptr inbounds float, ptr %1279, i64 %1281
  store float %1278, ptr %1282, align 4, !tbaa !16
  %1283 = load float, ptr %34, align 4, !tbaa !16
  %1284 = load ptr, ptr %17, align 8, !tbaa !5
  %1285 = load i32, ptr %40, align 4, !tbaa !9
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds float, ptr %1284, i64 %1286
  store float %1283, ptr %1287, align 4, !tbaa !16
  %1288 = load ptr, ptr %14, align 8, !tbaa !5
  %1289 = load i32, ptr %40, align 4, !tbaa !9
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds i32, ptr %1288, i64 %1290
  %1292 = load i32, ptr %1291, align 4, !tbaa !9
  store i32 %1292, ptr %33, align 4, !tbaa !9
  %1293 = load ptr, ptr %14, align 8, !tbaa !5
  %1294 = load i32, ptr %30, align 4, !tbaa !9
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds i32, ptr %1293, i64 %1295
  %1297 = load i32, ptr %1296, align 4, !tbaa !9
  %1298 = load ptr, ptr %14, align 8, !tbaa !5
  %1299 = load i32, ptr %40, align 4, !tbaa !9
  %1300 = sext i32 %1299 to i64
  %1301 = getelementptr inbounds i32, ptr %1298, i64 %1300
  store i32 %1297, ptr %1301, align 4, !tbaa !9
  %1302 = load i32, ptr %33, align 4, !tbaa !9
  %1303 = load ptr, ptr %14, align 8, !tbaa !5
  %1304 = load i32, ptr %30, align 4, !tbaa !9
  %1305 = sext i32 %1304 to i64
  %1306 = getelementptr inbounds i32, ptr %1303, i64 %1305
  store i32 %1302, ptr %1306, align 4, !tbaa !9
  br label %1307

1307:                                             ; preds = %1232, %1061
  %1308 = load float, ptr %39, align 4, !tbaa !16
  %1309 = fpext float %1308 to double
  %1310 = call double @sqrt(double noundef %1309) #8
  %1311 = fptrunc double %1310 to float
  store float %1311, ptr %39, align 4, !tbaa !16
  %1312 = load i32, ptr %30, align 4, !tbaa !9
  %1313 = load i32, ptr %30, align 4, !tbaa !9
  %1314 = load i32, ptr %19, align 4, !tbaa !9
  %1315 = mul nsw i32 %1313, %1314
  %1316 = add nsw i32 %1312, %1315
  store i32 %1316, ptr %24, align 4, !tbaa !9
  %1317 = load float, ptr %39, align 4, !tbaa !16
  %1318 = load ptr, ptr %12, align 8, !tbaa !5
  %1319 = load i32, ptr %24, align 4, !tbaa !9
  %1320 = sext i32 %1319 to i64
  %1321 = getelementptr inbounds %struct.complex, ptr %1318, i64 %1320
  %1322 = getelementptr inbounds %struct.complex, ptr %1321, i32 0, i32 0
  store float %1317, ptr %1322, align 4, !tbaa !13
  %1323 = load ptr, ptr %12, align 8, !tbaa !5
  %1324 = load i32, ptr %24, align 4, !tbaa !9
  %1325 = sext i32 %1324 to i64
  %1326 = getelementptr inbounds %struct.complex, ptr %1323, i64 %1325
  %1327 = getelementptr inbounds %struct.complex, ptr %1326, i32 0, i32 1
  store float 0.000000e+00, ptr %1327, align 4, !tbaa !19
  %1328 = load i32, ptr %30, align 4, !tbaa !9
  %1329 = load ptr, ptr %11, align 8, !tbaa !5
  %1330 = load i32, ptr %1329, align 4, !tbaa !9
  %1331 = icmp slt i32 %1328, %1330
  br i1 %1331, label %1332, label %1403

1332:                                             ; preds = %1307
  %1333 = load i32, ptr %30, align 4, !tbaa !9
  %1334 = sub nsw i32 %1333, 1
  store i32 %1334, ptr %24, align 4, !tbaa !9
  %1335 = load ptr, ptr %12, align 8, !tbaa !5
  %1336 = load i32, ptr %30, align 4, !tbaa !9
  %1337 = load i32, ptr %19, align 4, !tbaa !9
  %1338 = add nsw i32 %1336, %1337
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds %struct.complex, ptr %1335, i64 %1339
  %1341 = load ptr, ptr %13, align 8, !tbaa !5
  call void @clacgv_(ptr noundef %24, ptr noundef %1340, ptr noundef %1341)
  %1342 = load ptr, ptr %11, align 8, !tbaa !5
  %1343 = load i32, ptr %1342, align 4, !tbaa !9
  %1344 = load i32, ptr %30, align 4, !tbaa !9
  %1345 = sub nsw i32 %1343, %1344
  store i32 %1345, ptr %24, align 4, !tbaa !9
  %1346 = load i32, ptr %30, align 4, !tbaa !9
  %1347 = load i32, ptr %31, align 4, !tbaa !9
  %1348 = sub nsw i32 %1346, %1347
  store i32 %1348, ptr %25, align 4, !tbaa !9
  %1349 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 0
  store float -1.000000e+00, ptr %1349, align 4, !tbaa !13
  %1350 = getelementptr inbounds %struct.complex, ptr %27, i32 0, i32 1
  store float 0.000000e+00, ptr %1350, align 4, !tbaa !19
  %1351 = load ptr, ptr %12, align 8, !tbaa !5
  %1352 = load i32, ptr %30, align 4, !tbaa !9
  %1353 = add nsw i32 %1352, 1
  %1354 = load i32, ptr %31, align 4, !tbaa !9
  %1355 = load i32, ptr %19, align 4, !tbaa !9
  %1356 = mul nsw i32 %1354, %1355
  %1357 = add nsw i32 %1353, %1356
  %1358 = sext i32 %1357 to i64
  %1359 = getelementptr inbounds %struct.complex, ptr %1351, i64 %1358
  %1360 = load ptr, ptr %13, align 8, !tbaa !5
  %1361 = load ptr, ptr %12, align 8, !tbaa !5
  %1362 = load i32, ptr %30, align 4, !tbaa !9
  %1363 = load i32, ptr %31, align 4, !tbaa !9
  %1364 = load i32, ptr %19, align 4, !tbaa !9
  %1365 = mul nsw i32 %1363, %1364
  %1366 = add nsw i32 %1362, %1365
  %1367 = sext i32 %1366 to i64
  %1368 = getelementptr inbounds %struct.complex, ptr %1361, i64 %1367
  %1369 = load ptr, ptr %13, align 8, !tbaa !5
  %1370 = load ptr, ptr %12, align 8, !tbaa !5
  %1371 = load i32, ptr %30, align 4, !tbaa !9
  %1372 = add nsw i32 %1371, 1
  %1373 = load i32, ptr %30, align 4, !tbaa !9
  %1374 = load i32, ptr %19, align 4, !tbaa !9
  %1375 = mul nsw i32 %1373, %1374
  %1376 = add nsw i32 %1372, %1375
  %1377 = sext i32 %1376 to i64
  %1378 = getelementptr inbounds %struct.complex, ptr %1370, i64 %1377
  call void @cgemv_(ptr noundef @.str.8, ptr noundef %24, ptr noundef %25, ptr noundef %27, ptr noundef %1359, ptr noundef %1360, ptr noundef %1368, ptr noundef %1369, ptr noundef @c_b1, ptr noundef %1378, ptr noundef @c__1)
  %1379 = load i32, ptr %30, align 4, !tbaa !9
  %1380 = sub nsw i32 %1379, 1
  store i32 %1380, ptr %24, align 4, !tbaa !9
  %1381 = load ptr, ptr %12, align 8, !tbaa !5
  %1382 = load i32, ptr %30, align 4, !tbaa !9
  %1383 = load i32, ptr %19, align 4, !tbaa !9
  %1384 = add nsw i32 %1382, %1383
  %1385 = sext i32 %1384 to i64
  %1386 = getelementptr inbounds %struct.complex, ptr %1381, i64 %1385
  %1387 = load ptr, ptr %13, align 8, !tbaa !5
  call void @clacgv_(ptr noundef %24, ptr noundef %1386, ptr noundef %1387)
  %1388 = load ptr, ptr %11, align 8, !tbaa !5
  %1389 = load i32, ptr %1388, align 4, !tbaa !9
  %1390 = load i32, ptr %30, align 4, !tbaa !9
  %1391 = sub nsw i32 %1389, %1390
  store i32 %1391, ptr %24, align 4, !tbaa !9
  %1392 = load float, ptr %39, align 4, !tbaa !16
  %1393 = fdiv float 1.000000e+00, %1392
  store float %1393, ptr %26, align 4, !tbaa !16
  %1394 = load ptr, ptr %12, align 8, !tbaa !5
  %1395 = load i32, ptr %30, align 4, !tbaa !9
  %1396 = add nsw i32 %1395, 1
  %1397 = load i32, ptr %30, align 4, !tbaa !9
  %1398 = load i32, ptr %19, align 4, !tbaa !9
  %1399 = mul nsw i32 %1397, %1398
  %1400 = add nsw i32 %1396, %1399
  %1401 = sext i32 %1400 to i64
  %1402 = getelementptr inbounds %struct.complex, ptr %1394, i64 %1401
  call void @csscal_(ptr noundef %24, ptr noundef %26, ptr noundef %1402, ptr noundef @c__1)
  br label %1403

1403:                                             ; preds = %1332, %1307
  br label %1404

1404:                                             ; preds = %1403
  %1405 = load i32, ptr %30, align 4, !tbaa !9
  %1406 = add nsw i32 %1405, 1
  store i32 %1406, ptr %30, align 4, !tbaa !9
  br label %893, !llvm.loop !27

1407:                                             ; preds = %893
  %1408 = load i32, ptr %31, align 4, !tbaa !9
  %1409 = load i32, ptr %37, align 4, !tbaa !9
  %1410 = add nsw i32 %1408, %1409
  %1411 = load ptr, ptr %11, align 8, !tbaa !5
  %1412 = load i32, ptr %1411, align 4, !tbaa !9
  %1413 = icmp sle i32 %1410, %1412
  br i1 %1413, label %1414, label %1438

1414:                                             ; preds = %1407
  %1415 = load ptr, ptr %11, align 8, !tbaa !5
  %1416 = load i32, ptr %1415, align 4, !tbaa !9
  %1417 = load i32, ptr %30, align 4, !tbaa !9
  %1418 = sub nsw i32 %1416, %1417
  %1419 = add nsw i32 %1418, 1
  store i32 %1419, ptr %23, align 4, !tbaa !9
  %1420 = load ptr, ptr %12, align 8, !tbaa !5
  %1421 = load i32, ptr %30, align 4, !tbaa !9
  %1422 = load i32, ptr %31, align 4, !tbaa !9
  %1423 = load i32, ptr %19, align 4, !tbaa !9
  %1424 = mul nsw i32 %1422, %1423
  %1425 = add nsw i32 %1421, %1424
  %1426 = sext i32 %1425 to i64
  %1427 = getelementptr inbounds %struct.complex, ptr %1420, i64 %1426
  %1428 = load ptr, ptr %13, align 8, !tbaa !5
  %1429 = load ptr, ptr %12, align 8, !tbaa !5
  %1430 = load i32, ptr %30, align 4, !tbaa !9
  %1431 = load i32, ptr %30, align 4, !tbaa !9
  %1432 = load i32, ptr %19, align 4, !tbaa !9
  %1433 = mul nsw i32 %1431, %1432
  %1434 = add nsw i32 %1430, %1433
  %1435 = sext i32 %1434 to i64
  %1436 = getelementptr inbounds %struct.complex, ptr %1429, i64 %1435
  %1437 = load ptr, ptr %13, align 8, !tbaa !5
  call void @cherk_(ptr noundef @.str.9, ptr noundef @.str.8, ptr noundef %23, ptr noundef %37, ptr noundef @c_b32, ptr noundef %1427, ptr noundef %1428, ptr noundef @c_b33, ptr noundef %1436, ptr noundef %1437)
  br label %1438

1438:                                             ; preds = %1414, %1407
  br label %1439

1439:                                             ; preds = %1438
  %1440 = load i32, ptr %21, align 4, !tbaa !9
  %1441 = load i32, ptr %31, align 4, !tbaa !9
  %1442 = add nsw i32 %1441, %1440
  store i32 %1442, ptr %31, align 4, !tbaa !9
  br label %840, !llvm.loop !28

1443:                                             ; preds = %853
  br label %1444

1444:                                             ; preds = %1443, %835
  br label %1445

1445:                                             ; preds = %1444
  %1446 = load ptr, ptr %11, align 8, !tbaa !5
  %1447 = load i32, ptr %1446, align 4, !tbaa !9
  %1448 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 %1447, ptr %1448, align 4, !tbaa !9
  br label %1454

1449:                                             ; preds = %1043, %432
  %1450 = load i32, ptr %30, align 4, !tbaa !9
  %1451 = sub nsw i32 %1450, 1
  %1452 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 %1451, ptr %1452, align 4, !tbaa !9
  %1453 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 1, ptr %1453, align 4, !tbaa !9
  br label %1454

1454:                                             ; preds = %1449, %1445, %204, %123
  store i32 1, ptr %41, align 4
  br label %1455

1455:                                             ; preds = %1454, %111, %102
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #8
  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 i32 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) #2

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

; Function Attrs: nounwind uwtable
declare hidden i32 @smaxloc_(ptr noundef, i32 noundef, i32 noundef, ptr noundef) #3

declare i32 @sisnan_(ptr noundef) #2

declare float @slamch_(ptr noundef) #2

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

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

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

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

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

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

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

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

declare void @cherk_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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 = { nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { inlinehint nounwind uwtable "min-legal-vector-width"="64" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { inlinehint nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #7 = { nounwind "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 #8 = { 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 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !15, i64 0}
!14 = !{!"", !15, i64 0, !15, i64 4}
!15 = !{!"float", !7, i64 0}
!16 = !{!15, !15, i64 0}
!17 = distinct !{!17, !12}
!18 = distinct !{!18, !12}
!19 = !{!14, !15, 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 = distinct !{!27, !12}
!28 = distinct !{!28, !12}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [7 x i8], align 1
@c__1 = external hidden global i32, align 4
@.str.3 = external hidden unnamed_addr constant [7 x i8], align 1
@c_n1 = external hidden global i32, align 4
@.str.4 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [6 x i8], align 1
@c_b1 = external hidden global %struct.complex, align 4
@.str.6 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [11 x i8], align 1
@c_b32 = external hidden global float, align 4
@c_b33 = external hidden global float, align 4
@.str.8 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @cpstrf_(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) local_unnamed_addr #0 {
  %10 = alloca i32, align 4
  %11 = alloca i32, align 4
  %12 = alloca i32, align 4
  %13 = alloca i32, align 4
  %14 = alloca float, align 4
  %15 = alloca %struct.complex, align 8
  %16 = alloca %struct.complex, align 4
  %17 = alloca i32, align 4
  %18 = alloca float, align 4
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #8
  %19 = getelementptr i8, ptr %7, i64 -4
  %20 = getelementptr inbounds i8, ptr %4, i64 -4
  %21 = load i32, ptr %3, align 4, !tbaa !5
  %narrow = xor i32 %21, -1
  %22 = sext i32 %narrow to i64
  %23 = getelementptr inbounds %struct.complex, ptr %2, i64 %22
  store i32 0, ptr %8, align 4, !tbaa !5
  %24 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #8
  %.not = icmp eq i32 %24, 0
  br i1 %.not, label %25, label %27

25:                                               ; preds = %9
  %26 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.1) #8
  %.not499 = icmp eq i32 %26, 0
  br i1 %.not499, label %.thread.sink.split, label %27

27:                                               ; preds = %25, %9
  %28 = load i32, ptr %1, align 4, !tbaa !5
  %29 = icmp slt i32 %28, 0
  br i1 %29, label %.thread.sink.split, label %30

30:                                               ; preds = %27
  %31 = load i32, ptr %3, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %28, i32 1)
  %32 = icmp slt i32 %31, %spec.select
  br i1 %32, label %.thread.sink.split, label %33

33:                                               ; preds = %30
  %.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not500 = icmp eq i32 %.pr, 0
  br i1 %.not500, label %37, label %.thread

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

.thread:                                          ; preds = %.thread.sink.split, %33
  %34 = phi i32 [ %.pr, %33 ], [ %.sink, %.thread.sink.split ]
  %35 = sub nsw i32 0, %34
  store i32 %35, ptr %10, align 4, !tbaa !5
  %36 = call i32 @xerbla_(ptr noundef nonnull @.str.2, ptr noundef nonnull %10, i32 noundef 6) #8
  br label %544

37:                                               ; preds = %33
  %38 = icmp eq i32 %28, 0
  br i1 %38, label %544, label %39

39:                                               ; preds = %37
  %40 = tail call i32 @ilaenv_(ptr noundef nonnull @c__1, ptr noundef nonnull @.str.3, ptr noundef %0, ptr noundef nonnull %1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, ptr noundef nonnull @c_n1, i32 noundef 6, i32 noundef 1) #8
  %41 = icmp slt i32 %40, 2
  br i1 %41, label %44, label %42

42:                                               ; preds = %39
  %43 = load i32, ptr %1, align 4, !tbaa !5
  %.not501 = icmp slt i32 %40, %43
  br i1 %.not501, label %.lr.ph.preheader, label %44

44:                                               ; preds = %42, %39
  tail call void @cpstf2_(ptr noundef %0, ptr noundef nonnull %1, ptr noundef %2, ptr noundef nonnull %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef nonnull %8) #8
  br label %544

.lr.ph.preheader:                                 ; preds = %42
  %45 = add nuw i32 %43, 1
  %wide.trip.count = zext i32 %45 to i64
  %46 = zext i32 %43 to i64
  %min.iters.check = icmp ult i32 %43, 8
  br i1 %min.iters.check, label %.lr.ph.preheader748, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %46, 4294967288
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %vec.ind = phi <4 x i32> [ <i32 1, i32 2, i32 3, i32 4>, %vector.ph ], [ %vec.ind.next, %vector.body ]
  %step.add = add <4 x i32> %vec.ind, <i32 4, i32 4, i32 4, i32 4>
  %47 = getelementptr i32, ptr %4, i64 %index
  %48 = getelementptr inbounds i8, ptr %47, i64 16
  store <4 x i32> %vec.ind, ptr %47, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %48, align 4, !tbaa !5
  %index.next = add nuw i64 %index, 8
  %vec.ind.next = add <4 x i32> %vec.ind, <i32 8, i32 8, i32 8, i32 8>
  %49 = icmp eq i64 %index.next, %n.vec
  br i1 %49, label %middle.block, label %vector.body, !llvm.loop !9

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %46
  br i1 %cmp.n, label %._crit_edge, label %.lr.ph.preheader748

.lr.ph.preheader748:                              ; preds = %middle.block, %.lr.ph.preheader
  %indvars.iv.ph = phi i64 [ 1, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader748, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader748 ]
  %50 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv
  %51 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %51, ptr %50, align 4, !tbaa !5
  %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 !13

._crit_edge:                                      ; preds = %.lr.ph, %middle.block
  %.pre = load i32, ptr %1, align 4, !tbaa !5
  %.not503531 = icmp slt i32 %.pre, 1
  %.pre661 = add i32 %21, 1
  br i1 %.not503531, label %._crit_edge535, label %.lr.ph534

.lr.ph534:                                        ; preds = %._crit_edge
  %52 = zext nneg i32 %.pre to i64
  %xtraiter = and i64 %52, 3
  %53 = icmp ult i32 %.pre, 4
  br i1 %53, label %._crit_edge535.loopexit.unr-lcssa, label %.lr.ph534.new

.lr.ph534.new:                                    ; preds = %.lr.ph534
  %unroll_iter = and i64 %52, 2147483644
  br label %54

54:                                               ; preds = %54, %.lr.ph534.new
  %indvars.iv606 = phi i64 [ 1, %.lr.ph534.new ], [ %indvars.iv.next607.3, %54 ]
  %niter = phi i64 [ 0, %.lr.ph534.new ], [ %niter.next.3, %54 ]
  %55 = trunc nuw nsw i64 %indvars.iv606 to i32
  %56 = mul i32 %.pre661, %55
  %57 = sext i32 %56 to i64
  %58 = getelementptr inbounds %struct.complex, ptr %23, i64 %57
  %59 = load float, ptr %58, align 4, !tbaa !14
  %60 = getelementptr inbounds float, ptr %19, i64 %indvars.iv606
  store float %59, ptr %60, align 4, !tbaa !17
  %61 = trunc i64 %indvars.iv606 to i32
  %62 = add i32 %61, 1
  %63 = mul i32 %.pre661, %62
  %64 = sext i32 %63 to i64
  %65 = getelementptr inbounds %struct.complex, ptr %23, i64 %64
  %66 = load float, ptr %65, align 4, !tbaa !14
  %67 = getelementptr float, ptr %7, i64 %indvars.iv606
  store float %66, ptr %67, align 4, !tbaa !17
  %indvars.iv.next607.1 = add nuw nsw i64 %indvars.iv606, 2
  %68 = trunc nuw nsw i64 %indvars.iv.next607.1 to i32
  %69 = mul i32 %.pre661, %68
  %70 = sext i32 %69 to i64
  %71 = getelementptr inbounds %struct.complex, ptr %23, i64 %70
  %72 = load float, ptr %71, align 4, !tbaa !14
  %73 = getelementptr inbounds float, ptr %19, i64 %indvars.iv.next607.1
  store float %72, ptr %73, align 4, !tbaa !17
  %indvars.iv.next607.2 = add nuw nsw i64 %indvars.iv606, 3
  %74 = trunc nuw nsw i64 %indvars.iv.next607.2 to i32
  %75 = mul i32 %.pre661, %74
  %76 = sext i32 %75 to i64
  %77 = getelementptr inbounds %struct.complex, ptr %23, i64 %76
  %78 = load float, ptr %77, align 4, !tbaa !14
  %79 = getelementptr inbounds float, ptr %19, i64 %indvars.iv.next607.2
  store float %78, ptr %79, align 4, !tbaa !17
  %indvars.iv.next607.3 = add nuw nsw i64 %indvars.iv606, 4
  %niter.next.3 = add i64 %niter, 4
  %niter.ncmp.3 = icmp eq i64 %niter.next.3, %unroll_iter
  br i1 %niter.ncmp.3, label %._crit_edge535.loopexit.unr-lcssa, label %54, !llvm.loop !18

._crit_edge535.loopexit.unr-lcssa:                ; preds = %54, %.lr.ph534
  %indvars.iv606.unr = phi i64 [ 1, %.lr.ph534 ], [ %indvars.iv.next607.3, %54 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge535, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge535.loopexit.unr-lcssa, %.epil.preheader
  %indvars.iv606.epil = phi i64 [ %indvars.iv.next607.epil, %.epil.preheader ], [ %indvars.iv606.unr, %._crit_edge535.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge535.loopexit.unr-lcssa ]
  %80 = trunc nuw nsw i64 %indvars.iv606.epil to i32
  %81 = mul i32 %.pre661, %80
  %82 = sext i32 %81 to i64
  %83 = getelementptr inbounds %struct.complex, ptr %23, i64 %82
  %84 = load float, ptr %83, align 4, !tbaa !14
  %85 = getelementptr inbounds float, ptr %19, i64 %indvars.iv606.epil
  store float %84, ptr %85, align 4, !tbaa !17
  %indvars.iv.next607.epil = add nuw nsw i64 %indvars.iv606.epil, 1
  %epil.iter.next = add i64 %epil.iter, 1
  %epil.iter.cmp.not = icmp eq i64 %epil.iter.next, %xtraiter
  br i1 %epil.iter.cmp.not, label %._crit_edge535, label %.epil.preheader, !llvm.loop !19

._crit_edge535:                                   ; preds = %._crit_edge535.loopexit.unr-lcssa, %.epil.preheader, %._crit_edge
  %86 = load i32, ptr @c__1, align 4, !tbaa !5
  %87 = tail call i32 @smaxloc_(ptr noundef %7, i32 noundef %86, i32 noundef %.pre, ptr noundef nonnull @c__1)
  %88 = mul i32 %87, %.pre661
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds %struct.complex, ptr %23, i64 %89
  %91 = load float, ptr %90, align 4, !tbaa !14
  store float %91, ptr %18, align 4, !tbaa !17
  %92 = fcmp ugt float %91, 0.000000e+00
  br i1 %92, label %93, label %95

93:                                               ; preds = %._crit_edge535
  %94 = call i32 @sisnan_(ptr noundef nonnull %18) #8
  %.not504 = icmp eq i32 %94, 0
  br i1 %.not504, label %96, label %95

95:                                               ; preds = %93, %._crit_edge535
  store i32 0, ptr %5, align 4, !tbaa !5
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %544

96:                                               ; preds = %93
  %97 = load float, ptr %6, align 4, !tbaa !17
  %98 = fcmp olt float %97, 0.000000e+00
  br i1 %98, label %99, label %106

99:                                               ; preds = %96
  %100 = load i32, ptr %1, align 4, !tbaa !5
  %101 = sitofp i32 %100 to float
  %102 = call float @slamch_(ptr noundef nonnull @.str.4) #8
  %103 = fmul float %102, %101
  %104 = load float, ptr %18, align 4, !tbaa !17
  %105 = fmul float %103, %104
  br label %106

106:                                              ; preds = %96, %99
  %.0489 = phi float [ %105, %99 ], [ %97, %96 ]
  %107 = load i32, ptr %1, align 4, !tbaa !5
  br i1 %.not, label %325, label %108

108:                                              ; preds = %106
  %.not513563 = icmp slt i32 %107, 1
  br i1 %.not513563, label %.loopexit, label %.lr.ph567

.lr.ph567:                                        ; preds = %108
  %invariant.gep = getelementptr i8, ptr %23, i64 8
  %109 = getelementptr inbounds i8, ptr %16, i64 4
  %110 = zext nneg i32 %40 to i64
  %111 = shl nuw nsw i64 %110, 2
  %112 = zext nneg i32 %40 to i64
  %113 = sext i32 %21 to i64
  %114 = add i32 %21, 1
  %.pre675682 = add i32 %21, 1
  %115 = zext nneg i32 %107 to i64
  %invariant.gep767 = getelementptr i8, ptr %23, i64 -8
  br label %116

116:                                              ; preds = %.lr.ph567, %324
  %indvars.iv616 = phi i64 [ 1, %.lr.ph567 ], [ %indvars.iv.next617, %324 ]
  %indvars.iv611 = phi i64 [ 1, %.lr.ph567 ], [ %indvars.iv.next612, %324 ]
  %indvar = phi i64 [ 0, %.lr.ph567 ], [ %indvar.next, %324 ]
  %.0483564 = phi i32 [ %87, %.lr.ph567 ], [ %.1484.lcssa, %324 ]
  %indvars630 = trunc i64 %indvars.iv611 to i32
  %117 = load i32, ptr %1, align 4, !tbaa !5
  %118 = trunc nsw i64 %indvars.iv616 to i32
  %119 = sub nsw i32 %117, %118
  %120 = add nsw i32 %119, 1
  store i32 %120, ptr %12, align 4, !tbaa !5
  %121 = call i32 @llvm.smin.i32(i32 %40, i32 %120)
  store i32 %121, ptr %17, align 4, !tbaa !5
  %122 = sext i32 %117 to i64
  %.not515536 = icmp sgt i64 %indvars.iv616, %122
  br i1 %.not515536, label %._crit_edge540, label %.lr.ph539.preheader

.lr.ph539.preheader:                              ; preds = %116
  %123 = trunc i64 %indvar to i32
  %124 = mul i32 %40, %123
  %125 = xor i32 %124, -1
  %126 = mul i64 %111, %indvar
  %scevgep = getelementptr i8, ptr %7, i64 %126
  %127 = add i32 %117, %125
  %128 = zext i32 %127 to i64
  %129 = shl nuw nsw i64 %128, 2
  %130 = add nuw nsw i64 %129, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep, i8 0, i64 %130, i1 false), !tbaa !17
  br label %._crit_edge540

._crit_edge540:                                   ; preds = %.lr.ph539.preheader, %116
  %131 = trunc i64 %indvars.iv616 to i32
  %132 = add i32 %131, -1
  %133 = add i32 %132, %121
  store i32 %133, ptr %11, align 4, !tbaa !5
  %134 = sext i32 %133 to i64
  %.not516555 = icmp sgt i64 %indvars.iv616, %134
  br i1 %.not516555, label %._crit_edge561, label %.lr.ph560.preheader

.lr.ph560.preheader:                              ; preds = %._crit_edge540
  %invariant.gep701 = getelementptr %struct.complex, ptr %23, i64 %indvars.iv616
  %invariant.gep703 = getelementptr %struct.complex, ptr %23, i64 %indvars.iv616
  br label %.lr.ph560

.lr.ph560:                                        ; preds = %.lr.ph560.preheader, %308
  %indvars.iv618 = phi i64 [ %indvars.iv616, %.lr.ph560.preheader ], [ %indvars.iv.next619.pre-phi, %308 ]
  %.1484556 = phi i32 [ %.0483564, %.lr.ph560.preheader ], [ %.2485, %308 ]
  %indvars629 = trunc i64 %indvars.iv618 to i32
  %135 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %135, ptr %12, align 4, !tbaa !5
  %136 = sext i32 %135 to i64
  %.not518541 = icmp sgt i64 %indvars.iv618, %136
  br i1 %.not518541, label %._crit_edge545, label %.lr.ph544

.lr.ph544:                                        ; preds = %.lr.ph560
  %137 = icmp sgt i64 %indvars.iv618, %indvars.iv616
  br i1 %137, label %.lr.ph544.split.us.preheader, label %.lr.ph544.split

.lr.ph544.split.us.preheader:                     ; preds = %.lr.ph544
  %gep768 = getelementptr %struct.complex, ptr %invariant.gep767, i64 %indvars.iv618
  br label %.lr.ph544.split.us

.lr.ph544.split.us:                               ; preds = %.lr.ph544.split.us.preheader, %.lr.ph544.split.us
  %indvars.iv623 = phi i64 [ %indvars.iv.next624, %.lr.ph544.split.us ], [ %indvars.iv618, %.lr.ph544.split.us.preheader ]
  %138 = mul nsw i64 %indvars.iv623, %113
  %139 = getelementptr %struct.complex, ptr %gep768, i64 %138
  %140 = call <2 x float> @Cf(ptr noundef %139)
  %.sroa.07.0.vec.extract.us = extractelement <2 x float> %140, i64 0
  %.sroa.07.4.vec.extract.us = extractelement <2 x float> %140, i64 1
  %141 = fneg float %.sroa.07.4.vec.extract.us
  %142 = call ptr @_pCf(ptr noundef nonnull %16)
  %143 = getelementptr inbounds i8, ptr %142, i64 4
  store float %.sroa.07.0.vec.extract.us, ptr %142, align 4
  store float %141, ptr %143, align 4
  %144 = load float, ptr %16, align 4, !tbaa !14
  %145 = load float, ptr %109, align 4, !tbaa !21
  %146 = fneg float %145
  %147 = load <2 x float>, ptr %139, align 4, !tbaa !17
  %148 = insertelement <2 x float> poison, float %145, i64 0
  %149 = insertelement <2 x float> %148, float %146, i64 1
  %150 = fmul <2 x float> %147, %149
  %151 = shufflevector <2 x float> %150, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %152 = insertelement <2 x float> poison, float %144, i64 0
  %153 = shufflevector <2 x float> %152, <2 x float> poison, <2 x i32> zeroinitializer
  %154 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %153, <2 x float> %147, <2 x float> %151)
  store <2 x float> %154, ptr %15, align 8, !tbaa !17
  %155 = getelementptr inbounds float, ptr %19, i64 %indvars.iv623
  %156 = load float, ptr %155, align 4, !tbaa !17
  %157 = extractelement <2 x float> %154, i64 0
  %158 = fadd float %157, %156
  store float %158, ptr %155, align 4, !tbaa !17
  %159 = trunc nsw i64 %indvars.iv623 to i32
  %160 = mul i32 %.pre661, %159
  store i32 %160, ptr %13, align 4, !tbaa !5
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds %struct.complex, ptr %23, i64 %161
  %163 = load float, ptr %162, align 4, !tbaa !14
  %164 = fsub float %163, %158
  %165 = load i32, ptr %1, align 4, !tbaa !5
  %166 = sext i32 %165 to i64
  %167 = getelementptr float, ptr %19, i64 %indvars.iv623
  %168 = getelementptr float, ptr %167, i64 %166
  store float %164, ptr %168, align 4, !tbaa !17
  %indvars.iv.next624 = add nuw nsw i64 %indvars.iv623, 1
  %169 = load i32, ptr %12, align 4, !tbaa !5
  %170 = sext i32 %169 to i64
  %.not518.us.not = icmp slt i64 %indvars.iv623, %170
  br i1 %.not518.us.not, label %.lr.ph544.split.us, label %._crit_edge545, !llvm.loop !22

.lr.ph544.split:                                  ; preds = %.lr.ph544
  %invariant.gep699 = getelementptr float, ptr %19, i64 %136
  %171 = add i64 %indvars.iv618, %136
  %172 = and i64 %171, 1
  %lcmp.mod750.not.not = icmp eq i64 %172, 0
  br i1 %lcmp.mod750.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph544.split
  %173 = trunc nsw i64 %indvars.iv618 to i32
  %174 = mul i32 %.pre661, %173
  %175 = sext i32 %174 to i64
  %176 = getelementptr inbounds %struct.complex, ptr %23, i64 %175
  %177 = load float, ptr %176, align 4, !tbaa !14
  %178 = getelementptr inbounds float, ptr %19, i64 %indvars.iv618
  %179 = load float, ptr %178, align 4, !tbaa !17
  %180 = fsub float %177, %179
  %gep700.prol = getelementptr float, ptr %invariant.gep699, i64 %indvars.iv618
  store float %180, ptr %gep700.prol, align 4, !tbaa !17
  %indvars.iv.next621.prol = add nuw nsw i64 %indvars.iv618, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph544.split
  %indvars.iv620.unr = phi i64 [ %indvars.iv618, %.lr.ph544.split ], [ %indvars.iv.next621.prol, %.prol.loopexit.unr-lcssa ]
  %.lcssa742.unr = phi i32 [ poison, %.lr.ph544.split ], [ %174, %.prol.loopexit.unr-lcssa ]
  %181 = icmp eq i64 %indvars.iv618, %136
  br i1 %181, label %._crit_edge545.split, label %.lr.ph544.split.new

.lr.ph544.split.new:                              ; preds = %.prol.loopexit, %.lr.ph544.split.new
  %indvars.iv620 = phi i64 [ %indvars.iv.next621.1, %.lr.ph544.split.new ], [ %indvars.iv620.unr, %.prol.loopexit ]
  %182 = trunc nsw i64 %indvars.iv620 to i32
  %183 = mul i32 %.pre661, %182
  %184 = sext i32 %183 to i64
  %185 = getelementptr inbounds %struct.complex, ptr %23, i64 %184
  %186 = load float, ptr %185, align 4, !tbaa !14
  %187 = getelementptr inbounds float, ptr %19, i64 %indvars.iv620
  %188 = load float, ptr %187, align 4, !tbaa !17
  %189 = fsub float %186, %188
  %gep700 = getelementptr float, ptr %invariant.gep699, i64 %indvars.iv620
  store float %189, ptr %gep700, align 4, !tbaa !17
  %indvars.iv.next621 = add nuw nsw i64 %indvars.iv620, 1
  %190 = trunc nsw i64 %indvars.iv.next621 to i32
  %191 = mul i32 %.pre661, %190
  %192 = sext i32 %191 to i64
  %193 = getelementptr inbounds %struct.complex, ptr %23, i64 %192
  %194 = load float, ptr %193, align 4, !tbaa !14
  %195 = getelementptr float, ptr %7, i64 %indvars.iv620
  %196 = load float, ptr %195, align 4, !tbaa !17
  %197 = fsub float %194, %196
  %gep700.1 = getelementptr float, ptr %invariant.gep699, i64 %indvars.iv.next621
  store float %197, ptr %gep700.1, align 4, !tbaa !17
  %indvars.iv.next621.1 = add nuw nsw i64 %indvars.iv620, 2
  %.not518.not.1 = icmp slt i64 %indvars.iv.next621, %136
  br i1 %.not518.not.1, label %.lr.ph544.split.new, label %._crit_edge545.split, !llvm.loop !22

._crit_edge545.split:                             ; preds = %.lr.ph544.split.new, %.prol.loopexit
  %.lcssa742 = phi i32 [ %.lcssa742.unr, %.prol.loopexit ], [ %191, %.lr.ph544.split.new ]
  store i32 %.lcssa742, ptr %13, align 4, !tbaa !5
  br label %._crit_edge545

._crit_edge545:                                   ; preds = %.lr.ph544.split.us, %._crit_edge545.split, %.lr.ph560
  %198 = phi i32 [ %135, %._crit_edge545.split ], [ %135, %.lr.ph560 ], [ %165, %.lr.ph544.split.us ]
  %199 = icmp sgt i64 %indvars.iv618, 1
  br i1 %199, label %200, label %215

200:                                              ; preds = %._crit_edge545
  %201 = add nsw i32 %198, %indvars629
  store i32 %201, ptr %12, align 4, !tbaa !5
  %202 = shl i32 %198, 1
  store i32 %202, ptr %13, align 4, !tbaa !5
  %203 = call i32 @smaxloc_(ptr noundef %7, i32 noundef %201, i32 noundef %202, ptr noundef nonnull @c__1)
  %204 = trunc i64 %indvars.iv618 to i32
  %205 = add i32 %204, -1
  %206 = add i32 %205, %203
  %207 = load i32, ptr %1, align 4, !tbaa !5
  %208 = add nsw i32 %207, %206
  %209 = sext i32 %208 to i64
  %210 = getelementptr inbounds float, ptr %19, i64 %209
  %211 = load float, ptr %210, align 4, !tbaa !17
  store float %211, ptr %18, align 4, !tbaa !17
  %212 = fcmp ugt float %211, %.0489
  br i1 %212, label %213, label %split

213:                                              ; preds = %200
  %214 = call i32 @sisnan_(ptr noundef nonnull %18) #8
  %.not519 = icmp eq i32 %214, 0
  br i1 %.not519, label %215, label %._crit_edge648

._crit_edge648:                                   ; preds = %213
  %.pre649 = load float, ptr %18, align 4, !tbaa !17
  br label %split

215:                                              ; preds = %213, %._crit_edge545
  %.2485 = phi i32 [ %206, %213 ], [ %.1484556, %._crit_edge545 ]
  %.not520 = icmp eq i32 %.2485, %indvars629
  br i1 %.not520, label %._crit_edge658, label %216

._crit_edge658:                                   ; preds = %215
  %.pre673 = mul nsw i64 %indvars.iv618, %113
  %.pre677 = mul i32 %.pre675682, %indvars629
  %.pre679 = sext i32 %.pre677 to i64
  br label %286

216:                                              ; preds = %215
  %217 = mul nsw i32 %.2485, %21
  %218 = add nsw i32 %217, %.2485
  %219 = mul nsw i64 %indvars.iv618, %113
  %220 = mul i32 %114, %indvars629
  store i32 %220, ptr %13, align 4, !tbaa !5
  %221 = sext i32 %220 to i64
  %222 = getelementptr inbounds %struct.complex, ptr %23, i64 %221
  %223 = sext i32 %218 to i64
  %224 = getelementptr inbounds %struct.complex, ptr %23, i64 %223
  %225 = load <2 x float>, ptr %222, align 4, !tbaa !17
  store <2 x float> %225, ptr %224, align 4, !tbaa !17
  %226 = trunc i64 %indvars.iv618 to i32
  %227 = add i32 %226, -1
  store i32 %227, ptr %12, align 4, !tbaa !5
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %219
  %228 = sext i32 %217 to i64
  %gep552 = getelementptr %struct.complex, ptr %invariant.gep, i64 %228
  call void @cswap_(ptr noundef nonnull %12, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep552, ptr noundef nonnull @c__1) #8
  %229 = load i32, ptr %1, align 4, !tbaa !5
  %230 = icmp slt i32 %.2485, %229
  br i1 %230, label %231, label %241

231:                                              ; preds = %216
  %232 = sub nsw i32 %229, %.2485
  store i32 %232, ptr %12, align 4, !tbaa !5
  %233 = add nsw i32 %.2485, 1
  %234 = mul nsw i32 %233, %21
  %235 = sext i32 %234 to i64
  %236 = getelementptr %struct.complex, ptr %23, i64 %indvars.iv618
  %237 = getelementptr %struct.complex, ptr %236, i64 %235
  %238 = add nsw i32 %234, %.2485
  %239 = sext i32 %238 to i64
  %240 = getelementptr inbounds %struct.complex, ptr %23, i64 %239
  call void @cswap_(ptr noundef nonnull %12, ptr noundef %237, ptr noundef nonnull %3, ptr noundef %240, ptr noundef nonnull %3) #8
  br label %241

241:                                              ; preds = %231, %216
  %242 = add nsw i32 %.2485, -1
  store i32 %242, ptr %12, align 4, !tbaa !5
  %243 = sext i32 %242 to i64
  %.not521.not546 = icmp slt i64 %indvars.iv618, %243
  br i1 %.not521.not546, label %.lr.ph549, label %._crit_edge550

.lr.ph549:                                        ; preds = %241, %.lr.ph549
  %indvars.iv626 = phi i64 [ %indvars.iv.next627, %.lr.ph549 ], [ %indvars.iv618, %241 ]
  %indvars.iv.next627 = add nuw nsw i64 %indvars.iv626, 1
  %244 = mul nsw i64 %indvars.iv.next627, %113
  %245 = add nsw i64 %244, %indvars.iv618
  %246 = getelementptr inbounds %struct.complex, ptr %23, i64 %245
  %247 = call <2 x float> @Cf(ptr noundef %246)
  %.sroa.06.0.vec.extract = extractelement <2 x float> %247, i64 0
  %.sroa.06.4.vec.extract = extractelement <2 x float> %247, i64 1
  %248 = fneg float %.sroa.06.4.vec.extract
  %249 = call ptr @_pCf(ptr noundef nonnull %15)
  %250 = getelementptr inbounds i8, ptr %249, i64 4
  store float %.sroa.06.0.vec.extract, ptr %249, align 4
  store float %248, ptr %250, align 4
  %251 = trunc nsw i64 %245 to i32
  store i32 %251, ptr %13, align 4, !tbaa !5
  %252 = add nsw i64 %indvars.iv.next627, %228
  %253 = getelementptr inbounds %struct.complex, ptr %23, i64 %252
  %254 = trunc nsw i64 %252 to i32
  %255 = load <2 x float>, ptr %15, align 8, !tbaa !17
  %256 = call <2 x float> @Cf(ptr noundef %253)
  %.sroa.05.0.vec.extract = extractelement <2 x float> %256, i64 0
  %.sroa.05.4.vec.extract = extractelement <2 x float> %256, i64 1
  %257 = fneg float %.sroa.05.4.vec.extract
  %258 = call ptr @_pCf(ptr noundef nonnull %15)
  %259 = getelementptr inbounds i8, ptr %258, i64 4
  store float %.sroa.05.0.vec.extract, ptr %258, align 4
  store float %257, ptr %259, align 4
  %260 = load i32, ptr %13, align 4, !tbaa !5
  %261 = sext i32 %260 to i64
  %262 = getelementptr inbounds %struct.complex, ptr %23, i64 %261
  %263 = load <2 x float>, ptr %15, align 8, !tbaa !17
  store <2 x float> %263, ptr %262, align 4, !tbaa !17
  store i32 %254, ptr %13, align 4, !tbaa !5
  store <2 x float> %255, ptr %253, align 4, !tbaa !17
  %264 = load i32, ptr %12, align 4, !tbaa !5
  %265 = sext i32 %264 to i64
  %.not521.not = icmp slt i64 %indvars.iv.next627, %265
  br i1 %.not521.not, label %.lr.ph549, label %._crit_edge550, !llvm.loop !23

._crit_edge550:                                   ; preds = %.lr.ph549, %241
  %266 = add nsw i32 %217, %indvars629
  store i32 %266, ptr %12, align 4, !tbaa !5
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds %struct.complex, ptr %23, i64 %267
  %269 = call <2 x float> @Cf(ptr noundef %268)
  %.sroa.04.0.vec.extract = extractelement <2 x float> %269, i64 0
  %.sroa.04.4.vec.extract = extractelement <2 x float> %269, i64 1
  %270 = fneg float %.sroa.04.4.vec.extract
  %271 = call ptr @_pCf(ptr noundef nonnull %15)
  %272 = getelementptr inbounds i8, ptr %271, i64 4
  store float %.sroa.04.0.vec.extract, ptr %271, align 4
  store float %270, ptr %272, align 4
  %273 = load i32, ptr %12, align 4, !tbaa !5
  %274 = sext i32 %273 to i64
  %275 = getelementptr inbounds %struct.complex, ptr %23, i64 %274
  %276 = load <2 x float>, ptr %15, align 8, !tbaa !17
  store <2 x float> %276, ptr %275, align 4, !tbaa !17
  %277 = getelementptr inbounds float, ptr %19, i64 %indvars.iv618
  %278 = load float, ptr %277, align 4, !tbaa !17
  %279 = sext i32 %.2485 to i64
  %280 = getelementptr inbounds float, ptr %19, i64 %279
  %281 = load float, ptr %280, align 4, !tbaa !17
  store float %281, ptr %277, align 4, !tbaa !17
  store float %278, ptr %280, align 4, !tbaa !17
  %282 = getelementptr inbounds i32, ptr %20, i64 %279
  %283 = load i32, ptr %282, align 4, !tbaa !5
  %284 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv618
  %285 = load i32, ptr %284, align 4, !tbaa !5
  store i32 %285, ptr %282, align 4, !tbaa !5
  store i32 %283, ptr %284, align 4, !tbaa !5
  br label %286

286:                                              ; preds = %._crit_edge658, %._crit_edge550
  %.pre-phi680 = phi i64 [ %.pre679, %._crit_edge658 ], [ %221, %._crit_edge550 ]
  %.pre-phi678 = phi i32 [ %.pre677, %._crit_edge658 ], [ %220, %._crit_edge550 ]
  %.pre-phi674 = phi i64 [ %.pre673, %._crit_edge658 ], [ %219, %._crit_edge550 ]
  %287 = load float, ptr %18, align 4, !tbaa !17
  %sqrtf522 = call float @sqrtf(float noundef %287) #9
  store float %sqrtf522, ptr %18, align 4, !tbaa !17
  store i32 %.pre-phi678, ptr %12, align 4, !tbaa !5
  %288 = getelementptr inbounds %struct.complex, ptr %23, i64 %.pre-phi680
  store float %sqrtf522, ptr %288, align 4, !tbaa !14
  %289 = getelementptr inbounds %struct.complex, ptr %23, i64 %.pre-phi680, i32 1
  store float 0.000000e+00, ptr %289, align 4, !tbaa !21
  %290 = load i32, ptr %1, align 4, !tbaa !5
  %291 = sext i32 %290 to i64
  %292 = icmp slt i64 %indvars.iv618, %291
  br i1 %292, label %293, label %._crit_edge657

._crit_edge657:                                   ; preds = %286
  %.pre681 = add nuw nsw i64 %indvars.iv618, 1
  br label %308

293:                                              ; preds = %286
  %294 = trunc i64 %indvars.iv618 to i32
  %295 = add i32 %294, -1
  store i32 %295, ptr %12, align 4, !tbaa !5
  %gep554 = getelementptr %struct.complex, ptr %invariant.gep, i64 %.pre-phi674
  call void @clacgv_(ptr noundef nonnull %12, ptr noundef %gep554, ptr noundef nonnull @c__1) #8
  %296 = sub nuw nsw i64 %indvars.iv618, %indvars.iv616
  %297 = trunc nsw i64 %296 to i32
  store i32 %297, ptr %12, align 4, !tbaa !5
  %298 = load i32, ptr %1, align 4, !tbaa !5
  %299 = sub nsw i32 %298, %indvars629
  store i32 %299, ptr %13, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %15, align 8, !tbaa !17
  %300 = add nuw nsw i64 %indvars.iv618, 1
  %301 = mul nsw i64 %300, %113
  %gep702 = getelementptr %struct.complex, ptr %invariant.gep701, i64 %301
  %gep704 = getelementptr %struct.complex, ptr %invariant.gep703, i64 %.pre-phi674
  %302 = getelementptr %struct.complex, ptr %23, i64 %301
  %303 = getelementptr %struct.complex, ptr %302, i64 %indvars.iv618
  call void @cgemv_(ptr noundef nonnull @.str.5, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %gep702, ptr noundef nonnull %3, ptr noundef %gep704, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %303, ptr noundef nonnull %3) #8
  store i32 %295, ptr %12, align 4, !tbaa !5
  call void @clacgv_(ptr noundef nonnull %12, ptr noundef %gep554, ptr noundef nonnull @c__1) #8
  %304 = load i32, ptr %1, align 4, !tbaa !5
  %305 = sub nsw i32 %304, %indvars629
  store i32 %305, ptr %12, align 4, !tbaa !5
  %306 = load float, ptr %18, align 4, !tbaa !17
  %307 = fdiv float 1.000000e+00, %306
  store float %307, ptr %14, align 4, !tbaa !17
  call void @csscal_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %303, ptr noundef nonnull %3) #8
  br label %308

308:                                              ; preds = %._crit_edge657, %293
  %indvars.iv.next619.pre-phi = phi i64 [ %.pre681, %._crit_edge657 ], [ %300, %293 ]
  %309 = load i32, ptr %11, align 4, !tbaa !5
  %310 = sext i32 %309 to i64
  %.not516.not = icmp slt i64 %indvars.iv618, %310
  br i1 %.not516.not, label %.lr.ph560, label %._crit_edge561.loopexit, !llvm.loop !24

._crit_edge561.loopexit:                          ; preds = %308
  %311 = trunc nsw i64 %indvars.iv.next619.pre-phi to i32
  %.pre650 = load i32, ptr %17, align 4, !tbaa !5
  %.pre651 = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge561

._crit_edge561:                                   ; preds = %._crit_edge561.loopexit, %._crit_edge540
  %312 = phi i32 [ %117, %._crit_edge540 ], [ %.pre651, %._crit_edge561.loopexit ]
  %313 = phi i32 [ %121, %._crit_edge540 ], [ %.pre650, %._crit_edge561.loopexit ]
  %.1484.lcssa = phi i32 [ %.0483564, %._crit_edge540 ], [ %.2485, %._crit_edge561.loopexit ]
  %.0478.lcssa = phi i32 [ %118, %._crit_edge540 ], [ %311, %._crit_edge561.loopexit ]
  %314 = add nsw i32 %313, %indvars630
  %.not517 = icmp sgt i32 %314, %312
  br i1 %.not517, label %324, label %315

315:                                              ; preds = %._crit_edge561
  %reass.sub = sub i32 %312, %.0478.lcssa
  %316 = add i32 %reass.sub, 1
  store i32 %316, ptr %11, align 4, !tbaa !5
  %317 = mul nsw i32 %.0478.lcssa, %21
  %318 = sext i32 %317 to i64
  %319 = getelementptr %struct.complex, ptr %23, i64 %indvars.iv616
  %320 = getelementptr %struct.complex, ptr %319, i64 %318
  %321 = add nsw i32 %317, %.0478.lcssa
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.complex, ptr %23, i64 %322
  call void @cherk_(ptr noundef nonnull @.str.6, ptr noundef nonnull @.str.7, ptr noundef nonnull %11, ptr noundef nonnull %17, ptr noundef nonnull @c_b32, ptr noundef %320, ptr noundef nonnull %3, ptr noundef nonnull @c_b33, ptr noundef %323, ptr noundef nonnull %3) #8
  br label %324

324:                                              ; preds = %._crit_edge561, %315
  %indvars.iv.next617 = add nuw nsw i64 %indvars.iv616, %112
  %indvars.iv.next612 = add i64 %indvars.iv611, %110
  %.not513 = icmp ugt i64 %indvars.iv.next617, %115
  %indvar.next = add i64 %indvar, 1
  br i1 %.not513, label %.loopexit, label %116, !llvm.loop !25

325:                                              ; preds = %106
  %326 = icmp sgt i32 %107, 0
  br i1 %326, label %.lr.ph597, label %.loopexit

.lr.ph597:                                        ; preds = %325
  %327 = getelementptr inbounds i8, ptr %16, i64 4
  %328 = sext i32 %21 to i64
  %329 = add i32 %21, 1
  %invariant.gep707 = getelementptr %struct.complex, ptr %23, i64 %328
  %.pre664683 = add i32 %21, 1
  %invariant.gep709 = getelementptr %struct.complex, ptr %23, i64 %328
  br label %330

330:                                              ; preds = %.lr.ph597, %536
  %.1482595 = phi i32 [ 1, %.lr.ph597 ], [ %537, %536 ]
  %.3486594 = phi i32 [ %87, %.lr.ph597 ], [ %.4487.lcssa, %536 ]
  %331 = load i32, ptr %1, align 4, !tbaa !5
  %332 = sub i32 %331, %.1482595
  %333 = add nsw i32 %332, 1
  store i32 %333, ptr %12, align 4, !tbaa !5
  %334 = call i32 @llvm.smin.i32(i32 %40, i32 %333)
  store i32 %334, ptr %17, align 4, !tbaa !5
  %.not506568 = icmp sgt i32 %.1482595, %331
  br i1 %.not506568, label %._crit_edge572, label %.lr.ph571.preheader

.lr.ph571.preheader:                              ; preds = %330
  %335 = zext nneg i32 %.1482595 to i64
  %336 = shl nuw nsw i64 %335, 2
  %scevgep632 = getelementptr i8, ptr %19, i64 %336
  %337 = zext i32 %332 to i64
  %338 = shl nuw nsw i64 %337, 2
  %339 = add nuw nsw i64 %338, 4
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 dereferenceable(1) %scevgep632, i8 0, i64 %339, i1 false), !tbaa !17
  br label %._crit_edge572

._crit_edge572:                                   ; preds = %.lr.ph571.preheader, %330
  %340 = add nsw i32 %.1482595, -1
  %341 = add i32 %340, %334
  store i32 %341, ptr %11, align 4, !tbaa !5
  %.not507584 = icmp sgt i32 %.1482595, %341
  br i1 %.not507584, label %._crit_edge590, label %.lr.ph589

.lr.ph589:                                        ; preds = %._crit_edge572
  %342 = mul nsw i32 %.1482595, %21
  %343 = zext nneg i32 %.1482595 to i64
  %344 = sext i32 %342 to i64
  %invariant.gep711 = getelementptr %struct.complex, ptr %23, i64 %344
  %invariant.gep713 = getelementptr %struct.complex, ptr %23, i64 %344
  br label %345

345:                                              ; preds = %.lr.ph589, %520
  %indvars.iv636 = phi i64 [ %343, %.lr.ph589 ], [ %indvars.iv.next637.pre-phi, %520 ]
  %.4487585 = phi i32 [ %.3486594, %.lr.ph589 ], [ %.5488, %520 ]
  %indvars647 = trunc i64 %indvars.iv636 to i32
  %346 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %346, ptr %12, align 4, !tbaa !5
  %347 = sext i32 %346 to i64
  %.not509573 = icmp sgt i64 %indvars.iv636, %347
  br i1 %.not509573, label %._crit_edge577, label %.lr.ph576

.lr.ph576:                                        ; preds = %345
  %348 = icmp sgt i64 %indvars.iv636, %343
  %349 = add nsw i64 %indvars.iv636, -1
  %350 = mul nsw i64 %349, %328
  br i1 %348, label %.lr.ph576.split.us.preheader, label %.lr.ph576.split

.lr.ph576.split.us.preheader:                     ; preds = %.lr.ph576
  %invariant.gep769 = getelementptr %struct.complex, ptr %23, i64 %350
  br label %.lr.ph576.split.us

.lr.ph576.split.us:                               ; preds = %.lr.ph576.split.us.preheader, %.lr.ph576.split.us
  %indvars.iv641 = phi i64 [ %indvars.iv.next642, %.lr.ph576.split.us ], [ %indvars.iv636, %.lr.ph576.split.us.preheader ]
  %gep770 = getelementptr %struct.complex, ptr %invariant.gep769, i64 %indvars.iv641
  %351 = call <2 x float> @Cf(ptr noundef %gep770)
  %.sroa.03.0.vec.extract.us = extractelement <2 x float> %351, i64 0
  %.sroa.03.4.vec.extract.us = extractelement <2 x float> %351, i64 1
  %352 = fneg float %.sroa.03.4.vec.extract.us
  %353 = call ptr @_pCf(ptr noundef nonnull %16)
  %354 = getelementptr inbounds i8, ptr %353, i64 4
  store float %.sroa.03.0.vec.extract.us, ptr %353, align 4
  store float %352, ptr %354, align 4
  %355 = load float, ptr %16, align 4, !tbaa !14
  %356 = load float, ptr %327, align 4, !tbaa !21
  %357 = fneg float %356
  %358 = load <2 x float>, ptr %gep770, align 4, !tbaa !17
  %359 = insertelement <2 x float> poison, float %356, i64 0
  %360 = insertelement <2 x float> %359, float %357, i64 1
  %361 = fmul <2 x float> %358, %360
  %362 = shufflevector <2 x float> %361, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %363 = insertelement <2 x float> poison, float %355, i64 0
  %364 = shufflevector <2 x float> %363, <2 x float> poison, <2 x i32> zeroinitializer
  %365 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %364, <2 x float> %358, <2 x float> %362)
  store <2 x float> %365, ptr %15, align 8, !tbaa !17
  %366 = getelementptr inbounds float, ptr %19, i64 %indvars.iv641
  %367 = load float, ptr %366, align 4, !tbaa !17
  %368 = extractelement <2 x float> %365, i64 0
  %369 = fadd float %368, %367
  store float %369, ptr %366, align 4, !tbaa !17
  %370 = trunc nsw i64 %indvars.iv641 to i32
  %371 = mul i32 %.pre661, %370
  store i32 %371, ptr %13, align 4, !tbaa !5
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.complex, ptr %23, i64 %372
  %374 = load float, ptr %373, align 4, !tbaa !14
  %375 = fsub float %374, %369
  %376 = load i32, ptr %1, align 4, !tbaa !5
  %377 = sext i32 %376 to i64
  %378 = getelementptr float, ptr %19, i64 %indvars.iv641
  %379 = getelementptr float, ptr %378, i64 %377
  store float %375, ptr %379, align 4, !tbaa !17
  %indvars.iv.next642 = add nsw i64 %indvars.iv641, 1
  %380 = load i32, ptr %12, align 4, !tbaa !5
  %381 = sext i32 %380 to i64
  %.not509.us.not = icmp slt i64 %indvars.iv641, %381
  br i1 %.not509.us.not, label %.lr.ph576.split.us, label %._crit_edge577, !llvm.loop !26

.lr.ph576.split:                                  ; preds = %.lr.ph576
  %invariant.gep705 = getelementptr float, ptr %19, i64 %347
  %382 = add i64 %indvars.iv636, %347
  %383 = and i64 %382, 1
  %lcmp.mod754.not.not = icmp eq i64 %383, 0
  br i1 %lcmp.mod754.not.not, label %.prol.loopexit752.unr-lcssa, label %.prol.loopexit752

.prol.loopexit752.unr-lcssa:                      ; preds = %.lr.ph576.split
  %384 = trunc nsw i64 %indvars.iv636 to i32
  %385 = mul i32 %.pre661, %384
  %386 = sext i32 %385 to i64
  %387 = getelementptr inbounds %struct.complex, ptr %23, i64 %386
  %388 = load float, ptr %387, align 4, !tbaa !14
  %389 = getelementptr inbounds float, ptr %19, i64 %indvars.iv636
  %390 = load float, ptr %389, align 4, !tbaa !17
  %391 = fsub float %388, %390
  %gep706.prol = getelementptr float, ptr %invariant.gep705, i64 %indvars.iv636
  store float %391, ptr %gep706.prol, align 4, !tbaa !17
  %indvars.iv.next639.prol = add nsw i64 %indvars.iv636, 1
  br label %.prol.loopexit752

.prol.loopexit752:                                ; preds = %.prol.loopexit752.unr-lcssa, %.lr.ph576.split
  %indvars.iv638.unr = phi i64 [ %indvars.iv636, %.lr.ph576.split ], [ %indvars.iv.next639.prol, %.prol.loopexit752.unr-lcssa ]
  %.lcssa.unr = phi i32 [ poison, %.lr.ph576.split ], [ %385, %.prol.loopexit752.unr-lcssa ]
  %392 = icmp eq i64 %indvars.iv636, %347
  br i1 %392, label %._crit_edge577.split, label %.lr.ph576.split.new

.lr.ph576.split.new:                              ; preds = %.prol.loopexit752, %.lr.ph576.split.new
  %indvars.iv638 = phi i64 [ %indvars.iv.next639.1, %.lr.ph576.split.new ], [ %indvars.iv638.unr, %.prol.loopexit752 ]
  %393 = trunc nsw i64 %indvars.iv638 to i32
  %394 = mul i32 %.pre661, %393
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds %struct.complex, ptr %23, i64 %395
  %397 = load float, ptr %396, align 4, !tbaa !14
  %398 = getelementptr inbounds float, ptr %19, i64 %indvars.iv638
  %399 = load float, ptr %398, align 4, !tbaa !17
  %400 = fsub float %397, %399
  %gep706 = getelementptr float, ptr %invariant.gep705, i64 %indvars.iv638
  store float %400, ptr %gep706, align 4, !tbaa !17
  %indvars.iv.next639 = add nsw i64 %indvars.iv638, 1
  %401 = trunc nsw i64 %indvars.iv.next639 to i32
  %402 = mul i32 %.pre661, %401
  %403 = sext i32 %402 to i64
  %404 = getelementptr inbounds %struct.complex, ptr %23, i64 %403
  %405 = load float, ptr %404, align 4, !tbaa !14
  %406 = getelementptr float, ptr %7, i64 %indvars.iv638
  %407 = load float, ptr %406, align 4, !tbaa !17
  %408 = fsub float %405, %407
  %gep706.1 = getelementptr float, ptr %invariant.gep705, i64 %indvars.iv.next639
  store float %408, ptr %gep706.1, align 4, !tbaa !17
  %indvars.iv.next639.1 = add nsw i64 %indvars.iv638, 2
  %.not509.not.1 = icmp slt i64 %indvars.iv.next639, %347
  br i1 %.not509.not.1, label %.lr.ph576.split.new, label %._crit_edge577.split, !llvm.loop !26

._crit_edge577.split:                             ; preds = %.lr.ph576.split.new, %.prol.loopexit752
  %.lcssa = phi i32 [ %.lcssa.unr, %.prol.loopexit752 ], [ %402, %.lr.ph576.split.new ]
  store i32 %.lcssa, ptr %13, align 4, !tbaa !5
  br label %._crit_edge577

._crit_edge577:                                   ; preds = %.lr.ph576.split.us, %._crit_edge577.split, %345
  %409 = phi i32 [ %346, %._crit_edge577.split ], [ %346, %345 ], [ %376, %.lr.ph576.split.us ]
  %410 = icmp sgt i64 %indvars.iv636, 1
  br i1 %410, label %411, label %426

411:                                              ; preds = %._crit_edge577
  %412 = add nsw i32 %409, %indvars647
  store i32 %412, ptr %12, align 4, !tbaa !5
  %413 = shl i32 %409, 1
  store i32 %413, ptr %13, align 4, !tbaa !5
  %414 = call i32 @smaxloc_(ptr noundef %7, i32 noundef %412, i32 noundef %413, ptr noundef nonnull @c__1)
  %415 = trunc i64 %indvars.iv636 to i32
  %416 = add i32 %415, -1
  %417 = add i32 %416, %414
  %418 = load i32, ptr %1, align 4, !tbaa !5
  %419 = add nsw i32 %418, %417
  %420 = sext i32 %419 to i64
  %421 = getelementptr inbounds float, ptr %19, i64 %420
  %422 = load float, ptr %421, align 4, !tbaa !17
  store float %422, ptr %18, align 4, !tbaa !17
  %423 = fcmp ugt float %422, %.0489
  br i1 %423, label %424, label %split

424:                                              ; preds = %411
  %425 = call i32 @sisnan_(ptr noundef nonnull %18) #8
  %.not510 = icmp eq i32 %425, 0
  br i1 %.not510, label %426, label %._crit_edge652

._crit_edge652:                                   ; preds = %424
  %.pre654 = load float, ptr %18, align 4, !tbaa !17
  br label %split

426:                                              ; preds = %424, %._crit_edge577
  %.5488 = phi i32 [ %417, %424 ], [ %.4487585, %._crit_edge577 ]
  %.not511 = icmp eq i32 %.5488, %indvars647
  br i1 %.not511, label %._crit_edge660, label %427

._crit_edge660:                                   ; preds = %426
  %.pre662 = mul nsw i64 %indvars.iv636, %328
  %.pre666 = mul i32 %.pre664683, %indvars647
  %.pre668 = sext i32 %.pre666 to i64
  br label %499

427:                                              ; preds = %426
  %428 = mul nsw i32 %.5488, %21
  %429 = add nsw i32 %428, %.5488
  %430 = mul nsw i64 %indvars.iv636, %328
  %431 = mul i32 %329, %indvars647
  store i32 %431, ptr %13, align 4, !tbaa !5
  %432 = sext i32 %431 to i64
  %433 = getelementptr inbounds %struct.complex, ptr %23, i64 %432
  %434 = sext i32 %429 to i64
  %435 = getelementptr inbounds %struct.complex, ptr %23, i64 %434
  %436 = load <2 x float>, ptr %433, align 4, !tbaa !17
  store <2 x float> %436, ptr %435, align 4, !tbaa !17
  %437 = trunc i64 %indvars.iv636 to i32
  %438 = add i32 %437, -1
  store i32 %438, ptr %12, align 4, !tbaa !5
  %gep708 = getelementptr %struct.complex, ptr %invariant.gep707, i64 %indvars.iv636
  %439 = add nsw i32 %.5488, %21
  %440 = sext i32 %439 to i64
  %441 = getelementptr inbounds %struct.complex, ptr %23, i64 %440
  call void @cswap_(ptr noundef nonnull %12, ptr noundef %gep708, ptr noundef nonnull %3, ptr noundef %441, ptr noundef nonnull %3) #8
  %442 = load i32, ptr %1, align 4, !tbaa !5
  %443 = icmp slt i32 %.5488, %442
  br i1 %443, label %444, label %453

444:                                              ; preds = %427
  %445 = sub nsw i32 %442, %.5488
  store i32 %445, ptr %12, align 4, !tbaa !5
  %446 = add nsw i32 %.5488, 1
  %447 = sext i32 %446 to i64
  %448 = getelementptr %struct.complex, ptr %23, i64 %430
  %449 = getelementptr %struct.complex, ptr %448, i64 %447
  %450 = add nsw i32 %446, %428
  %451 = sext i32 %450 to i64
  %452 = getelementptr inbounds %struct.complex, ptr %23, i64 %451
  call void @cswap_(ptr noundef nonnull %12, ptr noundef %449, ptr noundef nonnull @c__1, ptr noundef %452, ptr noundef nonnull @c__1) #8
  br label %453

453:                                              ; preds = %444, %427
  %454 = add nsw i32 %.5488, -1
  store i32 %454, ptr %12, align 4, !tbaa !5
  %455 = sext i32 %454 to i64
  %.not512.not579 = icmp slt i64 %indvars.iv636, %455
  %456 = sext i32 %.5488 to i64
  br i1 %.not512.not579, label %.lr.ph582, label %._crit_edge583

.lr.ph582:                                        ; preds = %453, %.lr.ph582
  %indvars.iv644 = phi i64 [ %indvars.iv.next645, %.lr.ph582 ], [ %indvars.iv636, %453 ]
  %indvars.iv.next645 = add nsw i64 %indvars.iv644, 1
  %457 = add nsw i64 %indvars.iv.next645, %430
  %458 = getelementptr inbounds %struct.complex, ptr %23, i64 %457
  %459 = call <2 x float> @Cf(ptr noundef %458)
  %.sroa.02.0.vec.extract = extractelement <2 x float> %459, i64 0
  %.sroa.02.4.vec.extract = extractelement <2 x float> %459, i64 1
  %460 = fneg float %.sroa.02.4.vec.extract
  %461 = call ptr @_pCf(ptr noundef nonnull %15)
  %462 = getelementptr inbounds i8, ptr %461, i64 4
  store float %.sroa.02.0.vec.extract, ptr %461, align 4
  store float %460, ptr %462, align 4
  %463 = trunc nsw i64 %457 to i32
  store i32 %463, ptr %13, align 4, !tbaa !5
  %464 = mul nsw i64 %indvars.iv.next645, %328
  %465 = add nsw i64 %464, %456
  %466 = getelementptr inbounds %struct.complex, ptr %23, i64 %465
  %467 = trunc nsw i64 %465 to i32
  %468 = load <2 x float>, ptr %15, align 8, !tbaa !17
  %469 = call <2 x float> @Cf(ptr noundef %466)
  %.sroa.01.0.vec.extract = extractelement <2 x float> %469, i64 0
  %.sroa.01.4.vec.extract = extractelement <2 x float> %469, i64 1
  %470 = fneg float %.sroa.01.4.vec.extract
  %471 = call ptr @_pCf(ptr noundef nonnull %15)
  %472 = getelementptr inbounds i8, ptr %471, i64 4
  store float %.sroa.01.0.vec.extract, ptr %471, align 4
  store float %470, ptr %472, align 4
  %473 = load i32, ptr %13, align 4, !tbaa !5
  %474 = sext i32 %473 to i64
  %475 = getelementptr inbounds %struct.complex, ptr %23, i64 %474
  %476 = load <2 x float>, ptr %15, align 8, !tbaa !17
  store <2 x float> %476, ptr %475, align 4, !tbaa !17
  store i32 %467, ptr %13, align 4, !tbaa !5
  store <2 x float> %468, ptr %466, align 4, !tbaa !17
  %477 = load i32, ptr %12, align 4, !tbaa !5
  %478 = sext i32 %477 to i64
  %.not512.not = icmp slt i64 %indvars.iv.next645, %478
  br i1 %.not512.not, label %.lr.ph582, label %._crit_edge583, !llvm.loop !27

._crit_edge583:                                   ; preds = %.lr.ph582, %453
  %479 = trunc nsw i64 %430 to i32
  %480 = add nsw i32 %.5488, %479
  store i32 %480, ptr %12, align 4, !tbaa !5
  %481 = sext i32 %480 to i64
  %482 = getelementptr inbounds %struct.complex, ptr %23, i64 %481
  %483 = call <2 x float> @Cf(ptr noundef %482)
  %.sroa.0.0.vec.extract = extractelement <2 x float> %483, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %483, i64 1
  %484 = fneg float %.sroa.0.4.vec.extract
  %485 = call ptr @_pCf(ptr noundef nonnull %15)
  %486 = getelementptr inbounds i8, ptr %485, i64 4
  store float %.sroa.0.0.vec.extract, ptr %485, align 4
  store float %484, ptr %486, align 4
  %487 = load i32, ptr %12, align 4, !tbaa !5
  %488 = sext i32 %487 to i64
  %489 = getelementptr inbounds %struct.complex, ptr %23, i64 %488
  %490 = load <2 x float>, ptr %15, align 8, !tbaa !17
  store <2 x float> %490, ptr %489, align 4, !tbaa !17
  %491 = getelementptr inbounds float, ptr %19, i64 %indvars.iv636
  %492 = load float, ptr %491, align 4, !tbaa !17
  %493 = getelementptr inbounds float, ptr %19, i64 %456
  %494 = load float, ptr %493, align 4, !tbaa !17
  store float %494, ptr %491, align 4, !tbaa !17
  store float %492, ptr %493, align 4, !tbaa !17
  %495 = getelementptr inbounds i32, ptr %20, i64 %456
  %496 = load i32, ptr %495, align 4, !tbaa !5
  %497 = getelementptr inbounds i32, ptr %20, i64 %indvars.iv636
  %498 = load i32, ptr %497, align 4, !tbaa !5
  store i32 %498, ptr %495, align 4, !tbaa !5
  store i32 %496, ptr %497, align 4, !tbaa !5
  br label %499

499:                                              ; preds = %._crit_edge660, %._crit_edge583
  %.pre-phi669 = phi i64 [ %.pre668, %._crit_edge660 ], [ %432, %._crit_edge583 ]
  %.pre-phi667 = phi i32 [ %.pre666, %._crit_edge660 ], [ %431, %._crit_edge583 ]
  %.pre-phi663 = phi i64 [ %.pre662, %._crit_edge660 ], [ %430, %._crit_edge583 ]
  %500 = load float, ptr %18, align 4, !tbaa !17
  %sqrtf = call float @sqrtf(float noundef %500) #9
  store float %sqrtf, ptr %18, align 4, !tbaa !17
  store i32 %.pre-phi667, ptr %12, align 4, !tbaa !5
  %501 = getelementptr inbounds %struct.complex, ptr %23, i64 %.pre-phi669
  store float %sqrtf, ptr %501, align 4, !tbaa !14
  %502 = getelementptr inbounds %struct.complex, ptr %23, i64 %.pre-phi669, i32 1
  store float 0.000000e+00, ptr %502, align 4, !tbaa !21
  %503 = load i32, ptr %1, align 4, !tbaa !5
  %504 = sext i32 %503 to i64
  %505 = icmp slt i64 %indvars.iv636, %504
  br i1 %505, label %506, label %._crit_edge659

._crit_edge659:                                   ; preds = %499
  %.pre670 = add nsw i64 %indvars.iv636, 1
  br label %520

506:                                              ; preds = %499
  %507 = trunc i64 %indvars.iv636 to i32
  %508 = add i32 %507, -1
  store i32 %508, ptr %12, align 4, !tbaa !5
  %gep710 = getelementptr %struct.complex, ptr %invariant.gep709, i64 %indvars.iv636
  call void @clacgv_(ptr noundef nonnull %12, ptr noundef %gep710, ptr noundef nonnull %3) #8
  %509 = load i32, ptr %1, align 4, !tbaa !5
  %510 = sub nsw i32 %509, %indvars647
  store i32 %510, ptr %12, align 4, !tbaa !5
  %511 = trunc i64 %indvars.iv636 to i32
  %512 = sub i32 %511, %.1482595
  store i32 %512, ptr %13, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %15, align 8, !tbaa !17
  %513 = add nsw i64 %indvars.iv636, 1
  %gep712 = getelementptr %struct.complex, ptr %invariant.gep711, i64 %513
  %gep714 = getelementptr %struct.complex, ptr %invariant.gep713, i64 %indvars.iv636
  %514 = getelementptr %struct.complex, ptr %23, i64 %513
  %515 = getelementptr %struct.complex, ptr %514, i64 %.pre-phi663
  call void @cgemv_(ptr noundef nonnull @.str.8, ptr noundef nonnull %12, ptr noundef nonnull %13, ptr noundef nonnull %15, ptr noundef %gep712, ptr noundef nonnull %3, ptr noundef %gep714, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef %515, ptr noundef nonnull @c__1) #8
  store i32 %508, ptr %12, align 4, !tbaa !5
  call void @clacgv_(ptr noundef nonnull %12, ptr noundef %gep710, ptr noundef nonnull %3) #8
  %516 = load i32, ptr %1, align 4, !tbaa !5
  %517 = sub nsw i32 %516, %indvars647
  store i32 %517, ptr %12, align 4, !tbaa !5
  %518 = load float, ptr %18, align 4, !tbaa !17
  %519 = fdiv float 1.000000e+00, %518
  store float %519, ptr %14, align 4, !tbaa !17
  call void @csscal_(ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %515, ptr noundef nonnull @c__1) #8
  br label %520

520:                                              ; preds = %._crit_edge659, %506
  %indvars.iv.next637.pre-phi = phi i64 [ %.pre670, %._crit_edge659 ], [ %513, %506 ]
  %521 = load i32, ptr %11, align 4, !tbaa !5
  %522 = sext i32 %521 to i64
  %.not507.not = icmp slt i64 %indvars.iv636, %522
  br i1 %.not507.not, label %345, label %._crit_edge590.loopexit, !llvm.loop !28

._crit_edge590.loopexit:                          ; preds = %520
  %523 = trunc nsw i64 %indvars.iv.next637.pre-phi to i32
  %.pre655 = load i32, ptr %17, align 4, !tbaa !5
  %.pre656 = load i32, ptr %1, align 4, !tbaa !5
  br label %._crit_edge590

._crit_edge590:                                   ; preds = %._crit_edge590.loopexit, %._crit_edge572
  %524 = phi i32 [ %331, %._crit_edge572 ], [ %.pre656, %._crit_edge590.loopexit ]
  %525 = phi i32 [ %334, %._crit_edge572 ], [ %.pre655, %._crit_edge590.loopexit ]
  %.4487.lcssa = phi i32 [ %.3486594, %._crit_edge572 ], [ %.5488, %._crit_edge590.loopexit ]
  %.1479.lcssa = phi i32 [ %.1482595, %._crit_edge572 ], [ %523, %._crit_edge590.loopexit ]
  %526 = add nsw i32 %525, %.1482595
  %.not508 = icmp sgt i32 %526, %524
  br i1 %.not508, label %536, label %527

527:                                              ; preds = %._crit_edge590
  %reass.sub598 = sub i32 %524, %.1479.lcssa
  %528 = add i32 %reass.sub598, 1
  store i32 %528, ptr %11, align 4, !tbaa !5
  %529 = mul nsw i32 %.1482595, %21
  %530 = add nsw i32 %.1479.lcssa, %529
  %531 = sext i32 %530 to i64
  %532 = getelementptr inbounds %struct.complex, ptr %23, i64 %531
  %533 = mul i32 %.1479.lcssa, %.pre661
  %534 = sext i32 %533 to i64
  %535 = getelementptr inbounds %struct.complex, ptr %23, i64 %534
  call void @cherk_(ptr noundef nonnull @.str.9, ptr noundef nonnull @.str.8, ptr noundef nonnull %11, ptr noundef nonnull %17, ptr noundef nonnull @c_b32, ptr noundef %532, ptr noundef nonnull %3, ptr noundef nonnull @c_b33, ptr noundef %535, ptr noundef nonnull %3) #8
  br label %536

536:                                              ; preds = %._crit_edge590, %527
  %537 = add nuw nsw i32 %40, %.1482595
  %.not684 = icmp sgt i32 %537, %107
  br i1 %.not684, label %.loopexit, label %330, !llvm.loop !29

.loopexit:                                        ; preds = %324, %536, %108, %325
  %538 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %538, ptr %5, align 4, !tbaa !5
  br label %544

split:                                            ; preds = %200, %411, %._crit_edge652, %._crit_edge648
  %indvars647691.sink = phi i32 [ %indvars629, %._crit_edge648 ], [ %indvars647, %._crit_edge652 ], [ %indvars647, %411 ], [ %indvars629, %200 ]
  %.sink717 = phi float [ %.pre649, %._crit_edge648 ], [ %.pre654, %._crit_edge652 ], [ %422, %411 ], [ %211, %200 ]
  %539 = mul i32 %.pre661, %indvars647691.sink
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds %struct.complex, ptr %23, i64 %540
  store float %.sink717, ptr %541, align 4, !tbaa !14
  %542 = getelementptr inbounds %struct.complex, ptr %23, i64 %540, i32 1
  store float 0.000000e+00, ptr %542, align 4, !tbaa !21
  %543 = add nsw i32 %indvars647691.sink, -1
  store i32 %543, ptr %5, align 4, !tbaa !5
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %544

544:                                              ; preds = %44, %95, %.loopexit, %split, %37, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #8
  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 i32 @ilaenv_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, i32 noundef, i32 noundef) local_unnamed_addr #2

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

; Function Attrs: nounwind uwtable
declare hidden i32 @smaxloc_(ptr noundef, i32 noundef, i32 noundef, ptr noundef) local_unnamed_addr #3

declare i32 @sisnan_(ptr noundef) local_unnamed_addr #2

declare float @slamch_(ptr noundef) local_unnamed_addr #2

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

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

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

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

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

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

declare void @cherk_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, 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.smin.i32(i32, i32) #6

declare float @sqrtf(float) local_unnamed_addr

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #7

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

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

!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 = distinct !{!9, !10, !11, !12}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!"llvm.loop.isvectorized", i32 1}
!12 = !{!"llvm.loop.unroll.runtime.disable"}
!13 = distinct !{!13, !10, !12, !11}
!14 = !{!15, !16, i64 0}
!15 = !{!"", !16, i64 0, !16, i64 4}
!16 = !{!"float", !7, i64 0}
!17 = !{!16, !16, i64 0}
!18 = distinct !{!18, !10}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.unroll.disable"}
!21 = !{!15, !16, i64 4}
!22 = distinct !{!22, !10}
!23 = distinct !{!23, !10}
!24 = distinct !{!24, !10}
!25 = distinct !{!25, !10}
!26 = distinct !{!26, !10}
!27 = distinct !{!27, !10}
!28 = distinct !{!28, !10}
!29 = distinct !{!29, !10}


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