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

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

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

64:                                               ; preds = %9
  %65 = load ptr, ptr %10, align 8, !tbaa !5
  %66 = call i32 @lsame_(ptr noundef %65, ptr noundef @.str.1)
  %67 = icmp ne i32 %66, 0
  br i1 %67, label %70, label %68

68:                                               ; preds = %64
  %69 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -1, ptr %69, align 4, !tbaa !9
  br label %93

70:                                               ; preds = %64, %9
  %71 = load ptr, ptr %11, align 8, !tbaa !5
  %72 = load i32, ptr %71, align 4, !tbaa !9
  %73 = icmp slt i32 %72, 0
  br i1 %73, label %74, label %76

74:                                               ; preds = %70
  %75 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -2, ptr %75, align 4, !tbaa !9
  br label %92

76:                                               ; preds = %70
  %77 = load ptr, ptr %13, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = load ptr, ptr %11, align 8, !tbaa !5
  %80 = load i32, ptr %79, align 4, !tbaa !9
  %81 = icmp sge i32 1, %80
  br i1 %81, label %82, label %83

82:                                               ; preds = %76
  br label %86

83:                                               ; preds = %76
  %84 = load ptr, ptr %11, align 8, !tbaa !5
  %85 = load i32, ptr %84, align 4, !tbaa !9
  br label %86

86:                                               ; preds = %83, %82
  %87 = phi i32 [ 1, %82 ], [ %85, %83 ]
  %88 = icmp slt i32 %78, %87
  br i1 %88, label %89, label %91

89:                                               ; preds = %86
  %90 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 -4, ptr %90, align 4, !tbaa !9
  br label %91

91:                                               ; preds = %89, %86
  br label %92

92:                                               ; preds = %91, %74
  br label %93

93:                                               ; preds = %92, %68
  %94 = load ptr, ptr %18, align 8, !tbaa !5
  %95 = load i32, ptr %94, align 4, !tbaa !9
  %96 = icmp ne i32 %95, 0
  br i1 %96, label %97, label %102

97:                                               ; preds = %93
  %98 = load ptr, ptr %18, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  %100 = sub nsw i32 0, %99
  store i32 %100, ptr %21, align 4, !tbaa !9
  %101 = call i32 @xerbla_(ptr noundef @.str.2, ptr noundef %21, i32 noundef 6)
  store i32 1, ptr %36, align 4
  br label %1247

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

106:                                              ; preds = %102
  store i32 1, ptr %36, align 4
  br label %1247

107:                                              ; preds = %102
  %108 = load ptr, ptr %11, align 8, !tbaa !5
  %109 = load i32, ptr %108, align 4, !tbaa !9
  store i32 %109, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %110

110:                                              ; preds = %120, %107
  %111 = load i32, ptr %27, align 4, !tbaa !9
  %112 = load i32, ptr %21, align 4, !tbaa !9
  %113 = icmp sle i32 %111, %112
  br i1 %113, label %114, label %123

114:                                              ; preds = %110
  %115 = load i32, ptr %27, align 4, !tbaa !9
  %116 = load ptr, ptr %14, align 8, !tbaa !5
  %117 = load i32, ptr %27, align 4, !tbaa !9
  %118 = sext i32 %117 to i64
  %119 = getelementptr inbounds i32, ptr %116, i64 %118
  store i32 %115, ptr %119, align 4, !tbaa !9
  br label %120

120:                                              ; preds = %114
  %121 = load i32, ptr %27, align 4, !tbaa !9
  %122 = add nsw i32 %121, 1
  store i32 %122, ptr %27, align 4, !tbaa !9
  br label %110, !llvm.loop !11

123:                                              ; preds = %110
  %124 = load ptr, ptr %11, align 8, !tbaa !5
  %125 = load i32, ptr %124, align 4, !tbaa !9
  store i32 %125, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %126

126:                                              ; preds = %146, %123
  %127 = load i32, ptr %27, align 4, !tbaa !9
  %128 = load i32, ptr %21, align 4, !tbaa !9
  %129 = icmp sle i32 %127, %128
  br i1 %129, label %130, label %149

130:                                              ; preds = %126
  %131 = load i32, ptr %27, align 4, !tbaa !9
  %132 = load i32, ptr %27, align 4, !tbaa !9
  %133 = load i32, ptr %19, align 4, !tbaa !9
  %134 = mul nsw i32 %132, %133
  %135 = add nsw i32 %131, %134
  store i32 %135, ptr %22, align 4, !tbaa !9
  %136 = load ptr, ptr %12, align 8, !tbaa !5
  %137 = load i32, ptr %22, align 4, !tbaa !9
  %138 = sext i32 %137 to i64
  %139 = getelementptr inbounds %struct.complex, ptr %136, i64 %138
  %140 = getelementptr inbounds %struct.complex, ptr %139, i32 0, i32 0
  %141 = load float, ptr %140, align 4, !tbaa !13
  %142 = load ptr, ptr %17, align 8, !tbaa !5
  %143 = load i32, ptr %27, align 4, !tbaa !9
  %144 = sext i32 %143 to i64
  %145 = getelementptr inbounds float, ptr %142, i64 %144
  store float %141, ptr %145, align 4, !tbaa !16
  br label %146

146:                                              ; preds = %130
  %147 = load i32, ptr %27, align 4, !tbaa !9
  %148 = add nsw i32 %147, 1
  store i32 %148, ptr %27, align 4, !tbaa !9
  br label %126, !llvm.loop !17

149:                                              ; preds = %126
  %150 = load ptr, ptr %17, align 8, !tbaa !5
  %151 = getelementptr inbounds float, ptr %150, i64 1
  %152 = load i32, ptr @c__1, align 4, !tbaa !9
  %153 = load ptr, ptr %11, align 8, !tbaa !5
  %154 = load i32, ptr %153, align 4, !tbaa !9
  %155 = call i32 @smaxloc_(ptr noundef %151, i32 noundef %152, i32 noundef %154, ptr noundef @c__1)
  store i32 %155, ptr %35, align 4, !tbaa !9
  %156 = load i32, ptr %35, align 4, !tbaa !9
  %157 = load i32, ptr %35, align 4, !tbaa !9
  %158 = load i32, ptr %19, align 4, !tbaa !9
  %159 = mul nsw i32 %157, %158
  %160 = add nsw i32 %156, %159
  store i32 %160, ptr %21, align 4, !tbaa !9
  %161 = load ptr, ptr %12, align 8, !tbaa !5
  %162 = load i32, ptr %21, align 4, !tbaa !9
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds %struct.complex, ptr %161, i64 %163
  %165 = getelementptr inbounds %struct.complex, ptr %164, i32 0, i32 0
  %166 = load float, ptr %165, align 4, !tbaa !13
  store float %166, ptr %34, align 4, !tbaa !16
  %167 = load float, ptr %34, align 4, !tbaa !16
  %168 = fcmp ole float %167, 0.000000e+00
  br i1 %168, label %172, label %169

169:                                              ; preds = %149
  %170 = call i32 @sisnan_(ptr noundef %34)
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %172, label %175

172:                                              ; preds = %169, %149
  %173 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 0, ptr %173, align 4, !tbaa !9
  %174 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 1, ptr %174, align 4, !tbaa !9
  br label %1246

175:                                              ; preds = %169
  %176 = load ptr, ptr %16, align 8, !tbaa !5
  %177 = load float, ptr %176, align 4, !tbaa !16
  %178 = fcmp olt float %177, 0.000000e+00
  br i1 %178, label %179, label %187

179:                                              ; preds = %175
  %180 = load ptr, ptr %11, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = sitofp i32 %181 to float
  %183 = call float @slamch_(ptr noundef @.str.3)
  %184 = fmul float %182, %183
  %185 = load float, ptr %34, align 4, !tbaa !16
  %186 = fmul float %184, %185
  store float %186, ptr %33, align 4, !tbaa !16
  br label %190

187:                                              ; preds = %175
  %188 = load ptr, ptr %16, align 8, !tbaa !5
  %189 = load float, ptr %188, align 4, !tbaa !16
  store float %189, ptr %33, align 4, !tbaa !16
  br label %190

190:                                              ; preds = %187, %179
  %191 = load ptr, ptr %11, align 8, !tbaa !5
  %192 = load i32, ptr %191, align 4, !tbaa !9
  store i32 %192, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %27, align 4, !tbaa !9
  br label %193

193:                                              ; preds = %202, %190
  %194 = load i32, ptr %27, align 4, !tbaa !9
  %195 = load i32, ptr %21, align 4, !tbaa !9
  %196 = icmp sle i32 %194, %195
  br i1 %196, label %197, label %205

197:                                              ; preds = %193
  %198 = load ptr, ptr %17, align 8, !tbaa !5
  %199 = load i32, ptr %27, align 4, !tbaa !9
  %200 = sext i32 %199 to i64
  %201 = getelementptr inbounds float, ptr %198, i64 %200
  store float 0.000000e+00, ptr %201, align 4, !tbaa !16
  br label %202

202:                                              ; preds = %197
  %203 = load i32, ptr %27, align 4, !tbaa !9
  %204 = add nsw i32 %203, 1
  store i32 %204, ptr %27, align 4, !tbaa !9
  br label %193, !llvm.loop !18

205:                                              ; preds = %193
  %206 = load i32, ptr %32, align 4, !tbaa !9
  %207 = icmp ne i32 %206, 0
  br i1 %207, label %208, label %725

208:                                              ; preds = %205
  %209 = load ptr, ptr %11, align 8, !tbaa !5
  %210 = load i32, ptr %209, align 4, !tbaa !9
  store i32 %210, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %211

211:                                              ; preds = %721, %208
  %212 = load i32, ptr %28, align 4, !tbaa !9
  %213 = load i32, ptr %21, align 4, !tbaa !9
  %214 = icmp sle i32 %212, %213
  br i1 %214, label %215, label %724

215:                                              ; preds = %211
  %216 = load ptr, ptr %11, align 8, !tbaa !5
  %217 = load i32, ptr %216, align 4, !tbaa !9
  store i32 %217, ptr %22, align 4, !tbaa !9
  %218 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %218, ptr %27, align 4, !tbaa !9
  br label %219

219:                                              ; preds = %323, %215
  %220 = load i32, ptr %27, align 4, !tbaa !9
  %221 = load i32, ptr %22, align 4, !tbaa !9
  %222 = icmp sle i32 %220, %221
  br i1 %222, label %223, label %326

223:                                              ; preds = %219
  %224 = load i32, ptr %28, align 4, !tbaa !9
  %225 = icmp sgt i32 %224, 1
  br i1 %225, label %226, label %298

226:                                              ; preds = %223
  %227 = load ptr, ptr %12, align 8, !tbaa !5
  %228 = load i32, ptr %28, align 4, !tbaa !9
  %229 = sub nsw i32 %228, 1
  %230 = load i32, ptr %27, align 4, !tbaa !9
  %231 = load i32, ptr %19, align 4, !tbaa !9
  %232 = mul nsw i32 %230, %231
  %233 = add nsw i32 %229, %232
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds %struct.complex, ptr %227, i64 %234
  %236 = call <2 x float> @Cf(ptr noundef %235)
  store <2 x float> %236, ptr %37, align 4
  %237 = getelementptr inbounds { float, float }, ptr %37, i32 0, i32 0
  %238 = load float, ptr %237, align 4
  %239 = getelementptr inbounds { float, float }, ptr %37, i32 0, i32 1
  %240 = load float, ptr %239, align 4
  %241 = fneg float %240
  %242 = call ptr @_pCf(ptr noundef %26)
  %243 = getelementptr inbounds { float, float }, ptr %242, i32 0, i32 0
  %244 = getelementptr inbounds { float, float }, ptr %242, i32 0, i32 1
  store float %238, ptr %243, align 4
  store float %241, ptr %244, align 4
  %245 = load i32, ptr %28, align 4, !tbaa !9
  %246 = sub nsw i32 %245, 1
  %247 = load i32, ptr %27, align 4, !tbaa !9
  %248 = load i32, ptr %19, align 4, !tbaa !9
  %249 = mul nsw i32 %247, %248
  %250 = add nsw i32 %246, %249
  store i32 %250, ptr %23, align 4, !tbaa !9
  %251 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 0
  %252 = load float, ptr %251, align 4, !tbaa !13
  %253 = load ptr, ptr %12, align 8, !tbaa !5
  %254 = load i32, ptr %23, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds %struct.complex, ptr %253, i64 %255
  %257 = getelementptr inbounds %struct.complex, ptr %256, i32 0, i32 0
  %258 = load float, ptr %257, align 4, !tbaa !13
  %259 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 1
  %260 = load float, ptr %259, align 4, !tbaa !19
  %261 = load ptr, ptr %12, align 8, !tbaa !5
  %262 = load i32, ptr %23, align 4, !tbaa !9
  %263 = sext i32 %262 to i64
  %264 = getelementptr inbounds %struct.complex, ptr %261, i64 %263
  %265 = getelementptr inbounds %struct.complex, ptr %264, i32 0, i32 1
  %266 = load float, ptr %265, align 4, !tbaa !19
  %267 = fmul float %260, %266
  %268 = fneg float %267
  %269 = call float @llvm.fmuladd.f32(float %252, float %258, float %268)
  %270 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  store float %269, ptr %270, align 4, !tbaa !13
  %271 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 0
  %272 = load float, ptr %271, align 4, !tbaa !13
  %273 = load ptr, ptr %12, align 8, !tbaa !5
  %274 = load i32, ptr %23, align 4, !tbaa !9
  %275 = sext i32 %274 to i64
  %276 = getelementptr inbounds %struct.complex, ptr %273, i64 %275
  %277 = getelementptr inbounds %struct.complex, ptr %276, i32 0, i32 1
  %278 = load float, ptr %277, align 4, !tbaa !19
  %279 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 1
  %280 = load float, ptr %279, align 4, !tbaa !19
  %281 = load ptr, ptr %12, align 8, !tbaa !5
  %282 = load i32, ptr %23, align 4, !tbaa !9
  %283 = sext i32 %282 to i64
  %284 = getelementptr inbounds %struct.complex, ptr %281, i64 %283
  %285 = getelementptr inbounds %struct.complex, ptr %284, i32 0, i32 0
  %286 = load float, ptr %285, align 4, !tbaa !13
  %287 = fmul float %280, %286
  %288 = call float @llvm.fmuladd.f32(float %272, float %278, float %287)
  %289 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  store float %288, ptr %289, align 4, !tbaa !19
  %290 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  %291 = load float, ptr %290, align 4, !tbaa !13
  %292 = load ptr, ptr %17, align 8, !tbaa !5
  %293 = load i32, ptr %27, align 4, !tbaa !9
  %294 = sext i32 %293 to i64
  %295 = getelementptr inbounds float, ptr %292, i64 %294
  %296 = load float, ptr %295, align 4, !tbaa !16
  %297 = fadd float %296, %291
  store float %297, ptr %295, align 4, !tbaa !16
  br label %298

298:                                              ; preds = %226, %223
  %299 = load i32, ptr %27, align 4, !tbaa !9
  %300 = load i32, ptr %27, align 4, !tbaa !9
  %301 = load i32, ptr %19, align 4, !tbaa !9
  %302 = mul nsw i32 %300, %301
  %303 = add nsw i32 %299, %302
  store i32 %303, ptr %23, align 4, !tbaa !9
  %304 = load ptr, ptr %12, align 8, !tbaa !5
  %305 = load i32, ptr %23, align 4, !tbaa !9
  %306 = sext i32 %305 to i64
  %307 = getelementptr inbounds %struct.complex, ptr %304, i64 %306
  %308 = getelementptr inbounds %struct.complex, ptr %307, i32 0, i32 0
  %309 = load float, ptr %308, align 4, !tbaa !13
  %310 = load ptr, ptr %17, align 8, !tbaa !5
  %311 = load i32, ptr %27, align 4, !tbaa !9
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds float, ptr %310, i64 %312
  %314 = load float, ptr %313, align 4, !tbaa !16
  %315 = fsub float %309, %314
  %316 = load ptr, ptr %17, align 8, !tbaa !5
  %317 = load ptr, ptr %11, align 8, !tbaa !5
  %318 = load i32, ptr %317, align 4, !tbaa !9
  %319 = load i32, ptr %27, align 4, !tbaa !9
  %320 = add nsw i32 %318, %319
  %321 = sext i32 %320 to i64
  %322 = getelementptr inbounds float, ptr %316, i64 %321
  store float %315, ptr %322, align 4, !tbaa !16
  br label %323

323:                                              ; preds = %298
  %324 = load i32, ptr %27, align 4, !tbaa !9
  %325 = add nsw i32 %324, 1
  store i32 %325, ptr %27, align 4, !tbaa !9
  br label %219, !llvm.loop !20

326:                                              ; preds = %219
  %327 = load i32, ptr %28, align 4, !tbaa !9
  %328 = icmp sgt i32 %327, 1
  br i1 %328, label %329, label %378

329:                                              ; preds = %326
  %330 = load ptr, ptr %11, align 8, !tbaa !5
  %331 = load i32, ptr %330, align 4, !tbaa !9
  %332 = load i32, ptr %28, align 4, !tbaa !9
  %333 = add nsw i32 %331, %332
  store i32 %333, ptr %22, align 4, !tbaa !9
  %334 = load ptr, ptr %11, align 8, !tbaa !5
  %335 = load i32, ptr %334, align 4, !tbaa !9
  %336 = shl i32 %335, 1
  store i32 %336, ptr %23, align 4, !tbaa !9
  %337 = load ptr, ptr %17, align 8, !tbaa !5
  %338 = getelementptr inbounds float, ptr %337, i64 1
  %339 = load i32, ptr %22, align 4, !tbaa !9
  %340 = load i32, ptr %23, align 4, !tbaa !9
  %341 = call i32 @smaxloc_(ptr noundef %338, i32 noundef %339, i32 noundef %340, ptr noundef @c__1)
  store i32 %341, ptr %30, align 4, !tbaa !9
  %342 = load i32, ptr %30, align 4, !tbaa !9
  %343 = load i32, ptr %28, align 4, !tbaa !9
  %344 = add nsw i32 %342, %343
  %345 = sub nsw i32 %344, 1
  store i32 %345, ptr %35, align 4, !tbaa !9
  %346 = load ptr, ptr %17, align 8, !tbaa !5
  %347 = load ptr, ptr %11, align 8, !tbaa !5
  %348 = load i32, ptr %347, align 4, !tbaa !9
  %349 = load i32, ptr %35, align 4, !tbaa !9
  %350 = add nsw i32 %348, %349
  %351 = sext i32 %350 to i64
  %352 = getelementptr inbounds float, ptr %346, i64 %351
  %353 = load float, ptr %352, align 4, !tbaa !16
  store float %353, ptr %34, align 4, !tbaa !16
  %354 = load float, ptr %34, align 4, !tbaa !16
  %355 = load float, ptr %33, align 4, !tbaa !16
  %356 = fcmp ole float %354, %355
  br i1 %356, label %360, label %357

357:                                              ; preds = %329
  %358 = call i32 @sisnan_(ptr noundef %34)
  %359 = icmp ne i32 %358, 0
  br i1 %359, label %360, label %377

360:                                              ; preds = %357, %329
  %361 = load i32, ptr %28, align 4, !tbaa !9
  %362 = load i32, ptr %28, align 4, !tbaa !9
  %363 = load i32, ptr %19, align 4, !tbaa !9
  %364 = mul nsw i32 %362, %363
  %365 = add nsw i32 %361, %364
  store i32 %365, ptr %22, align 4, !tbaa !9
  %366 = load float, ptr %34, align 4, !tbaa !16
  %367 = load ptr, ptr %12, align 8, !tbaa !5
  %368 = load i32, ptr %22, align 4, !tbaa !9
  %369 = sext i32 %368 to i64
  %370 = getelementptr inbounds %struct.complex, ptr %367, i64 %369
  %371 = getelementptr inbounds %struct.complex, ptr %370, i32 0, i32 0
  store float %366, ptr %371, align 4, !tbaa !13
  %372 = load ptr, ptr %12, align 8, !tbaa !5
  %373 = load i32, ptr %22, align 4, !tbaa !9
  %374 = sext i32 %373 to i64
  %375 = getelementptr inbounds %struct.complex, ptr %372, i64 %374
  %376 = getelementptr inbounds %struct.complex, ptr %375, i32 0, i32 1
  store float 0.000000e+00, ptr %376, align 4, !tbaa !19
  br label %1241

377:                                              ; preds = %357
  br label %378

378:                                              ; preds = %377, %326
  %379 = load i32, ptr %28, align 4, !tbaa !9
  %380 = load i32, ptr %35, align 4, !tbaa !9
  %381 = icmp ne i32 %379, %380
  br i1 %381, label %382, label %626

382:                                              ; preds = %378
  %383 = load i32, ptr %35, align 4, !tbaa !9
  %384 = load i32, ptr %35, align 4, !tbaa !9
  %385 = load i32, ptr %19, align 4, !tbaa !9
  %386 = mul nsw i32 %384, %385
  %387 = add nsw i32 %383, %386
  store i32 %387, ptr %22, align 4, !tbaa !9
  %388 = load i32, ptr %28, align 4, !tbaa !9
  %389 = load i32, ptr %28, align 4, !tbaa !9
  %390 = load i32, ptr %19, align 4, !tbaa !9
  %391 = mul nsw i32 %389, %390
  %392 = add nsw i32 %388, %391
  store i32 %392, ptr %23, align 4, !tbaa !9
  %393 = load ptr, ptr %12, align 8, !tbaa !5
  %394 = load i32, ptr %23, align 4, !tbaa !9
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds %struct.complex, ptr %393, i64 %395
  %397 = getelementptr inbounds %struct.complex, ptr %396, i32 0, i32 0
  %398 = load float, ptr %397, align 4, !tbaa !13
  %399 = load ptr, ptr %12, align 8, !tbaa !5
  %400 = load i32, ptr %22, align 4, !tbaa !9
  %401 = sext i32 %400 to i64
  %402 = getelementptr inbounds %struct.complex, ptr %399, i64 %401
  %403 = getelementptr inbounds %struct.complex, ptr %402, i32 0, i32 0
  store float %398, ptr %403, align 4, !tbaa !13
  %404 = load ptr, ptr %12, align 8, !tbaa !5
  %405 = load i32, ptr %23, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds %struct.complex, ptr %404, i64 %406
  %408 = getelementptr inbounds %struct.complex, ptr %407, i32 0, i32 1
  %409 = load float, ptr %408, align 4, !tbaa !19
  %410 = load ptr, ptr %12, align 8, !tbaa !5
  %411 = load i32, ptr %22, align 4, !tbaa !9
  %412 = sext i32 %411 to i64
  %413 = getelementptr inbounds %struct.complex, ptr %410, i64 %412
  %414 = getelementptr inbounds %struct.complex, ptr %413, i32 0, i32 1
  store float %409, ptr %414, align 4, !tbaa !19
  %415 = load i32, ptr %28, align 4, !tbaa !9
  %416 = sub nsw i32 %415, 1
  store i32 %416, ptr %22, align 4, !tbaa !9
  %417 = load ptr, ptr %12, align 8, !tbaa !5
  %418 = load i32, ptr %28, align 4, !tbaa !9
  %419 = load i32, ptr %19, align 4, !tbaa !9
  %420 = mul nsw i32 %418, %419
  %421 = add nsw i32 %420, 1
  %422 = sext i32 %421 to i64
  %423 = getelementptr inbounds %struct.complex, ptr %417, i64 %422
  %424 = load ptr, ptr %12, align 8, !tbaa !5
  %425 = load i32, ptr %35, align 4, !tbaa !9
  %426 = load i32, ptr %19, align 4, !tbaa !9
  %427 = mul nsw i32 %425, %426
  %428 = add nsw i32 %427, 1
  %429 = sext i32 %428 to i64
  %430 = getelementptr inbounds %struct.complex, ptr %424, i64 %429
  call void @cswap_(ptr noundef %22, ptr noundef %423, ptr noundef @c__1, ptr noundef %430, ptr noundef @c__1)
  %431 = load i32, ptr %35, align 4, !tbaa !9
  %432 = load ptr, ptr %11, align 8, !tbaa !5
  %433 = load i32, ptr %432, align 4, !tbaa !9
  %434 = icmp slt i32 %431, %433
  br i1 %434, label %435, label %460

435:                                              ; preds = %382
  %436 = load ptr, ptr %11, align 8, !tbaa !5
  %437 = load i32, ptr %436, align 4, !tbaa !9
  %438 = load i32, ptr %35, align 4, !tbaa !9
  %439 = sub nsw i32 %437, %438
  store i32 %439, ptr %22, align 4, !tbaa !9
  %440 = load ptr, ptr %12, align 8, !tbaa !5
  %441 = load i32, ptr %28, align 4, !tbaa !9
  %442 = load i32, ptr %35, align 4, !tbaa !9
  %443 = add nsw i32 %442, 1
  %444 = load i32, ptr %19, align 4, !tbaa !9
  %445 = mul nsw i32 %443, %444
  %446 = add nsw i32 %441, %445
  %447 = sext i32 %446 to i64
  %448 = getelementptr inbounds %struct.complex, ptr %440, i64 %447
  %449 = load ptr, ptr %13, align 8, !tbaa !5
  %450 = load ptr, ptr %12, align 8, !tbaa !5
  %451 = load i32, ptr %35, align 4, !tbaa !9
  %452 = load i32, ptr %35, align 4, !tbaa !9
  %453 = add nsw i32 %452, 1
  %454 = load i32, ptr %19, align 4, !tbaa !9
  %455 = mul nsw i32 %453, %454
  %456 = add nsw i32 %451, %455
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds %struct.complex, ptr %450, i64 %457
  %459 = load ptr, ptr %13, align 8, !tbaa !5
  call void @cswap_(ptr noundef %22, ptr noundef %448, ptr noundef %449, ptr noundef %458, ptr noundef %459)
  br label %460

460:                                              ; preds = %435, %382
  %461 = load i32, ptr %35, align 4, !tbaa !9
  %462 = sub nsw i32 %461, 1
  store i32 %462, ptr %22, align 4, !tbaa !9
  %463 = load i32, ptr %28, align 4, !tbaa !9
  %464 = add nsw i32 %463, 1
  store i32 %464, ptr %27, align 4, !tbaa !9
  br label %465

465:                                              ; preds = %548, %460
  %466 = load i32, ptr %27, align 4, !tbaa !9
  %467 = load i32, ptr %22, align 4, !tbaa !9
  %468 = icmp sle i32 %466, %467
  br i1 %468, label %469, label %551

469:                                              ; preds = %465
  %470 = load ptr, ptr %12, align 8, !tbaa !5
  %471 = load i32, ptr %28, align 4, !tbaa !9
  %472 = load i32, ptr %27, align 4, !tbaa !9
  %473 = load i32, ptr %19, align 4, !tbaa !9
  %474 = mul nsw i32 %472, %473
  %475 = add nsw i32 %471, %474
  %476 = sext i32 %475 to i64
  %477 = getelementptr inbounds %struct.complex, ptr %470, i64 %476
  %478 = call <2 x float> @Cf(ptr noundef %477)
  store <2 x float> %478, ptr %38, align 4
  %479 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 0
  %480 = load float, ptr %479, align 4
  %481 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 1
  %482 = load float, ptr %481, align 4
  %483 = fneg float %482
  %484 = call ptr @_pCf(ptr noundef %25)
  %485 = getelementptr inbounds { float, float }, ptr %484, i32 0, i32 0
  %486 = getelementptr inbounds { float, float }, ptr %484, i32 0, i32 1
  store float %480, ptr %485, align 4
  store float %483, ptr %486, align 4
  %487 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  %488 = load float, ptr %487, align 4, !tbaa !13
  %489 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 0
  store float %488, ptr %489, align 4, !tbaa !13
  %490 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  %491 = load float, ptr %490, align 4, !tbaa !19
  %492 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 1
  store float %491, ptr %492, align 4, !tbaa !19
  %493 = load i32, ptr %28, align 4, !tbaa !9
  %494 = load i32, ptr %27, align 4, !tbaa !9
  %495 = load i32, ptr %19, align 4, !tbaa !9
  %496 = mul nsw i32 %494, %495
  %497 = add nsw i32 %493, %496
  store i32 %497, ptr %23, align 4, !tbaa !9
  %498 = load ptr, ptr %12, align 8, !tbaa !5
  %499 = load i32, ptr %27, align 4, !tbaa !9
  %500 = load i32, ptr %35, align 4, !tbaa !9
  %501 = load i32, ptr %19, align 4, !tbaa !9
  %502 = mul nsw i32 %500, %501
  %503 = add nsw i32 %499, %502
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds %struct.complex, ptr %498, i64 %504
  %506 = call <2 x float> @Cf(ptr noundef %505)
  store <2 x float> %506, ptr %39, align 4
  %507 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 0
  %508 = load float, ptr %507, align 4
  %509 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 1
  %510 = load float, ptr %509, align 4
  %511 = fneg float %510
  %512 = call ptr @_pCf(ptr noundef %25)
  %513 = getelementptr inbounds { float, float }, ptr %512, i32 0, i32 0
  %514 = getelementptr inbounds { float, float }, ptr %512, i32 0, i32 1
  store float %508, ptr %513, align 4
  store float %511, ptr %514, align 4
  %515 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  %516 = load float, ptr %515, align 4, !tbaa !13
  %517 = load ptr, ptr %12, align 8, !tbaa !5
  %518 = load i32, ptr %23, align 4, !tbaa !9
  %519 = sext i32 %518 to i64
  %520 = getelementptr inbounds %struct.complex, ptr %517, i64 %519
  %521 = getelementptr inbounds %struct.complex, ptr %520, i32 0, i32 0
  store float %516, ptr %521, align 4, !tbaa !13
  %522 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  %523 = load float, ptr %522, align 4, !tbaa !19
  %524 = load ptr, ptr %12, align 8, !tbaa !5
  %525 = load i32, ptr %23, align 4, !tbaa !9
  %526 = sext i32 %525 to i64
  %527 = getelementptr inbounds %struct.complex, ptr %524, i64 %526
  %528 = getelementptr inbounds %struct.complex, ptr %527, i32 0, i32 1
  store float %523, ptr %528, align 4, !tbaa !19
  %529 = load i32, ptr %27, align 4, !tbaa !9
  %530 = load i32, ptr %35, align 4, !tbaa !9
  %531 = load i32, ptr %19, align 4, !tbaa !9
  %532 = mul nsw i32 %530, %531
  %533 = add nsw i32 %529, %532
  store i32 %533, ptr %23, align 4, !tbaa !9
  %534 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 0
  %535 = load float, ptr %534, align 4, !tbaa !13
  %536 = load ptr, ptr %12, align 8, !tbaa !5
  %537 = load i32, ptr %23, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds %struct.complex, ptr %536, i64 %538
  %540 = getelementptr inbounds %struct.complex, ptr %539, i32 0, i32 0
  store float %535, ptr %540, align 4, !tbaa !13
  %541 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 1
  %542 = load float, ptr %541, align 4, !tbaa !19
  %543 = load ptr, ptr %12, align 8, !tbaa !5
  %544 = load i32, ptr %23, align 4, !tbaa !9
  %545 = sext i32 %544 to i64
  %546 = getelementptr inbounds %struct.complex, ptr %543, i64 %545
  %547 = getelementptr inbounds %struct.complex, ptr %546, i32 0, i32 1
  store float %542, ptr %547, align 4, !tbaa !19
  br label %548

548:                                              ; preds = %469
  %549 = load i32, ptr %27, align 4, !tbaa !9
  %550 = add nsw i32 %549, 1
  store i32 %550, ptr %27, align 4, !tbaa !9
  br label %465, !llvm.loop !21

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

626:                                              ; preds = %551, %378
  %627 = load float, ptr %34, align 4, !tbaa !16
  %628 = fpext float %627 to double
  %629 = call double @sqrt(double noundef %628) #8
  %630 = fptrunc double %629 to float
  store float %630, ptr %34, align 4, !tbaa !16
  %631 = load i32, ptr %28, align 4, !tbaa !9
  %632 = load i32, ptr %28, align 4, !tbaa !9
  %633 = load i32, ptr %19, align 4, !tbaa !9
  %634 = mul nsw i32 %632, %633
  %635 = add nsw i32 %631, %634
  store i32 %635, ptr %22, align 4, !tbaa !9
  %636 = load float, ptr %34, align 4, !tbaa !16
  %637 = load ptr, ptr %12, align 8, !tbaa !5
  %638 = load i32, ptr %22, align 4, !tbaa !9
  %639 = sext i32 %638 to i64
  %640 = getelementptr inbounds %struct.complex, ptr %637, i64 %639
  %641 = getelementptr inbounds %struct.complex, ptr %640, i32 0, i32 0
  store float %636, ptr %641, align 4, !tbaa !13
  %642 = load ptr, ptr %12, align 8, !tbaa !5
  %643 = load i32, ptr %22, align 4, !tbaa !9
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds %struct.complex, ptr %642, i64 %644
  %646 = getelementptr inbounds %struct.complex, ptr %645, i32 0, i32 1
  store float 0.000000e+00, ptr %646, align 4, !tbaa !19
  %647 = load i32, ptr %28, align 4, !tbaa !9
  %648 = load ptr, ptr %11, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = icmp slt i32 %647, %649
  br i1 %650, label %651, label %720

651:                                              ; preds = %626
  %652 = load i32, ptr %28, align 4, !tbaa !9
  %653 = sub nsw i32 %652, 1
  store i32 %653, ptr %22, align 4, !tbaa !9
  %654 = load ptr, ptr %12, align 8, !tbaa !5
  %655 = load i32, ptr %28, align 4, !tbaa !9
  %656 = load i32, ptr %19, align 4, !tbaa !9
  %657 = mul nsw i32 %655, %656
  %658 = add nsw i32 %657, 1
  %659 = sext i32 %658 to i64
  %660 = getelementptr inbounds %struct.complex, ptr %654, i64 %659
  call void @clacgv_(ptr noundef %22, ptr noundef %660, ptr noundef @c__1)
  %661 = load i32, ptr %28, align 4, !tbaa !9
  %662 = sub nsw i32 %661, 1
  store i32 %662, ptr %22, align 4, !tbaa !9
  %663 = load ptr, ptr %11, align 8, !tbaa !5
  %664 = load i32, ptr %663, align 4, !tbaa !9
  %665 = load i32, ptr %28, align 4, !tbaa !9
  %666 = sub nsw i32 %664, %665
  store i32 %666, ptr %23, align 4, !tbaa !9
  %667 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  store float -1.000000e+00, ptr %667, align 4, !tbaa !13
  %668 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  store float 0.000000e+00, ptr %668, align 4, !tbaa !19
  %669 = load ptr, ptr %12, align 8, !tbaa !5
  %670 = load i32, ptr %28, align 4, !tbaa !9
  %671 = add nsw i32 %670, 1
  %672 = load i32, ptr %19, align 4, !tbaa !9
  %673 = mul nsw i32 %671, %672
  %674 = add nsw i32 %673, 1
  %675 = sext i32 %674 to i64
  %676 = getelementptr inbounds %struct.complex, ptr %669, i64 %675
  %677 = load ptr, ptr %13, align 8, !tbaa !5
  %678 = load ptr, ptr %12, align 8, !tbaa !5
  %679 = load i32, ptr %28, align 4, !tbaa !9
  %680 = load i32, ptr %19, align 4, !tbaa !9
  %681 = mul nsw i32 %679, %680
  %682 = add nsw i32 %681, 1
  %683 = sext i32 %682 to i64
  %684 = getelementptr inbounds %struct.complex, ptr %678, i64 %683
  %685 = load ptr, ptr %12, align 8, !tbaa !5
  %686 = load i32, ptr %28, align 4, !tbaa !9
  %687 = load i32, ptr %28, align 4, !tbaa !9
  %688 = add nsw i32 %687, 1
  %689 = load i32, ptr %19, align 4, !tbaa !9
  %690 = mul nsw i32 %688, %689
  %691 = add nsw i32 %686, %690
  %692 = sext i32 %691 to i64
  %693 = getelementptr inbounds %struct.complex, ptr %685, i64 %692
  %694 = load ptr, ptr %13, align 8, !tbaa !5
  call void @cgemv_(ptr noundef @.str.4, ptr noundef %22, ptr noundef %23, ptr noundef %25, ptr noundef %676, ptr noundef %677, ptr noundef %684, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef %693, ptr noundef %694)
  %695 = load i32, ptr %28, align 4, !tbaa !9
  %696 = sub nsw i32 %695, 1
  store i32 %696, ptr %22, align 4, !tbaa !9
  %697 = load ptr, ptr %12, align 8, !tbaa !5
  %698 = load i32, ptr %28, align 4, !tbaa !9
  %699 = load i32, ptr %19, align 4, !tbaa !9
  %700 = mul nsw i32 %698, %699
  %701 = add nsw i32 %700, 1
  %702 = sext i32 %701 to i64
  %703 = getelementptr inbounds %struct.complex, ptr %697, i64 %702
  call void @clacgv_(ptr noundef %22, ptr noundef %703, ptr noundef @c__1)
  %704 = load ptr, ptr %11, align 8, !tbaa !5
  %705 = load i32, ptr %704, align 4, !tbaa !9
  %706 = load i32, ptr %28, align 4, !tbaa !9
  %707 = sub nsw i32 %705, %706
  store i32 %707, ptr %22, align 4, !tbaa !9
  %708 = load float, ptr %34, align 4, !tbaa !16
  %709 = fdiv float 1.000000e+00, %708
  store float %709, ptr %24, align 4, !tbaa !16
  %710 = load ptr, ptr %12, align 8, !tbaa !5
  %711 = load i32, ptr %28, align 4, !tbaa !9
  %712 = load i32, ptr %28, align 4, !tbaa !9
  %713 = add nsw i32 %712, 1
  %714 = load i32, ptr %19, align 4, !tbaa !9
  %715 = mul nsw i32 %713, %714
  %716 = add nsw i32 %711, %715
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds %struct.complex, ptr %710, i64 %717
  %719 = load ptr, ptr %13, align 8, !tbaa !5
  call void @csscal_(ptr noundef %22, ptr noundef %24, ptr noundef %718, ptr noundef %719)
  br label %720

720:                                              ; preds = %651, %626
  br label %721

721:                                              ; preds = %720
  %722 = load i32, ptr %28, align 4, !tbaa !9
  %723 = add nsw i32 %722, 1
  store i32 %723, ptr %28, align 4, !tbaa !9
  br label %211, !llvm.loop !22

724:                                              ; preds = %211
  br label %1237

725:                                              ; preds = %205
  %726 = load ptr, ptr %11, align 8, !tbaa !5
  %727 = load i32, ptr %726, align 4, !tbaa !9
  store i32 %727, ptr %21, align 4, !tbaa !9
  store i32 1, ptr %28, align 4, !tbaa !9
  br label %728

728:                                              ; preds = %1233, %725
  %729 = load i32, ptr %28, align 4, !tbaa !9
  %730 = load i32, ptr %21, align 4, !tbaa !9
  %731 = icmp sle i32 %729, %730
  br i1 %731, label %732, label %1236

732:                                              ; preds = %728
  %733 = load ptr, ptr %11, align 8, !tbaa !5
  %734 = load i32, ptr %733, align 4, !tbaa !9
  store i32 %734, ptr %22, align 4, !tbaa !9
  %735 = load i32, ptr %28, align 4, !tbaa !9
  store i32 %735, ptr %27, align 4, !tbaa !9
  br label %736

736:                                              ; preds = %840, %732
  %737 = load i32, ptr %27, align 4, !tbaa !9
  %738 = load i32, ptr %22, align 4, !tbaa !9
  %739 = icmp sle i32 %737, %738
  br i1 %739, label %740, label %843

740:                                              ; preds = %736
  %741 = load i32, ptr %28, align 4, !tbaa !9
  %742 = icmp sgt i32 %741, 1
  br i1 %742, label %743, label %815

743:                                              ; preds = %740
  %744 = load ptr, ptr %12, align 8, !tbaa !5
  %745 = load i32, ptr %27, align 4, !tbaa !9
  %746 = load i32, ptr %28, align 4, !tbaa !9
  %747 = sub nsw i32 %746, 1
  %748 = load i32, ptr %19, align 4, !tbaa !9
  %749 = mul nsw i32 %747, %748
  %750 = add nsw i32 %745, %749
  %751 = sext i32 %750 to i64
  %752 = getelementptr inbounds %struct.complex, ptr %744, i64 %751
  %753 = call <2 x float> @Cf(ptr noundef %752)
  store <2 x float> %753, ptr %41, align 4
  %754 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 0
  %755 = load float, ptr %754, align 4
  %756 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 1
  %757 = load float, ptr %756, align 4
  %758 = fneg float %757
  %759 = call ptr @_pCf(ptr noundef %26)
  %760 = getelementptr inbounds { float, float }, ptr %759, i32 0, i32 0
  %761 = getelementptr inbounds { float, float }, ptr %759, i32 0, i32 1
  store float %755, ptr %760, align 4
  store float %758, ptr %761, align 4
  %762 = load i32, ptr %27, align 4, !tbaa !9
  %763 = load i32, ptr %28, align 4, !tbaa !9
  %764 = sub nsw i32 %763, 1
  %765 = load i32, ptr %19, align 4, !tbaa !9
  %766 = mul nsw i32 %764, %765
  %767 = add nsw i32 %762, %766
  store i32 %767, ptr %23, align 4, !tbaa !9
  %768 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 0
  %769 = load float, ptr %768, align 4, !tbaa !13
  %770 = load ptr, ptr %12, align 8, !tbaa !5
  %771 = load i32, ptr %23, align 4, !tbaa !9
  %772 = sext i32 %771 to i64
  %773 = getelementptr inbounds %struct.complex, ptr %770, i64 %772
  %774 = getelementptr inbounds %struct.complex, ptr %773, i32 0, i32 0
  %775 = load float, ptr %774, align 4, !tbaa !13
  %776 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 1
  %777 = load float, ptr %776, align 4, !tbaa !19
  %778 = load ptr, ptr %12, align 8, !tbaa !5
  %779 = load i32, ptr %23, align 4, !tbaa !9
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds %struct.complex, ptr %778, i64 %780
  %782 = getelementptr inbounds %struct.complex, ptr %781, i32 0, i32 1
  %783 = load float, ptr %782, align 4, !tbaa !19
  %784 = fmul float %777, %783
  %785 = fneg float %784
  %786 = call float @llvm.fmuladd.f32(float %769, float %775, float %785)
  %787 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  store float %786, ptr %787, align 4, !tbaa !13
  %788 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 0
  %789 = load float, ptr %788, align 4, !tbaa !13
  %790 = load ptr, ptr %12, align 8, !tbaa !5
  %791 = load i32, ptr %23, align 4, !tbaa !9
  %792 = sext i32 %791 to i64
  %793 = getelementptr inbounds %struct.complex, ptr %790, i64 %792
  %794 = getelementptr inbounds %struct.complex, ptr %793, i32 0, i32 1
  %795 = load float, ptr %794, align 4, !tbaa !19
  %796 = getelementptr inbounds %struct.complex, ptr %26, i32 0, i32 1
  %797 = load float, ptr %796, align 4, !tbaa !19
  %798 = load ptr, ptr %12, align 8, !tbaa !5
  %799 = load i32, ptr %23, align 4, !tbaa !9
  %800 = sext i32 %799 to i64
  %801 = getelementptr inbounds %struct.complex, ptr %798, i64 %800
  %802 = getelementptr inbounds %struct.complex, ptr %801, i32 0, i32 0
  %803 = load float, ptr %802, align 4, !tbaa !13
  %804 = fmul float %797, %803
  %805 = call float @llvm.fmuladd.f32(float %789, float %795, float %804)
  %806 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  store float %805, ptr %806, align 4, !tbaa !19
  %807 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  %808 = load float, ptr %807, align 4, !tbaa !13
  %809 = load ptr, ptr %17, align 8, !tbaa !5
  %810 = load i32, ptr %27, align 4, !tbaa !9
  %811 = sext i32 %810 to i64
  %812 = getelementptr inbounds float, ptr %809, i64 %811
  %813 = load float, ptr %812, align 4, !tbaa !16
  %814 = fadd float %813, %808
  store float %814, ptr %812, align 4, !tbaa !16
  br label %815

815:                                              ; preds = %743, %740
  %816 = load i32, ptr %27, align 4, !tbaa !9
  %817 = load i32, ptr %27, align 4, !tbaa !9
  %818 = load i32, ptr %19, align 4, !tbaa !9
  %819 = mul nsw i32 %817, %818
  %820 = add nsw i32 %816, %819
  store i32 %820, ptr %23, align 4, !tbaa !9
  %821 = load ptr, ptr %12, align 8, !tbaa !5
  %822 = load i32, ptr %23, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds %struct.complex, ptr %821, i64 %823
  %825 = getelementptr inbounds %struct.complex, ptr %824, i32 0, i32 0
  %826 = load float, ptr %825, align 4, !tbaa !13
  %827 = load ptr, ptr %17, align 8, !tbaa !5
  %828 = load i32, ptr %27, align 4, !tbaa !9
  %829 = sext i32 %828 to i64
  %830 = getelementptr inbounds float, ptr %827, i64 %829
  %831 = load float, ptr %830, align 4, !tbaa !16
  %832 = fsub float %826, %831
  %833 = load ptr, ptr %17, align 8, !tbaa !5
  %834 = load ptr, ptr %11, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = load i32, ptr %27, align 4, !tbaa !9
  %837 = add nsw i32 %835, %836
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds float, ptr %833, i64 %838
  store float %832, ptr %839, align 4, !tbaa !16
  br label %840

840:                                              ; preds = %815
  %841 = load i32, ptr %27, align 4, !tbaa !9
  %842 = add nsw i32 %841, 1
  store i32 %842, ptr %27, align 4, !tbaa !9
  br label %736, !llvm.loop !23

843:                                              ; preds = %736
  %844 = load i32, ptr %28, align 4, !tbaa !9
  %845 = icmp sgt i32 %844, 1
  br i1 %845, label %846, label %895

846:                                              ; preds = %843
  %847 = load ptr, ptr %11, align 8, !tbaa !5
  %848 = load i32, ptr %847, align 4, !tbaa !9
  %849 = load i32, ptr %28, align 4, !tbaa !9
  %850 = add nsw i32 %848, %849
  store i32 %850, ptr %22, align 4, !tbaa !9
  %851 = load ptr, ptr %11, align 8, !tbaa !5
  %852 = load i32, ptr %851, align 4, !tbaa !9
  %853 = shl i32 %852, 1
  store i32 %853, ptr %23, align 4, !tbaa !9
  %854 = load ptr, ptr %17, align 8, !tbaa !5
  %855 = getelementptr inbounds float, ptr %854, i64 1
  %856 = load i32, ptr %22, align 4, !tbaa !9
  %857 = load i32, ptr %23, align 4, !tbaa !9
  %858 = call i32 @smaxloc_(ptr noundef %855, i32 noundef %856, i32 noundef %857, ptr noundef @c__1)
  store i32 %858, ptr %30, align 4, !tbaa !9
  %859 = load i32, ptr %30, align 4, !tbaa !9
  %860 = load i32, ptr %28, align 4, !tbaa !9
  %861 = add nsw i32 %859, %860
  %862 = sub nsw i32 %861, 1
  store i32 %862, ptr %35, align 4, !tbaa !9
  %863 = load ptr, ptr %17, align 8, !tbaa !5
  %864 = load ptr, ptr %11, align 8, !tbaa !5
  %865 = load i32, ptr %864, align 4, !tbaa !9
  %866 = load i32, ptr %35, align 4, !tbaa !9
  %867 = add nsw i32 %865, %866
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds float, ptr %863, i64 %868
  %870 = load float, ptr %869, align 4, !tbaa !16
  store float %870, ptr %34, align 4, !tbaa !16
  %871 = load float, ptr %34, align 4, !tbaa !16
  %872 = load float, ptr %33, align 4, !tbaa !16
  %873 = fcmp ole float %871, %872
  br i1 %873, label %877, label %874

874:                                              ; preds = %846
  %875 = call i32 @sisnan_(ptr noundef %34)
  %876 = icmp ne i32 %875, 0
  br i1 %876, label %877, label %894

877:                                              ; preds = %874, %846
  %878 = load i32, ptr %28, align 4, !tbaa !9
  %879 = load i32, ptr %28, align 4, !tbaa !9
  %880 = load i32, ptr %19, align 4, !tbaa !9
  %881 = mul nsw i32 %879, %880
  %882 = add nsw i32 %878, %881
  store i32 %882, ptr %22, align 4, !tbaa !9
  %883 = load float, ptr %34, align 4, !tbaa !16
  %884 = load ptr, ptr %12, align 8, !tbaa !5
  %885 = load i32, ptr %22, align 4, !tbaa !9
  %886 = sext i32 %885 to i64
  %887 = getelementptr inbounds %struct.complex, ptr %884, i64 %886
  %888 = getelementptr inbounds %struct.complex, ptr %887, i32 0, i32 0
  store float %883, ptr %888, align 4, !tbaa !13
  %889 = load ptr, ptr %12, align 8, !tbaa !5
  %890 = load i32, ptr %22, align 4, !tbaa !9
  %891 = sext i32 %890 to i64
  %892 = getelementptr inbounds %struct.complex, ptr %889, i64 %891
  %893 = getelementptr inbounds %struct.complex, ptr %892, i32 0, i32 1
  store float 0.000000e+00, ptr %893, align 4, !tbaa !19
  br label %1241

894:                                              ; preds = %874
  br label %895

895:                                              ; preds = %894, %843
  %896 = load i32, ptr %28, align 4, !tbaa !9
  %897 = load i32, ptr %35, align 4, !tbaa !9
  %898 = icmp ne i32 %896, %897
  br i1 %898, label %899, label %1141

899:                                              ; preds = %895
  %900 = load i32, ptr %35, align 4, !tbaa !9
  %901 = load i32, ptr %35, align 4, !tbaa !9
  %902 = load i32, ptr %19, align 4, !tbaa !9
  %903 = mul nsw i32 %901, %902
  %904 = add nsw i32 %900, %903
  store i32 %904, ptr %22, align 4, !tbaa !9
  %905 = load i32, ptr %28, align 4, !tbaa !9
  %906 = load i32, ptr %28, align 4, !tbaa !9
  %907 = load i32, ptr %19, align 4, !tbaa !9
  %908 = mul nsw i32 %906, %907
  %909 = add nsw i32 %905, %908
  store i32 %909, ptr %23, align 4, !tbaa !9
  %910 = load ptr, ptr %12, align 8, !tbaa !5
  %911 = load i32, ptr %23, align 4, !tbaa !9
  %912 = sext i32 %911 to i64
  %913 = getelementptr inbounds %struct.complex, ptr %910, i64 %912
  %914 = getelementptr inbounds %struct.complex, ptr %913, i32 0, i32 0
  %915 = load float, ptr %914, align 4, !tbaa !13
  %916 = load ptr, ptr %12, align 8, !tbaa !5
  %917 = load i32, ptr %22, align 4, !tbaa !9
  %918 = sext i32 %917 to i64
  %919 = getelementptr inbounds %struct.complex, ptr %916, i64 %918
  %920 = getelementptr inbounds %struct.complex, ptr %919, i32 0, i32 0
  store float %915, ptr %920, align 4, !tbaa !13
  %921 = load ptr, ptr %12, align 8, !tbaa !5
  %922 = load i32, ptr %23, align 4, !tbaa !9
  %923 = sext i32 %922 to i64
  %924 = getelementptr inbounds %struct.complex, ptr %921, i64 %923
  %925 = getelementptr inbounds %struct.complex, ptr %924, i32 0, i32 1
  %926 = load float, ptr %925, align 4, !tbaa !19
  %927 = load ptr, ptr %12, align 8, !tbaa !5
  %928 = load i32, ptr %22, align 4, !tbaa !9
  %929 = sext i32 %928 to i64
  %930 = getelementptr inbounds %struct.complex, ptr %927, i64 %929
  %931 = getelementptr inbounds %struct.complex, ptr %930, i32 0, i32 1
  store float %926, ptr %931, align 4, !tbaa !19
  %932 = load i32, ptr %28, align 4, !tbaa !9
  %933 = sub nsw i32 %932, 1
  store i32 %933, ptr %22, align 4, !tbaa !9
  %934 = load ptr, ptr %12, align 8, !tbaa !5
  %935 = load i32, ptr %28, align 4, !tbaa !9
  %936 = load i32, ptr %19, align 4, !tbaa !9
  %937 = add nsw i32 %935, %936
  %938 = sext i32 %937 to i64
  %939 = getelementptr inbounds %struct.complex, ptr %934, i64 %938
  %940 = load ptr, ptr %13, align 8, !tbaa !5
  %941 = load ptr, ptr %12, align 8, !tbaa !5
  %942 = load i32, ptr %35, align 4, !tbaa !9
  %943 = load i32, ptr %19, align 4, !tbaa !9
  %944 = add nsw i32 %942, %943
  %945 = sext i32 %944 to i64
  %946 = getelementptr inbounds %struct.complex, ptr %941, i64 %945
  %947 = load ptr, ptr %13, align 8, !tbaa !5
  call void @cswap_(ptr noundef %22, ptr noundef %939, ptr noundef %940, ptr noundef %946, ptr noundef %947)
  %948 = load i32, ptr %35, align 4, !tbaa !9
  %949 = load ptr, ptr %11, align 8, !tbaa !5
  %950 = load i32, ptr %949, align 4, !tbaa !9
  %951 = icmp slt i32 %948, %950
  br i1 %951, label %952, label %975

952:                                              ; preds = %899
  %953 = load ptr, ptr %11, align 8, !tbaa !5
  %954 = load i32, ptr %953, align 4, !tbaa !9
  %955 = load i32, ptr %35, align 4, !tbaa !9
  %956 = sub nsw i32 %954, %955
  store i32 %956, ptr %22, align 4, !tbaa !9
  %957 = load ptr, ptr %12, align 8, !tbaa !5
  %958 = load i32, ptr %35, align 4, !tbaa !9
  %959 = add nsw i32 %958, 1
  %960 = load i32, ptr %28, align 4, !tbaa !9
  %961 = load i32, ptr %19, align 4, !tbaa !9
  %962 = mul nsw i32 %960, %961
  %963 = add nsw i32 %959, %962
  %964 = sext i32 %963 to i64
  %965 = getelementptr inbounds %struct.complex, ptr %957, i64 %964
  %966 = load ptr, ptr %12, align 8, !tbaa !5
  %967 = load i32, ptr %35, align 4, !tbaa !9
  %968 = add nsw i32 %967, 1
  %969 = load i32, ptr %35, align 4, !tbaa !9
  %970 = load i32, ptr %19, align 4, !tbaa !9
  %971 = mul nsw i32 %969, %970
  %972 = add nsw i32 %968, %971
  %973 = sext i32 %972 to i64
  %974 = getelementptr inbounds %struct.complex, ptr %966, i64 %973
  call void @cswap_(ptr noundef %22, ptr noundef %965, ptr noundef @c__1, ptr noundef %974, ptr noundef @c__1)
  br label %975

975:                                              ; preds = %952, %899
  %976 = load i32, ptr %35, align 4, !tbaa !9
  %977 = sub nsw i32 %976, 1
  store i32 %977, ptr %22, align 4, !tbaa !9
  %978 = load i32, ptr %28, align 4, !tbaa !9
  %979 = add nsw i32 %978, 1
  store i32 %979, ptr %27, align 4, !tbaa !9
  br label %980

980:                                              ; preds = %1063, %975
  %981 = load i32, ptr %27, align 4, !tbaa !9
  %982 = load i32, ptr %22, align 4, !tbaa !9
  %983 = icmp sle i32 %981, %982
  br i1 %983, label %984, label %1066

984:                                              ; preds = %980
  %985 = load ptr, ptr %12, align 8, !tbaa !5
  %986 = load i32, ptr %27, align 4, !tbaa !9
  %987 = load i32, ptr %28, align 4, !tbaa !9
  %988 = load i32, ptr %19, align 4, !tbaa !9
  %989 = mul nsw i32 %987, %988
  %990 = add nsw i32 %986, %989
  %991 = sext i32 %990 to i64
  %992 = getelementptr inbounds %struct.complex, ptr %985, i64 %991
  %993 = call <2 x float> @Cf(ptr noundef %992)
  store <2 x float> %993, ptr %42, align 4
  %994 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 0
  %995 = load float, ptr %994, align 4
  %996 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 1
  %997 = load float, ptr %996, align 4
  %998 = fneg float %997
  %999 = call ptr @_pCf(ptr noundef %25)
  %1000 = getelementptr inbounds { float, float }, ptr %999, i32 0, i32 0
  %1001 = getelementptr inbounds { float, float }, ptr %999, i32 0, i32 1
  store float %995, ptr %1000, align 4
  store float %998, ptr %1001, align 4
  %1002 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  %1003 = load float, ptr %1002, align 4, !tbaa !13
  %1004 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 0
  store float %1003, ptr %1004, align 4, !tbaa !13
  %1005 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  %1006 = load float, ptr %1005, align 4, !tbaa !19
  %1007 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 1
  store float %1006, ptr %1007, align 4, !tbaa !19
  %1008 = load i32, ptr %27, align 4, !tbaa !9
  %1009 = load i32, ptr %28, align 4, !tbaa !9
  %1010 = load i32, ptr %19, align 4, !tbaa !9
  %1011 = mul nsw i32 %1009, %1010
  %1012 = add nsw i32 %1008, %1011
  store i32 %1012, ptr %23, align 4, !tbaa !9
  %1013 = load ptr, ptr %12, align 8, !tbaa !5
  %1014 = load i32, ptr %35, align 4, !tbaa !9
  %1015 = load i32, ptr %27, align 4, !tbaa !9
  %1016 = load i32, ptr %19, align 4, !tbaa !9
  %1017 = mul nsw i32 %1015, %1016
  %1018 = add nsw i32 %1014, %1017
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds %struct.complex, ptr %1013, i64 %1019
  %1021 = call <2 x float> @Cf(ptr noundef %1020)
  store <2 x float> %1021, ptr %43, align 4
  %1022 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 0
  %1023 = load float, ptr %1022, align 4
  %1024 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 1
  %1025 = load float, ptr %1024, align 4
  %1026 = fneg float %1025
  %1027 = call ptr @_pCf(ptr noundef %25)
  %1028 = getelementptr inbounds { float, float }, ptr %1027, i32 0, i32 0
  %1029 = getelementptr inbounds { float, float }, ptr %1027, i32 0, i32 1
  store float %1023, ptr %1028, align 4
  store float %1026, ptr %1029, align 4
  %1030 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  %1031 = load float, ptr %1030, align 4, !tbaa !13
  %1032 = load ptr, ptr %12, align 8, !tbaa !5
  %1033 = load i32, ptr %23, align 4, !tbaa !9
  %1034 = sext i32 %1033 to i64
  %1035 = getelementptr inbounds %struct.complex, ptr %1032, i64 %1034
  %1036 = getelementptr inbounds %struct.complex, ptr %1035, i32 0, i32 0
  store float %1031, ptr %1036, align 4, !tbaa !13
  %1037 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  %1038 = load float, ptr %1037, align 4, !tbaa !19
  %1039 = load ptr, ptr %12, align 8, !tbaa !5
  %1040 = load i32, ptr %23, align 4, !tbaa !9
  %1041 = sext i32 %1040 to i64
  %1042 = getelementptr inbounds %struct.complex, ptr %1039, i64 %1041
  %1043 = getelementptr inbounds %struct.complex, ptr %1042, i32 0, i32 1
  store float %1038, ptr %1043, align 4, !tbaa !19
  %1044 = load i32, ptr %35, align 4, !tbaa !9
  %1045 = load i32, ptr %27, 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 %23, align 4, !tbaa !9
  %1049 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 0
  %1050 = load float, ptr %1049, align 4, !tbaa !13
  %1051 = load ptr, ptr %12, align 8, !tbaa !5
  %1052 = load i32, ptr %23, align 4, !tbaa !9
  %1053 = sext i32 %1052 to i64
  %1054 = getelementptr inbounds %struct.complex, ptr %1051, i64 %1053
  %1055 = getelementptr inbounds %struct.complex, ptr %1054, i32 0, i32 0
  store float %1050, ptr %1055, align 4, !tbaa !13
  %1056 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 1
  %1057 = load float, ptr %1056, align 4, !tbaa !19
  %1058 = load ptr, ptr %12, align 8, !tbaa !5
  %1059 = load i32, ptr %23, align 4, !tbaa !9
  %1060 = sext i32 %1059 to i64
  %1061 = getelementptr inbounds %struct.complex, ptr %1058, i64 %1060
  %1062 = getelementptr inbounds %struct.complex, ptr %1061, i32 0, i32 1
  store float %1057, ptr %1062, align 4, !tbaa !19
  br label %1063

1063:                                             ; preds = %984
  %1064 = load i32, ptr %27, align 4, !tbaa !9
  %1065 = add nsw i32 %1064, 1
  store i32 %1065, ptr %27, align 4, !tbaa !9
  br label %980, !llvm.loop !24

1066:                                             ; preds = %980
  %1067 = load i32, ptr %35, align 4, !tbaa !9
  %1068 = load i32, ptr %28, align 4, !tbaa !9
  %1069 = load i32, ptr %19, align 4, !tbaa !9
  %1070 = mul nsw i32 %1068, %1069
  %1071 = add nsw i32 %1067, %1070
  store i32 %1071, ptr %22, align 4, !tbaa !9
  %1072 = load ptr, ptr %12, align 8, !tbaa !5
  %1073 = load i32, ptr %35, align 4, !tbaa !9
  %1074 = load i32, ptr %28, align 4, !tbaa !9
  %1075 = load i32, ptr %19, align 4, !tbaa !9
  %1076 = mul nsw i32 %1074, %1075
  %1077 = add nsw i32 %1073, %1076
  %1078 = sext i32 %1077 to i64
  %1079 = getelementptr inbounds %struct.complex, ptr %1072, i64 %1078
  %1080 = call <2 x float> @Cf(ptr noundef %1079)
  store <2 x float> %1080, ptr %44, align 4
  %1081 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 0
  %1082 = load float, ptr %1081, align 4
  %1083 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 1
  %1084 = load float, ptr %1083, align 4
  %1085 = fneg float %1084
  %1086 = call ptr @_pCf(ptr noundef %25)
  %1087 = getelementptr inbounds { float, float }, ptr %1086, i32 0, i32 0
  %1088 = getelementptr inbounds { float, float }, ptr %1086, i32 0, i32 1
  store float %1082, ptr %1087, align 4
  store float %1085, ptr %1088, align 4
  %1089 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  %1090 = load float, ptr %1089, align 4, !tbaa !13
  %1091 = load ptr, ptr %12, align 8, !tbaa !5
  %1092 = load i32, ptr %22, align 4, !tbaa !9
  %1093 = sext i32 %1092 to i64
  %1094 = getelementptr inbounds %struct.complex, ptr %1091, i64 %1093
  %1095 = getelementptr inbounds %struct.complex, ptr %1094, i32 0, i32 0
  store float %1090, ptr %1095, align 4, !tbaa !13
  %1096 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  %1097 = load float, ptr %1096, align 4, !tbaa !19
  %1098 = load ptr, ptr %12, align 8, !tbaa !5
  %1099 = load i32, ptr %22, align 4, !tbaa !9
  %1100 = sext i32 %1099 to i64
  %1101 = getelementptr inbounds %struct.complex, ptr %1098, i64 %1100
  %1102 = getelementptr inbounds %struct.complex, ptr %1101, i32 0, i32 1
  store float %1097, ptr %1102, align 4, !tbaa !19
  %1103 = load ptr, ptr %17, align 8, !tbaa !5
  %1104 = load i32, ptr %28, align 4, !tbaa !9
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds float, ptr %1103, i64 %1105
  %1107 = load float, ptr %1106, align 4, !tbaa !16
  store float %1107, ptr %31, align 4, !tbaa !16
  %1108 = load ptr, ptr %17, align 8, !tbaa !5
  %1109 = load i32, ptr %35, align 4, !tbaa !9
  %1110 = sext i32 %1109 to i64
  %1111 = getelementptr inbounds float, ptr %1108, i64 %1110
  %1112 = load float, ptr %1111, align 4, !tbaa !16
  %1113 = load ptr, ptr %17, align 8, !tbaa !5
  %1114 = load i32, ptr %28, align 4, !tbaa !9
  %1115 = sext i32 %1114 to i64
  %1116 = getelementptr inbounds float, ptr %1113, i64 %1115
  store float %1112, ptr %1116, align 4, !tbaa !16
  %1117 = load float, ptr %31, align 4, !tbaa !16
  %1118 = load ptr, ptr %17, align 8, !tbaa !5
  %1119 = load i32, ptr %35, align 4, !tbaa !9
  %1120 = sext i32 %1119 to i64
  %1121 = getelementptr inbounds float, ptr %1118, i64 %1120
  store float %1117, ptr %1121, align 4, !tbaa !16
  %1122 = load ptr, ptr %14, align 8, !tbaa !5
  %1123 = load i32, ptr %35, align 4, !tbaa !9
  %1124 = sext i32 %1123 to i64
  %1125 = getelementptr inbounds i32, ptr %1122, i64 %1124
  %1126 = load i32, ptr %1125, align 4, !tbaa !9
  store i32 %1126, ptr %30, align 4, !tbaa !9
  %1127 = load ptr, ptr %14, align 8, !tbaa !5
  %1128 = load i32, ptr %28, align 4, !tbaa !9
  %1129 = sext i32 %1128 to i64
  %1130 = getelementptr inbounds i32, ptr %1127, i64 %1129
  %1131 = load i32, ptr %1130, align 4, !tbaa !9
  %1132 = load ptr, ptr %14, align 8, !tbaa !5
  %1133 = load i32, ptr %35, align 4, !tbaa !9
  %1134 = sext i32 %1133 to i64
  %1135 = getelementptr inbounds i32, ptr %1132, i64 %1134
  store i32 %1131, ptr %1135, align 4, !tbaa !9
  %1136 = load i32, ptr %30, align 4, !tbaa !9
  %1137 = load ptr, ptr %14, align 8, !tbaa !5
  %1138 = load i32, ptr %28, align 4, !tbaa !9
  %1139 = sext i32 %1138 to i64
  %1140 = getelementptr inbounds i32, ptr %1137, i64 %1139
  store i32 %1136, ptr %1140, align 4, !tbaa !9
  br label %1141

1141:                                             ; preds = %1066, %895
  %1142 = load float, ptr %34, align 4, !tbaa !16
  %1143 = fpext float %1142 to double
  %1144 = call double @sqrt(double noundef %1143) #8
  %1145 = fptrunc double %1144 to float
  store float %1145, ptr %34, align 4, !tbaa !16
  %1146 = load i32, ptr %28, align 4, !tbaa !9
  %1147 = load i32, ptr %28, align 4, !tbaa !9
  %1148 = load i32, ptr %19, align 4, !tbaa !9
  %1149 = mul nsw i32 %1147, %1148
  %1150 = add nsw i32 %1146, %1149
  store i32 %1150, ptr %22, align 4, !tbaa !9
  %1151 = load float, ptr %34, align 4, !tbaa !16
  %1152 = load ptr, ptr %12, align 8, !tbaa !5
  %1153 = load i32, ptr %22, align 4, !tbaa !9
  %1154 = sext i32 %1153 to i64
  %1155 = getelementptr inbounds %struct.complex, ptr %1152, i64 %1154
  %1156 = getelementptr inbounds %struct.complex, ptr %1155, i32 0, i32 0
  store float %1151, ptr %1156, align 4, !tbaa !13
  %1157 = load ptr, ptr %12, align 8, !tbaa !5
  %1158 = load i32, ptr %22, align 4, !tbaa !9
  %1159 = sext i32 %1158 to i64
  %1160 = getelementptr inbounds %struct.complex, ptr %1157, i64 %1159
  %1161 = getelementptr inbounds %struct.complex, ptr %1160, i32 0, i32 1
  store float 0.000000e+00, ptr %1161, align 4, !tbaa !19
  %1162 = load i32, ptr %28, align 4, !tbaa !9
  %1163 = load ptr, ptr %11, align 8, !tbaa !5
  %1164 = load i32, ptr %1163, align 4, !tbaa !9
  %1165 = icmp slt i32 %1162, %1164
  br i1 %1165, label %1166, label %1232

1166:                                             ; preds = %1141
  %1167 = load i32, ptr %28, align 4, !tbaa !9
  %1168 = sub nsw i32 %1167, 1
  store i32 %1168, ptr %22, align 4, !tbaa !9
  %1169 = load ptr, ptr %12, align 8, !tbaa !5
  %1170 = load i32, ptr %28, align 4, !tbaa !9
  %1171 = load i32, ptr %19, align 4, !tbaa !9
  %1172 = add nsw i32 %1170, %1171
  %1173 = sext i32 %1172 to i64
  %1174 = getelementptr inbounds %struct.complex, ptr %1169, i64 %1173
  %1175 = load ptr, ptr %13, align 8, !tbaa !5
  call void @clacgv_(ptr noundef %22, ptr noundef %1174, ptr noundef %1175)
  %1176 = load ptr, ptr %11, align 8, !tbaa !5
  %1177 = load i32, ptr %1176, align 4, !tbaa !9
  %1178 = load i32, ptr %28, align 4, !tbaa !9
  %1179 = sub nsw i32 %1177, %1178
  store i32 %1179, ptr %22, align 4, !tbaa !9
  %1180 = load i32, ptr %28, align 4, !tbaa !9
  %1181 = sub nsw i32 %1180, 1
  store i32 %1181, ptr %23, align 4, !tbaa !9
  %1182 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 0
  store float -1.000000e+00, ptr %1182, align 4, !tbaa !13
  %1183 = getelementptr inbounds %struct.complex, ptr %25, i32 0, i32 1
  store float 0.000000e+00, ptr %1183, align 4, !tbaa !19
  %1184 = load ptr, ptr %12, align 8, !tbaa !5
  %1185 = load i32, ptr %28, align 4, !tbaa !9
  %1186 = add nsw i32 %1185, 1
  %1187 = load i32, ptr %19, align 4, !tbaa !9
  %1188 = add nsw i32 %1186, %1187
  %1189 = sext i32 %1188 to i64
  %1190 = getelementptr inbounds %struct.complex, ptr %1184, i64 %1189
  %1191 = load ptr, ptr %13, align 8, !tbaa !5
  %1192 = load ptr, ptr %12, align 8, !tbaa !5
  %1193 = load i32, ptr %28, align 4, !tbaa !9
  %1194 = load i32, ptr %19, align 4, !tbaa !9
  %1195 = add nsw i32 %1193, %1194
  %1196 = sext i32 %1195 to i64
  %1197 = getelementptr inbounds %struct.complex, ptr %1192, i64 %1196
  %1198 = load ptr, ptr %13, align 8, !tbaa !5
  %1199 = load ptr, ptr %12, align 8, !tbaa !5
  %1200 = load i32, ptr %28, align 4, !tbaa !9
  %1201 = add nsw i32 %1200, 1
  %1202 = load i32, ptr %28, align 4, !tbaa !9
  %1203 = load i32, ptr %19, align 4, !tbaa !9
  %1204 = mul nsw i32 %1202, %1203
  %1205 = add nsw i32 %1201, %1204
  %1206 = sext i32 %1205 to i64
  %1207 = getelementptr inbounds %struct.complex, ptr %1199, i64 %1206
  call void @cgemv_(ptr noundef @.str.5, ptr noundef %22, ptr noundef %23, ptr noundef %25, ptr noundef %1190, ptr noundef %1191, ptr noundef %1197, ptr noundef %1198, ptr noundef @c_b1, ptr noundef %1207, ptr noundef @c__1)
  %1208 = load i32, ptr %28, align 4, !tbaa !9
  %1209 = sub nsw i32 %1208, 1
  store i32 %1209, ptr %22, align 4, !tbaa !9
  %1210 = load ptr, ptr %12, align 8, !tbaa !5
  %1211 = load i32, ptr %28, align 4, !tbaa !9
  %1212 = load i32, ptr %19, align 4, !tbaa !9
  %1213 = add nsw i32 %1211, %1212
  %1214 = sext i32 %1213 to i64
  %1215 = getelementptr inbounds %struct.complex, ptr %1210, i64 %1214
  %1216 = load ptr, ptr %13, align 8, !tbaa !5
  call void @clacgv_(ptr noundef %22, ptr noundef %1215, ptr noundef %1216)
  %1217 = load ptr, ptr %11, align 8, !tbaa !5
  %1218 = load i32, ptr %1217, align 4, !tbaa !9
  %1219 = load i32, ptr %28, align 4, !tbaa !9
  %1220 = sub nsw i32 %1218, %1219
  store i32 %1220, ptr %22, align 4, !tbaa !9
  %1221 = load float, ptr %34, align 4, !tbaa !16
  %1222 = fdiv float 1.000000e+00, %1221
  store float %1222, ptr %24, align 4, !tbaa !16
  %1223 = load ptr, ptr %12, align 8, !tbaa !5
  %1224 = load i32, ptr %28, align 4, !tbaa !9
  %1225 = add nsw i32 %1224, 1
  %1226 = load i32, ptr %28, align 4, !tbaa !9
  %1227 = load i32, ptr %19, align 4, !tbaa !9
  %1228 = mul nsw i32 %1226, %1227
  %1229 = add nsw i32 %1225, %1228
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds %struct.complex, ptr %1223, i64 %1230
  call void @csscal_(ptr noundef %22, ptr noundef %24, ptr noundef %1231, ptr noundef @c__1)
  br label %1232

1232:                                             ; preds = %1166, %1141
  br label %1233

1233:                                             ; preds = %1232
  %1234 = load i32, ptr %28, align 4, !tbaa !9
  %1235 = add nsw i32 %1234, 1
  store i32 %1235, ptr %28, align 4, !tbaa !9
  br label %728, !llvm.loop !25

1236:                                             ; preds = %728
  br label %1237

1237:                                             ; preds = %1236, %724
  %1238 = load ptr, ptr %11, align 8, !tbaa !5
  %1239 = load i32, ptr %1238, align 4, !tbaa !9
  %1240 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 %1239, ptr %1240, align 4, !tbaa !9
  br label %1246

1241:                                             ; preds = %877, %360
  %1242 = load i32, ptr %28, align 4, !tbaa !9
  %1243 = sub nsw i32 %1242, 1
  %1244 = load ptr, ptr %15, align 8, !tbaa !5
  store i32 %1243, ptr %1244, align 4, !tbaa !9
  %1245 = load ptr, ptr %18, align 8, !tbaa !5
  store i32 1, ptr %1245, align 4, !tbaa !9
  br label %1246

1246:                                             ; preds = %1241, %1237, %172
  store i32 1, ptr %36, align 4
  br label %1247

1247:                                             ; preds = %1246, %106, %97
  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 4, 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 8, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  call void @llvm.lifetime.end.p0(i64 8, 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

; 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

; 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}


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

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

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

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

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

31:                                               ; preds = %28
  %.pr = load i32, ptr %8, align 4, !tbaa !5
  %.not412 = icmp eq i32 %.pr, 0
  br i1 %.not412, label %35, label %.thread

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

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

35:                                               ; preds = %31
  %36 = icmp eq i32 %26, 0
  br i1 %36, label %465, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %35
  %37 = add nuw i32 %26, 1
  %wide.trip.count = zext i32 %37 to i64
  %38 = zext nneg i32 %26 to i64
  %min.iters.check = icmp ult i32 %26, 8
  br i1 %min.iters.check, label %.lr.ph.preheader615, label %vector.ph

vector.ph:                                        ; preds = %.lr.ph.preheader
  %n.vec = and i64 %38, 2147483640
  %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>
  %39 = getelementptr i32, ptr %4, i64 %index
  %40 = getelementptr inbounds i8, ptr %39, i64 16
  store <4 x i32> %vec.ind, ptr %39, align 4, !tbaa !5
  store <4 x i32> %step.add, ptr %40, 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>
  %41 = icmp eq i64 %index.next, %n.vec
  br i1 %41, label %middle.block, label %vector.body, !llvm.loop !9

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

.lr.ph.preheader615:                              ; 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.preheader615, %.lr.ph
  %indvars.iv = phi i64 [ %indvars.iv.next, %.lr.ph ], [ %indvars.iv.ph, %.lr.ph.preheader615 ]
  %42 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv
  %43 = trunc nuw nsw i64 %indvars.iv to i32
  store i32 %43, ptr %42, 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
  %.not414434 = icmp slt i32 %.pre, 1
  %.pre532 = add i32 %19, 1
  br i1 %.not414434, label %._crit_edge438, label %.lr.ph437

.lr.ph437:                                        ; preds = %._crit_edge
  %44 = zext nneg i32 %.pre to i64
  %xtraiter = and i64 %44, 3
  %45 = icmp ult i32 %.pre, 4
  br i1 %45, label %._crit_edge438.loopexit.unr-lcssa, label %.lr.ph437.new

.lr.ph437.new:                                    ; preds = %.lr.ph437
  %unroll_iter = and i64 %44, 2147483644
  br label %46

46:                                               ; preds = %46, %.lr.ph437.new
  %indvars.iv491 = phi i64 [ 1, %.lr.ph437.new ], [ %indvars.iv.next492.3, %46 ]
  %niter = phi i64 [ 0, %.lr.ph437.new ], [ %niter.next.3, %46 ]
  %47 = trunc nuw nsw i64 %indvars.iv491 to i32
  %48 = mul i32 %.pre532, %47
  %49 = sext i32 %48 to i64
  %50 = getelementptr inbounds %struct.complex, ptr %21, i64 %49
  %51 = load float, ptr %50, align 4, !tbaa !14
  %52 = getelementptr inbounds float, ptr %17, i64 %indvars.iv491
  store float %51, ptr %52, align 4, !tbaa !17
  %53 = trunc i64 %indvars.iv491 to i32
  %54 = add i32 %53, 1
  %55 = mul i32 %.pre532, %54
  %56 = sext i32 %55 to i64
  %57 = getelementptr inbounds %struct.complex, ptr %21, i64 %56
  %58 = load float, ptr %57, align 4, !tbaa !14
  %59 = getelementptr float, ptr %7, i64 %indvars.iv491
  store float %58, ptr %59, align 4, !tbaa !17
  %indvars.iv.next492.1 = add nuw nsw i64 %indvars.iv491, 2
  %60 = trunc nuw nsw i64 %indvars.iv.next492.1 to i32
  %61 = mul i32 %.pre532, %60
  %62 = sext i32 %61 to i64
  %63 = getelementptr inbounds %struct.complex, ptr %21, i64 %62
  %64 = load float, ptr %63, align 4, !tbaa !14
  %65 = getelementptr inbounds float, ptr %17, i64 %indvars.iv.next492.1
  store float %64, ptr %65, align 4, !tbaa !17
  %indvars.iv.next492.2 = add nuw nsw i64 %indvars.iv491, 3
  %66 = trunc nuw nsw i64 %indvars.iv.next492.2 to i32
  %67 = mul i32 %.pre532, %66
  %68 = sext i32 %67 to i64
  %69 = getelementptr inbounds %struct.complex, ptr %21, i64 %68
  %70 = load float, ptr %69, align 4, !tbaa !14
  %71 = getelementptr inbounds float, ptr %17, i64 %indvars.iv.next492.2
  store float %70, ptr %71, align 4, !tbaa !17
  %indvars.iv.next492.3 = add nuw nsw i64 %indvars.iv491, 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_edge438.loopexit.unr-lcssa, label %46, !llvm.loop !18

._crit_edge438.loopexit.unr-lcssa:                ; preds = %46, %.lr.ph437
  %indvars.iv491.unr = phi i64 [ 1, %.lr.ph437 ], [ %indvars.iv.next492.3, %46 ]
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %._crit_edge438, label %.epil.preheader

.epil.preheader:                                  ; preds = %._crit_edge438.loopexit.unr-lcssa, %.epil.preheader
  %indvars.iv491.epil = phi i64 [ %indvars.iv.next492.epil, %.epil.preheader ], [ %indvars.iv491.unr, %._crit_edge438.loopexit.unr-lcssa ]
  %epil.iter = phi i64 [ %epil.iter.next, %.epil.preheader ], [ 0, %._crit_edge438.loopexit.unr-lcssa ]
  %72 = trunc nuw nsw i64 %indvars.iv491.epil to i32
  %73 = mul i32 %.pre532, %72
  %74 = sext i32 %73 to i64
  %75 = getelementptr inbounds %struct.complex, ptr %21, i64 %74
  %76 = load float, ptr %75, align 4, !tbaa !14
  %77 = getelementptr inbounds float, ptr %17, i64 %indvars.iv491.epil
  store float %76, ptr %77, align 4, !tbaa !17
  %indvars.iv.next492.epil = add nuw nsw i64 %indvars.iv491.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_edge438, label %.epil.preheader, !llvm.loop !19

._crit_edge438:                                   ; preds = %._crit_edge438.loopexit.unr-lcssa, %.epil.preheader, %._crit_edge
  %78 = load i32, ptr @c__1, align 4, !tbaa !5
  %79 = tail call i32 @smaxloc_(ptr noundef %7, i32 noundef %78, i32 noundef %.pre, ptr noundef nonnull @c__1)
  %80 = mul i32 %79, %.pre532
  %81 = sext i32 %80 to i64
  %82 = getelementptr inbounds %struct.complex, ptr %21, i64 %81
  %83 = load float, ptr %82, align 4, !tbaa !14
  store float %83, ptr %16, align 4, !tbaa !17
  %84 = fcmp ugt float %83, 0.000000e+00
  br i1 %84, label %85, label %87

85:                                               ; preds = %._crit_edge438
  %86 = call i32 @sisnan_(ptr noundef nonnull %16) #8
  %.not415 = icmp eq i32 %86, 0
  br i1 %.not415, label %88, label %87

87:                                               ; preds = %85, %._crit_edge438
  store i32 0, ptr %5, align 4, !tbaa !5
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %465

88:                                               ; preds = %85
  %89 = load float, ptr %6, align 4, !tbaa !17
  %90 = fcmp olt float %89, 0.000000e+00
  br i1 %90, label %91, label %98

91:                                               ; preds = %88
  %92 = load i32, ptr %1, align 4, !tbaa !5
  %93 = sitofp i32 %92 to float
  %94 = call float @slamch_(ptr noundef nonnull @.str.3) #8
  %95 = fmul float %94, %93
  %96 = load float, ptr %16, align 4, !tbaa !17
  %97 = fmul float %95, %96
  br label %98

98:                                               ; preds = %88, %91
  %.0404 = phi float [ %97, %91 ], [ %89, %88 ]
  %99 = load i32, ptr %1, align 4, !tbaa !5
  %.not416439 = icmp slt i32 %99, 1
  br i1 %.not416439, label %.loopexit, label %._crit_edge443.thread

._crit_edge443.thread:                            ; preds = %98
  %100 = zext nneg i32 %99 to i64
  %101 = shl nuw nsw i64 %100, 2
  call void @llvm.memset.p0.i64(ptr align 4 %7, i8 0, i64 %101, i1 false), !tbaa !17
  %.pre535554 = add i32 %19, 1
  br i1 %.not, label %.lr.ph483, label %.lr.ph466

.lr.ph466:                                        ; preds = %._crit_edge443.thread
  %invariant.gep556 = getelementptr i8, ptr %21, i64 8
  %102 = getelementptr inbounds i8, ptr %15, i64 4
  %103 = sext i32 %19 to i64
  %104 = add i32 %19, 1
  %105 = zext nneg i32 %99 to i64
  %invariant.gep634 = getelementptr i8, ptr %21, i64 -8
  br label %106

106:                                              ; preds = %.lr.ph466, %279
  %indvars.iv499 = phi i64 [ 1, %.lr.ph466 ], [ %indvars.iv.next500.pre-phi, %279 ]
  %.0400462 = phi i32 [ %79, %.lr.ph466 ], [ %.1401, %279 ]
  %indvars510 = trunc i64 %indvars.iv499 to i32
  %107 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %107, ptr %11, align 4, !tbaa !5
  %108 = sext i32 %107 to i64
  %.not423444 = icmp sgt i64 %indvars.iv499, %108
  br i1 %.not423444, label %._crit_edge448, label %.lr.ph447

.lr.ph447:                                        ; preds = %106
  %109 = icmp ugt i64 %indvars.iv499, 1
  br i1 %109, label %.lr.ph447.split.us.preheader, label %.lr.ph447.split

.lr.ph447.split.us.preheader:                     ; preds = %.lr.ph447
  %gep635 = getelementptr %struct.complex, ptr %invariant.gep634, i64 %indvars.iv499
  br label %.lr.ph447.split.us

.lr.ph447.split.us:                               ; preds = %.lr.ph447.split.us.preheader, %.lr.ph447.split.us
  %indvars.iv504 = phi i64 [ %indvars.iv.next505, %.lr.ph447.split.us ], [ %indvars.iv499, %.lr.ph447.split.us.preheader ]
  %110 = mul nsw i64 %indvars.iv504, %103
  %111 = getelementptr %struct.complex, ptr %gep635, i64 %110
  %112 = call <2 x float> @Cf(ptr noundef %111)
  %.sroa.07.0.vec.extract.us = extractelement <2 x float> %112, i64 0
  %.sroa.07.4.vec.extract.us = extractelement <2 x float> %112, i64 1
  %113 = fneg float %.sroa.07.4.vec.extract.us
  %114 = call ptr @_pCf(ptr noundef nonnull %15)
  %115 = getelementptr inbounds i8, ptr %114, i64 4
  store float %.sroa.07.0.vec.extract.us, ptr %114, align 4
  store float %113, ptr %115, align 4
  %116 = load float, ptr %15, align 4, !tbaa !14
  %117 = load float, ptr %102, align 4, !tbaa !21
  %118 = fneg float %117
  %119 = load <2 x float>, ptr %111, align 4, !tbaa !17
  %120 = insertelement <2 x float> poison, float %117, i64 0
  %121 = insertelement <2 x float> %120, float %118, i64 1
  %122 = fmul <2 x float> %119, %121
  %123 = shufflevector <2 x float> %122, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %124 = insertelement <2 x float> poison, float %116, i64 0
  %125 = shufflevector <2 x float> %124, <2 x float> poison, <2 x i32> zeroinitializer
  %126 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %125, <2 x float> %119, <2 x float> %123)
  store <2 x float> %126, ptr %14, align 8, !tbaa !17
  %127 = getelementptr inbounds float, ptr %17, i64 %indvars.iv504
  %128 = load float, ptr %127, align 4, !tbaa !17
  %129 = extractelement <2 x float> %126, i64 0
  %130 = fadd float %129, %128
  store float %130, ptr %127, align 4, !tbaa !17
  %131 = trunc nuw nsw i64 %indvars.iv504 to i32
  %132 = mul i32 %.pre532, %131
  store i32 %132, ptr %12, align 4, !tbaa !5
  %133 = sext i32 %132 to i64
  %134 = getelementptr inbounds %struct.complex, ptr %21, i64 %133
  %135 = load float, ptr %134, align 4, !tbaa !14
  %136 = fsub float %135, %130
  %137 = load i32, ptr %1, align 4, !tbaa !5
  %138 = sext i32 %137 to i64
  %139 = getelementptr float, ptr %17, i64 %indvars.iv504
  %140 = getelementptr float, ptr %139, i64 %138
  store float %136, ptr %140, align 4, !tbaa !17
  %indvars.iv.next505 = add nuw nsw i64 %indvars.iv504, 1
  %141 = load i32, ptr %11, align 4, !tbaa !5
  %142 = sext i32 %141 to i64
  %.not423.us.not = icmp slt i64 %indvars.iv504, %142
  br i1 %.not423.us.not, label %.lr.ph447.split.us, label %._crit_edge448, !llvm.loop !22

.lr.ph447.split:                                  ; preds = %.lr.ph447
  %invariant.gep = getelementptr float, ptr %17, i64 %108
  %143 = add i64 %indvars.iv499, %108
  %144 = and i64 %143, 1
  %lcmp.mod617.not.not = icmp eq i64 %144, 0
  br i1 %lcmp.mod617.not.not, label %.prol.loopexit.unr-lcssa, label %.prol.loopexit

.prol.loopexit.unr-lcssa:                         ; preds = %.lr.ph447.split
  %145 = trunc nuw nsw i64 %indvars.iv499 to i32
  %146 = mul nuw i32 %.pre532, %145
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds %struct.complex, ptr %21, i64 %147
  %149 = load float, ptr %148, align 4, !tbaa !14
  %150 = getelementptr inbounds float, ptr %17, i64 %indvars.iv499
  %151 = load float, ptr %150, align 4, !tbaa !17
  %152 = fsub float %149, %151
  %gep573.prol = getelementptr float, ptr %invariant.gep, i64 %indvars.iv499
  store float %152, ptr %gep573.prol, align 4, !tbaa !17
  %indvars.iv.next502.prol = add nuw nsw i64 %indvars.iv499, 1
  br label %.prol.loopexit

.prol.loopexit:                                   ; preds = %.prol.loopexit.unr-lcssa, %.lr.ph447.split
  %indvars.iv501.unr = phi i64 [ %indvars.iv499, %.lr.ph447.split ], [ %indvars.iv.next502.prol, %.prol.loopexit.unr-lcssa ]
  %.lcssa609.unr = phi i32 [ poison, %.lr.ph447.split ], [ %146, %.prol.loopexit.unr-lcssa ]
  %153 = icmp eq i64 %indvars.iv499, %108
  br i1 %153, label %._crit_edge448.split, label %.lr.ph447.split.new

.lr.ph447.split.new:                              ; preds = %.prol.loopexit, %.lr.ph447.split.new
  %indvars.iv501 = phi i64 [ %indvars.iv.next502.1, %.lr.ph447.split.new ], [ %indvars.iv501.unr, %.prol.loopexit ]
  %154 = trunc nuw nsw i64 %indvars.iv501 to i32
  %155 = mul i32 %.pre532, %154
  %156 = sext i32 %155 to i64
  %157 = getelementptr inbounds %struct.complex, ptr %21, i64 %156
  %158 = load float, ptr %157, align 4, !tbaa !14
  %159 = getelementptr inbounds float, ptr %17, i64 %indvars.iv501
  %160 = load float, ptr %159, align 4, !tbaa !17
  %161 = fsub float %158, %160
  %gep573 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv501
  store float %161, ptr %gep573, align 4, !tbaa !17
  %indvars.iv.next502 = add nuw nsw i64 %indvars.iv501, 1
  %162 = trunc nuw nsw i64 %indvars.iv.next502 to i32
  %163 = mul i32 %.pre532, %162
  %164 = sext i32 %163 to i64
  %165 = getelementptr inbounds %struct.complex, ptr %21, i64 %164
  %166 = load float, ptr %165, align 4, !tbaa !14
  %167 = getelementptr float, ptr %7, i64 %indvars.iv501
  %168 = load float, ptr %167, align 4, !tbaa !17
  %169 = fsub float %166, %168
  %gep573.1 = getelementptr float, ptr %invariant.gep, i64 %indvars.iv.next502
  store float %169, ptr %gep573.1, align 4, !tbaa !17
  %indvars.iv.next502.1 = add nuw nsw i64 %indvars.iv501, 2
  %.not423.not.1 = icmp slt i64 %indvars.iv.next502, %108
  br i1 %.not423.not.1, label %.lr.ph447.split.new, label %._crit_edge448.split, !llvm.loop !22

._crit_edge448.split:                             ; preds = %.lr.ph447.split.new, %.prol.loopexit
  %.lcssa609 = phi i32 [ %.lcssa609.unr, %.prol.loopexit ], [ %163, %.lr.ph447.split.new ]
  store i32 %.lcssa609, ptr %12, align 4, !tbaa !5
  br label %._crit_edge448

._crit_edge448:                                   ; preds = %.lr.ph447.split.us, %._crit_edge448.split, %106
  %170 = phi i32 [ %107, %._crit_edge448.split ], [ %107, %106 ], [ %137, %.lr.ph447.split.us ]
  %171 = icmp ugt i64 %indvars.iv499, 1
  br i1 %171, label %172, label %187

172:                                              ; preds = %._crit_edge448
  %173 = add nsw i32 %170, %indvars510
  store i32 %173, ptr %11, align 4, !tbaa !5
  %174 = shl i32 %170, 1
  store i32 %174, ptr %12, align 4, !tbaa !5
  %175 = call i32 @smaxloc_(ptr noundef %7, i32 noundef %173, i32 noundef %174, ptr noundef nonnull @c__1)
  %176 = trunc i64 %indvars.iv499 to i32
  %177 = add i32 %176, -1
  %178 = add i32 %177, %175
  %179 = load i32, ptr %1, align 4, !tbaa !5
  %180 = add nsw i32 %179, %178
  %181 = sext i32 %180 to i64
  %182 = getelementptr inbounds float, ptr %17, i64 %181
  %183 = load float, ptr %182, align 4, !tbaa !17
  store float %183, ptr %16, align 4, !tbaa !17
  %184 = fcmp ugt float %183, %.0404
  br i1 %184, label %185, label %split

185:                                              ; preds = %172
  %186 = call i32 @sisnan_(ptr noundef nonnull %16) #8
  %.not424 = icmp eq i32 %186, 0
  br i1 %.not424, label %187, label %._crit_edge523

._crit_edge523:                                   ; preds = %185
  %.pre524 = load float, ptr %16, align 4, !tbaa !17
  br label %split

187:                                              ; preds = %185, %._crit_edge448
  %.1401 = phi i32 [ %178, %185 ], [ %.0400462, %._crit_edge448 ]
  %188 = zext i32 %.1401 to i64
  %.not425 = icmp eq i64 %indvars.iv499, %188
  br i1 %.not425, label %._crit_edge529, label %189

._crit_edge529:                                   ; preds = %187
  %.pre544 = mul nsw i64 %indvars.iv499, %103
  %.pre548 = mul i32 %.pre535554, %indvars510
  %.pre550 = sext i32 %.pre548 to i64
  br label %259

189:                                              ; preds = %187
  %190 = mul nsw i32 %.1401, %19
  %191 = add nsw i32 %190, %.1401
  %192 = mul nsw i64 %indvars.iv499, %103
  %193 = mul i32 %104, %indvars510
  store i32 %193, ptr %12, align 4, !tbaa !5
  %194 = sext i32 %193 to i64
  %195 = getelementptr inbounds %struct.complex, ptr %21, i64 %194
  %196 = sext i32 %191 to i64
  %197 = getelementptr inbounds %struct.complex, ptr %21, i64 %196
  %198 = load <2 x float>, ptr %195, align 4, !tbaa !17
  store <2 x float> %198, ptr %197, align 4, !tbaa !17
  %199 = trunc i64 %indvars.iv499 to i32
  %200 = add i32 %199, -1
  store i32 %200, ptr %11, align 4, !tbaa !5
  %gep = getelementptr %struct.complex, ptr %invariant.gep556, i64 %192
  %201 = sext i32 %190 to i64
  %gep456 = getelementptr %struct.complex, ptr %invariant.gep556, i64 %201
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef %gep456, ptr noundef nonnull @c__1) #8
  %202 = load i32, ptr %1, align 4, !tbaa !5
  %203 = icmp slt i32 %.1401, %202
  br i1 %203, label %204, label %214

204:                                              ; preds = %189
  %205 = sub nsw i32 %202, %.1401
  store i32 %205, ptr %11, align 4, !tbaa !5
  %206 = add nsw i32 %.1401, 1
  %207 = mul nsw i32 %206, %19
  %208 = sext i32 %207 to i64
  %209 = getelementptr %struct.complex, ptr %21, i64 %indvars.iv499
  %210 = getelementptr %struct.complex, ptr %209, i64 %208
  %211 = add nsw i32 %207, %.1401
  %212 = sext i32 %211 to i64
  %213 = getelementptr inbounds %struct.complex, ptr %21, i64 %212
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %210, ptr noundef nonnull %3, ptr noundef %213, ptr noundef nonnull %3) #8
  br label %214

214:                                              ; preds = %204, %189
  %215 = add nsw i32 %.1401, -1
  store i32 %215, ptr %11, align 4, !tbaa !5
  %216 = sext i32 %215 to i64
  %.not426.not450 = icmp slt i64 %indvars.iv499, %216
  br i1 %.not426.not450, label %.lr.ph453, label %._crit_edge454

.lr.ph453:                                        ; preds = %214, %.lr.ph453
  %indvars.iv507 = phi i64 [ %indvars.iv.next508, %.lr.ph453 ], [ %indvars.iv499, %214 ]
  %indvars.iv.next508 = add nuw nsw i64 %indvars.iv507, 1
  %217 = mul nsw i64 %indvars.iv.next508, %103
  %218 = add nsw i64 %217, %indvars.iv499
  %219 = getelementptr inbounds %struct.complex, ptr %21, i64 %218
  %220 = call <2 x float> @Cf(ptr noundef %219)
  %.sroa.06.0.vec.extract = extractelement <2 x float> %220, i64 0
  %.sroa.06.4.vec.extract = extractelement <2 x float> %220, i64 1
  %221 = fneg float %.sroa.06.4.vec.extract
  %222 = call ptr @_pCf(ptr noundef nonnull %14)
  %223 = getelementptr inbounds i8, ptr %222, i64 4
  store float %.sroa.06.0.vec.extract, ptr %222, align 4
  store float %221, ptr %223, align 4
  %224 = trunc nsw i64 %218 to i32
  store i32 %224, ptr %12, align 4, !tbaa !5
  %225 = add nsw i64 %indvars.iv.next508, %201
  %226 = getelementptr inbounds %struct.complex, ptr %21, i64 %225
  %227 = trunc nsw i64 %225 to i32
  %228 = load <2 x float>, ptr %14, align 8, !tbaa !17
  %229 = call <2 x float> @Cf(ptr noundef %226)
  %.sroa.05.0.vec.extract = extractelement <2 x float> %229, i64 0
  %.sroa.05.4.vec.extract = extractelement <2 x float> %229, i64 1
  %230 = fneg float %.sroa.05.4.vec.extract
  %231 = call ptr @_pCf(ptr noundef nonnull %14)
  %232 = getelementptr inbounds i8, ptr %231, i64 4
  store float %.sroa.05.0.vec.extract, ptr %231, align 4
  store float %230, ptr %232, align 4
  %233 = load i32, ptr %12, align 4, !tbaa !5
  %234 = sext i32 %233 to i64
  %235 = getelementptr inbounds %struct.complex, ptr %21, i64 %234
  %236 = load <2 x float>, ptr %14, align 8, !tbaa !17
  store <2 x float> %236, ptr %235, align 4, !tbaa !17
  store i32 %227, ptr %12, align 4, !tbaa !5
  store <2 x float> %228, ptr %226, align 4, !tbaa !17
  %237 = load i32, ptr %11, align 4, !tbaa !5
  %238 = sext i32 %237 to i64
  %.not426.not = icmp slt i64 %indvars.iv.next508, %238
  br i1 %.not426.not, label %.lr.ph453, label %._crit_edge454, !llvm.loop !23

._crit_edge454:                                   ; preds = %.lr.ph453, %214
  %239 = add nsw i32 %190, %indvars510
  store i32 %239, ptr %11, align 4, !tbaa !5
  %240 = sext i32 %239 to i64
  %241 = getelementptr inbounds %struct.complex, ptr %21, i64 %240
  %242 = call <2 x float> @Cf(ptr noundef %241)
  %.sroa.04.0.vec.extract = extractelement <2 x float> %242, i64 0
  %.sroa.04.4.vec.extract = extractelement <2 x float> %242, i64 1
  %243 = fneg float %.sroa.04.4.vec.extract
  %244 = call ptr @_pCf(ptr noundef nonnull %14)
  %245 = getelementptr inbounds i8, ptr %244, i64 4
  store float %.sroa.04.0.vec.extract, ptr %244, align 4
  store float %243, ptr %245, align 4
  %246 = load i32, ptr %11, align 4, !tbaa !5
  %247 = sext i32 %246 to i64
  %248 = getelementptr inbounds %struct.complex, ptr %21, i64 %247
  %249 = load <2 x float>, ptr %14, align 8, !tbaa !17
  store <2 x float> %249, ptr %248, align 4, !tbaa !17
  %250 = getelementptr inbounds float, ptr %17, i64 %indvars.iv499
  %251 = load float, ptr %250, align 4, !tbaa !17
  %252 = sext i32 %.1401 to i64
  %253 = getelementptr inbounds float, ptr %17, i64 %252
  %254 = load float, ptr %253, align 4, !tbaa !17
  store float %254, ptr %250, align 4, !tbaa !17
  store float %251, ptr %253, align 4, !tbaa !17
  %255 = getelementptr inbounds i32, ptr %18, i64 %252
  %256 = load i32, ptr %255, align 4, !tbaa !5
  %257 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv499
  %258 = load i32, ptr %257, align 4, !tbaa !5
  store i32 %258, ptr %255, align 4, !tbaa !5
  store i32 %256, ptr %257, align 4, !tbaa !5
  br label %259

259:                                              ; preds = %._crit_edge529, %._crit_edge454
  %.pre-phi551 = phi i64 [ %.pre550, %._crit_edge529 ], [ %194, %._crit_edge454 ]
  %.pre-phi549 = phi i32 [ %.pre548, %._crit_edge529 ], [ %193, %._crit_edge454 ]
  %.pre-phi545 = phi i64 [ %.pre544, %._crit_edge529 ], [ %192, %._crit_edge454 ]
  %260 = load float, ptr %16, align 4, !tbaa !17
  %sqrtf427 = call float @sqrtf(float noundef %260) #9
  store float %sqrtf427, ptr %16, align 4, !tbaa !17
  store i32 %.pre-phi549, ptr %11, align 4, !tbaa !5
  %261 = getelementptr inbounds %struct.complex, ptr %21, i64 %.pre-phi551
  store float %sqrtf427, ptr %261, align 4, !tbaa !14
  %262 = getelementptr inbounds %struct.complex, ptr %21, i64 %.pre-phi551, i32 1
  store float 0.000000e+00, ptr %262, align 4, !tbaa !21
  %263 = load i32, ptr %1, align 4, !tbaa !5
  %264 = sext i32 %263 to i64
  %265 = icmp slt i64 %indvars.iv499, %264
  br i1 %265, label %266, label %._crit_edge528

._crit_edge528:                                   ; preds = %259
  %.pre552 = add nuw nsw i64 %indvars.iv499, 1
  br label %279

266:                                              ; preds = %259
  %267 = trunc i64 %indvars.iv499 to i32
  %268 = add i32 %267, -1
  store i32 %268, ptr %11, align 4, !tbaa !5
  %gep458 = getelementptr %struct.complex, ptr %invariant.gep556, i64 %.pre-phi545
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %gep458, ptr noundef nonnull @c__1) #8
  store i32 %268, ptr %11, align 4, !tbaa !5
  %269 = load i32, ptr %1, align 4, !tbaa !5
  %270 = sub nsw i32 %269, %indvars510
  store i32 %270, ptr %12, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %14, align 8, !tbaa !17
  %271 = add nuw nsw i64 %indvars.iv499, 1
  %272 = mul nsw i64 %271, %103
  %gep460 = getelementptr %struct.complex, ptr %invariant.gep556, i64 %272
  %273 = getelementptr %struct.complex, ptr %21, i64 %272
  %274 = getelementptr %struct.complex, ptr %273, i64 %indvars.iv499
  call void @cgemv_(ptr noundef nonnull @.str.4, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep460, ptr noundef nonnull %3, ptr noundef %gep458, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef %274, ptr noundef nonnull %3) #8
  store i32 %268, ptr %11, align 4, !tbaa !5
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %gep458, ptr noundef nonnull @c__1) #8
  %275 = load i32, ptr %1, align 4, !tbaa !5
  %276 = sub nsw i32 %275, %indvars510
  store i32 %276, ptr %11, align 4, !tbaa !5
  %277 = load float, ptr %16, align 4, !tbaa !17
  %278 = fdiv float 1.000000e+00, %277
  store float %278, ptr %13, align 4, !tbaa !17
  call void @csscal_(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %274, ptr noundef nonnull %3) #8
  br label %279

279:                                              ; preds = %._crit_edge528, %266
  %indvars.iv.next500.pre-phi = phi i64 [ %.pre552, %._crit_edge528 ], [ %271, %266 ]
  %.not422.not = icmp slt i64 %indvars.iv499, %105
  br i1 %.not422.not, label %106, label %.loopexit, !llvm.loop !24

.lr.ph483:                                        ; preds = %._crit_edge443.thread
  %280 = getelementptr inbounds i8, ptr %15, i64 4
  %281 = sext i32 %19 to i64
  %282 = add i32 %19, 1
  %invariant.gep576 = getelementptr %struct.complex, ptr %21, i64 %281
  %invariant.gep578 = getelementptr %struct.complex, ptr %21, i64 %281
  %invariant.gep580 = getelementptr %struct.complex, ptr %21, i64 %281
  %283 = zext nneg i32 %99 to i64
  br label %284

284:                                              ; preds = %.lr.ph483, %458
  %indvars.iv511 = phi i64 [ 1, %.lr.ph483 ], [ %indvars.iv.next512.pre-phi, %458 ]
  %.2402479 = phi i32 [ %79, %.lr.ph483 ], [ %.3403, %458 ]
  %indvars522 = trunc i64 %indvars.iv511 to i32
  %285 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %285, ptr %11, align 4, !tbaa !5
  %286 = sext i32 %285 to i64
  %.not418467 = icmp sgt i64 %indvars.iv511, %286
  br i1 %.not418467, label %._crit_edge471, label %.lr.ph470

.lr.ph470:                                        ; preds = %284
  %287 = icmp ugt i64 %indvars.iv511, 1
  %288 = add nsw i64 %indvars.iv511, -1
  %289 = mul nsw i64 %288, %281
  br i1 %287, label %.lr.ph470.split.us.preheader, label %.lr.ph470.split

.lr.ph470.split.us.preheader:                     ; preds = %.lr.ph470
  %invariant.gep636 = getelementptr %struct.complex, ptr %21, i64 %289
  br label %.lr.ph470.split.us

.lr.ph470.split.us:                               ; preds = %.lr.ph470.split.us.preheader, %.lr.ph470.split.us
  %indvars.iv516 = phi i64 [ %indvars.iv.next517, %.lr.ph470.split.us ], [ %indvars.iv511, %.lr.ph470.split.us.preheader ]
  %gep637 = getelementptr %struct.complex, ptr %invariant.gep636, i64 %indvars.iv516
  %290 = call <2 x float> @Cf(ptr noundef %gep637)
  %.sroa.03.0.vec.extract.us = extractelement <2 x float> %290, i64 0
  %.sroa.03.4.vec.extract.us = extractelement <2 x float> %290, i64 1
  %291 = fneg float %.sroa.03.4.vec.extract.us
  %292 = call ptr @_pCf(ptr noundef nonnull %15)
  %293 = getelementptr inbounds i8, ptr %292, i64 4
  store float %.sroa.03.0.vec.extract.us, ptr %292, align 4
  store float %291, ptr %293, align 4
  %294 = load float, ptr %15, align 4, !tbaa !14
  %295 = load float, ptr %280, align 4, !tbaa !21
  %296 = fneg float %295
  %297 = load <2 x float>, ptr %gep637, align 4, !tbaa !17
  %298 = insertelement <2 x float> poison, float %295, i64 0
  %299 = insertelement <2 x float> %298, float %296, i64 1
  %300 = fmul <2 x float> %297, %299
  %301 = shufflevector <2 x float> %300, <2 x float> poison, <2 x i32> <i32 1, i32 0>
  %302 = insertelement <2 x float> poison, float %294, i64 0
  %303 = shufflevector <2 x float> %302, <2 x float> poison, <2 x i32> zeroinitializer
  %304 = call <2 x float> @llvm.fmuladd.v2f32(<2 x float> %303, <2 x float> %297, <2 x float> %301)
  store <2 x float> %304, ptr %14, align 8, !tbaa !17
  %305 = getelementptr inbounds float, ptr %17, i64 %indvars.iv516
  %306 = load float, ptr %305, align 4, !tbaa !17
  %307 = extractelement <2 x float> %304, i64 0
  %308 = fadd float %307, %306
  store float %308, ptr %305, align 4, !tbaa !17
  %309 = trunc nuw nsw i64 %indvars.iv516 to i32
  %310 = mul i32 %.pre532, %309
  store i32 %310, ptr %12, align 4, !tbaa !5
  %311 = sext i32 %310 to i64
  %312 = getelementptr inbounds %struct.complex, ptr %21, i64 %311
  %313 = load float, ptr %312, align 4, !tbaa !14
  %314 = fsub float %313, %308
  %315 = load i32, ptr %1, align 4, !tbaa !5
  %316 = sext i32 %315 to i64
  %317 = getelementptr float, ptr %17, i64 %indvars.iv516
  %318 = getelementptr float, ptr %317, i64 %316
  store float %314, ptr %318, align 4, !tbaa !17
  %indvars.iv.next517 = add nuw nsw i64 %indvars.iv516, 1
  %319 = load i32, ptr %11, align 4, !tbaa !5
  %320 = sext i32 %319 to i64
  %.not418.us.not = icmp slt i64 %indvars.iv516, %320
  br i1 %.not418.us.not, label %.lr.ph470.split.us, label %._crit_edge471, !llvm.loop !25

.lr.ph470.split:                                  ; preds = %.lr.ph470
  %invariant.gep574 = getelementptr float, ptr %17, i64 %286
  %321 = add i64 %indvars.iv511, %286
  %322 = and i64 %321, 1
  %lcmp.mod621.not.not = icmp eq i64 %322, 0
  br i1 %lcmp.mod621.not.not, label %.prol.loopexit619.unr-lcssa, label %.prol.loopexit619

.prol.loopexit619.unr-lcssa:                      ; preds = %.lr.ph470.split
  %323 = trunc nuw nsw i64 %indvars.iv511 to i32
  %324 = mul nuw i32 %.pre532, %323
  %325 = sext i32 %324 to i64
  %326 = getelementptr inbounds %struct.complex, ptr %21, i64 %325
  %327 = load float, ptr %326, align 4, !tbaa !14
  %328 = getelementptr inbounds float, ptr %17, i64 %indvars.iv511
  %329 = load float, ptr %328, align 4, !tbaa !17
  %330 = fsub float %327, %329
  %gep575.prol = getelementptr float, ptr %invariant.gep574, i64 %indvars.iv511
  store float %330, ptr %gep575.prol, align 4, !tbaa !17
  %indvars.iv.next514.prol = add nuw nsw i64 %indvars.iv511, 1
  br label %.prol.loopexit619

.prol.loopexit619:                                ; preds = %.prol.loopexit619.unr-lcssa, %.lr.ph470.split
  %indvars.iv513.unr = phi i64 [ %indvars.iv511, %.lr.ph470.split ], [ %indvars.iv.next514.prol, %.prol.loopexit619.unr-lcssa ]
  %.lcssa.unr = phi i32 [ poison, %.lr.ph470.split ], [ %324, %.prol.loopexit619.unr-lcssa ]
  %331 = icmp eq i64 %indvars.iv511, %286
  br i1 %331, label %._crit_edge471.split, label %.lr.ph470.split.new

.lr.ph470.split.new:                              ; preds = %.prol.loopexit619, %.lr.ph470.split.new
  %indvars.iv513 = phi i64 [ %indvars.iv.next514.1, %.lr.ph470.split.new ], [ %indvars.iv513.unr, %.prol.loopexit619 ]
  %332 = trunc nuw nsw i64 %indvars.iv513 to i32
  %333 = mul i32 %.pre532, %332
  %334 = sext i32 %333 to i64
  %335 = getelementptr inbounds %struct.complex, ptr %21, i64 %334
  %336 = load float, ptr %335, align 4, !tbaa !14
  %337 = getelementptr inbounds float, ptr %17, i64 %indvars.iv513
  %338 = load float, ptr %337, align 4, !tbaa !17
  %339 = fsub float %336, %338
  %gep575 = getelementptr float, ptr %invariant.gep574, i64 %indvars.iv513
  store float %339, ptr %gep575, align 4, !tbaa !17
  %indvars.iv.next514 = add nuw nsw i64 %indvars.iv513, 1
  %340 = trunc nuw nsw i64 %indvars.iv.next514 to i32
  %341 = mul i32 %.pre532, %340
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds %struct.complex, ptr %21, i64 %342
  %344 = load float, ptr %343, align 4, !tbaa !14
  %345 = getelementptr float, ptr %7, i64 %indvars.iv513
  %346 = load float, ptr %345, align 4, !tbaa !17
  %347 = fsub float %344, %346
  %gep575.1 = getelementptr float, ptr %invariant.gep574, i64 %indvars.iv.next514
  store float %347, ptr %gep575.1, align 4, !tbaa !17
  %indvars.iv.next514.1 = add nuw nsw i64 %indvars.iv513, 2
  %.not418.not.1 = icmp slt i64 %indvars.iv.next514, %286
  br i1 %.not418.not.1, label %.lr.ph470.split.new, label %._crit_edge471.split, !llvm.loop !25

._crit_edge471.split:                             ; preds = %.lr.ph470.split.new, %.prol.loopexit619
  %.lcssa = phi i32 [ %.lcssa.unr, %.prol.loopexit619 ], [ %341, %.lr.ph470.split.new ]
  store i32 %.lcssa, ptr %12, align 4, !tbaa !5
  br label %._crit_edge471

._crit_edge471:                                   ; preds = %.lr.ph470.split.us, %._crit_edge471.split, %284
  %348 = phi i32 [ %285, %._crit_edge471.split ], [ %285, %284 ], [ %315, %.lr.ph470.split.us ]
  %349 = icmp ugt i64 %indvars.iv511, 1
  br i1 %349, label %350, label %365

350:                                              ; preds = %._crit_edge471
  %351 = add nsw i32 %348, %indvars522
  store i32 %351, ptr %11, align 4, !tbaa !5
  %352 = shl i32 %348, 1
  store i32 %352, ptr %12, align 4, !tbaa !5
  %353 = call i32 @smaxloc_(ptr noundef %7, i32 noundef %351, i32 noundef %352, ptr noundef nonnull @c__1)
  %354 = trunc i64 %indvars.iv511 to i32
  %355 = add i32 %354, -1
  %356 = add i32 %355, %353
  %357 = load i32, ptr %1, align 4, !tbaa !5
  %358 = add nsw i32 %357, %356
  %359 = sext i32 %358 to i64
  %360 = getelementptr inbounds float, ptr %17, i64 %359
  %361 = load float, ptr %360, align 4, !tbaa !17
  store float %361, ptr %16, align 4, !tbaa !17
  %362 = fcmp ugt float %361, %.0404
  br i1 %362, label %363, label %split

363:                                              ; preds = %350
  %364 = call i32 @sisnan_(ptr noundef nonnull %16) #8
  %.not419 = icmp eq i32 %364, 0
  br i1 %.not419, label %365, label %._crit_edge525

._crit_edge525:                                   ; preds = %363
  %.pre527 = load float, ptr %16, align 4, !tbaa !17
  br label %split

365:                                              ; preds = %363, %._crit_edge471
  %.3403 = phi i32 [ %356, %363 ], [ %.2402479, %._crit_edge471 ]
  %366 = zext i32 %.3403 to i64
  %.not420 = icmp eq i64 %indvars.iv511, %366
  br i1 %.not420, label %._crit_edge531, label %367

._crit_edge531:                                   ; preds = %365
  %.pre533 = mul nsw i64 %indvars.iv511, %281
  %.pre537 = mul i32 %.pre535554, %indvars522
  %.pre539 = sext i32 %.pre537 to i64
  br label %439

367:                                              ; preds = %365
  %368 = mul nsw i32 %.3403, %19
  %369 = add nsw i32 %368, %.3403
  %370 = mul nsw i64 %indvars.iv511, %281
  %371 = mul i32 %282, %indvars522
  store i32 %371, ptr %12, align 4, !tbaa !5
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.complex, ptr %21, i64 %372
  %374 = sext i32 %369 to i64
  %375 = getelementptr inbounds %struct.complex, ptr %21, i64 %374
  %376 = load <2 x float>, ptr %373, align 4, !tbaa !17
  store <2 x float> %376, ptr %375, align 4, !tbaa !17
  %377 = trunc i64 %indvars.iv511 to i32
  %378 = add i32 %377, -1
  store i32 %378, ptr %11, align 4, !tbaa !5
  %gep577 = getelementptr %struct.complex, ptr %invariant.gep576, i64 %indvars.iv511
  %379 = add nsw i32 %.3403, %19
  %380 = sext i32 %379 to i64
  %381 = getelementptr inbounds %struct.complex, ptr %21, i64 %380
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %gep577, ptr noundef nonnull %3, ptr noundef %381, ptr noundef nonnull %3) #8
  %382 = load i32, ptr %1, align 4, !tbaa !5
  %383 = icmp slt i32 %.3403, %382
  br i1 %383, label %384, label %393

384:                                              ; preds = %367
  %385 = sub nsw i32 %382, %.3403
  store i32 %385, ptr %11, align 4, !tbaa !5
  %386 = add nsw i32 %.3403, 1
  %387 = sext i32 %386 to i64
  %388 = getelementptr %struct.complex, ptr %21, i64 %370
  %389 = getelementptr %struct.complex, ptr %388, i64 %387
  %390 = add nsw i32 %386, %368
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds %struct.complex, ptr %21, i64 %391
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %389, ptr noundef nonnull @c__1, ptr noundef %392, ptr noundef nonnull @c__1) #8
  br label %393

393:                                              ; preds = %384, %367
  %394 = add nsw i32 %.3403, -1
  store i32 %394, ptr %11, align 4, !tbaa !5
  %395 = sext i32 %394 to i64
  %.not421.not473 = icmp slt i64 %indvars.iv511, %395
  %396 = sext i32 %.3403 to i64
  br i1 %.not421.not473, label %.lr.ph476, label %._crit_edge477

.lr.ph476:                                        ; preds = %393, %.lr.ph476
  %indvars.iv519 = phi i64 [ %indvars.iv.next520, %.lr.ph476 ], [ %indvars.iv511, %393 ]
  %indvars.iv.next520 = add nuw nsw i64 %indvars.iv519, 1
  %397 = add nsw i64 %indvars.iv.next520, %370
  %398 = getelementptr inbounds %struct.complex, ptr %21, i64 %397
  %399 = call <2 x float> @Cf(ptr noundef %398)
  %.sroa.02.0.vec.extract = extractelement <2 x float> %399, i64 0
  %.sroa.02.4.vec.extract = extractelement <2 x float> %399, i64 1
  %400 = fneg float %.sroa.02.4.vec.extract
  %401 = call ptr @_pCf(ptr noundef nonnull %14)
  %402 = getelementptr inbounds i8, ptr %401, i64 4
  store float %.sroa.02.0.vec.extract, ptr %401, align 4
  store float %400, ptr %402, align 4
  %403 = trunc nsw i64 %397 to i32
  store i32 %403, ptr %12, align 4, !tbaa !5
  %404 = mul nsw i64 %indvars.iv.next520, %281
  %405 = add nsw i64 %404, %396
  %406 = getelementptr inbounds %struct.complex, ptr %21, i64 %405
  %407 = trunc nsw i64 %405 to i32
  %408 = load <2 x float>, ptr %14, align 8, !tbaa !17
  %409 = call <2 x float> @Cf(ptr noundef %406)
  %.sroa.01.0.vec.extract = extractelement <2 x float> %409, i64 0
  %.sroa.01.4.vec.extract = extractelement <2 x float> %409, i64 1
  %410 = fneg float %.sroa.01.4.vec.extract
  %411 = call ptr @_pCf(ptr noundef nonnull %14)
  %412 = getelementptr inbounds i8, ptr %411, i64 4
  store float %.sroa.01.0.vec.extract, ptr %411, align 4
  store float %410, ptr %412, align 4
  %413 = load i32, ptr %12, align 4, !tbaa !5
  %414 = sext i32 %413 to i64
  %415 = getelementptr inbounds %struct.complex, ptr %21, i64 %414
  %416 = load <2 x float>, ptr %14, align 8, !tbaa !17
  store <2 x float> %416, ptr %415, align 4, !tbaa !17
  store i32 %407, ptr %12, align 4, !tbaa !5
  store <2 x float> %408, ptr %406, align 4, !tbaa !17
  %417 = load i32, ptr %11, align 4, !tbaa !5
  %418 = sext i32 %417 to i64
  %.not421.not = icmp slt i64 %indvars.iv.next520, %418
  br i1 %.not421.not, label %.lr.ph476, label %._crit_edge477, !llvm.loop !26

._crit_edge477:                                   ; preds = %.lr.ph476, %393
  %419 = trunc nsw i64 %370 to i32
  %420 = add nsw i32 %.3403, %419
  store i32 %420, ptr %11, align 4, !tbaa !5
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds %struct.complex, ptr %21, i64 %421
  %423 = call <2 x float> @Cf(ptr noundef %422)
  %.sroa.0.0.vec.extract = extractelement <2 x float> %423, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %423, i64 1
  %424 = fneg float %.sroa.0.4.vec.extract
  %425 = call ptr @_pCf(ptr noundef nonnull %14)
  %426 = getelementptr inbounds i8, ptr %425, i64 4
  store float %.sroa.0.0.vec.extract, ptr %425, align 4
  store float %424, ptr %426, align 4
  %427 = load i32, ptr %11, align 4, !tbaa !5
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.complex, ptr %21, i64 %428
  %430 = load <2 x float>, ptr %14, align 8, !tbaa !17
  store <2 x float> %430, ptr %429, align 4, !tbaa !17
  %431 = getelementptr inbounds float, ptr %17, i64 %indvars.iv511
  %432 = load float, ptr %431, align 4, !tbaa !17
  %433 = getelementptr inbounds float, ptr %17, i64 %396
  %434 = load float, ptr %433, align 4, !tbaa !17
  store float %434, ptr %431, align 4, !tbaa !17
  store float %432, ptr %433, align 4, !tbaa !17
  %435 = getelementptr inbounds i32, ptr %18, i64 %396
  %436 = load i32, ptr %435, align 4, !tbaa !5
  %437 = getelementptr inbounds i32, ptr %18, i64 %indvars.iv511
  %438 = load i32, ptr %437, align 4, !tbaa !5
  store i32 %438, ptr %435, align 4, !tbaa !5
  store i32 %436, ptr %437, align 4, !tbaa !5
  br label %439

439:                                              ; preds = %._crit_edge531, %._crit_edge477
  %.pre-phi540 = phi i64 [ %.pre539, %._crit_edge531 ], [ %372, %._crit_edge477 ]
  %.pre-phi538 = phi i32 [ %.pre537, %._crit_edge531 ], [ %371, %._crit_edge477 ]
  %.pre-phi534 = phi i64 [ %.pre533, %._crit_edge531 ], [ %370, %._crit_edge477 ]
  %440 = load float, ptr %16, align 4, !tbaa !17
  %sqrtf = call float @sqrtf(float noundef %440) #9
  store float %sqrtf, ptr %16, align 4, !tbaa !17
  store i32 %.pre-phi538, ptr %11, align 4, !tbaa !5
  %441 = getelementptr inbounds %struct.complex, ptr %21, i64 %.pre-phi540
  store float %sqrtf, ptr %441, align 4, !tbaa !14
  %442 = getelementptr inbounds %struct.complex, ptr %21, i64 %.pre-phi540, i32 1
  store float 0.000000e+00, ptr %442, align 4, !tbaa !21
  %443 = load i32, ptr %1, align 4, !tbaa !5
  %444 = sext i32 %443 to i64
  %445 = icmp slt i64 %indvars.iv511, %444
  br i1 %445, label %446, label %._crit_edge530

._crit_edge530:                                   ; preds = %439
  %.pre541 = add nuw nsw i64 %indvars.iv511, 1
  br label %458

446:                                              ; preds = %439
  %447 = trunc i64 %indvars.iv511 to i32
  %448 = add i32 %447, -1
  store i32 %448, ptr %11, align 4, !tbaa !5
  %gep579 = getelementptr %struct.complex, ptr %invariant.gep578, i64 %indvars.iv511
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %gep579, ptr noundef nonnull %3) #8
  %449 = load i32, ptr %1, align 4, !tbaa !5
  %450 = sub nsw i32 %449, %indvars522
  store i32 %450, ptr %11, align 4, !tbaa !5
  store i32 %448, ptr %12, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %14, align 8, !tbaa !17
  %451 = add nuw nsw i64 %indvars.iv511, 1
  %gep581 = getelementptr %struct.complex, ptr %invariant.gep580, i64 %451
  %452 = getelementptr %struct.complex, ptr %21, i64 %451
  %453 = getelementptr %struct.complex, ptr %452, i64 %.pre-phi534
  call void @cgemv_(ptr noundef nonnull @.str.5, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef nonnull %14, ptr noundef %gep581, ptr noundef nonnull %3, ptr noundef %gep579, ptr noundef nonnull %3, ptr noundef nonnull @c_b1, ptr noundef %453, ptr noundef nonnull @c__1) #8
  store i32 %448, ptr %11, align 4, !tbaa !5
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %gep579, ptr noundef nonnull %3) #8
  %454 = load i32, ptr %1, align 4, !tbaa !5
  %455 = sub nsw i32 %454, %indvars522
  store i32 %455, ptr %11, align 4, !tbaa !5
  %456 = load float, ptr %16, align 4, !tbaa !17
  %457 = fdiv float 1.000000e+00, %456
  store float %457, ptr %13, align 4, !tbaa !17
  call void @csscal_(ptr noundef nonnull %11, ptr noundef nonnull %13, ptr noundef %453, ptr noundef nonnull @c__1) #8
  br label %458

458:                                              ; preds = %._crit_edge530, %446
  %indvars.iv.next512.pre-phi = phi i64 [ %.pre541, %._crit_edge530 ], [ %451, %446 ]
  %.not417.not = icmp slt i64 %indvars.iv511, %283
  br i1 %.not417.not, label %284, label %.loopexit, !llvm.loop !27

.loopexit:                                        ; preds = %279, %458, %98
  %459 = load i32, ptr %1, align 4, !tbaa !5
  store i32 %459, ptr %5, align 4, !tbaa !5
  br label %465

split:                                            ; preds = %172, %350, %._crit_edge525, %._crit_edge523
  %indvars522565.sink = phi i32 [ %indvars510, %._crit_edge523 ], [ %indvars522, %._crit_edge525 ], [ %indvars522, %350 ], [ %indvars510, %172 ]
  %.sink584 = phi float [ %.pre524, %._crit_edge523 ], [ %.pre527, %._crit_edge525 ], [ %361, %350 ], [ %183, %172 ]
  %460 = mul i32 %.pre532, %indvars522565.sink
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds %struct.complex, ptr %21, i64 %461
  store float %.sink584, ptr %462, align 4, !tbaa !14
  %463 = getelementptr inbounds %struct.complex, ptr %21, i64 %461, i32 1
  store float 0.000000e+00, ptr %463, align 4, !tbaa !21
  %464 = add nsw i32 %indvars522565.sink, -1
  store i32 %464, ptr %5, align 4, !tbaa !5
  store i32 1, ptr %8, align 4, !tbaa !5
  br label %465

465:                                              ; preds = %87, %.loopexit, %split, %35, %.thread
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, 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

; 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

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

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}


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