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

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

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

77:                                               ; preds = %10
  br label %78

78:                                               ; preds = %785, %77
  %79 = load i32, ptr %30, align 4, !tbaa !9
  %80 = load ptr, ptr %13, align 8, !tbaa !5
  %81 = load i32, ptr %80, align 4, !tbaa !9
  %82 = load ptr, ptr %14, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !9
  %84 = icmp sle i32 %81, %83
  br i1 %84, label %85, label %88

85:                                               ; preds = %78
  %86 = load ptr, ptr %13, align 8, !tbaa !5
  %87 = load i32, ptr %86, align 4, !tbaa !9
  br label %91

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

91:                                               ; preds = %88, %85
  %92 = phi i32 [ %87, %85 ], [ %90, %88 ]
  %93 = icmp sgt i32 %79, %92
  br i1 %93, label %94, label %95

94:                                               ; preds = %91
  br label %788

95:                                               ; preds = %91
  %96 = load ptr, ptr %12, align 8, !tbaa !5
  %97 = load i32, ptr %96, align 4, !tbaa !9
  %98 = load i32, ptr %30, align 4, !tbaa !9
  %99 = add nsw i32 %97, %98
  %100 = sub nsw i32 %99, 1
  store i32 %100, ptr %31, align 4, !tbaa !9
  %101 = load i32, ptr %30, align 4, !tbaa !9
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = load i32, ptr %102, align 4, !tbaa !9
  %104 = icmp eq i32 %101, %103
  br i1 %104, label %105, label %106

105:                                              ; preds = %95
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %112

106:                                              ; preds = %95
  %107 = load ptr, ptr %13, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !9
  %109 = load i32, ptr %30, align 4, !tbaa !9
  %110 = sub nsw i32 %108, %109
  %111 = add nsw i32 %110, 1
  store i32 %111, ptr %36, align 4, !tbaa !9
  br label %112

112:                                              ; preds = %106, %105
  %113 = load i32, ptr %31, align 4, !tbaa !9
  %114 = icmp sgt i32 %113, 2
  br i1 %114, label %115, label %165

115:                                              ; preds = %112
  %116 = load i32, ptr %30, align 4, !tbaa !9
  %117 = load i32, ptr %34, align 4, !tbaa !9
  %118 = sub nsw i32 %116, %117
  store i32 %118, ptr %25, align 4, !tbaa !9
  %119 = load ptr, ptr %15, align 8, !tbaa !5
  %120 = load i32, ptr %30, align 4, !tbaa !9
  %121 = load i32, ptr %21, align 4, !tbaa !9
  %122 = mul nsw i32 %120, %121
  %123 = add nsw i32 %122, 1
  %124 = sext i32 %123 to i64
  %125 = getelementptr inbounds %struct.complex, ptr %119, i64 %124
  call void @clacgv_(ptr noundef %25, ptr noundef %125, ptr noundef @c__1)
  %126 = load i32, ptr %30, align 4, !tbaa !9
  %127 = load i32, ptr %34, align 4, !tbaa !9
  %128 = sub nsw i32 %126, %127
  store i32 %128, ptr %25, align 4, !tbaa !9
  %129 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float -1.000000e+00, ptr %129, align 4, !tbaa !11
  %130 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float 0.000000e+00, ptr %130, align 4, !tbaa !14
  %131 = load ptr, ptr %18, align 8, !tbaa !5
  %132 = load i32, ptr %30, align 4, !tbaa !9
  %133 = load i32, ptr %34, align 4, !tbaa !9
  %134 = load i32, ptr %23, align 4, !tbaa !9
  %135 = mul nsw i32 %133, %134
  %136 = add nsw i32 %132, %135
  %137 = sext i32 %136 to i64
  %138 = getelementptr inbounds %struct.complex, ptr %131, i64 %137
  %139 = load ptr, ptr %19, align 8, !tbaa !5
  %140 = load ptr, ptr %15, align 8, !tbaa !5
  %141 = load i32, ptr %30, align 4, !tbaa !9
  %142 = load i32, ptr %21, align 4, !tbaa !9
  %143 = mul nsw i32 %141, %142
  %144 = add nsw i32 %143, 1
  %145 = sext i32 %144 to i64
  %146 = getelementptr inbounds %struct.complex, ptr %140, i64 %145
  %147 = load ptr, ptr %18, align 8, !tbaa !5
  %148 = load i32, ptr %30, align 4, !tbaa !9
  %149 = load i32, ptr %30, align 4, !tbaa !9
  %150 = load i32, ptr %23, align 4, !tbaa !9
  %151 = mul nsw i32 %149, %150
  %152 = add nsw i32 %148, %151
  %153 = sext i32 %152 to i64
  %154 = getelementptr inbounds %struct.complex, ptr %147, i64 %153
  call void @cgemv_(ptr noundef @.str.1, ptr noundef %36, ptr noundef %25, ptr noundef %28, ptr noundef %138, ptr noundef %139, ptr noundef %146, ptr noundef @c__1, ptr noundef @c_b2, ptr noundef %154, ptr noundef @c__1)
  %155 = load i32, ptr %30, align 4, !tbaa !9
  %156 = load i32, ptr %34, align 4, !tbaa !9
  %157 = sub nsw i32 %155, %156
  store i32 %157, ptr %25, align 4, !tbaa !9
  %158 = load ptr, ptr %15, align 8, !tbaa !5
  %159 = load i32, ptr %30, align 4, !tbaa !9
  %160 = load i32, ptr %21, align 4, !tbaa !9
  %161 = mul nsw i32 %159, %160
  %162 = add nsw i32 %161, 1
  %163 = sext i32 %162 to i64
  %164 = getelementptr inbounds %struct.complex, ptr %158, i64 %163
  call void @clacgv_(ptr noundef %25, ptr noundef %164, ptr noundef @c__1)
  br label %165

165:                                              ; preds = %115, %112
  %166 = load ptr, ptr %18, align 8, !tbaa !5
  %167 = load i32, ptr %30, align 4, !tbaa !9
  %168 = load i32, ptr %30, align 4, !tbaa !9
  %169 = load i32, ptr %23, align 4, !tbaa !9
  %170 = mul nsw i32 %168, %169
  %171 = add nsw i32 %167, %170
  %172 = sext i32 %171 to i64
  %173 = getelementptr inbounds %struct.complex, ptr %166, i64 %172
  %174 = load ptr, ptr %20, align 8, !tbaa !5
  %175 = getelementptr inbounds %struct.complex, ptr %174, i64 1
  call void @ccopy_(ptr noundef %36, ptr noundef %173, ptr noundef @c__1, ptr noundef %175, ptr noundef @c__1)
  %176 = load i32, ptr %30, align 4, !tbaa !9
  %177 = load i32, ptr %34, align 4, !tbaa !9
  %178 = icmp sgt i32 %176, %177
  br i1 %178, label %179, label %224

179:                                              ; preds = %165
  %180 = load ptr, ptr %15, align 8, !tbaa !5
  %181 = load i32, ptr %31, align 4, !tbaa !9
  %182 = sub nsw i32 %181, 1
  %183 = load i32, ptr %30, align 4, !tbaa !9
  %184 = load i32, ptr %21, align 4, !tbaa !9
  %185 = mul nsw i32 %183, %184
  %186 = add nsw i32 %182, %185
  %187 = sext i32 %186 to i64
  %188 = getelementptr inbounds %struct.complex, ptr %180, i64 %187
  %189 = call <2 x float> @Cf(ptr noundef %188)
  store <2 x float> %189, ptr %38, align 4
  %190 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 0
  %191 = load float, ptr %190, align 4
  %192 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 1
  %193 = load float, ptr %192, align 4
  %194 = fneg float %193
  %195 = call ptr @_pCf(ptr noundef %29)
  %196 = getelementptr inbounds { float, float }, ptr %195, i32 0, i32 0
  %197 = getelementptr inbounds { float, float }, ptr %195, i32 0, i32 1
  store float %191, ptr %196, align 4
  store float %194, ptr %197, align 4
  %198 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 0
  %199 = load float, ptr %198, align 4, !tbaa !11
  %200 = fneg float %199
  %201 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %200, ptr %201, align 4, !tbaa !11
  %202 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 1
  %203 = load float, ptr %202, align 4, !tbaa !14
  %204 = fneg float %203
  %205 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %204, ptr %205, align 4, !tbaa !14
  %206 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %207 = load float, ptr %206, align 4, !tbaa !11
  %208 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %207, ptr %208, align 4, !tbaa !11
  %209 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %210 = load float, ptr %209, align 4, !tbaa !14
  %211 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %210, ptr %211, align 4, !tbaa !14
  %212 = load ptr, ptr %15, align 8, !tbaa !5
  %213 = load i32, ptr %31, align 4, !tbaa !9
  %214 = sub nsw i32 %213, 2
  %215 = load i32, ptr %30, align 4, !tbaa !9
  %216 = load i32, ptr %21, align 4, !tbaa !9
  %217 = mul nsw i32 %215, %216
  %218 = add nsw i32 %214, %217
  %219 = sext i32 %218 to i64
  %220 = getelementptr inbounds %struct.complex, ptr %212, i64 %219
  %221 = load ptr, ptr %16, align 8, !tbaa !5
  %222 = load ptr, ptr %20, align 8, !tbaa !5
  %223 = getelementptr inbounds %struct.complex, ptr %222, i64 1
  call void @caxpy_(ptr noundef %36, ptr noundef %32, ptr noundef %220, ptr noundef %221, ptr noundef %223, ptr noundef @c__1)
  br label %224

224:                                              ; preds = %179, %165
  %225 = load i32, ptr %31, align 4, !tbaa !9
  %226 = load i32, ptr %30, align 4, !tbaa !9
  %227 = load i32, ptr %21, align 4, !tbaa !9
  %228 = mul nsw i32 %226, %227
  %229 = add nsw i32 %225, %228
  store i32 %229, ptr %25, align 4, !tbaa !9
  %230 = load ptr, ptr %20, align 8, !tbaa !5
  %231 = getelementptr inbounds %struct.complex, ptr %230, i64 1
  %232 = getelementptr inbounds %struct.complex, ptr %231, i32 0, i32 0
  %233 = load float, ptr %232, align 4, !tbaa !11
  store float %233, ptr %27, align 4, !tbaa !15
  %234 = load float, ptr %27, align 4, !tbaa !15
  %235 = load ptr, ptr %15, align 8, !tbaa !5
  %236 = load i32, ptr %25, align 4, !tbaa !9
  %237 = sext i32 %236 to i64
  %238 = getelementptr inbounds %struct.complex, ptr %235, i64 %237
  %239 = getelementptr inbounds %struct.complex, ptr %238, i32 0, i32 0
  store float %234, ptr %239, align 4, !tbaa !11
  %240 = load ptr, ptr %15, align 8, !tbaa !5
  %241 = load i32, ptr %25, align 4, !tbaa !9
  %242 = sext i32 %241 to i64
  %243 = getelementptr inbounds %struct.complex, ptr %240, i64 %242
  %244 = getelementptr inbounds %struct.complex, ptr %243, i32 0, i32 1
  store float 0.000000e+00, ptr %244, align 4, !tbaa !14
  %245 = load i32, ptr %30, align 4, !tbaa !9
  %246 = load ptr, ptr %13, align 8, !tbaa !5
  %247 = load i32, ptr %246, align 4, !tbaa !9
  %248 = icmp slt i32 %245, %247
  br i1 %248, label %249, label %785

249:                                              ; preds = %224
  %250 = load i32, ptr %31, align 4, !tbaa !9
  %251 = icmp sgt i32 %250, 1
  br i1 %251, label %252, label %297

252:                                              ; preds = %249
  %253 = load i32, ptr %31, align 4, !tbaa !9
  %254 = load i32, ptr %30, align 4, !tbaa !9
  %255 = load i32, ptr %21, align 4, !tbaa !9
  %256 = mul nsw i32 %254, %255
  %257 = add nsw i32 %253, %256
  store i32 %257, ptr %25, align 4, !tbaa !9
  %258 = load ptr, ptr %15, align 8, !tbaa !5
  %259 = load i32, ptr %25, align 4, !tbaa !9
  %260 = sext i32 %259 to i64
  %261 = getelementptr inbounds %struct.complex, ptr %258, i64 %260
  %262 = getelementptr inbounds %struct.complex, ptr %261, i32 0, i32 0
  %263 = load float, ptr %262, align 4, !tbaa !11
  %264 = fneg float %263
  %265 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %264, ptr %265, align 4, !tbaa !11
  %266 = load ptr, ptr %15, align 8, !tbaa !5
  %267 = load i32, ptr %25, align 4, !tbaa !9
  %268 = sext i32 %267 to i64
  %269 = getelementptr inbounds %struct.complex, ptr %266, i64 %268
  %270 = getelementptr inbounds %struct.complex, ptr %269, i32 0, i32 1
  %271 = load float, ptr %270, align 4, !tbaa !14
  %272 = fneg float %271
  %273 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %272, ptr %273, align 4, !tbaa !14
  %274 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %275 = load float, ptr %274, align 4, !tbaa !11
  %276 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %275, ptr %276, align 4, !tbaa !11
  %277 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %278 = load float, ptr %277, align 4, !tbaa !14
  %279 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %278, ptr %279, align 4, !tbaa !14
  %280 = load ptr, ptr %13, align 8, !tbaa !5
  %281 = load i32, ptr %280, align 4, !tbaa !9
  %282 = load i32, ptr %30, align 4, !tbaa !9
  %283 = sub nsw i32 %281, %282
  store i32 %283, ptr %25, align 4, !tbaa !9
  %284 = load ptr, ptr %15, align 8, !tbaa !5
  %285 = load i32, ptr %31, align 4, !tbaa !9
  %286 = sub nsw i32 %285, 1
  %287 = load i32, ptr %30, align 4, !tbaa !9
  %288 = add nsw i32 %287, 1
  %289 = load i32, ptr %21, align 4, !tbaa !9
  %290 = mul nsw i32 %288, %289
  %291 = add nsw i32 %286, %290
  %292 = sext i32 %291 to i64
  %293 = getelementptr inbounds %struct.complex, ptr %284, i64 %292
  %294 = load ptr, ptr %16, align 8, !tbaa !5
  %295 = load ptr, ptr %20, align 8, !tbaa !5
  %296 = getelementptr inbounds %struct.complex, ptr %295, i64 2
  call void @caxpy_(ptr noundef %25, ptr noundef %32, ptr noundef %293, ptr noundef %294, ptr noundef %296, ptr noundef @c__1)
  br label %297

297:                                              ; preds = %252, %249
  %298 = load ptr, ptr %13, align 8, !tbaa !5
  %299 = load i32, ptr %298, align 4, !tbaa !9
  %300 = load i32, ptr %30, align 4, !tbaa !9
  %301 = sub nsw i32 %299, %300
  store i32 %301, ptr %25, align 4, !tbaa !9
  %302 = load ptr, ptr %20, align 8, !tbaa !5
  %303 = getelementptr inbounds %struct.complex, ptr %302, i64 2
  %304 = call i32 @icamax_(ptr noundef %25, ptr noundef %303, ptr noundef @c__1)
  %305 = add nsw i32 %304, 1
  store i32 %305, ptr %35, align 4, !tbaa !9
  %306 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %306, ptr %25, align 4, !tbaa !9
  %307 = load ptr, ptr %20, align 8, !tbaa !5
  %308 = load i32, ptr %25, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds %struct.complex, ptr %307, i64 %309
  %311 = getelementptr inbounds %struct.complex, ptr %310, i32 0, i32 0
  %312 = load float, ptr %311, align 4, !tbaa !11
  %313 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %312, ptr %313, align 4, !tbaa !11
  %314 = load ptr, ptr %20, align 8, !tbaa !5
  %315 = load i32, ptr %25, align 4, !tbaa !9
  %316 = sext i32 %315 to i64
  %317 = getelementptr inbounds %struct.complex, ptr %314, i64 %316
  %318 = getelementptr inbounds %struct.complex, ptr %317, i32 0, i32 1
  %319 = load float, ptr %318, align 4, !tbaa !14
  %320 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %319, ptr %320, align 4, !tbaa !14
  %321 = load i32, ptr %35, align 4, !tbaa !9
  %322 = icmp ne i32 %321, 2
  br i1 %322, label %323, label %610

323:                                              ; preds = %297
  %324 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %325 = load float, ptr %324, align 4, !tbaa !11
  %326 = fcmp une float %325, 0.000000e+00
  br i1 %326, label %332, label %327

327:                                              ; preds = %323
  %328 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %329 = load float, ptr %328, align 4, !tbaa !14
  %330 = fpext float %329 to double
  %331 = fcmp une double %330, 0.000000e+00
  br i1 %331, label %332, label %610

332:                                              ; preds = %327, %323
  store i32 2, ptr %33, align 4, !tbaa !9
  %333 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %333, ptr %25, align 4, !tbaa !9
  %334 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %334, ptr %26, align 4, !tbaa !9
  %335 = load ptr, ptr %20, align 8, !tbaa !5
  %336 = load i32, ptr %26, align 4, !tbaa !9
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds %struct.complex, ptr %335, i64 %337
  %339 = getelementptr inbounds %struct.complex, ptr %338, i32 0, i32 0
  %340 = load float, ptr %339, align 4, !tbaa !11
  %341 = load ptr, ptr %20, align 8, !tbaa !5
  %342 = load i32, ptr %25, align 4, !tbaa !9
  %343 = sext i32 %342 to i64
  %344 = getelementptr inbounds %struct.complex, ptr %341, i64 %343
  %345 = getelementptr inbounds %struct.complex, ptr %344, i32 0, i32 0
  store float %340, ptr %345, align 4, !tbaa !11
  %346 = load ptr, ptr %20, align 8, !tbaa !5
  %347 = load i32, ptr %26, align 4, !tbaa !9
  %348 = sext i32 %347 to i64
  %349 = getelementptr inbounds %struct.complex, ptr %346, i64 %348
  %350 = getelementptr inbounds %struct.complex, ptr %349, i32 0, i32 1
  %351 = load float, ptr %350, align 4, !tbaa !14
  %352 = load ptr, ptr %20, align 8, !tbaa !5
  %353 = load i32, ptr %25, align 4, !tbaa !9
  %354 = sext i32 %353 to i64
  %355 = getelementptr inbounds %struct.complex, ptr %352, i64 %354
  %356 = getelementptr inbounds %struct.complex, ptr %355, i32 0, i32 1
  store float %351, ptr %356, align 4, !tbaa !14
  %357 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %357, ptr %25, align 4, !tbaa !9
  %358 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %359 = load float, ptr %358, align 4, !tbaa !11
  %360 = load ptr, ptr %20, align 8, !tbaa !5
  %361 = load i32, ptr %25, align 4, !tbaa !9
  %362 = sext i32 %361 to i64
  %363 = getelementptr inbounds %struct.complex, ptr %360, i64 %362
  %364 = getelementptr inbounds %struct.complex, ptr %363, i32 0, i32 0
  store float %359, ptr %364, align 4, !tbaa !11
  %365 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %366 = load float, ptr %365, align 4, !tbaa !14
  %367 = load ptr, ptr %20, align 8, !tbaa !5
  %368 = load i32, ptr %25, 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 1
  store float %366, ptr %371, align 4, !tbaa !14
  %372 = load i32, ptr %33, align 4, !tbaa !9
  %373 = load i32, ptr %30, align 4, !tbaa !9
  %374 = add nsw i32 %372, %373
  %375 = sub nsw i32 %374, 1
  store i32 %375, ptr %33, align 4, !tbaa !9
  %376 = load i32, ptr %35, align 4, !tbaa !9
  %377 = load i32, ptr %30, align 4, !tbaa !9
  %378 = add nsw i32 %376, %377
  %379 = sub nsw i32 %378, 1
  store i32 %379, ptr %35, align 4, !tbaa !9
  %380 = load i32, ptr %35, align 4, !tbaa !9
  %381 = load i32, ptr %33, align 4, !tbaa !9
  %382 = sub nsw i32 %380, %381
  %383 = sub nsw i32 %382, 1
  store i32 %383, ptr %25, align 4, !tbaa !9
  %384 = load ptr, ptr %15, align 8, !tbaa !5
  %385 = load ptr, ptr %12, align 8, !tbaa !5
  %386 = load i32, ptr %385, align 4, !tbaa !9
  %387 = load i32, ptr %33, align 4, !tbaa !9
  %388 = add nsw i32 %386, %387
  %389 = sub nsw i32 %388, 1
  %390 = load i32, ptr %33, align 4, !tbaa !9
  %391 = add nsw i32 %390, 1
  %392 = load i32, ptr %21, align 4, !tbaa !9
  %393 = mul nsw i32 %391, %392
  %394 = add nsw i32 %389, %393
  %395 = sext i32 %394 to i64
  %396 = getelementptr inbounds %struct.complex, ptr %384, i64 %395
  %397 = load ptr, ptr %16, align 8, !tbaa !5
  %398 = load ptr, ptr %15, align 8, !tbaa !5
  %399 = load ptr, ptr %12, align 8, !tbaa !5
  %400 = load i32, ptr %399, align 4, !tbaa !9
  %401 = load i32, ptr %33, align 4, !tbaa !9
  %402 = add nsw i32 %400, %401
  %403 = load i32, ptr %35, align 4, !tbaa !9
  %404 = load i32, ptr %21, align 4, !tbaa !9
  %405 = mul nsw i32 %403, %404
  %406 = add nsw i32 %402, %405
  %407 = sext i32 %406 to i64
  %408 = getelementptr inbounds %struct.complex, ptr %398, i64 %407
  call void @cswap_(ptr noundef %25, ptr noundef %396, ptr noundef %397, ptr noundef %408, ptr noundef @c__1)
  %409 = load i32, ptr %35, align 4, !tbaa !9
  %410 = load i32, ptr %33, align 4, !tbaa !9
  %411 = sub nsw i32 %409, %410
  store i32 %411, ptr %25, align 4, !tbaa !9
  %412 = load ptr, ptr %15, align 8, !tbaa !5
  %413 = load ptr, ptr %12, align 8, !tbaa !5
  %414 = load i32, ptr %413, align 4, !tbaa !9
  %415 = load i32, ptr %33, align 4, !tbaa !9
  %416 = add nsw i32 %414, %415
  %417 = sub nsw i32 %416, 1
  %418 = load i32, ptr %33, align 4, !tbaa !9
  %419 = add nsw i32 %418, 1
  %420 = load i32, ptr %21, align 4, !tbaa !9
  %421 = mul nsw i32 %419, %420
  %422 = add nsw i32 %417, %421
  %423 = sext i32 %422 to i64
  %424 = getelementptr inbounds %struct.complex, ptr %412, i64 %423
  %425 = load ptr, ptr %16, align 8, !tbaa !5
  call void @clacgv_(ptr noundef %25, ptr noundef %424, ptr noundef %425)
  %426 = load i32, ptr %35, align 4, !tbaa !9
  %427 = load i32, ptr %33, align 4, !tbaa !9
  %428 = sub nsw i32 %426, %427
  %429 = sub nsw i32 %428, 1
  store i32 %429, ptr %25, align 4, !tbaa !9
  %430 = load ptr, ptr %15, align 8, !tbaa !5
  %431 = load ptr, ptr %12, align 8, !tbaa !5
  %432 = load i32, ptr %431, align 4, !tbaa !9
  %433 = load i32, ptr %33, align 4, !tbaa !9
  %434 = add nsw i32 %432, %433
  %435 = load i32, ptr %35, align 4, !tbaa !9
  %436 = load i32, ptr %21, align 4, !tbaa !9
  %437 = mul nsw i32 %435, %436
  %438 = add nsw i32 %434, %437
  %439 = sext i32 %438 to i64
  %440 = getelementptr inbounds %struct.complex, ptr %430, i64 %439
  call void @clacgv_(ptr noundef %25, ptr noundef %440, ptr noundef @c__1)
  %441 = load i32, ptr %35, align 4, !tbaa !9
  %442 = load ptr, ptr %13, align 8, !tbaa !5
  %443 = load i32, ptr %442, align 4, !tbaa !9
  %444 = icmp slt i32 %441, %443
  br i1 %444, label %445, label %478

445:                                              ; preds = %332
  %446 = load ptr, ptr %13, align 8, !tbaa !5
  %447 = load i32, ptr %446, align 4, !tbaa !9
  %448 = load i32, ptr %35, align 4, !tbaa !9
  %449 = sub nsw i32 %447, %448
  store i32 %449, ptr %25, align 4, !tbaa !9
  %450 = load ptr, ptr %15, align 8, !tbaa !5
  %451 = load ptr, ptr %12, align 8, !tbaa !5
  %452 = load i32, ptr %451, align 4, !tbaa !9
  %453 = load i32, ptr %33, align 4, !tbaa !9
  %454 = add nsw i32 %452, %453
  %455 = sub nsw i32 %454, 1
  %456 = load i32, ptr %35, align 4, !tbaa !9
  %457 = add nsw i32 %456, 1
  %458 = load i32, ptr %21, align 4, !tbaa !9
  %459 = mul nsw i32 %457, %458
  %460 = add nsw i32 %455, %459
  %461 = sext i32 %460 to i64
  %462 = getelementptr inbounds %struct.complex, ptr %450, i64 %461
  %463 = load ptr, ptr %16, align 8, !tbaa !5
  %464 = load ptr, ptr %15, align 8, !tbaa !5
  %465 = load ptr, ptr %12, align 8, !tbaa !5
  %466 = load i32, ptr %465, align 4, !tbaa !9
  %467 = load i32, ptr %35, align 4, !tbaa !9
  %468 = add nsw i32 %466, %467
  %469 = sub nsw i32 %468, 1
  %470 = load i32, ptr %35, align 4, !tbaa !9
  %471 = add nsw i32 %470, 1
  %472 = load i32, ptr %21, align 4, !tbaa !9
  %473 = mul nsw i32 %471, %472
  %474 = add nsw i32 %469, %473
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds %struct.complex, ptr %464, i64 %475
  %477 = load ptr, ptr %16, align 8, !tbaa !5
  call void @cswap_(ptr noundef %25, ptr noundef %462, ptr noundef %463, ptr noundef %476, ptr noundef %477)
  br label %478

478:                                              ; preds = %445, %332
  %479 = load i32, ptr %33, align 4, !tbaa !9
  %480 = load ptr, ptr %12, align 8, !tbaa !5
  %481 = load i32, ptr %480, align 4, !tbaa !9
  %482 = add nsw i32 %479, %481
  %483 = sub nsw i32 %482, 1
  %484 = load i32, ptr %33, align 4, !tbaa !9
  %485 = load i32, ptr %21, align 4, !tbaa !9
  %486 = mul nsw i32 %484, %485
  %487 = add nsw i32 %483, %486
  store i32 %487, ptr %25, align 4, !tbaa !9
  %488 = load ptr, ptr %15, align 8, !tbaa !5
  %489 = load i32, ptr %25, align 4, !tbaa !9
  %490 = sext i32 %489 to i64
  %491 = getelementptr inbounds %struct.complex, ptr %488, i64 %490
  %492 = getelementptr inbounds %struct.complex, ptr %491, i32 0, i32 0
  %493 = load float, ptr %492, align 4, !tbaa !11
  %494 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %493, ptr %494, align 4, !tbaa !11
  %495 = load ptr, ptr %15, align 8, !tbaa !5
  %496 = load i32, ptr %25, align 4, !tbaa !9
  %497 = sext i32 %496 to i64
  %498 = getelementptr inbounds %struct.complex, ptr %495, i64 %497
  %499 = getelementptr inbounds %struct.complex, ptr %498, i32 0, i32 1
  %500 = load float, ptr %499, align 4, !tbaa !14
  %501 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %500, ptr %501, align 4, !tbaa !14
  %502 = load ptr, ptr %12, align 8, !tbaa !5
  %503 = load i32, ptr %502, align 4, !tbaa !9
  %504 = load i32, ptr %33, align 4, !tbaa !9
  %505 = add nsw i32 %503, %504
  %506 = sub nsw i32 %505, 1
  %507 = load i32, ptr %33, align 4, !tbaa !9
  %508 = load i32, ptr %21, align 4, !tbaa !9
  %509 = mul nsw i32 %507, %508
  %510 = add nsw i32 %506, %509
  store i32 %510, ptr %25, align 4, !tbaa !9
  %511 = load ptr, ptr %12, align 8, !tbaa !5
  %512 = load i32, ptr %511, align 4, !tbaa !9
  %513 = load i32, ptr %35, align 4, !tbaa !9
  %514 = add nsw i32 %512, %513
  %515 = sub nsw i32 %514, 1
  %516 = load i32, ptr %35, align 4, !tbaa !9
  %517 = load i32, ptr %21, align 4, !tbaa !9
  %518 = mul nsw i32 %516, %517
  %519 = add nsw i32 %515, %518
  store i32 %519, ptr %26, align 4, !tbaa !9
  %520 = load ptr, ptr %15, align 8, !tbaa !5
  %521 = load i32, ptr %26, align 4, !tbaa !9
  %522 = sext i32 %521 to i64
  %523 = getelementptr inbounds %struct.complex, ptr %520, i64 %522
  %524 = getelementptr inbounds %struct.complex, ptr %523, i32 0, i32 0
  %525 = load float, ptr %524, align 4, !tbaa !11
  %526 = load ptr, ptr %15, align 8, !tbaa !5
  %527 = load i32, ptr %25, align 4, !tbaa !9
  %528 = sext i32 %527 to i64
  %529 = getelementptr inbounds %struct.complex, ptr %526, i64 %528
  %530 = getelementptr inbounds %struct.complex, ptr %529, i32 0, i32 0
  store float %525, ptr %530, align 4, !tbaa !11
  %531 = load ptr, ptr %15, align 8, !tbaa !5
  %532 = load i32, ptr %26, align 4, !tbaa !9
  %533 = sext i32 %532 to i64
  %534 = getelementptr inbounds %struct.complex, ptr %531, i64 %533
  %535 = getelementptr inbounds %struct.complex, ptr %534, i32 0, i32 1
  %536 = load float, ptr %535, align 4, !tbaa !14
  %537 = load ptr, ptr %15, align 8, !tbaa !5
  %538 = load i32, ptr %25, align 4, !tbaa !9
  %539 = sext i32 %538 to i64
  %540 = getelementptr inbounds %struct.complex, ptr %537, i64 %539
  %541 = getelementptr inbounds %struct.complex, ptr %540, i32 0, i32 1
  store float %536, ptr %541, align 4, !tbaa !14
  %542 = load ptr, ptr %12, align 8, !tbaa !5
  %543 = load i32, ptr %542, align 4, !tbaa !9
  %544 = load i32, ptr %35, align 4, !tbaa !9
  %545 = add nsw i32 %543, %544
  %546 = sub nsw i32 %545, 1
  %547 = load i32, ptr %35, align 4, !tbaa !9
  %548 = load i32, ptr %21, align 4, !tbaa !9
  %549 = mul nsw i32 %547, %548
  %550 = add nsw i32 %546, %549
  store i32 %550, ptr %25, align 4, !tbaa !9
  %551 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %552 = load float, ptr %551, align 4, !tbaa !11
  %553 = load ptr, ptr %15, align 8, !tbaa !5
  %554 = load i32, ptr %25, align 4, !tbaa !9
  %555 = sext i32 %554 to i64
  %556 = getelementptr inbounds %struct.complex, ptr %553, i64 %555
  %557 = getelementptr inbounds %struct.complex, ptr %556, i32 0, i32 0
  store float %552, ptr %557, align 4, !tbaa !11
  %558 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %559 = load float, ptr %558, align 4, !tbaa !14
  %560 = load ptr, ptr %15, align 8, !tbaa !5
  %561 = load i32, ptr %25, align 4, !tbaa !9
  %562 = sext i32 %561 to i64
  %563 = getelementptr inbounds %struct.complex, ptr %560, i64 %562
  %564 = getelementptr inbounds %struct.complex, ptr %563, i32 0, i32 1
  store float %559, ptr %564, align 4, !tbaa !14
  %565 = load i32, ptr %33, align 4, !tbaa !9
  %566 = sub nsw i32 %565, 1
  store i32 %566, ptr %25, align 4, !tbaa !9
  %567 = load ptr, ptr %18, align 8, !tbaa !5
  %568 = load i32, ptr %33, align 4, !tbaa !9
  %569 = load i32, ptr %23, align 4, !tbaa !9
  %570 = add nsw i32 %568, %569
  %571 = sext i32 %570 to i64
  %572 = getelementptr inbounds %struct.complex, ptr %567, i64 %571
  %573 = load ptr, ptr %19, align 8, !tbaa !5
  %574 = load ptr, ptr %18, align 8, !tbaa !5
  %575 = load i32, ptr %35, align 4, !tbaa !9
  %576 = load i32, ptr %23, align 4, !tbaa !9
  %577 = add nsw i32 %575, %576
  %578 = sext i32 %577 to i64
  %579 = getelementptr inbounds %struct.complex, ptr %574, i64 %578
  %580 = load ptr, ptr %19, align 8, !tbaa !5
  call void @cswap_(ptr noundef %25, ptr noundef %572, ptr noundef %573, ptr noundef %579, ptr noundef %580)
  %581 = load i32, ptr %35, align 4, !tbaa !9
  %582 = load ptr, ptr %17, align 8, !tbaa !5
  %583 = load i32, ptr %33, align 4, !tbaa !9
  %584 = sext i32 %583 to i64
  %585 = getelementptr inbounds i32, ptr %582, i64 %584
  store i32 %581, ptr %585, align 4, !tbaa !9
  %586 = load i32, ptr %33, align 4, !tbaa !9
  %587 = load i32, ptr %34, align 4, !tbaa !9
  %588 = sub nsw i32 %587, 1
  %589 = icmp sgt i32 %586, %588
  br i1 %589, label %590, label %609

590:                                              ; preds = %478
  %591 = load i32, ptr %33, align 4, !tbaa !9
  %592 = load i32, ptr %34, align 4, !tbaa !9
  %593 = sub nsw i32 %591, %592
  %594 = add nsw i32 %593, 1
  store i32 %594, ptr %25, align 4, !tbaa !9
  %595 = load ptr, ptr %15, align 8, !tbaa !5
  %596 = load i32, ptr %33, align 4, !tbaa !9
  %597 = load i32, ptr %21, align 4, !tbaa !9
  %598 = mul nsw i32 %596, %597
  %599 = add nsw i32 %598, 1
  %600 = sext i32 %599 to i64
  %601 = getelementptr inbounds %struct.complex, ptr %595, i64 %600
  %602 = load ptr, ptr %15, align 8, !tbaa !5
  %603 = load i32, ptr %35, align 4, !tbaa !9
  %604 = load i32, ptr %21, align 4, !tbaa !9
  %605 = mul nsw i32 %603, %604
  %606 = add nsw i32 %605, 1
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds %struct.complex, ptr %602, i64 %607
  call void @cswap_(ptr noundef %25, ptr noundef %601, ptr noundef @c__1, ptr noundef %608, ptr noundef @c__1)
  br label %609

609:                                              ; preds = %590, %478
  br label %618

610:                                              ; preds = %327, %297
  %611 = load i32, ptr %30, align 4, !tbaa !9
  %612 = add nsw i32 %611, 1
  %613 = load ptr, ptr %17, align 8, !tbaa !5
  %614 = load i32, ptr %30, align 4, !tbaa !9
  %615 = add nsw i32 %614, 1
  %616 = sext i32 %615 to i64
  %617 = getelementptr inbounds i32, ptr %613, i64 %616
  store i32 %612, ptr %617, align 4, !tbaa !9
  br label %618

618:                                              ; preds = %610, %609
  %619 = load i32, ptr %31, align 4, !tbaa !9
  %620 = load i32, ptr %30, align 4, !tbaa !9
  %621 = add nsw i32 %620, 1
  %622 = load i32, ptr %21, align 4, !tbaa !9
  %623 = mul nsw i32 %621, %622
  %624 = add nsw i32 %619, %623
  store i32 %624, ptr %25, align 4, !tbaa !9
  %625 = load ptr, ptr %20, align 8, !tbaa !5
  %626 = getelementptr inbounds %struct.complex, ptr %625, i64 2
  %627 = getelementptr inbounds %struct.complex, ptr %626, i32 0, i32 0
  %628 = load float, ptr %627, align 4, !tbaa !11
  %629 = load ptr, ptr %15, align 8, !tbaa !5
  %630 = load i32, ptr %25, align 4, !tbaa !9
  %631 = sext i32 %630 to i64
  %632 = getelementptr inbounds %struct.complex, ptr %629, i64 %631
  %633 = getelementptr inbounds %struct.complex, ptr %632, i32 0, i32 0
  store float %628, ptr %633, align 4, !tbaa !11
  %634 = load ptr, ptr %20, align 8, !tbaa !5
  %635 = getelementptr inbounds %struct.complex, ptr %634, i64 2
  %636 = getelementptr inbounds %struct.complex, ptr %635, i32 0, i32 1
  %637 = load float, ptr %636, align 4, !tbaa !14
  %638 = load ptr, ptr %15, align 8, !tbaa !5
  %639 = load i32, ptr %25, align 4, !tbaa !9
  %640 = sext i32 %639 to i64
  %641 = getelementptr inbounds %struct.complex, ptr %638, i64 %640
  %642 = getelementptr inbounds %struct.complex, ptr %641, i32 0, i32 1
  store float %637, ptr %642, align 4, !tbaa !14
  %643 = load i32, ptr %30, align 4, !tbaa !9
  %644 = load ptr, ptr %14, align 8, !tbaa !5
  %645 = load i32, ptr %644, align 4, !tbaa !9
  %646 = icmp slt i32 %643, %645
  br i1 %646, label %647, label %673

647:                                              ; preds = %618
  %648 = load ptr, ptr %13, align 8, !tbaa !5
  %649 = load i32, ptr %648, align 4, !tbaa !9
  %650 = load i32, ptr %30, align 4, !tbaa !9
  %651 = sub nsw i32 %649, %650
  store i32 %651, ptr %25, align 4, !tbaa !9
  %652 = load ptr, ptr %15, align 8, !tbaa !5
  %653 = load i32, ptr %31, align 4, !tbaa !9
  %654 = add nsw i32 %653, 1
  %655 = load i32, ptr %30, align 4, !tbaa !9
  %656 = add nsw i32 %655, 1
  %657 = load i32, ptr %21, align 4, !tbaa !9
  %658 = mul nsw i32 %656, %657
  %659 = add nsw i32 %654, %658
  %660 = sext i32 %659 to i64
  %661 = getelementptr inbounds %struct.complex, ptr %652, i64 %660
  %662 = load ptr, ptr %16, align 8, !tbaa !5
  %663 = load ptr, ptr %18, align 8, !tbaa !5
  %664 = load i32, ptr %30, align 4, !tbaa !9
  %665 = add nsw i32 %664, 1
  %666 = load i32, ptr %30, align 4, !tbaa !9
  %667 = add nsw i32 %666, 1
  %668 = load i32, ptr %23, align 4, !tbaa !9
  %669 = mul nsw i32 %667, %668
  %670 = add nsw i32 %665, %669
  %671 = sext i32 %670 to i64
  %672 = getelementptr inbounds %struct.complex, ptr %663, i64 %671
  call void @ccopy_(ptr noundef %25, ptr noundef %661, ptr noundef %662, ptr noundef %672, ptr noundef @c__1)
  br label %673

673:                                              ; preds = %647, %618
  %674 = load i32, ptr %30, align 4, !tbaa !9
  %675 = load ptr, ptr %13, align 8, !tbaa !5
  %676 = load i32, ptr %675, align 4, !tbaa !9
  %677 = sub nsw i32 %676, 1
  %678 = icmp slt i32 %674, %677
  br i1 %678, label %679, label %784

679:                                              ; preds = %673
  %680 = load i32, ptr %31, align 4, !tbaa !9
  %681 = load i32, ptr %30, align 4, !tbaa !9
  %682 = add nsw i32 %681, 1
  %683 = load i32, ptr %21, align 4, !tbaa !9
  %684 = mul nsw i32 %682, %683
  %685 = add nsw i32 %680, %684
  store i32 %685, ptr %25, align 4, !tbaa !9
  %686 = load ptr, ptr %15, align 8, !tbaa !5
  %687 = load i32, ptr %25, align 4, !tbaa !9
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds %struct.complex, ptr %686, i64 %688
  %690 = getelementptr inbounds %struct.complex, ptr %689, i32 0, i32 0
  %691 = load float, ptr %690, align 4, !tbaa !11
  %692 = fcmp une float %691, 0.000000e+00
  br i1 %692, label %701, label %693

693:                                              ; preds = %679
  %694 = load ptr, ptr %15, align 8, !tbaa !5
  %695 = load i32, ptr %25, align 4, !tbaa !9
  %696 = sext i32 %695 to i64
  %697 = getelementptr inbounds %struct.complex, ptr %694, i64 %696
  %698 = getelementptr inbounds %struct.complex, ptr %697, i32 0, i32 1
  %699 = load float, ptr %698, align 4, !tbaa !14
  %700 = fcmp une float %699, 0.000000e+00
  br i1 %700, label %701, label %767

701:                                              ; preds = %693, %679
  %702 = call <2 x float> @Cf(ptr noundef @c_b2)
  store <2 x float> %702, ptr %39, align 4
  %703 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 0
  %704 = load float, ptr %703, align 4
  %705 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 1
  %706 = load float, ptr %705, align 4
  %707 = load ptr, ptr %15, align 8, !tbaa !5
  %708 = load i32, ptr %31, align 4, !tbaa !9
  %709 = load i32, ptr %30, align 4, !tbaa !9
  %710 = add nsw i32 %709, 1
  %711 = load i32, ptr %21, align 4, !tbaa !9
  %712 = mul nsw i32 %710, %711
  %713 = add nsw i32 %708, %712
  %714 = sext i32 %713 to i64
  %715 = getelementptr inbounds %struct.complex, ptr %707, i64 %714
  %716 = call <2 x float> @Cf(ptr noundef %715)
  store <2 x float> %716, ptr %40, align 4
  %717 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 0
  %718 = load float, ptr %717, align 4
  %719 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 1
  %720 = load float, ptr %719, align 4
  %721 = call <2 x float> @__divsc3(float noundef %704, float noundef %706, float noundef %718, float noundef %720) #5
  store <2 x float> %721, ptr %41, align 4
  %722 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 0
  %723 = load float, ptr %722, align 4
  %724 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 1
  %725 = load float, ptr %724, align 4
  %726 = call ptr @_pCf(ptr noundef %28)
  %727 = getelementptr inbounds { float, float }, ptr %726, i32 0, i32 0
  %728 = getelementptr inbounds { float, float }, ptr %726, i32 0, i32 1
  store float %723, ptr %727, align 4
  store float %725, ptr %728, align 4
  %729 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %730 = load float, ptr %729, align 4, !tbaa !11
  %731 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %730, ptr %731, align 4, !tbaa !11
  %732 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %733 = load float, ptr %732, align 4, !tbaa !14
  %734 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %733, ptr %734, align 4, !tbaa !14
  %735 = load ptr, ptr %13, align 8, !tbaa !5
  %736 = load i32, ptr %735, align 4, !tbaa !9
  %737 = load i32, ptr %30, align 4, !tbaa !9
  %738 = sub nsw i32 %736, %737
  %739 = sub nsw i32 %738, 1
  store i32 %739, ptr %25, align 4, !tbaa !9
  %740 = load ptr, ptr %20, align 8, !tbaa !5
  %741 = getelementptr inbounds %struct.complex, ptr %740, i64 3
  %742 = load ptr, ptr %15, align 8, !tbaa !5
  %743 = load i32, ptr %31, align 4, !tbaa !9
  %744 = load i32, ptr %30, align 4, !tbaa !9
  %745 = add nsw i32 %744, 2
  %746 = load i32, ptr %21, align 4, !tbaa !9
  %747 = mul nsw i32 %745, %746
  %748 = add nsw i32 %743, %747
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds %struct.complex, ptr %742, i64 %749
  %751 = load ptr, ptr %16, align 8, !tbaa !5
  call void @ccopy_(ptr noundef %25, ptr noundef %741, ptr noundef @c__1, ptr noundef %750, ptr noundef %751)
  %752 = load ptr, ptr %13, align 8, !tbaa !5
  %753 = load i32, ptr %752, align 4, !tbaa !9
  %754 = load i32, ptr %30, align 4, !tbaa !9
  %755 = sub nsw i32 %753, %754
  %756 = sub nsw i32 %755, 1
  store i32 %756, ptr %25, align 4, !tbaa !9
  %757 = load ptr, ptr %15, align 8, !tbaa !5
  %758 = load i32, ptr %31, align 4, !tbaa !9
  %759 = load i32, ptr %30, align 4, !tbaa !9
  %760 = add nsw i32 %759, 2
  %761 = load i32, ptr %21, align 4, !tbaa !9
  %762 = mul nsw i32 %760, %761
  %763 = add nsw i32 %758, %762
  %764 = sext i32 %763 to i64
  %765 = getelementptr inbounds %struct.complex, ptr %757, i64 %764
  %766 = load ptr, ptr %16, align 8, !tbaa !5
  call void @cscal_(ptr noundef %25, ptr noundef %32, ptr noundef %765, ptr noundef %766)
  br label %783

767:                                              ; preds = %693
  %768 = load ptr, ptr %13, align 8, !tbaa !5
  %769 = load i32, ptr %768, align 4, !tbaa !9
  %770 = load i32, ptr %30, align 4, !tbaa !9
  %771 = sub nsw i32 %769, %770
  %772 = sub nsw i32 %771, 1
  store i32 %772, ptr %25, align 4, !tbaa !9
  %773 = load ptr, ptr %15, align 8, !tbaa !5
  %774 = load i32, ptr %31, align 4, !tbaa !9
  %775 = load i32, ptr %30, align 4, !tbaa !9
  %776 = add nsw i32 %775, 2
  %777 = load i32, ptr %21, align 4, !tbaa !9
  %778 = mul nsw i32 %776, %777
  %779 = add nsw i32 %774, %778
  %780 = sext i32 %779 to i64
  %781 = getelementptr inbounds %struct.complex, ptr %773, i64 %780
  %782 = load ptr, ptr %16, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.2, ptr noundef @c__1, ptr noundef %25, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %781, ptr noundef %782)
  br label %783

783:                                              ; preds = %767, %701
  br label %784

784:                                              ; preds = %783, %673
  br label %785

785:                                              ; preds = %784, %224
  %786 = load i32, ptr %30, align 4, !tbaa !9
  %787 = add nsw i32 %786, 1
  store i32 %787, ptr %30, align 4, !tbaa !9
  br label %78

788:                                              ; preds = %94
  br label %1494

789:                                              ; preds = %10
  br label %790

790:                                              ; preds = %1490, %789
  %791 = load i32, ptr %30, align 4, !tbaa !9
  %792 = load ptr, ptr %13, align 8, !tbaa !5
  %793 = load i32, ptr %792, align 4, !tbaa !9
  %794 = load ptr, ptr %14, align 8, !tbaa !5
  %795 = load i32, ptr %794, align 4, !tbaa !9
  %796 = icmp sle i32 %793, %795
  br i1 %796, label %797, label %800

797:                                              ; preds = %790
  %798 = load ptr, ptr %13, align 8, !tbaa !5
  %799 = load i32, ptr %798, align 4, !tbaa !9
  br label %803

800:                                              ; preds = %790
  %801 = load ptr, ptr %14, align 8, !tbaa !5
  %802 = load i32, ptr %801, align 4, !tbaa !9
  br label %803

803:                                              ; preds = %800, %797
  %804 = phi i32 [ %799, %797 ], [ %802, %800 ]
  %805 = icmp sgt i32 %791, %804
  br i1 %805, label %806, label %807

806:                                              ; preds = %803
  br label %1493

807:                                              ; preds = %803
  %808 = load ptr, ptr %12, align 8, !tbaa !5
  %809 = load i32, ptr %808, align 4, !tbaa !9
  %810 = load i32, ptr %30, align 4, !tbaa !9
  %811 = add nsw i32 %809, %810
  %812 = sub nsw i32 %811, 1
  store i32 %812, ptr %31, align 4, !tbaa !9
  %813 = load i32, ptr %30, align 4, !tbaa !9
  %814 = load ptr, ptr %13, align 8, !tbaa !5
  %815 = load i32, ptr %814, align 4, !tbaa !9
  %816 = icmp eq i32 %813, %815
  br i1 %816, label %817, label %818

817:                                              ; preds = %807
  store i32 1, ptr %36, align 4, !tbaa !9
  br label %824

818:                                              ; preds = %807
  %819 = load ptr, ptr %13, align 8, !tbaa !5
  %820 = load i32, ptr %819, align 4, !tbaa !9
  %821 = load i32, ptr %30, align 4, !tbaa !9
  %822 = sub nsw i32 %820, %821
  %823 = add nsw i32 %822, 1
  store i32 %823, ptr %36, align 4, !tbaa !9
  br label %824

824:                                              ; preds = %818, %817
  %825 = load i32, ptr %31, align 4, !tbaa !9
  %826 = icmp sgt i32 %825, 2
  br i1 %826, label %827, label %877

827:                                              ; preds = %824
  %828 = load i32, ptr %30, align 4, !tbaa !9
  %829 = load i32, ptr %34, align 4, !tbaa !9
  %830 = sub nsw i32 %828, %829
  store i32 %830, ptr %25, align 4, !tbaa !9
  %831 = load ptr, ptr %15, align 8, !tbaa !5
  %832 = load i32, ptr %30, align 4, !tbaa !9
  %833 = load i32, ptr %21, align 4, !tbaa !9
  %834 = add nsw i32 %832, %833
  %835 = sext i32 %834 to i64
  %836 = getelementptr inbounds %struct.complex, ptr %831, i64 %835
  %837 = load ptr, ptr %16, align 8, !tbaa !5
  call void @clacgv_(ptr noundef %25, ptr noundef %836, ptr noundef %837)
  %838 = load i32, ptr %30, align 4, !tbaa !9
  %839 = load i32, ptr %34, align 4, !tbaa !9
  %840 = sub nsw i32 %838, %839
  store i32 %840, ptr %25, align 4, !tbaa !9
  %841 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float -1.000000e+00, ptr %841, align 4, !tbaa !11
  %842 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float 0.000000e+00, ptr %842, align 4, !tbaa !14
  %843 = load ptr, ptr %18, align 8, !tbaa !5
  %844 = load i32, ptr %30, align 4, !tbaa !9
  %845 = load i32, ptr %34, align 4, !tbaa !9
  %846 = load i32, ptr %23, align 4, !tbaa !9
  %847 = mul nsw i32 %845, %846
  %848 = add nsw i32 %844, %847
  %849 = sext i32 %848 to i64
  %850 = getelementptr inbounds %struct.complex, ptr %843, i64 %849
  %851 = load ptr, ptr %19, align 8, !tbaa !5
  %852 = load ptr, ptr %15, align 8, !tbaa !5
  %853 = load i32, ptr %30, align 4, !tbaa !9
  %854 = load i32, ptr %21, align 4, !tbaa !9
  %855 = add nsw i32 %853, %854
  %856 = sext i32 %855 to i64
  %857 = getelementptr inbounds %struct.complex, ptr %852, i64 %856
  %858 = load ptr, ptr %16, align 8, !tbaa !5
  %859 = load ptr, ptr %18, align 8, !tbaa !5
  %860 = load i32, ptr %30, align 4, !tbaa !9
  %861 = load i32, ptr %30, align 4, !tbaa !9
  %862 = load i32, ptr %23, align 4, !tbaa !9
  %863 = mul nsw i32 %861, %862
  %864 = add nsw i32 %860, %863
  %865 = sext i32 %864 to i64
  %866 = getelementptr inbounds %struct.complex, ptr %859, i64 %865
  call void @cgemv_(ptr noundef @.str.1, ptr noundef %36, ptr noundef %25, ptr noundef %28, ptr noundef %850, ptr noundef %851, ptr noundef %857, ptr noundef %858, ptr noundef @c_b2, ptr noundef %866, ptr noundef @c__1)
  %867 = load i32, ptr %30, align 4, !tbaa !9
  %868 = load i32, ptr %34, align 4, !tbaa !9
  %869 = sub nsw i32 %867, %868
  store i32 %869, ptr %25, align 4, !tbaa !9
  %870 = load ptr, ptr %15, align 8, !tbaa !5
  %871 = load i32, ptr %30, align 4, !tbaa !9
  %872 = load i32, ptr %21, align 4, !tbaa !9
  %873 = add nsw i32 %871, %872
  %874 = sext i32 %873 to i64
  %875 = getelementptr inbounds %struct.complex, ptr %870, i64 %874
  %876 = load ptr, ptr %16, align 8, !tbaa !5
  call void @clacgv_(ptr noundef %25, ptr noundef %875, ptr noundef %876)
  br label %877

877:                                              ; preds = %827, %824
  %878 = load ptr, ptr %18, align 8, !tbaa !5
  %879 = load i32, ptr %30, align 4, !tbaa !9
  %880 = load i32, ptr %30, align 4, !tbaa !9
  %881 = load i32, ptr %23, align 4, !tbaa !9
  %882 = mul nsw i32 %880, %881
  %883 = add nsw i32 %879, %882
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds %struct.complex, ptr %878, i64 %884
  %886 = load ptr, ptr %20, align 8, !tbaa !5
  %887 = getelementptr inbounds %struct.complex, ptr %886, i64 1
  call void @ccopy_(ptr noundef %36, ptr noundef %885, ptr noundef @c__1, ptr noundef %887, ptr noundef @c__1)
  %888 = load i32, ptr %30, align 4, !tbaa !9
  %889 = load i32, ptr %34, align 4, !tbaa !9
  %890 = icmp sgt i32 %888, %889
  br i1 %890, label %891, label %935

891:                                              ; preds = %877
  %892 = load ptr, ptr %15, align 8, !tbaa !5
  %893 = load i32, ptr %30, align 4, !tbaa !9
  %894 = load i32, ptr %31, align 4, !tbaa !9
  %895 = sub nsw i32 %894, 1
  %896 = load i32, ptr %21, align 4, !tbaa !9
  %897 = mul nsw i32 %895, %896
  %898 = add nsw i32 %893, %897
  %899 = sext i32 %898 to i64
  %900 = getelementptr inbounds %struct.complex, ptr %892, i64 %899
  %901 = call <2 x float> @Cf(ptr noundef %900)
  store <2 x float> %901, ptr %42, align 4
  %902 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 0
  %903 = load float, ptr %902, align 4
  %904 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 1
  %905 = load float, ptr %904, align 4
  %906 = fneg float %905
  %907 = call ptr @_pCf(ptr noundef %29)
  %908 = getelementptr inbounds { float, float }, ptr %907, i32 0, i32 0
  %909 = getelementptr inbounds { float, float }, ptr %907, i32 0, i32 1
  store float %903, ptr %908, align 4
  store float %906, ptr %909, align 4
  %910 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 0
  %911 = load float, ptr %910, align 4, !tbaa !11
  %912 = fneg float %911
  %913 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %912, ptr %913, align 4, !tbaa !11
  %914 = getelementptr inbounds %struct.complex, ptr %29, i32 0, i32 1
  %915 = load float, ptr %914, align 4, !tbaa !14
  %916 = fneg float %915
  %917 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %916, ptr %917, align 4, !tbaa !14
  %918 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %919 = load float, ptr %918, align 4, !tbaa !11
  %920 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %919, ptr %920, align 4, !tbaa !11
  %921 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %922 = load float, ptr %921, align 4, !tbaa !14
  %923 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %922, ptr %923, align 4, !tbaa !14
  %924 = load ptr, ptr %15, align 8, !tbaa !5
  %925 = load i32, ptr %30, align 4, !tbaa !9
  %926 = load i32, ptr %31, align 4, !tbaa !9
  %927 = sub nsw i32 %926, 2
  %928 = load i32, ptr %21, align 4, !tbaa !9
  %929 = mul nsw i32 %927, %928
  %930 = add nsw i32 %925, %929
  %931 = sext i32 %930 to i64
  %932 = getelementptr inbounds %struct.complex, ptr %924, i64 %931
  %933 = load ptr, ptr %20, align 8, !tbaa !5
  %934 = getelementptr inbounds %struct.complex, ptr %933, i64 1
  call void @caxpy_(ptr noundef %36, ptr noundef %32, ptr noundef %932, ptr noundef @c__1, ptr noundef %934, ptr noundef @c__1)
  br label %935

935:                                              ; preds = %891, %877
  %936 = load i32, ptr %30, align 4, !tbaa !9
  %937 = load i32, ptr %31, align 4, !tbaa !9
  %938 = load i32, ptr %21, align 4, !tbaa !9
  %939 = mul nsw i32 %937, %938
  %940 = add nsw i32 %936, %939
  store i32 %940, ptr %25, align 4, !tbaa !9
  %941 = load ptr, ptr %20, align 8, !tbaa !5
  %942 = getelementptr inbounds %struct.complex, ptr %941, i64 1
  %943 = getelementptr inbounds %struct.complex, ptr %942, i32 0, i32 0
  %944 = load float, ptr %943, align 4, !tbaa !11
  store float %944, ptr %27, align 4, !tbaa !15
  %945 = load float, ptr %27, align 4, !tbaa !15
  %946 = load ptr, ptr %15, align 8, !tbaa !5
  %947 = load i32, ptr %25, align 4, !tbaa !9
  %948 = sext i32 %947 to i64
  %949 = getelementptr inbounds %struct.complex, ptr %946, i64 %948
  %950 = getelementptr inbounds %struct.complex, ptr %949, i32 0, i32 0
  store float %945, ptr %950, align 4, !tbaa !11
  %951 = load ptr, ptr %15, align 8, !tbaa !5
  %952 = load i32, ptr %25, align 4, !tbaa !9
  %953 = sext i32 %952 to i64
  %954 = getelementptr inbounds %struct.complex, ptr %951, i64 %953
  %955 = getelementptr inbounds %struct.complex, ptr %954, i32 0, i32 1
  store float 0.000000e+00, ptr %955, align 4, !tbaa !14
  %956 = load i32, ptr %30, align 4, !tbaa !9
  %957 = load ptr, ptr %13, align 8, !tbaa !5
  %958 = load i32, ptr %957, align 4, !tbaa !9
  %959 = icmp slt i32 %956, %958
  br i1 %959, label %960, label %1490

960:                                              ; preds = %935
  %961 = load i32, ptr %31, align 4, !tbaa !9
  %962 = icmp sgt i32 %961, 1
  br i1 %962, label %963, label %1007

963:                                              ; preds = %960
  %964 = load i32, ptr %30, align 4, !tbaa !9
  %965 = load i32, ptr %31, align 4, !tbaa !9
  %966 = load i32, ptr %21, align 4, !tbaa !9
  %967 = mul nsw i32 %965, %966
  %968 = add nsw i32 %964, %967
  store i32 %968, ptr %25, align 4, !tbaa !9
  %969 = load ptr, ptr %15, align 8, !tbaa !5
  %970 = load i32, ptr %25, align 4, !tbaa !9
  %971 = sext i32 %970 to i64
  %972 = getelementptr inbounds %struct.complex, ptr %969, i64 %971
  %973 = getelementptr inbounds %struct.complex, ptr %972, i32 0, i32 0
  %974 = load float, ptr %973, align 4, !tbaa !11
  %975 = fneg float %974
  %976 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  store float %975, ptr %976, align 4, !tbaa !11
  %977 = load ptr, ptr %15, align 8, !tbaa !5
  %978 = load i32, ptr %25, align 4, !tbaa !9
  %979 = sext i32 %978 to i64
  %980 = getelementptr inbounds %struct.complex, ptr %977, i64 %979
  %981 = getelementptr inbounds %struct.complex, ptr %980, i32 0, i32 1
  %982 = load float, ptr %981, align 4, !tbaa !14
  %983 = fneg float %982
  %984 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  store float %983, ptr %984, align 4, !tbaa !14
  %985 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %986 = load float, ptr %985, align 4, !tbaa !11
  %987 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %986, ptr %987, align 4, !tbaa !11
  %988 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %989 = load float, ptr %988, align 4, !tbaa !14
  %990 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %989, ptr %990, align 4, !tbaa !14
  %991 = load ptr, ptr %13, align 8, !tbaa !5
  %992 = load i32, ptr %991, align 4, !tbaa !9
  %993 = load i32, ptr %30, align 4, !tbaa !9
  %994 = sub nsw i32 %992, %993
  store i32 %994, ptr %25, align 4, !tbaa !9
  %995 = load ptr, ptr %15, align 8, !tbaa !5
  %996 = load i32, ptr %30, align 4, !tbaa !9
  %997 = add nsw i32 %996, 1
  %998 = load i32, ptr %31, align 4, !tbaa !9
  %999 = sub nsw i32 %998, 1
  %1000 = load i32, ptr %21, align 4, !tbaa !9
  %1001 = mul nsw i32 %999, %1000
  %1002 = add nsw i32 %997, %1001
  %1003 = sext i32 %1002 to i64
  %1004 = getelementptr inbounds %struct.complex, ptr %995, i64 %1003
  %1005 = load ptr, ptr %20, align 8, !tbaa !5
  %1006 = getelementptr inbounds %struct.complex, ptr %1005, i64 2
  call void @caxpy_(ptr noundef %25, ptr noundef %32, ptr noundef %1004, ptr noundef @c__1, ptr noundef %1006, ptr noundef @c__1)
  br label %1007

1007:                                             ; preds = %963, %960
  %1008 = load ptr, ptr %13, align 8, !tbaa !5
  %1009 = load i32, ptr %1008, align 4, !tbaa !9
  %1010 = load i32, ptr %30, align 4, !tbaa !9
  %1011 = sub nsw i32 %1009, %1010
  store i32 %1011, ptr %25, align 4, !tbaa !9
  %1012 = load ptr, ptr %20, align 8, !tbaa !5
  %1013 = getelementptr inbounds %struct.complex, ptr %1012, i64 2
  %1014 = call i32 @icamax_(ptr noundef %25, ptr noundef %1013, ptr noundef @c__1)
  %1015 = add nsw i32 %1014, 1
  store i32 %1015, ptr %35, align 4, !tbaa !9
  %1016 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %1016, ptr %25, align 4, !tbaa !9
  %1017 = load ptr, ptr %20, align 8, !tbaa !5
  %1018 = load i32, ptr %25, align 4, !tbaa !9
  %1019 = sext i32 %1018 to i64
  %1020 = getelementptr inbounds %struct.complex, ptr %1017, i64 %1019
  %1021 = getelementptr inbounds %struct.complex, ptr %1020, i32 0, i32 0
  %1022 = load float, ptr %1021, align 4, !tbaa !11
  %1023 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %1022, ptr %1023, align 4, !tbaa !11
  %1024 = load ptr, ptr %20, align 8, !tbaa !5
  %1025 = load i32, ptr %25, align 4, !tbaa !9
  %1026 = sext i32 %1025 to i64
  %1027 = getelementptr inbounds %struct.complex, ptr %1024, i64 %1026
  %1028 = getelementptr inbounds %struct.complex, ptr %1027, i32 0, i32 1
  %1029 = load float, ptr %1028, align 4, !tbaa !14
  %1030 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %1029, ptr %1030, align 4, !tbaa !14
  %1031 = load i32, ptr %35, align 4, !tbaa !9
  %1032 = icmp ne i32 %1031, 2
  br i1 %1032, label %1033, label %1318

1033:                                             ; preds = %1007
  %1034 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %1035 = load float, ptr %1034, align 4, !tbaa !11
  %1036 = fcmp une float %1035, 0.000000e+00
  br i1 %1036, label %1042, label %1037

1037:                                             ; preds = %1033
  %1038 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %1039 = load float, ptr %1038, align 4, !tbaa !14
  %1040 = fpext float %1039 to double
  %1041 = fcmp une double %1040, 0.000000e+00
  br i1 %1041, label %1042, label %1318

1042:                                             ; preds = %1037, %1033
  store i32 2, ptr %33, align 4, !tbaa !9
  %1043 = load i32, ptr %35, align 4, !tbaa !9
  store i32 %1043, ptr %25, align 4, !tbaa !9
  %1044 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %1044, ptr %26, align 4, !tbaa !9
  %1045 = load ptr, ptr %20, align 8, !tbaa !5
  %1046 = load i32, ptr %26, align 4, !tbaa !9
  %1047 = sext i32 %1046 to i64
  %1048 = getelementptr inbounds %struct.complex, ptr %1045, i64 %1047
  %1049 = getelementptr inbounds %struct.complex, ptr %1048, i32 0, i32 0
  %1050 = load float, ptr %1049, align 4, !tbaa !11
  %1051 = load ptr, ptr %20, align 8, !tbaa !5
  %1052 = load i32, ptr %25, 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 !11
  %1056 = load ptr, ptr %20, align 8, !tbaa !5
  %1057 = load i32, ptr %26, align 4, !tbaa !9
  %1058 = sext i32 %1057 to i64
  %1059 = getelementptr inbounds %struct.complex, ptr %1056, i64 %1058
  %1060 = getelementptr inbounds %struct.complex, ptr %1059, i32 0, i32 1
  %1061 = load float, ptr %1060, align 4, !tbaa !14
  %1062 = load ptr, ptr %20, align 8, !tbaa !5
  %1063 = load i32, ptr %25, align 4, !tbaa !9
  %1064 = sext i32 %1063 to i64
  %1065 = getelementptr inbounds %struct.complex, ptr %1062, i64 %1064
  %1066 = getelementptr inbounds %struct.complex, ptr %1065, i32 0, i32 1
  store float %1061, ptr %1066, align 4, !tbaa !14
  %1067 = load i32, ptr %33, align 4, !tbaa !9
  store i32 %1067, ptr %25, align 4, !tbaa !9
  %1068 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %1069 = load float, ptr %1068, align 4, !tbaa !11
  %1070 = load ptr, ptr %20, align 8, !tbaa !5
  %1071 = load i32, ptr %25, align 4, !tbaa !9
  %1072 = sext i32 %1071 to i64
  %1073 = getelementptr inbounds %struct.complex, ptr %1070, i64 %1072
  %1074 = getelementptr inbounds %struct.complex, ptr %1073, i32 0, i32 0
  store float %1069, ptr %1074, align 4, !tbaa !11
  %1075 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %1076 = load float, ptr %1075, align 4, !tbaa !14
  %1077 = load ptr, ptr %20, align 8, !tbaa !5
  %1078 = load i32, ptr %25, align 4, !tbaa !9
  %1079 = sext i32 %1078 to i64
  %1080 = getelementptr inbounds %struct.complex, ptr %1077, i64 %1079
  %1081 = getelementptr inbounds %struct.complex, ptr %1080, i32 0, i32 1
  store float %1076, ptr %1081, align 4, !tbaa !14
  %1082 = load i32, ptr %33, align 4, !tbaa !9
  %1083 = load i32, ptr %30, align 4, !tbaa !9
  %1084 = add nsw i32 %1082, %1083
  %1085 = sub nsw i32 %1084, 1
  store i32 %1085, ptr %33, align 4, !tbaa !9
  %1086 = load i32, ptr %35, align 4, !tbaa !9
  %1087 = load i32, ptr %30, align 4, !tbaa !9
  %1088 = add nsw i32 %1086, %1087
  %1089 = sub nsw i32 %1088, 1
  store i32 %1089, ptr %35, align 4, !tbaa !9
  %1090 = load i32, ptr %35, align 4, !tbaa !9
  %1091 = load i32, ptr %33, align 4, !tbaa !9
  %1092 = sub nsw i32 %1090, %1091
  %1093 = sub nsw i32 %1092, 1
  store i32 %1093, ptr %25, align 4, !tbaa !9
  %1094 = load ptr, ptr %15, align 8, !tbaa !5
  %1095 = load i32, ptr %33, align 4, !tbaa !9
  %1096 = add nsw i32 %1095, 1
  %1097 = load ptr, ptr %12, align 8, !tbaa !5
  %1098 = load i32, ptr %1097, align 4, !tbaa !9
  %1099 = load i32, ptr %33, align 4, !tbaa !9
  %1100 = add nsw i32 %1098, %1099
  %1101 = sub nsw i32 %1100, 1
  %1102 = load i32, ptr %21, align 4, !tbaa !9
  %1103 = mul nsw i32 %1101, %1102
  %1104 = add nsw i32 %1096, %1103
  %1105 = sext i32 %1104 to i64
  %1106 = getelementptr inbounds %struct.complex, ptr %1094, i64 %1105
  %1107 = load ptr, ptr %15, align 8, !tbaa !5
  %1108 = load i32, ptr %35, align 4, !tbaa !9
  %1109 = load ptr, ptr %12, align 8, !tbaa !5
  %1110 = load i32, ptr %1109, align 4, !tbaa !9
  %1111 = load i32, ptr %33, align 4, !tbaa !9
  %1112 = add nsw i32 %1110, %1111
  %1113 = load i32, ptr %21, align 4, !tbaa !9
  %1114 = mul nsw i32 %1112, %1113
  %1115 = add nsw i32 %1108, %1114
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds %struct.complex, ptr %1107, i64 %1116
  %1118 = load ptr, ptr %16, align 8, !tbaa !5
  call void @cswap_(ptr noundef %25, ptr noundef %1106, ptr noundef @c__1, ptr noundef %1117, ptr noundef %1118)
  %1119 = load i32, ptr %35, align 4, !tbaa !9
  %1120 = load i32, ptr %33, align 4, !tbaa !9
  %1121 = sub nsw i32 %1119, %1120
  store i32 %1121, ptr %25, align 4, !tbaa !9
  %1122 = load ptr, ptr %15, align 8, !tbaa !5
  %1123 = load i32, ptr %33, align 4, !tbaa !9
  %1124 = add nsw i32 %1123, 1
  %1125 = load ptr, ptr %12, align 8, !tbaa !5
  %1126 = load i32, ptr %1125, align 4, !tbaa !9
  %1127 = load i32, ptr %33, align 4, !tbaa !9
  %1128 = add nsw i32 %1126, %1127
  %1129 = sub nsw i32 %1128, 1
  %1130 = load i32, ptr %21, align 4, !tbaa !9
  %1131 = mul nsw i32 %1129, %1130
  %1132 = add nsw i32 %1124, %1131
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.complex, ptr %1122, i64 %1133
  call void @clacgv_(ptr noundef %25, ptr noundef %1134, ptr noundef @c__1)
  %1135 = load i32, ptr %35, align 4, !tbaa !9
  %1136 = load i32, ptr %33, align 4, !tbaa !9
  %1137 = sub nsw i32 %1135, %1136
  %1138 = sub nsw i32 %1137, 1
  store i32 %1138, ptr %25, align 4, !tbaa !9
  %1139 = load ptr, ptr %15, align 8, !tbaa !5
  %1140 = load i32, ptr %35, align 4, !tbaa !9
  %1141 = load ptr, ptr %12, align 8, !tbaa !5
  %1142 = load i32, ptr %1141, align 4, !tbaa !9
  %1143 = load i32, ptr %33, align 4, !tbaa !9
  %1144 = add nsw i32 %1142, %1143
  %1145 = load i32, ptr %21, align 4, !tbaa !9
  %1146 = mul nsw i32 %1144, %1145
  %1147 = add nsw i32 %1140, %1146
  %1148 = sext i32 %1147 to i64
  %1149 = getelementptr inbounds %struct.complex, ptr %1139, i64 %1148
  %1150 = load ptr, ptr %16, align 8, !tbaa !5
  call void @clacgv_(ptr noundef %25, ptr noundef %1149, ptr noundef %1150)
  %1151 = load i32, ptr %35, align 4, !tbaa !9
  %1152 = load ptr, ptr %13, align 8, !tbaa !5
  %1153 = load i32, ptr %1152, align 4, !tbaa !9
  %1154 = icmp slt i32 %1151, %1153
  br i1 %1154, label %1155, label %1186

1155:                                             ; preds = %1042
  %1156 = load ptr, ptr %13, align 8, !tbaa !5
  %1157 = load i32, ptr %1156, align 4, !tbaa !9
  %1158 = load i32, ptr %35, align 4, !tbaa !9
  %1159 = sub nsw i32 %1157, %1158
  store i32 %1159, ptr %25, align 4, !tbaa !9
  %1160 = load ptr, ptr %15, align 8, !tbaa !5
  %1161 = load i32, ptr %35, align 4, !tbaa !9
  %1162 = add nsw i32 %1161, 1
  %1163 = load ptr, ptr %12, align 8, !tbaa !5
  %1164 = load i32, ptr %1163, align 4, !tbaa !9
  %1165 = load i32, ptr %33, align 4, !tbaa !9
  %1166 = add nsw i32 %1164, %1165
  %1167 = sub nsw i32 %1166, 1
  %1168 = load i32, ptr %21, align 4, !tbaa !9
  %1169 = mul nsw i32 %1167, %1168
  %1170 = add nsw i32 %1162, %1169
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds %struct.complex, ptr %1160, i64 %1171
  %1173 = load ptr, ptr %15, align 8, !tbaa !5
  %1174 = load i32, ptr %35, align 4, !tbaa !9
  %1175 = add nsw i32 %1174, 1
  %1176 = load ptr, ptr %12, align 8, !tbaa !5
  %1177 = load i32, ptr %1176, align 4, !tbaa !9
  %1178 = load i32, ptr %35, align 4, !tbaa !9
  %1179 = add nsw i32 %1177, %1178
  %1180 = sub nsw i32 %1179, 1
  %1181 = load i32, ptr %21, align 4, !tbaa !9
  %1182 = mul nsw i32 %1180, %1181
  %1183 = add nsw i32 %1175, %1182
  %1184 = sext i32 %1183 to i64
  %1185 = getelementptr inbounds %struct.complex, ptr %1173, i64 %1184
  call void @cswap_(ptr noundef %25, ptr noundef %1172, ptr noundef @c__1, ptr noundef %1185, ptr noundef @c__1)
  br label %1186

1186:                                             ; preds = %1155, %1042
  %1187 = load i32, ptr %33, align 4, !tbaa !9
  %1188 = load ptr, ptr %12, align 8, !tbaa !5
  %1189 = load i32, ptr %1188, align 4, !tbaa !9
  %1190 = load i32, ptr %33, align 4, !tbaa !9
  %1191 = add nsw i32 %1189, %1190
  %1192 = sub nsw i32 %1191, 1
  %1193 = load i32, ptr %21, align 4, !tbaa !9
  %1194 = mul nsw i32 %1192, %1193
  %1195 = add nsw i32 %1187, %1194
  store i32 %1195, ptr %25, align 4, !tbaa !9
  %1196 = load ptr, ptr %15, align 8, !tbaa !5
  %1197 = load i32, ptr %25, align 4, !tbaa !9
  %1198 = sext i32 %1197 to i64
  %1199 = getelementptr inbounds %struct.complex, ptr %1196, i64 %1198
  %1200 = getelementptr inbounds %struct.complex, ptr %1199, i32 0, i32 0
  %1201 = load float, ptr %1200, align 4, !tbaa !11
  %1202 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  store float %1201, ptr %1202, align 4, !tbaa !11
  %1203 = load ptr, ptr %15, align 8, !tbaa !5
  %1204 = load i32, ptr %25, align 4, !tbaa !9
  %1205 = sext i32 %1204 to i64
  %1206 = getelementptr inbounds %struct.complex, ptr %1203, i64 %1205
  %1207 = getelementptr inbounds %struct.complex, ptr %1206, i32 0, i32 1
  %1208 = load float, ptr %1207, align 4, !tbaa !14
  %1209 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  store float %1208, ptr %1209, align 4, !tbaa !14
  %1210 = load i32, ptr %33, align 4, !tbaa !9
  %1211 = load ptr, ptr %12, align 8, !tbaa !5
  %1212 = load i32, ptr %1211, align 4, !tbaa !9
  %1213 = load i32, ptr %33, align 4, !tbaa !9
  %1214 = add nsw i32 %1212, %1213
  %1215 = sub nsw i32 %1214, 1
  %1216 = load i32, ptr %21, align 4, !tbaa !9
  %1217 = mul nsw i32 %1215, %1216
  %1218 = add nsw i32 %1210, %1217
  store i32 %1218, ptr %25, align 4, !tbaa !9
  %1219 = load i32, ptr %35, align 4, !tbaa !9
  %1220 = load ptr, ptr %12, align 8, !tbaa !5
  %1221 = load i32, ptr %1220, align 4, !tbaa !9
  %1222 = load i32, ptr %35, align 4, !tbaa !9
  %1223 = add nsw i32 %1221, %1222
  %1224 = sub nsw i32 %1223, 1
  %1225 = load i32, ptr %21, align 4, !tbaa !9
  %1226 = mul nsw i32 %1224, %1225
  %1227 = add nsw i32 %1219, %1226
  store i32 %1227, ptr %26, align 4, !tbaa !9
  %1228 = load ptr, ptr %15, align 8, !tbaa !5
  %1229 = load i32, ptr %26, align 4, !tbaa !9
  %1230 = sext i32 %1229 to i64
  %1231 = getelementptr inbounds %struct.complex, ptr %1228, i64 %1230
  %1232 = getelementptr inbounds %struct.complex, ptr %1231, i32 0, i32 0
  %1233 = load float, ptr %1232, align 4, !tbaa !11
  %1234 = load ptr, ptr %15, align 8, !tbaa !5
  %1235 = load i32, ptr %25, align 4, !tbaa !9
  %1236 = sext i32 %1235 to i64
  %1237 = getelementptr inbounds %struct.complex, ptr %1234, i64 %1236
  %1238 = getelementptr inbounds %struct.complex, ptr %1237, i32 0, i32 0
  store float %1233, ptr %1238, align 4, !tbaa !11
  %1239 = load ptr, ptr %15, align 8, !tbaa !5
  %1240 = load i32, ptr %26, align 4, !tbaa !9
  %1241 = sext i32 %1240 to i64
  %1242 = getelementptr inbounds %struct.complex, ptr %1239, i64 %1241
  %1243 = getelementptr inbounds %struct.complex, ptr %1242, i32 0, i32 1
  %1244 = load float, ptr %1243, align 4, !tbaa !14
  %1245 = load ptr, ptr %15, align 8, !tbaa !5
  %1246 = load i32, ptr %25, align 4, !tbaa !9
  %1247 = sext i32 %1246 to i64
  %1248 = getelementptr inbounds %struct.complex, ptr %1245, i64 %1247
  %1249 = getelementptr inbounds %struct.complex, ptr %1248, i32 0, i32 1
  store float %1244, ptr %1249, align 4, !tbaa !14
  %1250 = load i32, ptr %35, align 4, !tbaa !9
  %1251 = load ptr, ptr %12, align 8, !tbaa !5
  %1252 = load i32, ptr %1251, align 4, !tbaa !9
  %1253 = load i32, ptr %35, align 4, !tbaa !9
  %1254 = add nsw i32 %1252, %1253
  %1255 = sub nsw i32 %1254, 1
  %1256 = load i32, ptr %21, align 4, !tbaa !9
  %1257 = mul nsw i32 %1255, %1256
  %1258 = add nsw i32 %1250, %1257
  store i32 %1258, ptr %25, align 4, !tbaa !9
  %1259 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 0
  %1260 = load float, ptr %1259, align 4, !tbaa !11
  %1261 = load ptr, ptr %15, align 8, !tbaa !5
  %1262 = load i32, ptr %25, align 4, !tbaa !9
  %1263 = sext i32 %1262 to i64
  %1264 = getelementptr inbounds %struct.complex, ptr %1261, i64 %1263
  %1265 = getelementptr inbounds %struct.complex, ptr %1264, i32 0, i32 0
  store float %1260, ptr %1265, align 4, !tbaa !11
  %1266 = getelementptr inbounds %struct.complex, ptr %37, i32 0, i32 1
  %1267 = load float, ptr %1266, align 4, !tbaa !14
  %1268 = load ptr, ptr %15, align 8, !tbaa !5
  %1269 = load i32, ptr %25, align 4, !tbaa !9
  %1270 = sext i32 %1269 to i64
  %1271 = getelementptr inbounds %struct.complex, ptr %1268, i64 %1270
  %1272 = getelementptr inbounds %struct.complex, ptr %1271, i32 0, i32 1
  store float %1267, ptr %1272, align 4, !tbaa !14
  %1273 = load i32, ptr %33, align 4, !tbaa !9
  %1274 = sub nsw i32 %1273, 1
  store i32 %1274, ptr %25, align 4, !tbaa !9
  %1275 = load ptr, ptr %18, align 8, !tbaa !5
  %1276 = load i32, ptr %33, align 4, !tbaa !9
  %1277 = load i32, ptr %23, align 4, !tbaa !9
  %1278 = add nsw i32 %1276, %1277
  %1279 = sext i32 %1278 to i64
  %1280 = getelementptr inbounds %struct.complex, ptr %1275, i64 %1279
  %1281 = load ptr, ptr %19, align 8, !tbaa !5
  %1282 = load ptr, ptr %18, align 8, !tbaa !5
  %1283 = load i32, ptr %35, align 4, !tbaa !9
  %1284 = load i32, ptr %23, align 4, !tbaa !9
  %1285 = add nsw i32 %1283, %1284
  %1286 = sext i32 %1285 to i64
  %1287 = getelementptr inbounds %struct.complex, ptr %1282, i64 %1286
  %1288 = load ptr, ptr %19, align 8, !tbaa !5
  call void @cswap_(ptr noundef %25, ptr noundef %1280, ptr noundef %1281, ptr noundef %1287, ptr noundef %1288)
  %1289 = load i32, ptr %35, align 4, !tbaa !9
  %1290 = load ptr, ptr %17, align 8, !tbaa !5
  %1291 = load i32, ptr %33, align 4, !tbaa !9
  %1292 = sext i32 %1291 to i64
  %1293 = getelementptr inbounds i32, ptr %1290, i64 %1292
  store i32 %1289, ptr %1293, align 4, !tbaa !9
  %1294 = load i32, ptr %33, align 4, !tbaa !9
  %1295 = load i32, ptr %34, align 4, !tbaa !9
  %1296 = sub nsw i32 %1295, 1
  %1297 = icmp sgt i32 %1294, %1296
  br i1 %1297, label %1298, label %1317

1298:                                             ; preds = %1186
  %1299 = load i32, ptr %33, align 4, !tbaa !9
  %1300 = load i32, ptr %34, align 4, !tbaa !9
  %1301 = sub nsw i32 %1299, %1300
  %1302 = add nsw i32 %1301, 1
  store i32 %1302, ptr %25, align 4, !tbaa !9
  %1303 = load ptr, ptr %15, align 8, !tbaa !5
  %1304 = load i32, ptr %33, align 4, !tbaa !9
  %1305 = load i32, ptr %21, align 4, !tbaa !9
  %1306 = add nsw i32 %1304, %1305
  %1307 = sext i32 %1306 to i64
  %1308 = getelementptr inbounds %struct.complex, ptr %1303, i64 %1307
  %1309 = load ptr, ptr %16, align 8, !tbaa !5
  %1310 = load ptr, ptr %15, align 8, !tbaa !5
  %1311 = load i32, ptr %35, align 4, !tbaa !9
  %1312 = load i32, ptr %21, align 4, !tbaa !9
  %1313 = add nsw i32 %1311, %1312
  %1314 = sext i32 %1313 to i64
  %1315 = getelementptr inbounds %struct.complex, ptr %1310, i64 %1314
  %1316 = load ptr, ptr %16, align 8, !tbaa !5
  call void @cswap_(ptr noundef %25, ptr noundef %1308, ptr noundef %1309, ptr noundef %1315, ptr noundef %1316)
  br label %1317

1317:                                             ; preds = %1298, %1186
  br label %1326

1318:                                             ; preds = %1037, %1007
  %1319 = load i32, ptr %30, align 4, !tbaa !9
  %1320 = add nsw i32 %1319, 1
  %1321 = load ptr, ptr %17, align 8, !tbaa !5
  %1322 = load i32, ptr %30, align 4, !tbaa !9
  %1323 = add nsw i32 %1322, 1
  %1324 = sext i32 %1323 to i64
  %1325 = getelementptr inbounds i32, ptr %1321, i64 %1324
  store i32 %1320, ptr %1325, align 4, !tbaa !9
  br label %1326

1326:                                             ; preds = %1318, %1317
  %1327 = load i32, ptr %30, align 4, !tbaa !9
  %1328 = add nsw i32 %1327, 1
  %1329 = load i32, ptr %31, align 4, !tbaa !9
  %1330 = load i32, ptr %21, align 4, !tbaa !9
  %1331 = mul nsw i32 %1329, %1330
  %1332 = add nsw i32 %1328, %1331
  store i32 %1332, ptr %25, align 4, !tbaa !9
  %1333 = load ptr, ptr %20, align 8, !tbaa !5
  %1334 = getelementptr inbounds %struct.complex, ptr %1333, i64 2
  %1335 = getelementptr inbounds %struct.complex, ptr %1334, i32 0, i32 0
  %1336 = load float, ptr %1335, align 4, !tbaa !11
  %1337 = load ptr, ptr %15, align 8, !tbaa !5
  %1338 = load i32, ptr %25, align 4, !tbaa !9
  %1339 = sext i32 %1338 to i64
  %1340 = getelementptr inbounds %struct.complex, ptr %1337, i64 %1339
  %1341 = getelementptr inbounds %struct.complex, ptr %1340, i32 0, i32 0
  store float %1336, ptr %1341, align 4, !tbaa !11
  %1342 = load ptr, ptr %20, align 8, !tbaa !5
  %1343 = getelementptr inbounds %struct.complex, ptr %1342, i64 2
  %1344 = getelementptr inbounds %struct.complex, ptr %1343, i32 0, i32 1
  %1345 = load float, ptr %1344, align 4, !tbaa !14
  %1346 = load ptr, ptr %15, align 8, !tbaa !5
  %1347 = load i32, ptr %25, align 4, !tbaa !9
  %1348 = sext i32 %1347 to i64
  %1349 = getelementptr inbounds %struct.complex, ptr %1346, i64 %1348
  %1350 = getelementptr inbounds %struct.complex, ptr %1349, i32 0, i32 1
  store float %1345, ptr %1350, align 4, !tbaa !14
  %1351 = load i32, ptr %30, align 4, !tbaa !9
  %1352 = load ptr, ptr %14, align 8, !tbaa !5
  %1353 = load i32, ptr %1352, align 4, !tbaa !9
  %1354 = icmp slt i32 %1351, %1353
  br i1 %1354, label %1355, label %1380

1355:                                             ; preds = %1326
  %1356 = load ptr, ptr %13, align 8, !tbaa !5
  %1357 = load i32, ptr %1356, align 4, !tbaa !9
  %1358 = load i32, ptr %30, align 4, !tbaa !9
  %1359 = sub nsw i32 %1357, %1358
  store i32 %1359, ptr %25, align 4, !tbaa !9
  %1360 = load ptr, ptr %15, align 8, !tbaa !5
  %1361 = load i32, ptr %30, align 4, !tbaa !9
  %1362 = add nsw i32 %1361, 1
  %1363 = load i32, ptr %31, align 4, !tbaa !9
  %1364 = add nsw i32 %1363, 1
  %1365 = load i32, ptr %21, align 4, !tbaa !9
  %1366 = mul nsw i32 %1364, %1365
  %1367 = add nsw i32 %1362, %1366
  %1368 = sext i32 %1367 to i64
  %1369 = getelementptr inbounds %struct.complex, ptr %1360, i64 %1368
  %1370 = load ptr, ptr %18, align 8, !tbaa !5
  %1371 = load i32, ptr %30, align 4, !tbaa !9
  %1372 = add nsw i32 %1371, 1
  %1373 = load i32, ptr %30, align 4, !tbaa !9
  %1374 = add nsw i32 %1373, 1
  %1375 = load i32, ptr %23, align 4, !tbaa !9
  %1376 = mul nsw i32 %1374, %1375
  %1377 = add nsw i32 %1372, %1376
  %1378 = sext i32 %1377 to i64
  %1379 = getelementptr inbounds %struct.complex, ptr %1370, i64 %1378
  call void @ccopy_(ptr noundef %25, ptr noundef %1369, ptr noundef @c__1, ptr noundef %1379, ptr noundef @c__1)
  br label %1380

1380:                                             ; preds = %1355, %1326
  %1381 = load i32, ptr %30, align 4, !tbaa !9
  %1382 = load ptr, ptr %13, align 8, !tbaa !5
  %1383 = load i32, ptr %1382, align 4, !tbaa !9
  %1384 = sub nsw i32 %1383, 1
  %1385 = icmp slt i32 %1381, %1384
  br i1 %1385, label %1386, label %1489

1386:                                             ; preds = %1380
  %1387 = load i32, ptr %30, align 4, !tbaa !9
  %1388 = add nsw i32 %1387, 1
  %1389 = load i32, ptr %31, align 4, !tbaa !9
  %1390 = load i32, ptr %21, align 4, !tbaa !9
  %1391 = mul nsw i32 %1389, %1390
  %1392 = add nsw i32 %1388, %1391
  store i32 %1392, ptr %25, align 4, !tbaa !9
  %1393 = load ptr, ptr %15, align 8, !tbaa !5
  %1394 = load i32, ptr %25, align 4, !tbaa !9
  %1395 = sext i32 %1394 to i64
  %1396 = getelementptr inbounds %struct.complex, ptr %1393, i64 %1395
  %1397 = getelementptr inbounds %struct.complex, ptr %1396, i32 0, i32 0
  %1398 = load float, ptr %1397, align 4, !tbaa !11
  %1399 = fcmp une float %1398, 0.000000e+00
  br i1 %1399, label %1408, label %1400

1400:                                             ; preds = %1386
  %1401 = load ptr, ptr %15, align 8, !tbaa !5
  %1402 = load i32, ptr %25, align 4, !tbaa !9
  %1403 = sext i32 %1402 to i64
  %1404 = getelementptr inbounds %struct.complex, ptr %1401, i64 %1403
  %1405 = getelementptr inbounds %struct.complex, ptr %1404, i32 0, i32 1
  %1406 = load float, ptr %1405, align 4, !tbaa !14
  %1407 = fcmp une float %1406, 0.000000e+00
  br i1 %1407, label %1408, label %1472

1408:                                             ; preds = %1400, %1386
  %1409 = call <2 x float> @Cf(ptr noundef @c_b2)
  store <2 x float> %1409, ptr %43, align 4
  %1410 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 0
  %1411 = load float, ptr %1410, align 4
  %1412 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 1
  %1413 = load float, ptr %1412, align 4
  %1414 = load ptr, ptr %15, align 8, !tbaa !5
  %1415 = load i32, ptr %30, align 4, !tbaa !9
  %1416 = add nsw i32 %1415, 1
  %1417 = load i32, ptr %31, align 4, !tbaa !9
  %1418 = load i32, ptr %21, align 4, !tbaa !9
  %1419 = mul nsw i32 %1417, %1418
  %1420 = add nsw i32 %1416, %1419
  %1421 = sext i32 %1420 to i64
  %1422 = getelementptr inbounds %struct.complex, ptr %1414, i64 %1421
  %1423 = call <2 x float> @Cf(ptr noundef %1422)
  store <2 x float> %1423, ptr %44, align 4
  %1424 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 0
  %1425 = load float, ptr %1424, align 4
  %1426 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 1
  %1427 = load float, ptr %1426, align 4
  %1428 = call <2 x float> @__divsc3(float noundef %1411, float noundef %1413, float noundef %1425, float noundef %1427) #5
  store <2 x float> %1428, ptr %45, align 4
  %1429 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 0
  %1430 = load float, ptr %1429, align 4
  %1431 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 1
  %1432 = load float, ptr %1431, align 4
  %1433 = call ptr @_pCf(ptr noundef %28)
  %1434 = getelementptr inbounds { float, float }, ptr %1433, i32 0, i32 0
  %1435 = getelementptr inbounds { float, float }, ptr %1433, i32 0, i32 1
  store float %1430, ptr %1434, align 4
  store float %1432, ptr %1435, align 4
  %1436 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 0
  %1437 = load float, ptr %1436, align 4, !tbaa !11
  %1438 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 0
  store float %1437, ptr %1438, align 4, !tbaa !11
  %1439 = getelementptr inbounds %struct.complex, ptr %28, i32 0, i32 1
  %1440 = load float, ptr %1439, align 4, !tbaa !14
  %1441 = getelementptr inbounds %struct.complex, ptr %32, i32 0, i32 1
  store float %1440, ptr %1441, align 4, !tbaa !14
  %1442 = load ptr, ptr %13, align 8, !tbaa !5
  %1443 = load i32, ptr %1442, align 4, !tbaa !9
  %1444 = load i32, ptr %30, align 4, !tbaa !9
  %1445 = sub nsw i32 %1443, %1444
  %1446 = sub nsw i32 %1445, 1
  store i32 %1446, ptr %25, align 4, !tbaa !9
  %1447 = load ptr, ptr %20, align 8, !tbaa !5
  %1448 = getelementptr inbounds %struct.complex, ptr %1447, i64 3
  %1449 = load ptr, ptr %15, align 8, !tbaa !5
  %1450 = load i32, ptr %30, align 4, !tbaa !9
  %1451 = add nsw i32 %1450, 2
  %1452 = load i32, ptr %31, align 4, !tbaa !9
  %1453 = load i32, ptr %21, align 4, !tbaa !9
  %1454 = mul nsw i32 %1452, %1453
  %1455 = add nsw i32 %1451, %1454
  %1456 = sext i32 %1455 to i64
  %1457 = getelementptr inbounds %struct.complex, ptr %1449, i64 %1456
  call void @ccopy_(ptr noundef %25, ptr noundef %1448, ptr noundef @c__1, ptr noundef %1457, ptr noundef @c__1)
  %1458 = load ptr, ptr %13, align 8, !tbaa !5
  %1459 = load i32, ptr %1458, align 4, !tbaa !9
  %1460 = load i32, ptr %30, align 4, !tbaa !9
  %1461 = sub nsw i32 %1459, %1460
  %1462 = sub nsw i32 %1461, 1
  store i32 %1462, ptr %25, align 4, !tbaa !9
  %1463 = load ptr, ptr %15, align 8, !tbaa !5
  %1464 = load i32, ptr %30, align 4, !tbaa !9
  %1465 = add nsw i32 %1464, 2
  %1466 = load i32, ptr %31, align 4, !tbaa !9
  %1467 = load i32, ptr %21, align 4, !tbaa !9
  %1468 = mul nsw i32 %1466, %1467
  %1469 = add nsw i32 %1465, %1468
  %1470 = sext i32 %1469 to i64
  %1471 = getelementptr inbounds %struct.complex, ptr %1463, i64 %1470
  call void @cscal_(ptr noundef %25, ptr noundef %32, ptr noundef %1471, ptr noundef @c__1)
  br label %1488

1472:                                             ; preds = %1400
  %1473 = load ptr, ptr %13, align 8, !tbaa !5
  %1474 = load i32, ptr %1473, align 4, !tbaa !9
  %1475 = load i32, ptr %30, align 4, !tbaa !9
  %1476 = sub nsw i32 %1474, %1475
  %1477 = sub nsw i32 %1476, 1
  store i32 %1477, ptr %25, align 4, !tbaa !9
  %1478 = load ptr, ptr %15, align 8, !tbaa !5
  %1479 = load i32, ptr %30, align 4, !tbaa !9
  %1480 = add nsw i32 %1479, 2
  %1481 = load i32, ptr %31, align 4, !tbaa !9
  %1482 = load i32, ptr %21, align 4, !tbaa !9
  %1483 = mul nsw i32 %1481, %1482
  %1484 = add nsw i32 %1480, %1483
  %1485 = sext i32 %1484 to i64
  %1486 = getelementptr inbounds %struct.complex, ptr %1478, i64 %1485
  %1487 = load ptr, ptr %16, align 8, !tbaa !5
  call void @claset_(ptr noundef @.str.2, ptr noundef %25, ptr noundef @c__1, ptr noundef @c_b1, ptr noundef @c_b1, ptr noundef %1486, ptr noundef %1487)
  br label %1488

1488:                                             ; preds = %1472, %1408
  br label %1489

1489:                                             ; preds = %1488, %1380
  br label %1490

1490:                                             ; preds = %1489, %935
  %1491 = load i32, ptr %30, align 4, !tbaa !9
  %1492 = add nsw i32 %1491, 1
  store i32 %1492, ptr %30, align 4, !tbaa !9
  br label %790

1493:                                             ; preds = %806
  br label %1494

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

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

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

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 @ccopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #2

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

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

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

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

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

declare <2 x float> @__divsc3(float, float, float, float)

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !13, i64 0}
!12 = !{!"", !13, i64 0, !13, i64 4}
!13 = !{!"float", !7, i64 0}
!14 = !{!12, !13, i64 4}
!15 = !{!13, !13, i64 0}


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

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

.preheader547:                                    ; preds = %10
  %invariant.gep = getelementptr i8, ptr %18, i64 8
  %27 = load i32, ptr %2, align 4, !tbaa !5
  %28 = load i32, ptr %3, align 4, !tbaa !5
  %.553 = tail call i32 @llvm.smin.i32(i32 %27, i32 %28)
  %29 = icmp slt i32 %.553, 1
  br i1 %29, label %.loopexit, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader547
  %30 = getelementptr inbounds i8, ptr %12, i64 4
  %31 = mul nsw i32 %25, %19
  %32 = add i32 %19, 1
  %33 = getelementptr inbounds i8, ptr %14, i64 4
  %34 = getelementptr inbounds i8, ptr %9, i64 8
  %35 = add i32 %23, -2
  %36 = getelementptr inbounds i8, ptr %9, i64 16
  %37 = sext i32 %24 to i64
  %38 = sext i32 %19 to i64
  %39 = sext i32 %16 to i64
  %40 = sext i32 %25 to i64
  %41 = sext i32 %31 to i64
  %invariant.gep599 = getelementptr %struct.complex, ptr %21, i64 %41
  %invariant.gep601 = getelementptr %struct.complex, ptr %21, i64 %38
  br label %57

.preheader:                                       ; preds = %10
  %42 = load i32, ptr %2, align 4, !tbaa !5
  %43 = load i32, ptr %3, align 4, !tbaa !5
  %.545557 = tail call i32 @llvm.smin.i32(i32 %42, i32 %43)
  %44 = icmp slt i32 %.545557, 1
  br i1 %44, label %.loopexit, label %.lr.ph559

.lr.ph559:                                        ; preds = %.preheader
  %45 = getelementptr inbounds i8, ptr %12, i64 4
  %46 = mul nsw i32 %25, %19
  %47 = add i32 %19, 1
  %48 = getelementptr inbounds i8, ptr %14, i64 4
  %49 = getelementptr inbounds i8, ptr %9, i64 8
  %50 = add i32 %23, -2
  %51 = getelementptr inbounds i8, ptr %9, i64 16
  %52 = sext i32 %24 to i64
  %53 = sext i32 %16 to i64
  %54 = sext i32 %19 to i64
  %55 = sext i32 %25 to i64
  %56 = sext i32 %46 to i64
  %invariant.gep603 = getelementptr %struct.complex, ptr %18, i64 %53
  %invariant.gep605 = getelementptr %struct.complex, ptr %21, i64 %56
  %invariant.gep607 = getelementptr i8, ptr %18, i64 8
  %invariant.gep609 = getelementptr %struct.complex, ptr %21, i64 %54
  %invariant.gep611 = getelementptr %struct.complex, ptr %18, i64 %53
  %invariant.gep613 = getelementptr i8, ptr %18, i64 16
  %invariant.gep615 = getelementptr i8, ptr %18, i64 16
  br label %254

57:                                               ; preds = %.lr.ph, %250
  %indvars.iv = phi i64 [ 1, %.lr.ph ], [ %indvars.iv.next.pre-phi, %250 ]
  %58 = phi i32 [ %27, %.lr.ph ], [ %251, %250 ]
  %indvars565 = trunc i64 %indvars.iv to i32
  %59 = load i32, ptr %1, align 4, !tbaa !5
  %60 = add nsw i32 %59, %indvars565
  %61 = add nsw i32 %60, -1
  %reass.sub = sub i32 %58, %indvars565
  %62 = add i32 %reass.sub, 1
  store i32 %62, ptr %15, align 4, !tbaa !5
  %63 = icmp sgt i32 %60, 3
  br i1 %63, label %64, label %._crit_edge576

._crit_edge576:                                   ; preds = %57
  %.pre587 = mul i32 %32, %indvars565
  %.pre589 = sext i32 %.pre587 to i64
  br label %71

64:                                               ; preds = %57
  %65 = trunc i64 %indvars.iv to i32
  %66 = sub i32 %65, %25
  store i32 %66, ptr %11, align 4, !tbaa !5
  %67 = mul nsw i64 %indvars.iv, %39
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %67
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  store i32 %66, ptr %11, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %12, align 8, !tbaa !9
  %gep600 = getelementptr %struct.complex, ptr %invariant.gep599, i64 %indvars.iv
  %68 = mul i32 %32, %indvars565
  %69 = sext i32 %68 to i64
  %70 = getelementptr inbounds %struct.complex, ptr %21, i64 %69
  call void @cgemv_(ptr noundef nonnull @.str.1, ptr noundef nonnull %15, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %gep600, ptr noundef nonnull %8, ptr noundef %gep, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b2, ptr noundef %70, ptr noundef nonnull @c__1) #6
  store i32 %66, ptr %11, align 4, !tbaa !5
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %gep, ptr noundef nonnull @c__1) #6
  br label %71

71:                                               ; preds = %._crit_edge576, %64
  %.pre-phi590 = phi i64 [ %.pre589, %._crit_edge576 ], [ %69, %64 ]
  %72 = getelementptr inbounds %struct.complex, ptr %21, i64 %.pre-phi590
  call void @ccopy_(ptr noundef nonnull %15, ptr noundef %72, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull @c__1) #6
  %73 = icmp sgt i64 %indvars.iv, %40
  %74 = trunc i64 %indvars.iv to i32
  %75 = mul i32 %16, %74
  br i1 %73, label %76, label %._crit_edge575

76:                                               ; preds = %71
  %77 = add i32 %75, -2
  %78 = add i32 %77, %60
  %79 = sext i32 %78 to i64
  %80 = getelementptr inbounds %struct.complex, ptr %18, i64 %79
  %81 = call <2 x float> @Cf(ptr noundef %80)
  %.sroa.07.0.vec.extract = extractelement <2 x float> %81, i64 0
  %.sroa.07.4.vec.extract = extractelement <2 x float> %81, i64 1
  %82 = fneg float %.sroa.07.4.vec.extract
  %83 = call ptr @_pCf(ptr noundef nonnull %13)
  %84 = getelementptr inbounds i8, ptr %83, i64 4
  store float %.sroa.07.0.vec.extract, ptr %83, align 4
  store float %82, ptr %84, align 4
  %85 = load <2 x float>, ptr %13, align 8, !tbaa !9
  %86 = fneg <2 x float> %85
  store <2 x float> %86, ptr %12, align 8, !tbaa !9
  store <2 x float> %86, ptr %14, align 8, !tbaa !9
  %87 = add i32 %75, -3
  %88 = add i32 %87, %60
  %89 = sext i32 %88 to i64
  %90 = getelementptr inbounds %struct.complex, ptr %18, i64 %89
  call void @caxpy_(ptr noundef nonnull %15, ptr noundef nonnull %14, ptr noundef %90, ptr noundef nonnull %5, ptr noundef %9, ptr noundef nonnull @c__1) #6
  br label %._crit_edge575

._crit_edge575:                                   ; preds = %71, %76
  %91 = add nsw i32 %61, %75
  store i32 %91, ptr %11, align 4, !tbaa !5
  %92 = load float, ptr %9, align 4, !tbaa !11
  %93 = sext i32 %91 to i64
  %94 = getelementptr inbounds %struct.complex, ptr %18, i64 %93
  store float %92, ptr %94, align 4, !tbaa !11
  %95 = getelementptr inbounds %struct.complex, ptr %18, i64 %93, i32 1
  store float 0.000000e+00, ptr %95, align 4, !tbaa !13
  %96 = load i32, ptr %2, align 4, !tbaa !5
  %97 = sext i32 %96 to i64
  %98 = icmp slt i64 %indvars.iv, %97
  br i1 %98, label %99, label %._crit_edge574

._crit_edge574:                                   ; preds = %._crit_edge575
  %.pre595 = add nuw nsw i64 %indvars.iv, 1
  br label %250

99:                                               ; preds = %._crit_edge575
  %100 = icmp sgt i32 %60, 2
  br i1 %100, label %101, label %111

101:                                              ; preds = %99
  %102 = fneg float %92
  store float %102, ptr %12, align 8, !tbaa !11
  store float -0.000000e+00, ptr %30, align 4, !tbaa !13
  store float %102, ptr %14, align 8, !tbaa !11
  store float -0.000000e+00, ptr %33, align 4, !tbaa !13
  %103 = sub nsw i32 %96, %indvars565
  store i32 %103, ptr %11, align 4, !tbaa !5
  %104 = trunc i64 %indvars.iv to i32
  %105 = add i32 %104, 1
  %106 = mul i32 %105, %16
  %107 = add i32 %106, -2
  %108 = add i32 %107, %60
  %109 = sext i32 %108 to i64
  %110 = getelementptr inbounds %struct.complex, ptr %18, i64 %109
  call void @caxpy_(ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %110, ptr noundef nonnull %5, ptr noundef nonnull %34, ptr noundef nonnull @c__1) #6
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  br label %111

111:                                              ; preds = %101, %99
  %112 = phi i32 [ %.pre, %101 ], [ %96, %99 ]
  %113 = sub nsw i32 %112, %indvars565
  store i32 %113, ptr %11, align 4, !tbaa !5
  %114 = call i32 @icamax_(ptr noundef nonnull %11, ptr noundef nonnull %34, ptr noundef nonnull @c__1) #6
  %115 = add nsw i32 %114, 1
  %116 = sext i32 %115 to i64
  %117 = getelementptr inbounds %struct.complex, ptr %22, i64 %116
  %118 = load <2 x float>, ptr %117, align 4, !tbaa !9
  %.not543 = icmp eq i32 %115, 2
  br i1 %.not543, label %189, label %119

119:                                              ; preds = %111
  %120 = extractelement <2 x float> %118, i64 0
  %121 = fcmp une float %120, 0.000000e+00
  %122 = extractelement <2 x float> %118, i64 1
  %123 = fcmp une float %122, 0.000000e+00
  %or.cond = select i1 %121, i1 true, i1 %123
  br i1 %or.cond, label %124, label %189

124:                                              ; preds = %119
  %125 = load <2 x float>, ptr %34, align 4, !tbaa !9
  store <2 x float> %125, ptr %117, align 4, !tbaa !9
  store <2 x float> %118, ptr %34, align 4, !tbaa !9
  %126 = add nuw nsw i32 %indvars565, 2
  %127 = add nuw nsw i64 %indvars.iv, 1
  %128 = add nuw nsw i32 %indvars565, 1
  %129 = add i32 %114, %indvars565
  %130 = add i32 %114, -1
  %131 = add i32 %114, -2
  store i32 %131, ptr %11, align 4, !tbaa !5
  %132 = load i32, ptr %1, align 4, !tbaa !5
  %133 = mul nsw i32 %126, %16
  %134 = add i32 %133, %indvars565
  %135 = add i32 %134, %132
  %136 = sext i32 %135 to i64
  %137 = getelementptr inbounds %struct.complex, ptr %18, i64 %136
  %138 = mul nsw i32 %129, %16
  %139 = trunc nsw i64 %127 to i32
  %140 = add i32 %138, %139
  %141 = add i32 %140, %132
  %142 = sext i32 %141 to i64
  %143 = getelementptr inbounds %struct.complex, ptr %18, i64 %142
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %137, ptr noundef nonnull %5, ptr noundef %143, ptr noundef nonnull @c__1) #6
  store i32 %130, ptr %11, align 4, !tbaa !5
  %144 = load i32, ptr %1, align 4, !tbaa !5
  %145 = add i32 %134, %144
  %146 = sext i32 %145 to i64
  %147 = getelementptr inbounds %struct.complex, ptr %18, i64 %146
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %147, ptr noundef nonnull %5) #6
  store i32 %131, ptr %11, align 4, !tbaa !5
  %148 = load i32, ptr %1, align 4, !tbaa !5
  %149 = add i32 %140, %148
  %150 = sext i32 %149 to i64
  %151 = getelementptr inbounds %struct.complex, ptr %18, i64 %150
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %151, ptr noundef nonnull @c__1) #6
  %152 = load i32, ptr %2, align 4, !tbaa !5
  %153 = icmp slt i32 %129, %152
  br i1 %153, label %154, label %._crit_edge

._crit_edge:                                      ; preds = %124
  %.pre596 = add i32 %129, -1
  br label %168

154:                                              ; preds = %124
  %155 = add nsw i32 %115, %indvars565
  %156 = sub nsw i32 %152, %129
  store i32 %156, ptr %11, align 4, !tbaa !5
  %157 = load i32, ptr %1, align 4, !tbaa !5
  %158 = mul nsw i32 %155, %16
  %159 = add i32 %157, %158
  %160 = add i32 %159, %indvars565
  %161 = sext i32 %160 to i64
  %162 = getelementptr inbounds %struct.complex, ptr %18, i64 %161
  %163 = add i32 %129, -1
  %164 = add i32 %163, %158
  %165 = add i32 %164, %157
  %166 = sext i32 %165 to i64
  %167 = getelementptr inbounds %struct.complex, ptr %18, i64 %166
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %162, ptr noundef nonnull %5, ptr noundef %167, ptr noundef nonnull %5) #6
  br label %168

168:                                              ; preds = %._crit_edge, %154
  %.pre-phi597 = phi i32 [ %.pre596, %._crit_edge ], [ %163, %154 ]
  %169 = load i32, ptr %1, align 4, !tbaa !5
  %170 = mul nsw i64 %127, %39
  %171 = mul nsw i32 %128, %16
  %172 = add i32 %171, %indvars565
  %173 = add i32 %172, %169
  %174 = sext i32 %173 to i64
  %175 = getelementptr inbounds %struct.complex, ptr %18, i64 %174
  %176 = add i32 %.pre-phi597, %138
  %177 = add i32 %176, %169
  %178 = sext i32 %177 to i64
  %179 = getelementptr inbounds %struct.complex, ptr %18, i64 %178
  %180 = load <2 x float>, ptr %175, align 4, !tbaa !9
  %181 = load <2 x float>, ptr %179, align 4, !tbaa !9
  store <2 x float> %181, ptr %175, align 4, !tbaa !9
  store <2 x float> %180, ptr %179, align 4, !tbaa !9
  store i32 %indvars565, ptr %11, align 4, !tbaa !5
  %gep602 = getelementptr %struct.complex, ptr %invariant.gep601, i64 %127
  %182 = add nsw i32 %129, %19
  %183 = sext i32 %182 to i64
  %184 = getelementptr inbounds %struct.complex, ptr %21, i64 %183
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %gep602, ptr noundef nonnull %8, ptr noundef %184, ptr noundef nonnull %8) #6
  %185 = getelementptr i32, ptr %6, i64 %indvars.iv
  store i32 %129, ptr %185, align 4, !tbaa !5
  %.not544 = icmp slt i64 %indvars.iv, %37
  br i1 %.not544, label %193, label %186

186:                                              ; preds = %168
  %187 = add i32 %35, %139
  store i32 %187, ptr %11, align 4, !tbaa !5
  %gep550 = getelementptr %struct.complex, ptr %invariant.gep, i64 %170
  %188 = sext i32 %138 to i64
  %gep552 = getelementptr %struct.complex, ptr %invariant.gep, i64 %188
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %gep550, ptr noundef nonnull @c__1, ptr noundef %gep552, ptr noundef nonnull @c__1) #6
  br label %193

189:                                              ; preds = %119, %111
  %190 = add nuw nsw i64 %indvars.iv, 1
  %191 = getelementptr i32, ptr %6, i64 %indvars.iv
  %192 = trunc nsw i64 %190 to i32
  store i32 %192, ptr %191, align 4, !tbaa !5
  %.pre572 = mul nsw i64 %190, %39
  br label %193

193:                                              ; preds = %168, %186, %189
  %.pre-phi573 = phi i64 [ %170, %168 ], [ %170, %186 ], [ %.pre572, %189 ]
  %.pre-phi571 = phi i64 [ %127, %168 ], [ %127, %186 ], [ %190, %189 ]
  %194 = trunc nsw i64 %.pre-phi573 to i32
  %195 = add nsw i32 %61, %194
  store i32 %195, ptr %11, align 4, !tbaa !5
  %196 = sext i32 %195 to i64
  %197 = getelementptr inbounds %struct.complex, ptr %18, i64 %196
  %198 = load <2 x float>, ptr %34, align 4, !tbaa !9
  store <2 x float> %198, ptr %197, align 4, !tbaa !9
  %199 = load i32, ptr %3, align 4, !tbaa !5
  %200 = sext i32 %199 to i64
  %201 = icmp slt i64 %indvars.iv, %200
  br i1 %201, label %202, label %212

202:                                              ; preds = %193
  %203 = load i32, ptr %2, align 4, !tbaa !5
  %204 = sub nsw i32 %203, %indvars565
  store i32 %204, ptr %11, align 4, !tbaa !5
  %205 = sext i32 %60 to i64
  %206 = getelementptr %struct.complex, ptr %18, i64 %.pre-phi573
  %207 = getelementptr %struct.complex, ptr %206, i64 %205
  %208 = trunc nsw i64 %.pre-phi571 to i32
  %209 = mul i32 %32, %208
  %210 = sext i32 %209 to i64
  %211 = getelementptr inbounds %struct.complex, ptr %21, i64 %210
  call void @ccopy_(ptr noundef nonnull %11, ptr noundef %207, ptr noundef nonnull %5, ptr noundef %211, ptr noundef nonnull @c__1) #6
  br label %212

212:                                              ; preds = %202, %193
  %213 = load i32, ptr %2, align 4, !tbaa !5
  %214 = add nsw i32 %213, -1
  %215 = sext i32 %214 to i64
  %216 = icmp slt i64 %indvars.iv, %215
  br i1 %216, label %217, label %250

217:                                              ; preds = %212
  store i32 %195, ptr %11, align 4, !tbaa !5
  %218 = load float, ptr %197, align 4, !tbaa !11
  %219 = fcmp une float %218, 0.000000e+00
  br i1 %219, label %224, label %220

220:                                              ; preds = %217
  %221 = getelementptr inbounds i8, ptr %197, i64 4
  %222 = load float, ptr %221, align 4, !tbaa !13
  %223 = fcmp une float %222, 0.000000e+00
  br i1 %223, label %224, label %241

224:                                              ; preds = %220, %217
  %225 = call <2 x float> @Cf(ptr noundef nonnull @c_b2)
  %.sroa.06.0.vec.extract = extractelement <2 x float> %225, i64 0
  %.sroa.06.4.vec.extract = extractelement <2 x float> %225, i64 1
  %226 = call <2 x float> @Cf(ptr noundef nonnull %197)
  %.sroa.05.0.vec.extract = extractelement <2 x float> %226, i64 0
  %.sroa.05.4.vec.extract = extractelement <2 x float> %226, i64 1
  %227 = call <2 x float> @__divsc3(float noundef %.sroa.06.0.vec.extract, float noundef %.sroa.06.4.vec.extract, float noundef %.sroa.05.0.vec.extract, float noundef %.sroa.05.4.vec.extract) #6
  %228 = call ptr @_pCf(ptr noundef nonnull %12)
  store <2 x float> %227, ptr %228, align 4
  %229 = load <2 x float>, ptr %12, align 8, !tbaa !9
  store <2 x float> %229, ptr %14, align 8, !tbaa !9
  %230 = load i32, ptr %2, align 4, !tbaa !5
  %231 = trunc i64 %indvars.iv to i32
  %232 = xor i32 %231, -1
  %233 = add i32 %230, %232
  store i32 %233, ptr %11, align 4, !tbaa !5
  %234 = add nuw nsw i64 %indvars.iv, 2
  %235 = mul nsw i64 %234, %39
  %236 = sext i32 %61 to i64
  %237 = getelementptr %struct.complex, ptr %18, i64 %235
  %238 = getelementptr %struct.complex, ptr %237, i64 %236
  call void @ccopy_(ptr noundef nonnull %11, ptr noundef nonnull %36, ptr noundef nonnull @c__1, ptr noundef %238, ptr noundef nonnull %5) #6
  %239 = load i32, ptr %2, align 4, !tbaa !5
  %240 = add i32 %239, %232
  store i32 %240, ptr %11, align 4, !tbaa !5
  call void @cscal_(ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %238, ptr noundef nonnull %5) #6
  br label %250

241:                                              ; preds = %220
  %242 = trunc i64 %indvars.iv to i32
  %243 = xor i32 %242, -1
  %244 = add i32 %213, %243
  store i32 %244, ptr %11, align 4, !tbaa !5
  %245 = add nuw nsw i64 %indvars.iv, 2
  %246 = mul nsw i64 %245, %39
  %247 = sext i32 %61 to i64
  %248 = getelementptr %struct.complex, ptr %18, i64 %246
  %249 = getelementptr %struct.complex, ptr %248, i64 %247
  call void @claset_(ptr noundef nonnull @.str.2, ptr noundef nonnull @c__1, ptr noundef nonnull %11, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %249, ptr noundef nonnull %5) #6
  br label %250

250:                                              ; preds = %._crit_edge574, %212, %241, %224
  %indvars.iv.next.pre-phi = phi i64 [ %.pre595, %._crit_edge574 ], [ %.pre-phi571, %212 ], [ %.pre-phi571, %241 ], [ %.pre-phi571, %224 ]
  %251 = load i32, ptr %2, align 4, !tbaa !5
  %252 = load i32, ptr %3, align 4, !tbaa !5
  %. = call i32 @llvm.smin.i32(i32 %251, i32 %252)
  %253 = sext i32 %. to i64
  %.not561 = icmp slt i64 %indvars.iv, %253
  br i1 %.not561, label %57, label %.loopexit

254:                                              ; preds = %.lr.ph559, %445
  %indvars.iv566 = phi i64 [ 1, %.lr.ph559 ], [ %indvars.iv.next567.pre-phi, %445 ]
  %255 = phi i32 [ %42, %.lr.ph559 ], [ %446, %445 ]
  %256 = load i32, ptr %1, align 4, !tbaa !5
  %257 = trunc nuw nsw i64 %indvars.iv566 to i32
  %258 = add nsw i32 %256, %257
  %259 = add nsw i32 %258, -1
  %reass.sub562 = sub i32 %255, %257
  %260 = add i32 %reass.sub562, 1
  store i32 %260, ptr %15, align 4, !tbaa !5
  %261 = icmp sgt i32 %258, 3
  br i1 %261, label %262, label %._crit_edge579

._crit_edge579:                                   ; preds = %254
  %.pre580 = mul i32 %47, %257
  %.pre582 = sext i32 %.pre580 to i64
  br label %268

262:                                              ; preds = %254
  %263 = trunc i64 %indvars.iv566 to i32
  %264 = sub i32 %263, %25
  store i32 %264, ptr %11, align 4, !tbaa !5
  %gep604 = getelementptr %struct.complex, ptr %invariant.gep603, i64 %indvars.iv566
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %gep604, ptr noundef nonnull %5) #6
  store i32 %264, ptr %11, align 4, !tbaa !5
  store <2 x float> <float -1.000000e+00, float 0.000000e+00>, ptr %12, align 8, !tbaa !9
  %gep606 = getelementptr %struct.complex, ptr %invariant.gep605, i64 %indvars.iv566
  %265 = mul i32 %47, %257
  %266 = sext i32 %265 to i64
  %267 = getelementptr inbounds %struct.complex, ptr %21, i64 %266
  call void @cgemv_(ptr noundef nonnull @.str.1, ptr noundef nonnull %15, ptr noundef nonnull %11, ptr noundef nonnull %12, ptr noundef %gep606, ptr noundef nonnull %8, ptr noundef %gep604, ptr noundef nonnull %5, ptr noundef nonnull @c_b2, ptr noundef %267, ptr noundef nonnull @c__1) #6
  store i32 %264, ptr %11, align 4, !tbaa !5
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %gep604, ptr noundef nonnull %5) #6
  br label %268

268:                                              ; preds = %._crit_edge579, %262
  %.pre-phi583 = phi i64 [ %.pre582, %._crit_edge579 ], [ %266, %262 ]
  %269 = getelementptr inbounds %struct.complex, ptr %21, i64 %.pre-phi583
  call void @ccopy_(ptr noundef nonnull %15, ptr noundef %269, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull @c__1) #6
  %270 = icmp sgt i64 %indvars.iv566, %55
  br i1 %270, label %271, label %288

271:                                              ; preds = %268
  %272 = add nsw i32 %258, -2
  %273 = mul nsw i32 %272, %16
  %274 = sext i32 %273 to i64
  %275 = getelementptr %struct.complex, ptr %18, i64 %indvars.iv566
  %276 = getelementptr %struct.complex, ptr %275, i64 %274
  %277 = call <2 x float> @Cf(ptr noundef %276)
  %.sroa.03.0.vec.extract = extractelement <2 x float> %277, i64 0
  %.sroa.03.4.vec.extract = extractelement <2 x float> %277, i64 1
  %278 = fneg float %.sroa.03.4.vec.extract
  %279 = call ptr @_pCf(ptr noundef nonnull %13)
  %280 = getelementptr inbounds i8, ptr %279, i64 4
  store float %.sroa.03.0.vec.extract, ptr %279, align 4
  store float %278, ptr %280, align 4
  %281 = load <2 x float>, ptr %13, align 8, !tbaa !9
  %282 = fneg <2 x float> %281
  store <2 x float> %282, ptr %12, align 8, !tbaa !9
  store <2 x float> %282, ptr %14, align 8, !tbaa !9
  %283 = add nsw i32 %258, -3
  %284 = mul nsw i32 %283, %16
  %285 = sext i32 %284 to i64
  %286 = getelementptr %struct.complex, ptr %18, i64 %indvars.iv566
  %287 = getelementptr %struct.complex, ptr %286, i64 %285
  call void @caxpy_(ptr noundef nonnull %15, ptr noundef nonnull %14, ptr noundef %287, ptr noundef nonnull @c__1, ptr noundef %9, ptr noundef nonnull @c__1) #6
  br label %288

288:                                              ; preds = %271, %268
  %289 = mul nsw i32 %259, %16
  %290 = add nsw i32 %289, %257
  store i32 %290, ptr %11, align 4, !tbaa !5
  %291 = load float, ptr %9, align 4, !tbaa !11
  %292 = sext i32 %290 to i64
  %293 = getelementptr inbounds %struct.complex, ptr %18, i64 %292
  store float %291, ptr %293, align 4, !tbaa !11
  %294 = getelementptr inbounds %struct.complex, ptr %18, i64 %292, i32 1
  store float 0.000000e+00, ptr %294, align 4, !tbaa !13
  %295 = load i32, ptr %2, align 4, !tbaa !5
  %296 = sext i32 %295 to i64
  %297 = icmp slt i64 %indvars.iv566, %296
  br i1 %297, label %298, label %._crit_edge578

._crit_edge578:                                   ; preds = %288
  %.pre584 = add nuw nsw i64 %indvars.iv566, 1
  br label %445

298:                                              ; preds = %288
  %299 = icmp sgt i32 %258, 2
  br i1 %299, label %300, label %307

300:                                              ; preds = %298
  %301 = fneg float %291
  store float %301, ptr %12, align 8, !tbaa !11
  store float -0.000000e+00, ptr %45, align 4, !tbaa !13
  store float %301, ptr %14, align 8, !tbaa !11
  store float -0.000000e+00, ptr %48, align 4, !tbaa !13
  %302 = sub nsw i32 %295, %257
  store i32 %302, ptr %11, align 4, !tbaa !5
  %303 = add nsw i32 %258, -2
  %304 = mul nsw i32 %303, %16
  %305 = sext i32 %304 to i64
  %gep608 = getelementptr %struct.complex, ptr %invariant.gep607, i64 %indvars.iv566
  %306 = getelementptr %struct.complex, ptr %gep608, i64 %305
  call void @caxpy_(ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %306, ptr noundef nonnull @c__1, ptr noundef nonnull %49, ptr noundef nonnull @c__1) #6
  %.pre569 = load i32, ptr %2, align 4, !tbaa !5
  br label %307

307:                                              ; preds = %300, %298
  %308 = phi i32 [ %.pre569, %300 ], [ %295, %298 ]
  %309 = sub nsw i32 %308, %257
  store i32 %309, ptr %11, align 4, !tbaa !5
  %310 = call i32 @icamax_(ptr noundef nonnull %11, ptr noundef nonnull %49, ptr noundef nonnull @c__1) #6
  %311 = add nsw i32 %310, 1
  %312 = sext i32 %311 to i64
  %313 = getelementptr inbounds %struct.complex, ptr %22, i64 %312
  %314 = load <2 x float>, ptr %313, align 4, !tbaa !9
  %.not539 = icmp eq i32 %311, 2
  br i1 %.not539, label %391, label %315

315:                                              ; preds = %307
  %316 = extractelement <2 x float> %314, i64 0
  %317 = fcmp une float %316, 0.000000e+00
  %318 = extractelement <2 x float> %314, i64 1
  %319 = fcmp une float %318, 0.000000e+00
  %or.cond546 = select i1 %317, i1 true, i1 %319
  br i1 %or.cond546, label %320, label %391

320:                                              ; preds = %315
  %321 = load <2 x float>, ptr %49, align 4, !tbaa !9
  store <2 x float> %321, ptr %313, align 4, !tbaa !9
  store <2 x float> %314, ptr %49, align 4, !tbaa !9
  %322 = add nuw nsw i64 %indvars.iv566, 2
  %323 = add nuw nsw i64 %indvars.iv566, 1
  %324 = add i32 %310, %257
  %325 = add i32 %310, -1
  %326 = add i32 %310, -2
  store i32 %326, ptr %11, align 4, !tbaa !5
  %327 = load i32, ptr %1, align 4, !tbaa !5
  %328 = trunc nsw i64 %323 to i32
  %329 = add nsw i32 %327, %328
  %330 = add i32 %327, %257
  %331 = mul nsw i32 %330, %16
  %332 = sext i32 %331 to i64
  %333 = getelementptr %struct.complex, ptr %18, i64 %322
  %334 = getelementptr %struct.complex, ptr %333, i64 %332
  %335 = mul nsw i32 %329, %16
  %336 = add nsw i32 %335, %324
  %337 = sext i32 %336 to i64
  %338 = getelementptr inbounds %struct.complex, ptr %18, i64 %337
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %334, ptr noundef nonnull @c__1, ptr noundef %338, ptr noundef nonnull %5) #6
  store i32 %325, ptr %11, align 4, !tbaa !5
  %339 = load i32, ptr %1, align 4, !tbaa !5
  %340 = add i32 %339, %257
  %341 = mul nsw i32 %340, %16
  %342 = sext i32 %341 to i64
  %343 = getelementptr %struct.complex, ptr %18, i64 %322
  %344 = getelementptr %struct.complex, ptr %343, i64 %342
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %344, ptr noundef nonnull @c__1) #6
  store i32 %326, ptr %11, align 4, !tbaa !5
  %345 = load i32, ptr %1, align 4, !tbaa !5
  %346 = add nsw i32 %345, %328
  %347 = mul nsw i32 %346, %16
  %348 = add nsw i32 %347, %324
  %349 = sext i32 %348 to i64
  %350 = getelementptr inbounds %struct.complex, ptr %18, i64 %349
  call void @clacgv_(ptr noundef nonnull %11, ptr noundef %350, ptr noundef nonnull %5) #6
  %351 = load i32, ptr %2, align 4, !tbaa !5
  %352 = icmp slt i32 %324, %351
  br i1 %352, label %353, label %._crit_edge577

._crit_edge577:                                   ; preds = %320
  %.pre585 = add i32 %324, -1
  br label %368

353:                                              ; preds = %320
  %354 = add nsw i32 %311, %257
  %355 = sub nsw i32 %351, %324
  store i32 %355, ptr %11, align 4, !tbaa !5
  %356 = load i32, ptr %1, align 4, !tbaa !5
  %357 = add i32 %356, %257
  %358 = mul nsw i32 %357, %16
  %359 = add nsw i32 %358, %354
  %360 = sext i32 %359 to i64
  %361 = getelementptr inbounds %struct.complex, ptr %18, i64 %360
  %362 = add i32 %324, -1
  %363 = add i32 %362, %356
  %364 = mul nsw i32 %363, %16
  %365 = add nsw i32 %364, %354
  %366 = sext i32 %365 to i64
  %367 = getelementptr inbounds %struct.complex, ptr %18, i64 %366
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %361, ptr noundef nonnull @c__1, ptr noundef %367, ptr noundef nonnull @c__1) #6
  br label %368

368:                                              ; preds = %._crit_edge577, %353
  %.pre-phi586 = phi i32 [ %.pre585, %._crit_edge577 ], [ %362, %353 ]
  %369 = load i32, ptr %1, align 4, !tbaa !5
  %370 = add i32 %369, %257
  %371 = mul nsw i32 %370, %16
  %372 = add nsw i32 %371, %328
  %373 = sext i32 %372 to i64
  %374 = getelementptr inbounds %struct.complex, ptr %18, i64 %373
  %375 = add i32 %.pre-phi586, %369
  %376 = mul nsw i32 %375, %16
  %377 = add nsw i32 %376, %324
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds %struct.complex, ptr %18, i64 %378
  %380 = load <2 x float>, ptr %374, align 4, !tbaa !9
  %381 = load <2 x float>, ptr %379, align 4, !tbaa !9
  store <2 x float> %381, ptr %374, align 4, !tbaa !9
  store <2 x float> %380, ptr %379, align 4, !tbaa !9
  store i32 %257, ptr %11, align 4, !tbaa !5
  %gep610 = getelementptr %struct.complex, ptr %invariant.gep609, i64 %323
  %382 = add nsw i32 %324, %19
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.complex, ptr %21, i64 %383
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %gep610, ptr noundef nonnull %8, ptr noundef %384, ptr noundef nonnull %8) #6
  %385 = getelementptr i32, ptr %6, i64 %indvars.iv566
  store i32 %324, ptr %385, align 4, !tbaa !5
  %.not540 = icmp slt i64 %indvars.iv566, %52
  br i1 %.not540, label %395, label %386

386:                                              ; preds = %368
  %387 = add i32 %50, %328
  store i32 %387, ptr %11, align 4, !tbaa !5
  %gep612 = getelementptr %struct.complex, ptr %invariant.gep611, i64 %323
  %388 = add nsw i32 %324, %16
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds %struct.complex, ptr %18, i64 %389
  call void @cswap_(ptr noundef nonnull %11, ptr noundef %gep612, ptr noundef nonnull %5, ptr noundef %390, ptr noundef nonnull %5) #6
  br label %395

391:                                              ; preds = %315, %307
  %392 = add nuw nsw i64 %indvars.iv566, 1
  %393 = getelementptr i32, ptr %6, i64 %indvars.iv566
  %394 = trunc nsw i64 %392 to i32
  store i32 %394, ptr %393, align 4, !tbaa !5
  br label %395

395:                                              ; preds = %368, %386, %391
  %.pre-phi570 = phi i32 [ %328, %368 ], [ %328, %386 ], [ %394, %391 ]
  %.pre-phi = phi i64 [ %323, %368 ], [ %323, %386 ], [ %392, %391 ]
  %396 = add nsw i32 %289, %.pre-phi570
  store i32 %396, ptr %11, align 4, !tbaa !5
  %397 = sext i32 %396 to i64
  %398 = getelementptr inbounds %struct.complex, ptr %18, i64 %397
  %399 = load <2 x float>, ptr %49, align 4, !tbaa !9
  store <2 x float> %399, ptr %398, align 4, !tbaa !9
  %400 = load i32, ptr %3, align 4, !tbaa !5
  %401 = sext i32 %400 to i64
  %402 = icmp slt i64 %indvars.iv566, %401
  br i1 %402, label %403, label %413

403:                                              ; preds = %395
  %404 = load i32, ptr %2, align 4, !tbaa !5
  %405 = sub nsw i32 %404, %257
  store i32 %405, ptr %11, align 4, !tbaa !5
  %406 = mul nsw i32 %258, %16
  %407 = sext i32 %406 to i64
  %408 = getelementptr %struct.complex, ptr %18, i64 %.pre-phi
  %409 = getelementptr %struct.complex, ptr %408, i64 %407
  %410 = mul i32 %.pre-phi570, %47
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %struct.complex, ptr %21, i64 %411
  call void @ccopy_(ptr noundef nonnull %11, ptr noundef %409, ptr noundef nonnull @c__1, ptr noundef %412, ptr noundef nonnull @c__1) #6
  br label %413

413:                                              ; preds = %403, %395
  %414 = load i32, ptr %2, align 4, !tbaa !5
  %415 = add nsw i32 %414, -1
  %416 = sext i32 %415 to i64
  %417 = icmp slt i64 %indvars.iv566, %416
  br i1 %417, label %418, label %445

418:                                              ; preds = %413
  store i32 %396, ptr %11, align 4, !tbaa !5
  %419 = load float, ptr %398, align 4, !tbaa !11
  %420 = fcmp une float %419, 0.000000e+00
  br i1 %420, label %425, label %421

421:                                              ; preds = %418
  %422 = getelementptr inbounds i8, ptr %398, i64 4
  %423 = load float, ptr %422, align 4, !tbaa !13
  %424 = fcmp une float %423, 0.000000e+00
  br i1 %424, label %425, label %439

425:                                              ; preds = %421, %418
  %426 = call <2 x float> @Cf(ptr noundef nonnull @c_b2)
  %.sroa.02.0.vec.extract = extractelement <2 x float> %426, i64 0
  %.sroa.02.4.vec.extract = extractelement <2 x float> %426, i64 1
  %427 = call <2 x float> @Cf(ptr noundef nonnull %398)
  %.sroa.01.0.vec.extract = extractelement <2 x float> %427, i64 0
  %.sroa.01.4.vec.extract = extractelement <2 x float> %427, i64 1
  %428 = call <2 x float> @__divsc3(float noundef %.sroa.02.0.vec.extract, float noundef %.sroa.02.4.vec.extract, float noundef %.sroa.01.0.vec.extract, float noundef %.sroa.01.4.vec.extract) #6
  %429 = call ptr @_pCf(ptr noundef nonnull %12)
  store <2 x float> %428, ptr %429, align 4
  %430 = load <2 x float>, ptr %12, align 8, !tbaa !9
  store <2 x float> %430, ptr %14, align 8, !tbaa !9
  %431 = load i32, ptr %2, align 4, !tbaa !5
  %432 = trunc i64 %indvars.iv566 to i32
  %433 = xor i32 %432, -1
  %434 = add i32 %431, %433
  store i32 %434, ptr %11, align 4, !tbaa !5
  %435 = sext i32 %289 to i64
  %gep616 = getelementptr %struct.complex, ptr %invariant.gep615, i64 %indvars.iv566
  %436 = getelementptr %struct.complex, ptr %gep616, i64 %435
  call void @ccopy_(ptr noundef nonnull %11, ptr noundef nonnull %51, ptr noundef nonnull @c__1, ptr noundef %436, ptr noundef nonnull @c__1) #6
  %437 = load i32, ptr %2, align 4, !tbaa !5
  %438 = add i32 %437, %433
  store i32 %438, ptr %11, align 4, !tbaa !5
  call void @cscal_(ptr noundef nonnull %11, ptr noundef nonnull %14, ptr noundef %436, ptr noundef nonnull @c__1) #6
  br label %445

439:                                              ; preds = %421
  %440 = trunc i64 %indvars.iv566 to i32
  %441 = xor i32 %440, -1
  %442 = add i32 %414, %441
  store i32 %442, ptr %11, align 4, !tbaa !5
  %443 = sext i32 %289 to i64
  %gep614 = getelementptr %struct.complex, ptr %invariant.gep613, i64 %indvars.iv566
  %444 = getelementptr %struct.complex, ptr %gep614, i64 %443
  call void @claset_(ptr noundef nonnull @.str.2, ptr noundef nonnull %11, ptr noundef nonnull @c__1, ptr noundef nonnull @c_b1, ptr noundef nonnull @c_b1, ptr noundef %444, ptr noundef nonnull %5) #6
  br label %445

445:                                              ; preds = %._crit_edge578, %413, %439, %425
  %indvars.iv.next567.pre-phi = phi i64 [ %.pre584, %._crit_edge578 ], [ %.pre-phi, %413 ], [ %.pre-phi, %439 ], [ %.pre-phi, %425 ]
  %446 = load i32, ptr %2, align 4, !tbaa !5
  %447 = load i32, ptr %3, align 4, !tbaa !5
  %.545 = call i32 @llvm.smin.i32(i32 %446, i32 %447)
  %448 = sext i32 %.545 to i64
  %.not563 = icmp slt i64 %indvars.iv566, %448
  br i1 %.not563, label %254, label %.loopexit

.loopexit:                                        ; preds = %250, %445, %.preheader547, %.preheader
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %15) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #6
  ret void
}

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

declare i32 @lsame_(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 @ccopy_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #2

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

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

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

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

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

declare <2 x float> @__divsc3(float, float, float, float) local_unnamed_addr

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"", !10, i64 0, !10, i64 4}
!13 = !{!12, !10, i64 4}


; Effective O3 passes: BDCEPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass