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

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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @ctfttp_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5) #0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i32, align 4
  %14 = alloca i32, align 4
  %15 = alloca i32, align 4
  %16 = alloca i32, align 4
  %17 = alloca %struct.complex, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca { float, float }, align 4
  %34 = alloca { float, float }, align 4
  %35 = alloca { float, float }, align 4
  %36 = alloca { float, float }, align 4
  %37 = alloca { float, float }, align 4
  %38 = alloca { float, float }, align 4
  %39 = alloca { float, float }, align 4
  %40 = alloca { float, float }, align 4
  %41 = alloca { float, float }, align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #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 4, ptr %28) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #5
  %42 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 0, ptr %42, align 4, !tbaa !9
  %43 = load ptr, ptr %7, align 8, !tbaa !5
  %44 = call i32 @lsame_(ptr noundef %43, ptr noundef @.str)
  store i32 %44, ptr %21, align 4, !tbaa !9
  %45 = load ptr, ptr %8, align 8, !tbaa !5
  %46 = call i32 @lsame_(ptr noundef %45, ptr noundef @.str.1)
  store i32 %46, ptr %22, align 4, !tbaa !9
  %47 = load i32, ptr %21, align 4, !tbaa !9
  %48 = icmp ne i32 %47, 0
  br i1 %48, label %55, label %49

49:                                               ; preds = %6
  %50 = load ptr, ptr %7, align 8, !tbaa !5
  %51 = call i32 @lsame_(ptr noundef %50, ptr noundef @.str.2)
  %52 = icmp ne i32 %51, 0
  br i1 %52, label %55, label %53

53:                                               ; preds = %49
  %54 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -1, ptr %54, align 4, !tbaa !9
  br label %72

55:                                               ; preds = %49, %6
  %56 = load i32, ptr %22, align 4, !tbaa !9
  %57 = icmp ne i32 %56, 0
  br i1 %57, label %64, label %58

58:                                               ; preds = %55
  %59 = load ptr, ptr %8, align 8, !tbaa !5
  %60 = call i32 @lsame_(ptr noundef %59, ptr noundef @.str.3)
  %61 = icmp ne i32 %60, 0
  br i1 %61, label %64, label %62

62:                                               ; preds = %58
  %63 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -2, ptr %63, align 4, !tbaa !9
  br label %71

64:                                               ; preds = %58, %55
  %65 = load ptr, ptr %9, align 8, !tbaa !5
  %66 = load i32, ptr %65, align 4, !tbaa !9
  %67 = icmp slt i32 %66, 0
  br i1 %67, label %68, label %70

68:                                               ; preds = %64
  %69 = load ptr, ptr %12, align 8, !tbaa !5
  store i32 -3, ptr %69, align 4, !tbaa !9
  br label %70

70:                                               ; preds = %68, %64
  br label %71

71:                                               ; preds = %70, %62
  br label %72

72:                                               ; preds = %71, %53
  %73 = load ptr, ptr %12, align 8, !tbaa !5
  %74 = load i32, ptr %73, align 4, !tbaa !9
  %75 = icmp ne i32 %74, 0
  br i1 %75, label %76, label %81

76:                                               ; preds = %72
  %77 = load ptr, ptr %12, align 8, !tbaa !5
  %78 = load i32, ptr %77, align 4, !tbaa !9
  %79 = sub nsw i32 0, %78
  store i32 %79, ptr %13, align 4, !tbaa !9
  %80 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %13, i32 noundef 6)
  store i32 1, ptr %32, align 4
  br label %1188

81:                                               ; preds = %72
  %82 = load ptr, ptr %9, align 8, !tbaa !5
  %83 = load i32, ptr %82, align 4, !tbaa !9
  %84 = icmp eq i32 %83, 0
  br i1 %84, label %85, label %86

85:                                               ; preds = %81
  store i32 1, ptr %32, align 4
  br label %1188

86:                                               ; preds = %81
  %87 = load ptr, ptr %9, align 8, !tbaa !5
  %88 = load i32, ptr %87, align 4, !tbaa !9
  %89 = icmp eq i32 %88, 1
  br i1 %89, label %90, label %130

90:                                               ; preds = %86
  %91 = load i32, ptr %21, align 4, !tbaa !9
  %92 = icmp ne i32 %91, 0
  br i1 %92, label %93, label %108

93:                                               ; preds = %90
  %94 = load ptr, ptr %10, align 8, !tbaa !5
  %95 = getelementptr inbounds %struct.complex, ptr %94, i64 0
  %96 = getelementptr inbounds %struct.complex, ptr %95, i32 0, i32 0
  %97 = load float, ptr %96, align 4, !tbaa !11
  %98 = load ptr, ptr %11, align 8, !tbaa !5
  %99 = getelementptr inbounds %struct.complex, ptr %98, i64 0
  %100 = getelementptr inbounds %struct.complex, ptr %99, i32 0, i32 0
  store float %97, ptr %100, align 4, !tbaa !11
  %101 = load ptr, ptr %10, align 8, !tbaa !5
  %102 = getelementptr inbounds %struct.complex, ptr %101, i64 0
  %103 = getelementptr inbounds %struct.complex, ptr %102, i32 0, i32 1
  %104 = load float, ptr %103, align 4, !tbaa !14
  %105 = load ptr, ptr %11, align 8, !tbaa !5
  %106 = getelementptr inbounds %struct.complex, ptr %105, i64 0
  %107 = getelementptr inbounds %struct.complex, ptr %106, i32 0, i32 1
  store float %104, ptr %107, align 4, !tbaa !14
  br label %129

108:                                              ; preds = %90
  %109 = load ptr, ptr %10, align 8, !tbaa !5
  %110 = call <2 x float> @Cf(ptr noundef %109)
  store <2 x float> %110, ptr %33, align 4
  %111 = getelementptr inbounds { float, float }, ptr %33, i32 0, i32 0
  %112 = load float, ptr %111, align 4
  %113 = getelementptr inbounds { float, float }, ptr %33, i32 0, i32 1
  %114 = load float, ptr %113, align 4
  %115 = fneg float %114
  %116 = call ptr @_pCf(ptr noundef %17)
  %117 = getelementptr inbounds { float, float }, ptr %116, i32 0, i32 0
  %118 = getelementptr inbounds { float, float }, ptr %116, i32 0, i32 1
  store float %112, ptr %117, align 4
  store float %115, ptr %118, align 4
  %119 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %120 = load float, ptr %119, align 4, !tbaa !11
  %121 = load ptr, ptr %11, align 8, !tbaa !5
  %122 = getelementptr inbounds %struct.complex, ptr %121, i64 0
  %123 = getelementptr inbounds %struct.complex, ptr %122, i32 0, i32 0
  store float %120, ptr %123, align 4, !tbaa !11
  %124 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %125 = load float, ptr %124, align 4, !tbaa !14
  %126 = load ptr, ptr %11, align 8, !tbaa !5
  %127 = getelementptr inbounds %struct.complex, ptr %126, i64 0
  %128 = getelementptr inbounds %struct.complex, ptr %127, i32 0, i32 1
  store float %125, ptr %128, align 4, !tbaa !14
  br label %129

129:                                              ; preds = %108, %93
  store i32 1, ptr %32, align 4
  br label %1188

130:                                              ; preds = %86
  %131 = load ptr, ptr %9, align 8, !tbaa !5
  %132 = load i32, ptr %131, align 4, !tbaa !9
  %133 = load ptr, ptr %9, align 8, !tbaa !5
  %134 = load i32, ptr %133, align 4, !tbaa !9
  %135 = add nsw i32 %134, 1
  %136 = mul nsw i32 %132, %135
  %137 = sdiv i32 %136, 2
  store i32 %137, ptr %28, align 4, !tbaa !9
  %138 = load i32, ptr %22, align 4, !tbaa !9
  %139 = icmp ne i32 %138, 0
  br i1 %139, label %140, label %148

140:                                              ; preds = %130
  %141 = load ptr, ptr %9, align 8, !tbaa !5
  %142 = load i32, ptr %141, align 4, !tbaa !9
  %143 = sdiv i32 %142, 2
  store i32 %143, ptr %24, align 4, !tbaa !9
  %144 = load ptr, ptr %9, align 8, !tbaa !5
  %145 = load i32, ptr %144, align 4, !tbaa !9
  %146 = load i32, ptr %24, align 4, !tbaa !9
  %147 = sub nsw i32 %145, %146
  store i32 %147, ptr %23, align 4, !tbaa !9
  br label %156

148:                                              ; preds = %130
  %149 = load ptr, ptr %9, align 8, !tbaa !5
  %150 = load i32, ptr %149, align 4, !tbaa !9
  %151 = sdiv i32 %150, 2
  store i32 %151, ptr %23, align 4, !tbaa !9
  %152 = load ptr, ptr %9, align 8, !tbaa !5
  %153 = load i32, ptr %152, align 4, !tbaa !9
  %154 = load i32, ptr %23, align 4, !tbaa !9
  %155 = sub nsw i32 %153, %154
  store i32 %155, ptr %24, align 4, !tbaa !9
  br label %156

156:                                              ; preds = %148, %140
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = load i32, ptr %157, align 4, !tbaa !9
  %159 = srem i32 %158, 2
  %160 = icmp eq i32 %159, 0
  br i1 %160, label %161, label %168

161:                                              ; preds = %156
  %162 = load ptr, ptr %9, align 8, !tbaa !5
  %163 = load i32, ptr %162, align 4, !tbaa !9
  %164 = sdiv i32 %163, 2
  store i32 %164, ptr %20, align 4, !tbaa !9
  store i32 0, ptr %29, align 4, !tbaa !9
  %165 = load ptr, ptr %9, align 8, !tbaa !5
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = add nsw i32 %166, 1
  store i32 %167, ptr %30, align 4, !tbaa !9
  br label %171

168:                                              ; preds = %156
  store i32 1, ptr %29, align 4, !tbaa !9
  %169 = load ptr, ptr %9, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  store i32 %170, ptr %30, align 4, !tbaa !9
  br label %171

171:                                              ; preds = %168, %161
  %172 = load i32, ptr %21, align 4, !tbaa !9
  %173 = icmp ne i32 %172, 0
  br i1 %173, label %179, label %174

174:                                              ; preds = %171
  %175 = load ptr, ptr %9, align 8, !tbaa !5
  %176 = load i32, ptr %175, align 4, !tbaa !9
  %177 = add nsw i32 %176, 1
  %178 = sdiv i32 %177, 2
  store i32 %178, ptr %30, align 4, !tbaa !9
  br label %179

179:                                              ; preds = %174, %171
  %180 = load i32, ptr %29, align 4, !tbaa !9
  %181 = icmp ne i32 %180, 0
  br i1 %181, label %182, label %680

182:                                              ; preds = %179
  %183 = load i32, ptr %21, align 4, !tbaa !9
  %184 = icmp ne i32 %183, 0
  br i1 %184, label %185, label %417

185:                                              ; preds = %182
  %186 = load i32, ptr %22, align 4, !tbaa !9
  %187 = icmp ne i32 %186, 0
  br i1 %187, label %188, label %302

188:                                              ; preds = %185
  store i32 0, ptr %31, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  %189 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %189, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %190

190:                                              ; preds = %240, %188
  %191 = load i32, ptr %19, align 4, !tbaa !9
  %192 = load i32, ptr %13, align 4, !tbaa !9
  %193 = icmp sle i32 %191, %192
  br i1 %193, label %194, label %243

194:                                              ; preds = %190
  %195 = load ptr, ptr %9, align 8, !tbaa !5
  %196 = load i32, ptr %195, align 4, !tbaa !9
  %197 = sub nsw i32 %196, 1
  store i32 %197, ptr %14, align 4, !tbaa !9
  %198 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %198, ptr %18, align 4, !tbaa !9
  br label %199

199:                                              ; preds = %233, %194
  %200 = load i32, ptr %18, align 4, !tbaa !9
  %201 = load i32, ptr %14, align 4, !tbaa !9
  %202 = icmp sle i32 %200, %201
  br i1 %202, label %203, label %236

203:                                              ; preds = %199
  %204 = load i32, ptr %18, align 4, !tbaa !9
  %205 = load i32, ptr %26, align 4, !tbaa !9
  %206 = add nsw i32 %204, %205
  store i32 %206, ptr %25, align 4, !tbaa !9
  %207 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %207, ptr %15, align 4, !tbaa !9
  %208 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %208, ptr %16, align 4, !tbaa !9
  %209 = load ptr, ptr %10, align 8, !tbaa !5
  %210 = load i32, ptr %16, align 4, !tbaa !9
  %211 = sext i32 %210 to i64
  %212 = getelementptr inbounds %struct.complex, ptr %209, i64 %211
  %213 = getelementptr inbounds %struct.complex, ptr %212, i32 0, i32 0
  %214 = load float, ptr %213, align 4, !tbaa !11
  %215 = load ptr, ptr %11, align 8, !tbaa !5
  %216 = load i32, ptr %15, align 4, !tbaa !9
  %217 = sext i32 %216 to i64
  %218 = getelementptr inbounds %struct.complex, ptr %215, i64 %217
  %219 = getelementptr inbounds %struct.complex, ptr %218, i32 0, i32 0
  store float %214, ptr %219, align 4, !tbaa !11
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = load i32, ptr %16, align 4, !tbaa !9
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds %struct.complex, ptr %220, i64 %222
  %224 = getelementptr inbounds %struct.complex, ptr %223, i32 0, i32 1
  %225 = load float, ptr %224, align 4, !tbaa !14
  %226 = load ptr, ptr %11, align 8, !tbaa !5
  %227 = load i32, ptr %15, align 4, !tbaa !9
  %228 = sext i32 %227 to i64
  %229 = getelementptr inbounds %struct.complex, ptr %226, i64 %228
  %230 = getelementptr inbounds %struct.complex, ptr %229, i32 0, i32 1
  store float %225, ptr %230, align 4, !tbaa !14
  %231 = load i32, ptr %31, align 4, !tbaa !9
  %232 = add nsw i32 %231, 1
  store i32 %232, ptr %31, align 4, !tbaa !9
  br label %233

233:                                              ; preds = %203
  %234 = load i32, ptr %18, align 4, !tbaa !9
  %235 = add nsw i32 %234, 1
  store i32 %235, ptr %18, align 4, !tbaa !9
  br label %199, !llvm.loop !15

236:                                              ; preds = %199
  %237 = load i32, ptr %30, align 4, !tbaa !9
  %238 = load i32, ptr %26, align 4, !tbaa !9
  %239 = add nsw i32 %238, %237
  store i32 %239, ptr %26, align 4, !tbaa !9
  br label %240

240:                                              ; preds = %236
  %241 = load i32, ptr %19, align 4, !tbaa !9
  %242 = add nsw i32 %241, 1
  store i32 %242, ptr %19, align 4, !tbaa !9
  br label %190, !llvm.loop !17

243:                                              ; preds = %190
  %244 = load i32, ptr %24, align 4, !tbaa !9
  %245 = sub nsw i32 %244, 1
  store i32 %245, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %246

246:                                              ; preds = %298, %243
  %247 = load i32, ptr %18, align 4, !tbaa !9
  %248 = load i32, ptr %13, align 4, !tbaa !9
  %249 = icmp sle i32 %247, %248
  br i1 %249, label %250, label %301

250:                                              ; preds = %246
  %251 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %251, ptr %14, align 4, !tbaa !9
  %252 = load i32, ptr %18, align 4, !tbaa !9
  %253 = add nsw i32 %252, 1
  store i32 %253, ptr %19, align 4, !tbaa !9
  br label %254

254:                                              ; preds = %294, %250
  %255 = load i32, ptr %19, align 4, !tbaa !9
  %256 = load i32, ptr %14, align 4, !tbaa !9
  %257 = icmp sle i32 %255, %256
  br i1 %257, label %258, label %297

258:                                              ; preds = %254
  %259 = load i32, ptr %18, align 4, !tbaa !9
  %260 = load i32, ptr %19, align 4, !tbaa !9
  %261 = load i32, ptr %30, align 4, !tbaa !9
  %262 = mul nsw i32 %260, %261
  %263 = add nsw i32 %259, %262
  store i32 %263, ptr %25, align 4, !tbaa !9
  %264 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %264, ptr %15, align 4, !tbaa !9
  %265 = load ptr, ptr %10, align 8, !tbaa !5
  %266 = load i32, ptr %25, align 4, !tbaa !9
  %267 = sext i32 %266 to i64
  %268 = getelementptr inbounds %struct.complex, ptr %265, i64 %267
  %269 = call <2 x float> @Cf(ptr noundef %268)
  store <2 x float> %269, ptr %34, align 4
  %270 = getelementptr inbounds { float, float }, ptr %34, i32 0, i32 0
  %271 = load float, ptr %270, align 4
  %272 = getelementptr inbounds { float, float }, ptr %34, i32 0, i32 1
  %273 = load float, ptr %272, align 4
  %274 = fneg float %273
  %275 = call ptr @_pCf(ptr noundef %17)
  %276 = getelementptr inbounds { float, float }, ptr %275, i32 0, i32 0
  %277 = getelementptr inbounds { float, float }, ptr %275, i32 0, i32 1
  store float %271, ptr %276, align 4
  store float %274, ptr %277, align 4
  %278 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %279 = load float, ptr %278, align 4, !tbaa !11
  %280 = load ptr, ptr %11, align 8, !tbaa !5
  %281 = load i32, ptr %15, align 4, !tbaa !9
  %282 = sext i32 %281 to i64
  %283 = getelementptr inbounds %struct.complex, ptr %280, i64 %282
  %284 = getelementptr inbounds %struct.complex, ptr %283, i32 0, i32 0
  store float %279, ptr %284, align 4, !tbaa !11
  %285 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %286 = load float, ptr %285, align 4, !tbaa !14
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = load i32, ptr %15, align 4, !tbaa !9
  %289 = sext i32 %288 to i64
  %290 = getelementptr inbounds %struct.complex, ptr %287, i64 %289
  %291 = getelementptr inbounds %struct.complex, ptr %290, i32 0, i32 1
  store float %286, ptr %291, align 4, !tbaa !14
  %292 = load i32, ptr %31, align 4, !tbaa !9
  %293 = add nsw i32 %292, 1
  store i32 %293, ptr %31, align 4, !tbaa !9
  br label %294

294:                                              ; preds = %258
  %295 = load i32, ptr %19, align 4, !tbaa !9
  %296 = add nsw i32 %295, 1
  store i32 %296, ptr %19, align 4, !tbaa !9
  br label %254, !llvm.loop !18

297:                                              ; preds = %254
  br label %298

298:                                              ; preds = %297
  %299 = load i32, ptr %18, align 4, !tbaa !9
  %300 = add nsw i32 %299, 1
  store i32 %300, ptr %18, align 4, !tbaa !9
  br label %246, !llvm.loop !19

301:                                              ; preds = %246
  br label %416

302:                                              ; preds = %185
  store i32 0, ptr %31, align 4, !tbaa !9
  %303 = load i32, ptr %23, align 4, !tbaa !9
  %304 = sub nsw i32 %303, 1
  store i32 %304, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %305

305:                                              ; preds = %356, %302
  %306 = load i32, ptr %19, align 4, !tbaa !9
  %307 = load i32, ptr %13, align 4, !tbaa !9
  %308 = icmp sle i32 %306, %307
  br i1 %308, label %309, label %359

309:                                              ; preds = %305
  %310 = load i32, ptr %24, align 4, !tbaa !9
  %311 = load i32, ptr %19, align 4, !tbaa !9
  %312 = add nsw i32 %310, %311
  store i32 %312, ptr %25, align 4, !tbaa !9
  %313 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %313, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %314

314:                                              ; preds = %352, %309
  %315 = load i32, ptr %18, align 4, !tbaa !9
  %316 = load i32, ptr %14, align 4, !tbaa !9
  %317 = icmp sle i32 %315, %316
  br i1 %317, label %318, label %355

318:                                              ; preds = %314
  %319 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %319, ptr %15, align 4, !tbaa !9
  %320 = load ptr, ptr %10, align 8, !tbaa !5
  %321 = load i32, ptr %25, align 4, !tbaa !9
  %322 = sext i32 %321 to i64
  %323 = getelementptr inbounds %struct.complex, ptr %320, i64 %322
  %324 = call <2 x float> @Cf(ptr noundef %323)
  store <2 x float> %324, ptr %35, align 4
  %325 = getelementptr inbounds { float, float }, ptr %35, i32 0, i32 0
  %326 = load float, ptr %325, align 4
  %327 = getelementptr inbounds { float, float }, ptr %35, i32 0, i32 1
  %328 = load float, ptr %327, align 4
  %329 = fneg float %328
  %330 = call ptr @_pCf(ptr noundef %17)
  %331 = getelementptr inbounds { float, float }, ptr %330, i32 0, i32 0
  %332 = getelementptr inbounds { float, float }, ptr %330, i32 0, i32 1
  store float %326, ptr %331, align 4
  store float %329, ptr %332, align 4
  %333 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %334 = load float, ptr %333, align 4, !tbaa !11
  %335 = load ptr, ptr %11, align 8, !tbaa !5
  %336 = load i32, ptr %15, 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
  store float %334, ptr %339, align 4, !tbaa !11
  %340 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %341 = load float, ptr %340, align 4, !tbaa !14
  %342 = load ptr, ptr %11, align 8, !tbaa !5
  %343 = load i32, ptr %15, align 4, !tbaa !9
  %344 = sext i32 %343 to i64
  %345 = getelementptr inbounds %struct.complex, ptr %342, i64 %344
  %346 = getelementptr inbounds %struct.complex, ptr %345, i32 0, i32 1
  store float %341, ptr %346, align 4, !tbaa !14
  %347 = load i32, ptr %31, align 4, !tbaa !9
  %348 = add nsw i32 %347, 1
  store i32 %348, ptr %31, align 4, !tbaa !9
  %349 = load i32, ptr %30, align 4, !tbaa !9
  %350 = load i32, ptr %25, align 4, !tbaa !9
  %351 = add nsw i32 %350, %349
  store i32 %351, ptr %25, align 4, !tbaa !9
  br label %352

352:                                              ; preds = %318
  %353 = load i32, ptr %18, align 4, !tbaa !9
  %354 = add nsw i32 %353, 1
  store i32 %354, ptr %18, align 4, !tbaa !9
  br label %314, !llvm.loop !20

355:                                              ; preds = %314
  br label %356

356:                                              ; preds = %355
  %357 = load i32, ptr %19, align 4, !tbaa !9
  %358 = add nsw i32 %357, 1
  store i32 %358, ptr %19, align 4, !tbaa !9
  br label %305, !llvm.loop !21

359:                                              ; preds = %305
  store i32 0, ptr %27, align 4, !tbaa !9
  %360 = load ptr, ptr %9, align 8, !tbaa !5
  %361 = load i32, ptr %360, align 4, !tbaa !9
  %362 = sub nsw i32 %361, 1
  store i32 %362, ptr %13, align 4, !tbaa !9
  %363 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %363, ptr %19, align 4, !tbaa !9
  br label %364

364:                                              ; preds = %412, %359
  %365 = load i32, ptr %19, align 4, !tbaa !9
  %366 = load i32, ptr %13, align 4, !tbaa !9
  %367 = icmp sle i32 %365, %366
  br i1 %367, label %368, label %415

368:                                              ; preds = %364
  %369 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %369, ptr %25, align 4, !tbaa !9
  %370 = load i32, ptr %27, align 4, !tbaa !9
  %371 = load i32, ptr %19, align 4, !tbaa !9
  %372 = add nsw i32 %370, %371
  store i32 %372, ptr %14, align 4, !tbaa !9
  %373 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %373, ptr %25, align 4, !tbaa !9
  br label %374

374:                                              ; preds = %405, %368
  %375 = load i32, ptr %25, align 4, !tbaa !9
  %376 = load i32, ptr %14, align 4, !tbaa !9
  %377 = icmp sle i32 %375, %376
  br i1 %377, label %378, label %408

378:                                              ; preds = %374
  %379 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %379, ptr %15, align 4, !tbaa !9
  %380 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %380, ptr %16, align 4, !tbaa !9
  %381 = load ptr, ptr %10, align 8, !tbaa !5
  %382 = load i32, ptr %16, align 4, !tbaa !9
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %struct.complex, ptr %381, i64 %383
  %385 = getelementptr inbounds %struct.complex, ptr %384, i32 0, i32 0
  %386 = load float, ptr %385, align 4, !tbaa !11
  %387 = load ptr, ptr %11, align 8, !tbaa !5
  %388 = load i32, ptr %15, align 4, !tbaa !9
  %389 = sext i32 %388 to i64
  %390 = getelementptr inbounds %struct.complex, ptr %387, i64 %389
  %391 = getelementptr inbounds %struct.complex, ptr %390, i32 0, i32 0
  store float %386, ptr %391, align 4, !tbaa !11
  %392 = load ptr, ptr %10, align 8, !tbaa !5
  %393 = load i32, ptr %16, align 4, !tbaa !9
  %394 = sext i32 %393 to i64
  %395 = getelementptr inbounds %struct.complex, ptr %392, i64 %394
  %396 = getelementptr inbounds %struct.complex, ptr %395, i32 0, i32 1
  %397 = load float, ptr %396, align 4, !tbaa !14
  %398 = load ptr, ptr %11, align 8, !tbaa !5
  %399 = load i32, ptr %15, align 4, !tbaa !9
  %400 = sext i32 %399 to i64
  %401 = getelementptr inbounds %struct.complex, ptr %398, i64 %400
  %402 = getelementptr inbounds %struct.complex, ptr %401, i32 0, i32 1
  store float %397, ptr %402, align 4, !tbaa !14
  %403 = load i32, ptr %31, align 4, !tbaa !9
  %404 = add nsw i32 %403, 1
  store i32 %404, ptr %31, align 4, !tbaa !9
  br label %405

405:                                              ; preds = %378
  %406 = load i32, ptr %25, align 4, !tbaa !9
  %407 = add nsw i32 %406, 1
  store i32 %407, ptr %25, align 4, !tbaa !9
  br label %374, !llvm.loop !22

408:                                              ; preds = %374
  %409 = load i32, ptr %30, align 4, !tbaa !9
  %410 = load i32, ptr %27, align 4, !tbaa !9
  %411 = add nsw i32 %410, %409
  store i32 %411, ptr %27, align 4, !tbaa !9
  br label %412

412:                                              ; preds = %408
  %413 = load i32, ptr %19, align 4, !tbaa !9
  %414 = add nsw i32 %413, 1
  store i32 %414, ptr %19, align 4, !tbaa !9
  br label %364, !llvm.loop !23

415:                                              ; preds = %364
  br label %416

416:                                              ; preds = %415, %301
  br label %679

417:                                              ; preds = %182
  %418 = load i32, ptr %22, align 4, !tbaa !9
  %419 = icmp ne i32 %418, 0
  br i1 %419, label %420, label %550

420:                                              ; preds = %417
  store i32 0, ptr %31, align 4, !tbaa !9
  %421 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %421, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %422

422:                                              ; preds = %489, %420
  %423 = load i32, ptr %18, align 4, !tbaa !9
  %424 = load i32, ptr %13, align 4, !tbaa !9
  %425 = icmp sle i32 %423, %424
  br i1 %425, label %426, label %492

426:                                              ; preds = %422
  %427 = load ptr, ptr %9, align 8, !tbaa !5
  %428 = load i32, ptr %427, align 4, !tbaa !9
  %429 = load i32, ptr %30, align 4, !tbaa !9
  %430 = mul nsw i32 %428, %429
  %431 = sub nsw i32 %430, 1
  store i32 %431, ptr %14, align 4, !tbaa !9
  %432 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %432, ptr %15, align 4, !tbaa !9
  %433 = load i32, ptr %18, align 4, !tbaa !9
  %434 = load i32, ptr %30, align 4, !tbaa !9
  %435 = add nsw i32 %434, 1
  %436 = mul nsw i32 %433, %435
  store i32 %436, ptr %25, align 4, !tbaa !9
  br label %437

437:                                              ; preds = %484, %426
  %438 = load i32, ptr %15, align 4, !tbaa !9
  %439 = icmp slt i32 %438, 0
  br i1 %439, label %440, label %445

440:                                              ; preds = %437
  %441 = load i32, ptr %25, align 4, !tbaa !9
  %442 = load i32, ptr %14, align 4, !tbaa !9
  %443 = icmp sge i32 %441, %442
  %444 = zext i1 %443 to i32
  br label %450

445:                                              ; preds = %437
  %446 = load i32, ptr %25, align 4, !tbaa !9
  %447 = load i32, ptr %14, align 4, !tbaa !9
  %448 = icmp sle i32 %446, %447
  %449 = zext i1 %448 to i32
  br label %450

450:                                              ; preds = %445, %440
  %451 = phi i32 [ %444, %440 ], [ %449, %445 ]
  %452 = icmp ne i32 %451, 0
  br i1 %452, label %453, label %488

453:                                              ; preds = %450
  %454 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %454, ptr %16, align 4, !tbaa !9
  %455 = load ptr, ptr %10, align 8, !tbaa !5
  %456 = load i32, ptr %25, align 4, !tbaa !9
  %457 = sext i32 %456 to i64
  %458 = getelementptr inbounds %struct.complex, ptr %455, i64 %457
  %459 = call <2 x float> @Cf(ptr noundef %458)
  store <2 x float> %459, ptr %36, align 4
  %460 = getelementptr inbounds { float, float }, ptr %36, i32 0, i32 0
  %461 = load float, ptr %460, align 4
  %462 = getelementptr inbounds { float, float }, ptr %36, i32 0, i32 1
  %463 = load float, ptr %462, align 4
  %464 = fneg float %463
  %465 = call ptr @_pCf(ptr noundef %17)
  %466 = getelementptr inbounds { float, float }, ptr %465, i32 0, i32 0
  %467 = getelementptr inbounds { float, float }, ptr %465, i32 0, i32 1
  store float %461, ptr %466, align 4
  store float %464, ptr %467, align 4
  %468 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %469 = load float, ptr %468, align 4, !tbaa !11
  %470 = load ptr, ptr %11, align 8, !tbaa !5
  %471 = load i32, ptr %16, align 4, !tbaa !9
  %472 = sext i32 %471 to i64
  %473 = getelementptr inbounds %struct.complex, ptr %470, i64 %472
  %474 = getelementptr inbounds %struct.complex, ptr %473, i32 0, i32 0
  store float %469, ptr %474, align 4, !tbaa !11
  %475 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %476 = load float, ptr %475, align 4, !tbaa !14
  %477 = load ptr, ptr %11, align 8, !tbaa !5
  %478 = load i32, ptr %16, align 4, !tbaa !9
  %479 = sext i32 %478 to i64
  %480 = getelementptr inbounds %struct.complex, ptr %477, i64 %479
  %481 = getelementptr inbounds %struct.complex, ptr %480, i32 0, i32 1
  store float %476, ptr %481, align 4, !tbaa !14
  %482 = load i32, ptr %31, align 4, !tbaa !9
  %483 = add nsw i32 %482, 1
  store i32 %483, ptr %31, align 4, !tbaa !9
  br label %484

484:                                              ; preds = %453
  %485 = load i32, ptr %15, align 4, !tbaa !9
  %486 = load i32, ptr %25, align 4, !tbaa !9
  %487 = add nsw i32 %486, %485
  store i32 %487, ptr %25, align 4, !tbaa !9
  br label %437, !llvm.loop !24

488:                                              ; preds = %450
  br label %489

489:                                              ; preds = %488
  %490 = load i32, ptr %18, align 4, !tbaa !9
  %491 = add nsw i32 %490, 1
  store i32 %491, ptr %18, align 4, !tbaa !9
  br label %422, !llvm.loop !25

492:                                              ; preds = %422
  store i32 1, ptr %27, align 4, !tbaa !9
  %493 = load i32, ptr %24, align 4, !tbaa !9
  %494 = sub nsw i32 %493, 1
  store i32 %494, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %495

495:                                              ; preds = %546, %492
  %496 = load i32, ptr %19, align 4, !tbaa !9
  %497 = load i32, ptr %13, align 4, !tbaa !9
  %498 = icmp sle i32 %496, %497
  br i1 %498, label %499, label %549

499:                                              ; preds = %495
  %500 = load i32, ptr %27, align 4, !tbaa !9
  %501 = load i32, ptr %24, align 4, !tbaa !9
  %502 = add nsw i32 %500, %501
  %503 = load i32, ptr %19, align 4, !tbaa !9
  %504 = sub nsw i32 %502, %503
  %505 = sub nsw i32 %504, 1
  store i32 %505, ptr %15, align 4, !tbaa !9
  %506 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %506, ptr %25, align 4, !tbaa !9
  br label %507

507:                                              ; preds = %538, %499
  %508 = load i32, ptr %25, align 4, !tbaa !9
  %509 = load i32, ptr %15, align 4, !tbaa !9
  %510 = icmp sle i32 %508, %509
  br i1 %510, label %511, label %541

511:                                              ; preds = %507
  %512 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %512, ptr %14, align 4, !tbaa !9
  %513 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %513, ptr %16, align 4, !tbaa !9
  %514 = load ptr, ptr %10, align 8, !tbaa !5
  %515 = load i32, ptr %16, align 4, !tbaa !9
  %516 = sext i32 %515 to i64
  %517 = getelementptr inbounds %struct.complex, ptr %514, i64 %516
  %518 = getelementptr inbounds %struct.complex, ptr %517, i32 0, i32 0
  %519 = load float, ptr %518, align 4, !tbaa !11
  %520 = load ptr, ptr %11, align 8, !tbaa !5
  %521 = load i32, ptr %14, 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
  store float %519, ptr %524, align 4, !tbaa !11
  %525 = load ptr, ptr %10, align 8, !tbaa !5
  %526 = load i32, ptr %16, align 4, !tbaa !9
  %527 = sext i32 %526 to i64
  %528 = getelementptr inbounds %struct.complex, ptr %525, i64 %527
  %529 = getelementptr inbounds %struct.complex, ptr %528, i32 0, i32 1
  %530 = load float, ptr %529, align 4, !tbaa !14
  %531 = load ptr, ptr %11, align 8, !tbaa !5
  %532 = load i32, ptr %14, 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
  store float %530, ptr %535, align 4, !tbaa !14
  %536 = load i32, ptr %31, align 4, !tbaa !9
  %537 = add nsw i32 %536, 1
  store i32 %537, ptr %31, align 4, !tbaa !9
  br label %538

538:                                              ; preds = %511
  %539 = load i32, ptr %25, align 4, !tbaa !9
  %540 = add nsw i32 %539, 1
  store i32 %540, ptr %25, align 4, !tbaa !9
  br label %507, !llvm.loop !26

541:                                              ; preds = %507
  %542 = load i32, ptr %27, align 4, !tbaa !9
  %543 = load i32, ptr %30, align 4, !tbaa !9
  %544 = add nsw i32 %542, %543
  %545 = add nsw i32 %544, 1
  store i32 %545, ptr %27, align 4, !tbaa !9
  br label %546

546:                                              ; preds = %541
  %547 = load i32, ptr %19, align 4, !tbaa !9
  %548 = add nsw i32 %547, 1
  store i32 %548, ptr %19, align 4, !tbaa !9
  br label %495, !llvm.loop !27

549:                                              ; preds = %495
  br label %678

550:                                              ; preds = %417
  store i32 0, ptr %31, align 4, !tbaa !9
  %551 = load i32, ptr %24, align 4, !tbaa !9
  %552 = load i32, ptr %30, align 4, !tbaa !9
  %553 = mul nsw i32 %551, %552
  store i32 %553, ptr %27, align 4, !tbaa !9
  %554 = load i32, ptr %23, align 4, !tbaa !9
  %555 = sub nsw i32 %554, 1
  store i32 %555, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %556

556:                                              ; preds = %603, %550
  %557 = load i32, ptr %19, align 4, !tbaa !9
  %558 = load i32, ptr %13, align 4, !tbaa !9
  %559 = icmp sle i32 %557, %558
  br i1 %559, label %560, label %606

560:                                              ; preds = %556
  %561 = load i32, ptr %27, align 4, !tbaa !9
  %562 = load i32, ptr %19, align 4, !tbaa !9
  %563 = add nsw i32 %561, %562
  store i32 %563, ptr %15, align 4, !tbaa !9
  %564 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %564, ptr %25, align 4, !tbaa !9
  br label %565

565:                                              ; preds = %596, %560
  %566 = load i32, ptr %25, align 4, !tbaa !9
  %567 = load i32, ptr %15, align 4, !tbaa !9
  %568 = icmp sle i32 %566, %567
  br i1 %568, label %569, label %599

569:                                              ; preds = %565
  %570 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %570, ptr %14, align 4, !tbaa !9
  %571 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %571, ptr %16, align 4, !tbaa !9
  %572 = load ptr, ptr %10, align 8, !tbaa !5
  %573 = load i32, ptr %16, align 4, !tbaa !9
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds %struct.complex, ptr %572, i64 %574
  %576 = getelementptr inbounds %struct.complex, ptr %575, i32 0, i32 0
  %577 = load float, ptr %576, align 4, !tbaa !11
  %578 = load ptr, ptr %11, align 8, !tbaa !5
  %579 = load i32, ptr %14, align 4, !tbaa !9
  %580 = sext i32 %579 to i64
  %581 = getelementptr inbounds %struct.complex, ptr %578, i64 %580
  %582 = getelementptr inbounds %struct.complex, ptr %581, i32 0, i32 0
  store float %577, ptr %582, align 4, !tbaa !11
  %583 = load ptr, ptr %10, align 8, !tbaa !5
  %584 = load i32, ptr %16, align 4, !tbaa !9
  %585 = sext i32 %584 to i64
  %586 = getelementptr inbounds %struct.complex, ptr %583, i64 %585
  %587 = getelementptr inbounds %struct.complex, ptr %586, i32 0, i32 1
  %588 = load float, ptr %587, align 4, !tbaa !14
  %589 = load ptr, ptr %11, align 8, !tbaa !5
  %590 = load i32, ptr %14, align 4, !tbaa !9
  %591 = sext i32 %590 to i64
  %592 = getelementptr inbounds %struct.complex, ptr %589, i64 %591
  %593 = getelementptr inbounds %struct.complex, ptr %592, i32 0, i32 1
  store float %588, ptr %593, align 4, !tbaa !14
  %594 = load i32, ptr %31, align 4, !tbaa !9
  %595 = add nsw i32 %594, 1
  store i32 %595, ptr %31, align 4, !tbaa !9
  br label %596

596:                                              ; preds = %569
  %597 = load i32, ptr %25, align 4, !tbaa !9
  %598 = add nsw i32 %597, 1
  store i32 %598, ptr %25, align 4, !tbaa !9
  br label %565, !llvm.loop !28

599:                                              ; preds = %565
  %600 = load i32, ptr %30, align 4, !tbaa !9
  %601 = load i32, ptr %27, align 4, !tbaa !9
  %602 = add nsw i32 %601, %600
  store i32 %602, ptr %27, align 4, !tbaa !9
  br label %603

603:                                              ; preds = %599
  %604 = load i32, ptr %19, align 4, !tbaa !9
  %605 = add nsw i32 %604, 1
  store i32 %605, ptr %19, align 4, !tbaa !9
  br label %556, !llvm.loop !29

606:                                              ; preds = %556
  %607 = load i32, ptr %23, align 4, !tbaa !9
  store i32 %607, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %608

608:                                              ; preds = %674, %606
  %609 = load i32, ptr %18, align 4, !tbaa !9
  %610 = load i32, ptr %13, align 4, !tbaa !9
  %611 = icmp sle i32 %609, %610
  br i1 %611, label %612, label %677

612:                                              ; preds = %608
  %613 = load i32, ptr %18, align 4, !tbaa !9
  %614 = load i32, ptr %23, align 4, !tbaa !9
  %615 = load i32, ptr %18, align 4, !tbaa !9
  %616 = add nsw i32 %614, %615
  %617 = load i32, ptr %30, align 4, !tbaa !9
  %618 = mul nsw i32 %616, %617
  %619 = add nsw i32 %613, %618
  store i32 %619, ptr %15, align 4, !tbaa !9
  %620 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %620, ptr %14, align 4, !tbaa !9
  %621 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %621, ptr %25, align 4, !tbaa !9
  br label %622

622:                                              ; preds = %669, %612
  %623 = load i32, ptr %14, align 4, !tbaa !9
  %624 = icmp slt i32 %623, 0
  br i1 %624, label %625, label %630

625:                                              ; preds = %622
  %626 = load i32, ptr %25, align 4, !tbaa !9
  %627 = load i32, ptr %15, align 4, !tbaa !9
  %628 = icmp sge i32 %626, %627
  %629 = zext i1 %628 to i32
  br label %635

630:                                              ; preds = %622
  %631 = load i32, ptr %25, align 4, !tbaa !9
  %632 = load i32, ptr %15, align 4, !tbaa !9
  %633 = icmp sle i32 %631, %632
  %634 = zext i1 %633 to i32
  br label %635

635:                                              ; preds = %630, %625
  %636 = phi i32 [ %629, %625 ], [ %634, %630 ]
  %637 = icmp ne i32 %636, 0
  br i1 %637, label %638, label %673

638:                                              ; preds = %635
  %639 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %639, ptr %16, align 4, !tbaa !9
  %640 = load ptr, ptr %10, align 8, !tbaa !5
  %641 = load i32, ptr %25, align 4, !tbaa !9
  %642 = sext i32 %641 to i64
  %643 = getelementptr inbounds %struct.complex, ptr %640, i64 %642
  %644 = call <2 x float> @Cf(ptr noundef %643)
  store <2 x float> %644, ptr %37, align 4
  %645 = getelementptr inbounds { float, float }, ptr %37, i32 0, i32 0
  %646 = load float, ptr %645, align 4
  %647 = getelementptr inbounds { float, float }, ptr %37, i32 0, i32 1
  %648 = load float, ptr %647, align 4
  %649 = fneg float %648
  %650 = call ptr @_pCf(ptr noundef %17)
  %651 = getelementptr inbounds { float, float }, ptr %650, i32 0, i32 0
  %652 = getelementptr inbounds { float, float }, ptr %650, i32 0, i32 1
  store float %646, ptr %651, align 4
  store float %649, ptr %652, align 4
  %653 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %654 = load float, ptr %653, align 4, !tbaa !11
  %655 = load ptr, ptr %11, align 8, !tbaa !5
  %656 = load i32, ptr %16, align 4, !tbaa !9
  %657 = sext i32 %656 to i64
  %658 = getelementptr inbounds %struct.complex, ptr %655, i64 %657
  %659 = getelementptr inbounds %struct.complex, ptr %658, i32 0, i32 0
  store float %654, ptr %659, align 4, !tbaa !11
  %660 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %661 = load float, ptr %660, align 4, !tbaa !14
  %662 = load ptr, ptr %11, align 8, !tbaa !5
  %663 = load i32, ptr %16, align 4, !tbaa !9
  %664 = sext i32 %663 to i64
  %665 = getelementptr inbounds %struct.complex, ptr %662, i64 %664
  %666 = getelementptr inbounds %struct.complex, ptr %665, i32 0, i32 1
  store float %661, ptr %666, align 4, !tbaa !14
  %667 = load i32, ptr %31, align 4, !tbaa !9
  %668 = add nsw i32 %667, 1
  store i32 %668, ptr %31, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %638
  %670 = load i32, ptr %14, align 4, !tbaa !9
  %671 = load i32, ptr %25, align 4, !tbaa !9
  %672 = add nsw i32 %671, %670
  store i32 %672, ptr %25, align 4, !tbaa !9
  br label %622, !llvm.loop !30

673:                                              ; preds = %635
  br label %674

674:                                              ; preds = %673
  %675 = load i32, ptr %18, align 4, !tbaa !9
  %676 = add nsw i32 %675, 1
  store i32 %676, ptr %18, align 4, !tbaa !9
  br label %608, !llvm.loop !31

677:                                              ; preds = %608
  br label %678

678:                                              ; preds = %677, %549
  br label %679

679:                                              ; preds = %678, %416
  br label %1187

680:                                              ; preds = %179
  %681 = load i32, ptr %21, align 4, !tbaa !9
  %682 = icmp ne i32 %681, 0
  br i1 %682, label %683, label %918

683:                                              ; preds = %680
  %684 = load i32, ptr %22, align 4, !tbaa !9
  %685 = icmp ne i32 %684, 0
  br i1 %685, label %686, label %802

686:                                              ; preds = %683
  store i32 0, ptr %31, align 4, !tbaa !9
  store i32 0, ptr %26, align 4, !tbaa !9
  %687 = load i32, ptr %20, align 4, !tbaa !9
  %688 = sub nsw i32 %687, 1
  store i32 %688, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %689

689:                                              ; preds = %740, %686
  %690 = load i32, ptr %19, align 4, !tbaa !9
  %691 = load i32, ptr %13, align 4, !tbaa !9
  %692 = icmp sle i32 %690, %691
  br i1 %692, label %693, label %743

693:                                              ; preds = %689
  %694 = load ptr, ptr %9, align 8, !tbaa !5
  %695 = load i32, ptr %694, align 4, !tbaa !9
  %696 = sub nsw i32 %695, 1
  store i32 %696, ptr %14, align 4, !tbaa !9
  %697 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %697, ptr %18, align 4, !tbaa !9
  br label %698

698:                                              ; preds = %733, %693
  %699 = load i32, ptr %18, align 4, !tbaa !9
  %700 = load i32, ptr %14, align 4, !tbaa !9
  %701 = icmp sle i32 %699, %700
  br i1 %701, label %702, label %736

702:                                              ; preds = %698
  %703 = load i32, ptr %18, align 4, !tbaa !9
  %704 = add nsw i32 %703, 1
  %705 = load i32, ptr %26, align 4, !tbaa !9
  %706 = add nsw i32 %704, %705
  store i32 %706, ptr %25, align 4, !tbaa !9
  %707 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %707, ptr %15, align 4, !tbaa !9
  %708 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %708, ptr %16, align 4, !tbaa !9
  %709 = load ptr, ptr %10, align 8, !tbaa !5
  %710 = load i32, ptr %16, align 4, !tbaa !9
  %711 = sext i32 %710 to i64
  %712 = getelementptr inbounds %struct.complex, ptr %709, i64 %711
  %713 = getelementptr inbounds %struct.complex, ptr %712, i32 0, i32 0
  %714 = load float, ptr %713, align 4, !tbaa !11
  %715 = load ptr, ptr %11, align 8, !tbaa !5
  %716 = load i32, ptr %15, align 4, !tbaa !9
  %717 = sext i32 %716 to i64
  %718 = getelementptr inbounds %struct.complex, ptr %715, i64 %717
  %719 = getelementptr inbounds %struct.complex, ptr %718, i32 0, i32 0
  store float %714, ptr %719, align 4, !tbaa !11
  %720 = load ptr, ptr %10, align 8, !tbaa !5
  %721 = load i32, ptr %16, align 4, !tbaa !9
  %722 = sext i32 %721 to i64
  %723 = getelementptr inbounds %struct.complex, ptr %720, i64 %722
  %724 = getelementptr inbounds %struct.complex, ptr %723, i32 0, i32 1
  %725 = load float, ptr %724, align 4, !tbaa !14
  %726 = load ptr, ptr %11, align 8, !tbaa !5
  %727 = load i32, ptr %15, align 4, !tbaa !9
  %728 = sext i32 %727 to i64
  %729 = getelementptr inbounds %struct.complex, ptr %726, i64 %728
  %730 = getelementptr inbounds %struct.complex, ptr %729, i32 0, i32 1
  store float %725, ptr %730, align 4, !tbaa !14
  %731 = load i32, ptr %31, align 4, !tbaa !9
  %732 = add nsw i32 %731, 1
  store i32 %732, ptr %31, align 4, !tbaa !9
  br label %733

733:                                              ; preds = %702
  %734 = load i32, ptr %18, align 4, !tbaa !9
  %735 = add nsw i32 %734, 1
  store i32 %735, ptr %18, align 4, !tbaa !9
  br label %698, !llvm.loop !32

736:                                              ; preds = %698
  %737 = load i32, ptr %30, align 4, !tbaa !9
  %738 = load i32, ptr %26, align 4, !tbaa !9
  %739 = add nsw i32 %738, %737
  store i32 %739, ptr %26, align 4, !tbaa !9
  br label %740

740:                                              ; preds = %736
  %741 = load i32, ptr %19, align 4, !tbaa !9
  %742 = add nsw i32 %741, 1
  store i32 %742, ptr %19, align 4, !tbaa !9
  br label %689, !llvm.loop !33

743:                                              ; preds = %689
  %744 = load i32, ptr %20, align 4, !tbaa !9
  %745 = sub nsw i32 %744, 1
  store i32 %745, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %746

746:                                              ; preds = %798, %743
  %747 = load i32, ptr %18, align 4, !tbaa !9
  %748 = load i32, ptr %13, align 4, !tbaa !9
  %749 = icmp sle i32 %747, %748
  br i1 %749, label %750, label %801

750:                                              ; preds = %746
  %751 = load i32, ptr %20, align 4, !tbaa !9
  %752 = sub nsw i32 %751, 1
  store i32 %752, ptr %14, align 4, !tbaa !9
  %753 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %753, ptr %19, align 4, !tbaa !9
  br label %754

754:                                              ; preds = %794, %750
  %755 = load i32, ptr %19, align 4, !tbaa !9
  %756 = load i32, ptr %14, align 4, !tbaa !9
  %757 = icmp sle i32 %755, %756
  br i1 %757, label %758, label %797

758:                                              ; preds = %754
  %759 = load i32, ptr %18, align 4, !tbaa !9
  %760 = load i32, ptr %19, align 4, !tbaa !9
  %761 = load i32, ptr %30, align 4, !tbaa !9
  %762 = mul nsw i32 %760, %761
  %763 = add nsw i32 %759, %762
  store i32 %763, ptr %25, align 4, !tbaa !9
  %764 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %764, ptr %15, align 4, !tbaa !9
  %765 = load ptr, ptr %10, align 8, !tbaa !5
  %766 = load i32, ptr %25, align 4, !tbaa !9
  %767 = sext i32 %766 to i64
  %768 = getelementptr inbounds %struct.complex, ptr %765, i64 %767
  %769 = call <2 x float> @Cf(ptr noundef %768)
  store <2 x float> %769, ptr %38, align 4
  %770 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 0
  %771 = load float, ptr %770, align 4
  %772 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 1
  %773 = load float, ptr %772, align 4
  %774 = fneg float %773
  %775 = call ptr @_pCf(ptr noundef %17)
  %776 = getelementptr inbounds { float, float }, ptr %775, i32 0, i32 0
  %777 = getelementptr inbounds { float, float }, ptr %775, i32 0, i32 1
  store float %771, ptr %776, align 4
  store float %774, ptr %777, align 4
  %778 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %779 = load float, ptr %778, align 4, !tbaa !11
  %780 = load ptr, ptr %11, align 8, !tbaa !5
  %781 = load i32, ptr %15, align 4, !tbaa !9
  %782 = sext i32 %781 to i64
  %783 = getelementptr inbounds %struct.complex, ptr %780, i64 %782
  %784 = getelementptr inbounds %struct.complex, ptr %783, i32 0, i32 0
  store float %779, ptr %784, align 4, !tbaa !11
  %785 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %786 = load float, ptr %785, align 4, !tbaa !14
  %787 = load ptr, ptr %11, align 8, !tbaa !5
  %788 = load i32, ptr %15, align 4, !tbaa !9
  %789 = sext i32 %788 to i64
  %790 = getelementptr inbounds %struct.complex, ptr %787, i64 %789
  %791 = getelementptr inbounds %struct.complex, ptr %790, i32 0, i32 1
  store float %786, ptr %791, align 4, !tbaa !14
  %792 = load i32, ptr %31, align 4, !tbaa !9
  %793 = add nsw i32 %792, 1
  store i32 %793, ptr %31, align 4, !tbaa !9
  br label %794

794:                                              ; preds = %758
  %795 = load i32, ptr %19, align 4, !tbaa !9
  %796 = add nsw i32 %795, 1
  store i32 %796, ptr %19, align 4, !tbaa !9
  br label %754, !llvm.loop !34

797:                                              ; preds = %754
  br label %798

798:                                              ; preds = %797
  %799 = load i32, ptr %18, align 4, !tbaa !9
  %800 = add nsw i32 %799, 1
  store i32 %800, ptr %18, align 4, !tbaa !9
  br label %746, !llvm.loop !35

801:                                              ; preds = %746
  br label %917

802:                                              ; preds = %683
  store i32 0, ptr %31, align 4, !tbaa !9
  %803 = load i32, ptr %20, align 4, !tbaa !9
  %804 = sub nsw i32 %803, 1
  store i32 %804, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %805

805:                                              ; preds = %857, %802
  %806 = load i32, ptr %19, align 4, !tbaa !9
  %807 = load i32, ptr %13, align 4, !tbaa !9
  %808 = icmp sle i32 %806, %807
  br i1 %808, label %809, label %860

809:                                              ; preds = %805
  %810 = load i32, ptr %20, align 4, !tbaa !9
  %811 = add nsw i32 %810, 1
  %812 = load i32, ptr %19, align 4, !tbaa !9
  %813 = add nsw i32 %811, %812
  store i32 %813, ptr %25, align 4, !tbaa !9
  %814 = load i32, ptr %19, align 4, !tbaa !9
  store i32 %814, ptr %14, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %815

815:                                              ; preds = %853, %809
  %816 = load i32, ptr %18, align 4, !tbaa !9
  %817 = load i32, ptr %14, align 4, !tbaa !9
  %818 = icmp sle i32 %816, %817
  br i1 %818, label %819, label %856

819:                                              ; preds = %815
  %820 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %820, ptr %15, align 4, !tbaa !9
  %821 = load ptr, ptr %10, align 8, !tbaa !5
  %822 = load i32, ptr %25, align 4, !tbaa !9
  %823 = sext i32 %822 to i64
  %824 = getelementptr inbounds %struct.complex, ptr %821, i64 %823
  %825 = call <2 x float> @Cf(ptr noundef %824)
  store <2 x float> %825, ptr %39, align 4
  %826 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 0
  %827 = load float, ptr %826, align 4
  %828 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 1
  %829 = load float, ptr %828, align 4
  %830 = fneg float %829
  %831 = call ptr @_pCf(ptr noundef %17)
  %832 = getelementptr inbounds { float, float }, ptr %831, i32 0, i32 0
  %833 = getelementptr inbounds { float, float }, ptr %831, i32 0, i32 1
  store float %827, ptr %832, align 4
  store float %830, ptr %833, align 4
  %834 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %835 = load float, ptr %834, align 4, !tbaa !11
  %836 = load ptr, ptr %11, align 8, !tbaa !5
  %837 = load i32, ptr %15, align 4, !tbaa !9
  %838 = sext i32 %837 to i64
  %839 = getelementptr inbounds %struct.complex, ptr %836, i64 %838
  %840 = getelementptr inbounds %struct.complex, ptr %839, i32 0, i32 0
  store float %835, ptr %840, align 4, !tbaa !11
  %841 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %842 = load float, ptr %841, align 4, !tbaa !14
  %843 = load ptr, ptr %11, align 8, !tbaa !5
  %844 = load i32, ptr %15, align 4, !tbaa !9
  %845 = sext i32 %844 to i64
  %846 = getelementptr inbounds %struct.complex, ptr %843, i64 %845
  %847 = getelementptr inbounds %struct.complex, ptr %846, i32 0, i32 1
  store float %842, ptr %847, align 4, !tbaa !14
  %848 = load i32, ptr %31, align 4, !tbaa !9
  %849 = add nsw i32 %848, 1
  store i32 %849, ptr %31, align 4, !tbaa !9
  %850 = load i32, ptr %30, align 4, !tbaa !9
  %851 = load i32, ptr %25, align 4, !tbaa !9
  %852 = add nsw i32 %851, %850
  store i32 %852, ptr %25, align 4, !tbaa !9
  br label %853

853:                                              ; preds = %819
  %854 = load i32, ptr %18, align 4, !tbaa !9
  %855 = add nsw i32 %854, 1
  store i32 %855, ptr %18, align 4, !tbaa !9
  br label %815, !llvm.loop !36

856:                                              ; preds = %815
  br label %857

857:                                              ; preds = %856
  %858 = load i32, ptr %19, align 4, !tbaa !9
  %859 = add nsw i32 %858, 1
  store i32 %859, ptr %19, align 4, !tbaa !9
  br label %805, !llvm.loop !37

860:                                              ; preds = %805
  store i32 0, ptr %27, align 4, !tbaa !9
  %861 = load ptr, ptr %9, align 8, !tbaa !5
  %862 = load i32, ptr %861, align 4, !tbaa !9
  %863 = sub nsw i32 %862, 1
  store i32 %863, ptr %13, align 4, !tbaa !9
  %864 = load i32, ptr %20, align 4, !tbaa !9
  store i32 %864, ptr %19, align 4, !tbaa !9
  br label %865

865:                                              ; preds = %913, %860
  %866 = load i32, ptr %19, align 4, !tbaa !9
  %867 = load i32, ptr %13, align 4, !tbaa !9
  %868 = icmp sle i32 %866, %867
  br i1 %868, label %869, label %916

869:                                              ; preds = %865
  %870 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %870, ptr %25, align 4, !tbaa !9
  %871 = load i32, ptr %27, align 4, !tbaa !9
  %872 = load i32, ptr %19, align 4, !tbaa !9
  %873 = add nsw i32 %871, %872
  store i32 %873, ptr %14, align 4, !tbaa !9
  %874 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %874, ptr %25, align 4, !tbaa !9
  br label %875

875:                                              ; preds = %906, %869
  %876 = load i32, ptr %25, align 4, !tbaa !9
  %877 = load i32, ptr %14, align 4, !tbaa !9
  %878 = icmp sle i32 %876, %877
  br i1 %878, label %879, label %909

879:                                              ; preds = %875
  %880 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %880, ptr %15, align 4, !tbaa !9
  %881 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %881, ptr %16, align 4, !tbaa !9
  %882 = load ptr, ptr %10, align 8, !tbaa !5
  %883 = load i32, ptr %16, align 4, !tbaa !9
  %884 = sext i32 %883 to i64
  %885 = getelementptr inbounds %struct.complex, ptr %882, i64 %884
  %886 = getelementptr inbounds %struct.complex, ptr %885, i32 0, i32 0
  %887 = load float, ptr %886, align 4, !tbaa !11
  %888 = load ptr, ptr %11, align 8, !tbaa !5
  %889 = load i32, ptr %15, align 4, !tbaa !9
  %890 = sext i32 %889 to i64
  %891 = getelementptr inbounds %struct.complex, ptr %888, i64 %890
  %892 = getelementptr inbounds %struct.complex, ptr %891, i32 0, i32 0
  store float %887, ptr %892, align 4, !tbaa !11
  %893 = load ptr, ptr %10, align 8, !tbaa !5
  %894 = load i32, ptr %16, align 4, !tbaa !9
  %895 = sext i32 %894 to i64
  %896 = getelementptr inbounds %struct.complex, ptr %893, i64 %895
  %897 = getelementptr inbounds %struct.complex, ptr %896, i32 0, i32 1
  %898 = load float, ptr %897, align 4, !tbaa !14
  %899 = load ptr, ptr %11, align 8, !tbaa !5
  %900 = load i32, ptr %15, align 4, !tbaa !9
  %901 = sext i32 %900 to i64
  %902 = getelementptr inbounds %struct.complex, ptr %899, i64 %901
  %903 = getelementptr inbounds %struct.complex, ptr %902, i32 0, i32 1
  store float %898, ptr %903, align 4, !tbaa !14
  %904 = load i32, ptr %31, align 4, !tbaa !9
  %905 = add nsw i32 %904, 1
  store i32 %905, ptr %31, align 4, !tbaa !9
  br label %906

906:                                              ; preds = %879
  %907 = load i32, ptr %25, align 4, !tbaa !9
  %908 = add nsw i32 %907, 1
  store i32 %908, ptr %25, align 4, !tbaa !9
  br label %875, !llvm.loop !38

909:                                              ; preds = %875
  %910 = load i32, ptr %30, align 4, !tbaa !9
  %911 = load i32, ptr %27, align 4, !tbaa !9
  %912 = add nsw i32 %911, %910
  store i32 %912, ptr %27, align 4, !tbaa !9
  br label %913

913:                                              ; preds = %909
  %914 = load i32, ptr %19, align 4, !tbaa !9
  %915 = add nsw i32 %914, 1
  store i32 %915, ptr %19, align 4, !tbaa !9
  br label %865, !llvm.loop !39

916:                                              ; preds = %865
  br label %917

917:                                              ; preds = %916, %801
  br label %1186

918:                                              ; preds = %680
  %919 = load i32, ptr %22, align 4, !tbaa !9
  %920 = icmp ne i32 %919, 0
  br i1 %920, label %921, label %1055

921:                                              ; preds = %918
  store i32 0, ptr %31, align 4, !tbaa !9
  %922 = load i32, ptr %20, align 4, !tbaa !9
  %923 = sub nsw i32 %922, 1
  store i32 %923, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %924

924:                                              ; preds = %994, %921
  %925 = load i32, ptr %18, align 4, !tbaa !9
  %926 = load i32, ptr %13, align 4, !tbaa !9
  %927 = icmp sle i32 %925, %926
  br i1 %927, label %928, label %997

928:                                              ; preds = %924
  %929 = load ptr, ptr %9, align 8, !tbaa !5
  %930 = load i32, ptr %929, align 4, !tbaa !9
  %931 = add nsw i32 %930, 1
  %932 = load i32, ptr %30, align 4, !tbaa !9
  %933 = mul nsw i32 %931, %932
  %934 = sub nsw i32 %933, 1
  store i32 %934, ptr %14, align 4, !tbaa !9
  %935 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %935, ptr %15, align 4, !tbaa !9
  %936 = load i32, ptr %18, align 4, !tbaa !9
  %937 = load i32, ptr %18, align 4, !tbaa !9
  %938 = add nsw i32 %937, 1
  %939 = load i32, ptr %30, align 4, !tbaa !9
  %940 = mul nsw i32 %938, %939
  %941 = add nsw i32 %936, %940
  store i32 %941, ptr %25, align 4, !tbaa !9
  br label %942

942:                                              ; preds = %989, %928
  %943 = load i32, ptr %15, align 4, !tbaa !9
  %944 = icmp slt i32 %943, 0
  br i1 %944, label %945, label %950

945:                                              ; preds = %942
  %946 = load i32, ptr %25, align 4, !tbaa !9
  %947 = load i32, ptr %14, align 4, !tbaa !9
  %948 = icmp sge i32 %946, %947
  %949 = zext i1 %948 to i32
  br label %955

950:                                              ; preds = %942
  %951 = load i32, ptr %25, align 4, !tbaa !9
  %952 = load i32, ptr %14, align 4, !tbaa !9
  %953 = icmp sle i32 %951, %952
  %954 = zext i1 %953 to i32
  br label %955

955:                                              ; preds = %950, %945
  %956 = phi i32 [ %949, %945 ], [ %954, %950 ]
  %957 = icmp ne i32 %956, 0
  br i1 %957, label %958, label %993

958:                                              ; preds = %955
  %959 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %959, ptr %16, align 4, !tbaa !9
  %960 = load ptr, ptr %10, align 8, !tbaa !5
  %961 = load i32, ptr %25, align 4, !tbaa !9
  %962 = sext i32 %961 to i64
  %963 = getelementptr inbounds %struct.complex, ptr %960, i64 %962
  %964 = call <2 x float> @Cf(ptr noundef %963)
  store <2 x float> %964, ptr %40, align 4
  %965 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 0
  %966 = load float, ptr %965, align 4
  %967 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 1
  %968 = load float, ptr %967, align 4
  %969 = fneg float %968
  %970 = call ptr @_pCf(ptr noundef %17)
  %971 = getelementptr inbounds { float, float }, ptr %970, i32 0, i32 0
  %972 = getelementptr inbounds { float, float }, ptr %970, i32 0, i32 1
  store float %966, ptr %971, align 4
  store float %969, ptr %972, align 4
  %973 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %974 = load float, ptr %973, align 4, !tbaa !11
  %975 = load ptr, ptr %11, align 8, !tbaa !5
  %976 = load i32, ptr %16, align 4, !tbaa !9
  %977 = sext i32 %976 to i64
  %978 = getelementptr inbounds %struct.complex, ptr %975, i64 %977
  %979 = getelementptr inbounds %struct.complex, ptr %978, i32 0, i32 0
  store float %974, ptr %979, align 4, !tbaa !11
  %980 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %981 = load float, ptr %980, align 4, !tbaa !14
  %982 = load ptr, ptr %11, align 8, !tbaa !5
  %983 = load i32, ptr %16, align 4, !tbaa !9
  %984 = sext i32 %983 to i64
  %985 = getelementptr inbounds %struct.complex, ptr %982, i64 %984
  %986 = getelementptr inbounds %struct.complex, ptr %985, i32 0, i32 1
  store float %981, ptr %986, align 4, !tbaa !14
  %987 = load i32, ptr %31, align 4, !tbaa !9
  %988 = add nsw i32 %987, 1
  store i32 %988, ptr %31, align 4, !tbaa !9
  br label %989

989:                                              ; preds = %958
  %990 = load i32, ptr %15, align 4, !tbaa !9
  %991 = load i32, ptr %25, align 4, !tbaa !9
  %992 = add nsw i32 %991, %990
  store i32 %992, ptr %25, align 4, !tbaa !9
  br label %942, !llvm.loop !40

993:                                              ; preds = %955
  br label %994

994:                                              ; preds = %993
  %995 = load i32, ptr %18, align 4, !tbaa !9
  %996 = add nsw i32 %995, 1
  store i32 %996, ptr %18, align 4, !tbaa !9
  br label %924, !llvm.loop !41

997:                                              ; preds = %924
  store i32 0, ptr %27, align 4, !tbaa !9
  %998 = load i32, ptr %20, align 4, !tbaa !9
  %999 = sub nsw i32 %998, 1
  store i32 %999, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1000

1000:                                             ; preds = %1051, %997
  %1001 = load i32, ptr %19, align 4, !tbaa !9
  %1002 = load i32, ptr %13, align 4, !tbaa !9
  %1003 = icmp sle i32 %1001, %1002
  br i1 %1003, label %1004, label %1054

1004:                                             ; preds = %1000
  %1005 = load i32, ptr %27, align 4, !tbaa !9
  %1006 = load i32, ptr %20, align 4, !tbaa !9
  %1007 = add nsw i32 %1005, %1006
  %1008 = load i32, ptr %19, align 4, !tbaa !9
  %1009 = sub nsw i32 %1007, %1008
  %1010 = sub nsw i32 %1009, 1
  store i32 %1010, ptr %15, align 4, !tbaa !9
  %1011 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %1011, ptr %25, align 4, !tbaa !9
  br label %1012

1012:                                             ; preds = %1043, %1004
  %1013 = load i32, ptr %25, align 4, !tbaa !9
  %1014 = load i32, ptr %15, align 4, !tbaa !9
  %1015 = icmp sle i32 %1013, %1014
  br i1 %1015, label %1016, label %1046

1016:                                             ; preds = %1012
  %1017 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1017, ptr %14, align 4, !tbaa !9
  %1018 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1018, ptr %16, align 4, !tbaa !9
  %1019 = load ptr, ptr %10, align 8, !tbaa !5
  %1020 = load i32, ptr %16, align 4, !tbaa !9
  %1021 = sext i32 %1020 to i64
  %1022 = getelementptr inbounds %struct.complex, ptr %1019, i64 %1021
  %1023 = getelementptr inbounds %struct.complex, ptr %1022, i32 0, i32 0
  %1024 = load float, ptr %1023, align 4, !tbaa !11
  %1025 = load ptr, ptr %11, align 8, !tbaa !5
  %1026 = load i32, ptr %14, align 4, !tbaa !9
  %1027 = sext i32 %1026 to i64
  %1028 = getelementptr inbounds %struct.complex, ptr %1025, i64 %1027
  %1029 = getelementptr inbounds %struct.complex, ptr %1028, i32 0, i32 0
  store float %1024, ptr %1029, align 4, !tbaa !11
  %1030 = load ptr, ptr %10, align 8, !tbaa !5
  %1031 = load i32, ptr %16, align 4, !tbaa !9
  %1032 = sext i32 %1031 to i64
  %1033 = getelementptr inbounds %struct.complex, ptr %1030, i64 %1032
  %1034 = getelementptr inbounds %struct.complex, ptr %1033, i32 0, i32 1
  %1035 = load float, ptr %1034, align 4, !tbaa !14
  %1036 = load ptr, ptr %11, align 8, !tbaa !5
  %1037 = load i32, ptr %14, align 4, !tbaa !9
  %1038 = sext i32 %1037 to i64
  %1039 = getelementptr inbounds %struct.complex, ptr %1036, i64 %1038
  %1040 = getelementptr inbounds %struct.complex, ptr %1039, i32 0, i32 1
  store float %1035, ptr %1040, align 4, !tbaa !14
  %1041 = load i32, ptr %31, align 4, !tbaa !9
  %1042 = add nsw i32 %1041, 1
  store i32 %1042, ptr %31, align 4, !tbaa !9
  br label %1043

1043:                                             ; preds = %1016
  %1044 = load i32, ptr %25, align 4, !tbaa !9
  %1045 = add nsw i32 %1044, 1
  store i32 %1045, ptr %25, align 4, !tbaa !9
  br label %1012, !llvm.loop !42

1046:                                             ; preds = %1012
  %1047 = load i32, ptr %27, align 4, !tbaa !9
  %1048 = load i32, ptr %30, align 4, !tbaa !9
  %1049 = add nsw i32 %1047, %1048
  %1050 = add nsw i32 %1049, 1
  store i32 %1050, ptr %27, align 4, !tbaa !9
  br label %1051

1051:                                             ; preds = %1046
  %1052 = load i32, ptr %19, align 4, !tbaa !9
  %1053 = add nsw i32 %1052, 1
  store i32 %1053, ptr %19, align 4, !tbaa !9
  br label %1000, !llvm.loop !43

1054:                                             ; preds = %1000
  br label %1185

1055:                                             ; preds = %918
  store i32 0, ptr %31, align 4, !tbaa !9
  %1056 = load i32, ptr %20, align 4, !tbaa !9
  %1057 = add nsw i32 %1056, 1
  %1058 = load i32, ptr %30, align 4, !tbaa !9
  %1059 = mul nsw i32 %1057, %1058
  store i32 %1059, ptr %27, align 4, !tbaa !9
  %1060 = load i32, ptr %20, align 4, !tbaa !9
  %1061 = sub nsw i32 %1060, 1
  store i32 %1061, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %19, align 4, !tbaa !9
  br label %1062

1062:                                             ; preds = %1109, %1055
  %1063 = load i32, ptr %19, align 4, !tbaa !9
  %1064 = load i32, ptr %13, align 4, !tbaa !9
  %1065 = icmp sle i32 %1063, %1064
  br i1 %1065, label %1066, label %1112

1066:                                             ; preds = %1062
  %1067 = load i32, ptr %27, align 4, !tbaa !9
  %1068 = load i32, ptr %19, align 4, !tbaa !9
  %1069 = add nsw i32 %1067, %1068
  store i32 %1069, ptr %15, align 4, !tbaa !9
  %1070 = load i32, ptr %27, align 4, !tbaa !9
  store i32 %1070, ptr %25, align 4, !tbaa !9
  br label %1071

1071:                                             ; preds = %1102, %1066
  %1072 = load i32, ptr %25, align 4, !tbaa !9
  %1073 = load i32, ptr %15, align 4, !tbaa !9
  %1074 = icmp sle i32 %1072, %1073
  br i1 %1074, label %1075, label %1105

1075:                                             ; preds = %1071
  %1076 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1076, ptr %14, align 4, !tbaa !9
  %1077 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1077, ptr %16, align 4, !tbaa !9
  %1078 = load ptr, ptr %10, align 8, !tbaa !5
  %1079 = load i32, ptr %16, align 4, !tbaa !9
  %1080 = sext i32 %1079 to i64
  %1081 = getelementptr inbounds %struct.complex, ptr %1078, i64 %1080
  %1082 = getelementptr inbounds %struct.complex, ptr %1081, i32 0, i32 0
  %1083 = load float, ptr %1082, align 4, !tbaa !11
  %1084 = load ptr, ptr %11, align 8, !tbaa !5
  %1085 = load i32, ptr %14, align 4, !tbaa !9
  %1086 = sext i32 %1085 to i64
  %1087 = getelementptr inbounds %struct.complex, ptr %1084, i64 %1086
  %1088 = getelementptr inbounds %struct.complex, ptr %1087, i32 0, i32 0
  store float %1083, ptr %1088, align 4, !tbaa !11
  %1089 = load ptr, ptr %10, align 8, !tbaa !5
  %1090 = load i32, ptr %16, align 4, !tbaa !9
  %1091 = sext i32 %1090 to i64
  %1092 = getelementptr inbounds %struct.complex, ptr %1089, i64 %1091
  %1093 = getelementptr inbounds %struct.complex, ptr %1092, i32 0, i32 1
  %1094 = load float, ptr %1093, align 4, !tbaa !14
  %1095 = load ptr, ptr %11, align 8, !tbaa !5
  %1096 = load i32, ptr %14, align 4, !tbaa !9
  %1097 = sext i32 %1096 to i64
  %1098 = getelementptr inbounds %struct.complex, ptr %1095, i64 %1097
  %1099 = getelementptr inbounds %struct.complex, ptr %1098, i32 0, i32 1
  store float %1094, ptr %1099, align 4, !tbaa !14
  %1100 = load i32, ptr %31, align 4, !tbaa !9
  %1101 = add nsw i32 %1100, 1
  store i32 %1101, ptr %31, align 4, !tbaa !9
  br label %1102

1102:                                             ; preds = %1075
  %1103 = load i32, ptr %25, align 4, !tbaa !9
  %1104 = add nsw i32 %1103, 1
  store i32 %1104, ptr %25, align 4, !tbaa !9
  br label %1071, !llvm.loop !44

1105:                                             ; preds = %1071
  %1106 = load i32, ptr %30, align 4, !tbaa !9
  %1107 = load i32, ptr %27, align 4, !tbaa !9
  %1108 = add nsw i32 %1107, %1106
  store i32 %1108, ptr %27, align 4, !tbaa !9
  br label %1109

1109:                                             ; preds = %1105
  %1110 = load i32, ptr %19, align 4, !tbaa !9
  %1111 = add nsw i32 %1110, 1
  store i32 %1111, ptr %19, align 4, !tbaa !9
  br label %1062, !llvm.loop !45

1112:                                             ; preds = %1062
  %1113 = load i32, ptr %20, align 4, !tbaa !9
  %1114 = sub nsw i32 %1113, 1
  store i32 %1114, ptr %13, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %1115

1115:                                             ; preds = %1181, %1112
  %1116 = load i32, ptr %18, align 4, !tbaa !9
  %1117 = load i32, ptr %13, align 4, !tbaa !9
  %1118 = icmp sle i32 %1116, %1117
  br i1 %1118, label %1119, label %1184

1119:                                             ; preds = %1115
  %1120 = load i32, ptr %18, align 4, !tbaa !9
  %1121 = load i32, ptr %20, align 4, !tbaa !9
  %1122 = load i32, ptr %18, align 4, !tbaa !9
  %1123 = add nsw i32 %1121, %1122
  %1124 = load i32, ptr %30, align 4, !tbaa !9
  %1125 = mul nsw i32 %1123, %1124
  %1126 = add nsw i32 %1120, %1125
  store i32 %1126, ptr %15, align 4, !tbaa !9
  %1127 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %1127, ptr %14, align 4, !tbaa !9
  %1128 = load i32, ptr %18, align 4, !tbaa !9
  store i32 %1128, ptr %25, align 4, !tbaa !9
  br label %1129

1129:                                             ; preds = %1176, %1119
  %1130 = load i32, ptr %14, align 4, !tbaa !9
  %1131 = icmp slt i32 %1130, 0
  br i1 %1131, label %1132, label %1137

1132:                                             ; preds = %1129
  %1133 = load i32, ptr %25, align 4, !tbaa !9
  %1134 = load i32, ptr %15, align 4, !tbaa !9
  %1135 = icmp sge i32 %1133, %1134
  %1136 = zext i1 %1135 to i32
  br label %1142

1137:                                             ; preds = %1129
  %1138 = load i32, ptr %25, align 4, !tbaa !9
  %1139 = load i32, ptr %15, align 4, !tbaa !9
  %1140 = icmp sle i32 %1138, %1139
  %1141 = zext i1 %1140 to i32
  br label %1142

1142:                                             ; preds = %1137, %1132
  %1143 = phi i32 [ %1136, %1132 ], [ %1141, %1137 ]
  %1144 = icmp ne i32 %1143, 0
  br i1 %1144, label %1145, label %1180

1145:                                             ; preds = %1142
  %1146 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1146, ptr %16, align 4, !tbaa !9
  %1147 = load ptr, ptr %10, align 8, !tbaa !5
  %1148 = load i32, ptr %25, align 4, !tbaa !9
  %1149 = sext i32 %1148 to i64
  %1150 = getelementptr inbounds %struct.complex, ptr %1147, i64 %1149
  %1151 = call <2 x float> @Cf(ptr noundef %1150)
  store <2 x float> %1151, ptr %41, align 4
  %1152 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 0
  %1153 = load float, ptr %1152, align 4
  %1154 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 1
  %1155 = load float, ptr %1154, align 4
  %1156 = fneg float %1155
  %1157 = call ptr @_pCf(ptr noundef %17)
  %1158 = getelementptr inbounds { float, float }, ptr %1157, i32 0, i32 0
  %1159 = getelementptr inbounds { float, float }, ptr %1157, i32 0, i32 1
  store float %1153, ptr %1158, align 4
  store float %1156, ptr %1159, align 4
  %1160 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 0
  %1161 = load float, ptr %1160, align 4, !tbaa !11
  %1162 = load ptr, ptr %11, align 8, !tbaa !5
  %1163 = load i32, ptr %16, align 4, !tbaa !9
  %1164 = sext i32 %1163 to i64
  %1165 = getelementptr inbounds %struct.complex, ptr %1162, i64 %1164
  %1166 = getelementptr inbounds %struct.complex, ptr %1165, i32 0, i32 0
  store float %1161, ptr %1166, align 4, !tbaa !11
  %1167 = getelementptr inbounds %struct.complex, ptr %17, i32 0, i32 1
  %1168 = load float, ptr %1167, align 4, !tbaa !14
  %1169 = load ptr, ptr %11, align 8, !tbaa !5
  %1170 = load i32, ptr %16, align 4, !tbaa !9
  %1171 = sext i32 %1170 to i64
  %1172 = getelementptr inbounds %struct.complex, ptr %1169, i64 %1171
  %1173 = getelementptr inbounds %struct.complex, ptr %1172, i32 0, i32 1
  store float %1168, ptr %1173, align 4, !tbaa !14
  %1174 = load i32, ptr %31, align 4, !tbaa !9
  %1175 = add nsw i32 %1174, 1
  store i32 %1175, ptr %31, align 4, !tbaa !9
  br label %1176

1176:                                             ; preds = %1145
  %1177 = load i32, ptr %14, align 4, !tbaa !9
  %1178 = load i32, ptr %25, align 4, !tbaa !9
  %1179 = add nsw i32 %1178, %1177
  store i32 %1179, ptr %25, align 4, !tbaa !9
  br label %1129, !llvm.loop !46

1180:                                             ; preds = %1142
  br label %1181

1181:                                             ; preds = %1180
  %1182 = load i32, ptr %18, align 4, !tbaa !9
  %1183 = add nsw i32 %1182, 1
  store i32 %1183, ptr %18, align 4, !tbaa !9
  br label %1115, !llvm.loop !47

1184:                                             ; preds = %1115
  br label %1185

1185:                                             ; preds = %1184, %1054
  br label %1186

1186:                                             ; preds = %1185, %917
  br label %1187

1187:                                             ; preds = %1186, %679
  store i32 1, ptr %32, align 4
  br label %1188

1188:                                             ; preds = %1187, %129, %85, %76
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  call void @llvm.lifetime.end.p0(i64 4, 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
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #5
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %14) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #5
  ret void
}

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

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

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

; 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

; 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 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = distinct !{!18, !16}
!19 = distinct !{!19, !16}
!20 = distinct !{!20, !16}
!21 = distinct !{!21, !16}
!22 = distinct !{!22, !16}
!23 = distinct !{!23, !16}
!24 = distinct !{!24, !16}
!25 = distinct !{!25, !16}
!26 = distinct !{!26, !16}
!27 = distinct !{!27, !16}
!28 = distinct !{!28, !16}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !16}
!31 = distinct !{!31, !16}
!32 = distinct !{!32, !16}
!33 = distinct !{!33, !16}
!34 = distinct !{!34, !16}
!35 = distinct !{!35, !16}
!36 = distinct !{!36, !16}
!37 = distinct !{!37, !16}
!38 = distinct !{!38, !16}
!39 = distinct !{!39, !16}
!40 = distinct !{!40, !16}
!41 = distinct !{!41, !16}
!42 = distinct !{!42, !16}
!43 = distinct !{!43, !16}
!44 = distinct !{!44, !16}
!45 = distinct !{!45, !16}
!46 = distinct !{!46, !16}
!47 = distinct !{!47, !16}


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

%struct.complex = type { float, float }

@.str = external hidden unnamed_addr constant [2 x i8], align 1
@.str.1 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.2 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [7 x i8], align 1

; Function Attrs: nounwind uwtable
define dso_local void @ctfttp_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr nocapture noundef writeonly %4, ptr nocapture noundef %5) local_unnamed_addr #0 {
  %7 = alloca i32, align 4
  %8 = alloca %struct.complex, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %7) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #6
  store i32 0, ptr %5, align 4, !tbaa !5
  %9 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %10 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not = icmp eq i32 %9, 0
  br i1 %.not, label %11, label %13

11:                                               ; preds = %6
  %12 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str.2) #6
  %.not461 = icmp eq i32 %12, 0
  br i1 %.not461, label %.thread.sink.split, label %13

13:                                               ; preds = %11, %6
  %.not462 = icmp eq i32 %10, 0
  br i1 %.not462, label %14, label %16

14:                                               ; preds = %13
  %15 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.3) #6
  %.not463 = icmp eq i32 %15, 0
  br i1 %.not463, label %.thread.sink.split, label %16

16:                                               ; preds = %14, %13
  %17 = load i32, ptr %2, align 4, !tbaa !5
  %18 = icmp slt i32 %17, 0
  br i1 %18, label %.thread.sink.split, label %19

19:                                               ; preds = %16
  %.pr = load i32, ptr %5, align 4, !tbaa !5
  %.not464 = icmp eq i32 %.pr, 0
  br i1 %.not464, label %23, label %.thread

.thread.sink.split:                               ; preds = %16, %14, %11
  %.sink = phi i32 [ -1, %11 ], [ -2, %14 ], [ -3, %16 ]
  store i32 %.sink, ptr %5, align 4, !tbaa !5
  br label %.thread

.thread:                                          ; preds = %.thread.sink.split, %19
  %20 = phi i32 [ %.pr, %19 ], [ %.sink, %.thread.sink.split ]
  %21 = sub nsw i32 0, %20
  store i32 %21, ptr %7, align 4, !tbaa !5
  %22 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %7, i32 noundef 6) #6
  br label %.loopexit

23:                                               ; preds = %19
  switch i32 %17, label %33 [
    i32 0, label %.loopexit
    i32 1, label %24
  ]

24:                                               ; preds = %23
  br i1 %.not, label %27, label %25

25:                                               ; preds = %24
  %26 = load <2 x float>, ptr %3, align 4, !tbaa !9
  store <2 x float> %26, ptr %4, align 4, !tbaa !9
  br label %.loopexit

27:                                               ; preds = %24
  %28 = tail call <2 x float> @Cf(ptr noundef %3)
  %.sroa.08.0.vec.extract = extractelement <2 x float> %28, i64 0
  %.sroa.08.4.vec.extract = extractelement <2 x float> %28, i64 1
  %29 = fneg float %.sroa.08.4.vec.extract
  %30 = call ptr @_pCf(ptr noundef nonnull %8)
  %31 = getelementptr inbounds i8, ptr %30, i64 4
  store float %.sroa.08.0.vec.extract, ptr %30, align 4
  store float %29, ptr %31, align 4
  %32 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %32, ptr %4, align 4, !tbaa !9
  br label %.loopexit

33:                                               ; preds = %23
  %34 = lshr i32 %17, 1
  %35 = sub nsw i32 %17, %34
  %. = select i1 %.not462, i32 %35, i32 %34
  %.962 = select i1 %.not462, i32 %34, i32 %35
  %36 = and i32 %17, 1
  %37 = icmp eq i32 %36, 0
  %38 = lshr i32 %17, 1
  %.0448 = or i32 %17, 1
  br i1 %.not, label %39, label %.thread499

39:                                               ; preds = %33
  %40 = add nuw i32 %17, 1
  %41 = lshr i32 %40, 1
  br i1 %37, label %335, label %136

.thread499:                                       ; preds = %33
  br i1 %37, label %.thread506, label %.thread503

.thread503:                                       ; preds = %.thread499
  br i1 %.not462, label %91, label %42

42:                                               ; preds = %.thread503
  %.not494523 = icmp slt i32 %., 0
  br i1 %.not494523, label %.loopexit, label %.preheader519.preheader

.preheader519.preheader:                          ; preds = %42
  %43 = zext nneg i32 %.0448 to i64
  %44 = add nuw nsw i32 %., 1
  %wide.trip.count738 = zext nneg i32 %44 to i64
  %wide.trip.count = zext nneg i32 %17 to i64
  %45 = shl nuw nsw i64 %wide.trip.count, 3
  %46 = add nsw i64 %45, -4
  %47 = shl nuw nsw i64 %43, 3
  %48 = add nuw nsw i64 %47, 8
  %49 = shl nuw nsw i64 %43, 3
  %scevgep975 = getelementptr i8, ptr %4, i64 4
  %50 = getelementptr i8, ptr %4, i64 %46
  %51 = getelementptr i8, ptr %3, i64 %46
  %52 = getelementptr i8, ptr %4, i64 %45
  %53 = getelementptr i8, ptr %3, i64 %45
  %invariant.gep1355 = getelementptr i8, ptr %4, i64 16
  %invariant.gep1359 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1363 = getelementptr i8, ptr %4, i64 16
  %invariant.gep1367 = getelementptr i8, ptr %4, i64 24
  br label %.preheader519

.preheader519:                                    ; preds = %.preheader519.preheader, %._crit_edge
  %indvars.iv733 = phi i64 [ 0, %.preheader519.preheader ], [ %indvars.iv.next734, %._crit_edge ]
  %indvars.iv = phi i64 [ 0, %.preheader519.preheader ], [ %indvars.iv.next, %._crit_edge ]
  %.0436525 = phi i32 [ 0, %.preheader519.preheader ], [ %.1437.lcssa, %._crit_edge ]
  %54 = sub nsw i64 %wide.trip.count, %indvars.iv
  %55 = mul nsw i64 %indvars.iv, -8
  %scevgep971 = getelementptr i8, ptr %50, i64 %55
  %56 = mul i64 %48, %indvars.iv
  %scevgep973 = getelementptr i8, ptr %3, i64 %56
  %57 = mul i64 %49, %indvars.iv
  %scevgep974 = getelementptr i8, ptr %51, i64 %57
  %scevgep977 = getelementptr i8, ptr %52, i64 %55
  %58 = or disjoint i64 %56, 4
  %scevgep979 = getelementptr i8, ptr %3, i64 %58
  %scevgep980 = getelementptr i8, ptr %53, i64 %57
  %indvars735 = trunc i64 %indvars.iv to i32
  %.not497.not520 = icmp sgt i32 %17, %indvars735
  br i1 %.not497.not520, label %.lr.ph.preheader, label %._crit_edge

.lr.ph.preheader:                                 ; preds = %.preheader519
  %59 = sext i32 %.0436525 to i64
  %invariant.gep = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv733
  %min.iters.check = icmp ult i64 %54, 6
  br i1 %min.iters.check, label %.lr.ph.preheader1337, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph.preheader
  %60 = shl nsw i64 %59, 3
  %scevgep = getelementptr i8, ptr %4, i64 %60
  %scevgep972 = getelementptr i8, ptr %scevgep971, i64 %60
  %scevgep976 = getelementptr i8, ptr %scevgep975, i64 %60
  %scevgep978 = getelementptr i8, ptr %scevgep977, i64 %60
  %bound0 = icmp ult ptr %scevgep, %scevgep974
  %bound1 = icmp ult ptr %scevgep973, %scevgep972
  %found.conflict = and i1 %bound0, %bound1
  %bound0981 = icmp ult ptr %scevgep976, %scevgep980
  %bound1982 = icmp ult ptr %scevgep979, %scevgep978
  %found.conflict983 = and i1 %bound0981, %bound1982
  %conflict.rdx = or i1 %found.conflict, %found.conflict983
  br i1 %conflict.rdx, label %.lr.ph.preheader1337, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %54, -4
  %ind.end = add i64 %n.vec, %59
  %ind.end984 = add i64 %indvars.iv, %n.vec
  %invariant.gep1353 = getelementptr i8, ptr %invariant.gep, i64 16
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = add i64 %index, %59
  %offset.idx986 = add i64 %indvars.iv, %index
  %61 = getelementptr inbounds %struct.complex, ptr %invariant.gep, i64 %offset.idx986
  %gep1354 = getelementptr %struct.complex, ptr %invariant.gep1353, i64 %offset.idx986
  %wide.vec = load <4 x float>, ptr %61, align 4, !tbaa !9
  %wide.vec987 = load <4 x float>, ptr %gep1354, align 4, !tbaa !9
  %62 = getelementptr inbounds %struct.complex, ptr %4, i64 %offset.idx
  %gep1356 = getelementptr %struct.complex, ptr %invariant.gep1355, i64 %offset.idx
  store <4 x float> %wide.vec, ptr %62, align 4, !tbaa !9
  store <4 x float> %wide.vec987, ptr %gep1356, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %63 = icmp eq i64 %index.next, %n.vec
  br i1 %63, label %middle.block, label %vector.body, !llvm.loop !11

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

.lr.ph.preheader1337:                             ; preds = %middle.block, %vector.memcheck, %.lr.ph.preheader
  %indvars.iv728.ph = phi i64 [ %59, %vector.memcheck ], [ %59, %.lr.ph.preheader ], [ %ind.end, %middle.block ]
  %indvars.iv726.ph = phi i64 [ %indvars.iv, %vector.memcheck ], [ %indvars.iv, %.lr.ph.preheader ], [ %ind.end984, %middle.block ]
  %64 = sub i64 %wide.trip.count, %indvars.iv726.ph
  %xtraiter = and i64 %64, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol

.lr.ph.prol:                                      ; preds = %.lr.ph.preheader1337, %.lr.ph.prol
  %indvars.iv728.prol = phi i64 [ %indvars.iv.next729.prol, %.lr.ph.prol ], [ %indvars.iv728.ph, %.lr.ph.preheader1337 ]
  %indvars.iv726.prol = phi i64 [ %indvars.iv.next727.prol, %.lr.ph.prol ], [ %indvars.iv726.ph, %.lr.ph.preheader1337 ]
  %prol.iter = phi i64 [ %prol.iter.next, %.lr.ph.prol ], [ 0, %.lr.ph.preheader1337 ]
  %gep.prol = getelementptr inbounds %struct.complex, ptr %invariant.gep, i64 %indvars.iv726.prol
  %65 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv728.prol
  %66 = load <2 x float>, ptr %gep.prol, align 4, !tbaa !9
  store <2 x float> %66, ptr %65, align 4, !tbaa !9
  %indvars.iv.next729.prol = add nsw i64 %indvars.iv728.prol, 1
  %indvars.iv.next727.prol = add nuw nsw i64 %indvars.iv726.prol, 1
  %prol.iter.next = add i64 %prol.iter, 1
  %prol.iter.cmp.not = icmp eq i64 %prol.iter.next, %xtraiter
  br i1 %prol.iter.cmp.not, label %.lr.ph.prol.loopexit, label %.lr.ph.prol, !llvm.loop !15

.lr.ph.prol.loopexit:                             ; preds = %.lr.ph.prol, %.lr.ph.preheader1337
  %indvars.iv.next729.lcssa1338.unr = phi i64 [ poison, %.lr.ph.preheader1337 ], [ %indvars.iv.next729.prol, %.lr.ph.prol ]
  %indvars.iv728.unr = phi i64 [ %indvars.iv728.ph, %.lr.ph.preheader1337 ], [ %indvars.iv.next729.prol, %.lr.ph.prol ]
  %indvars.iv726.unr = phi i64 [ %indvars.iv726.ph, %.lr.ph.preheader1337 ], [ %indvars.iv.next727.prol, %.lr.ph.prol ]
  %67 = sub i64 %indvars.iv726.ph, %wide.trip.count
  %68 = icmp ugt i64 %67, -4
  br i1 %68, label %._crit_edge.loopexit, label %.lr.ph.preheader1337.new

.lr.ph.preheader1337.new:                         ; preds = %.lr.ph.prol.loopexit
  %invariant.gep1357 = getelementptr i8, ptr %invariant.gep, i64 8
  %invariant.gep1361 = getelementptr i8, ptr %invariant.gep, i64 16
  %invariant.gep1365 = getelementptr i8, ptr %invariant.gep, i64 24
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph, %.lr.ph.preheader1337.new
  %indvars.iv728 = phi i64 [ %indvars.iv728.unr, %.lr.ph.preheader1337.new ], [ %indvars.iv.next729.3, %.lr.ph ]
  %indvars.iv726 = phi i64 [ %indvars.iv726.unr, %.lr.ph.preheader1337.new ], [ %indvars.iv.next727.3, %.lr.ph ]
  %gep = getelementptr inbounds %struct.complex, ptr %invariant.gep, i64 %indvars.iv726
  %69 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv728
  %70 = load <2 x float>, ptr %gep, align 4, !tbaa !9
  store <2 x float> %70, ptr %69, align 4, !tbaa !9
  %gep1358 = getelementptr %struct.complex, ptr %invariant.gep1357, i64 %indvars.iv726
  %gep1360 = getelementptr %struct.complex, ptr %invariant.gep1359, i64 %indvars.iv728
  %71 = load <2 x float>, ptr %gep1358, align 4, !tbaa !9
  store <2 x float> %71, ptr %gep1360, align 4, !tbaa !9
  %gep1362 = getelementptr %struct.complex, ptr %invariant.gep1361, i64 %indvars.iv726
  %gep1364 = getelementptr %struct.complex, ptr %invariant.gep1363, i64 %indvars.iv728
  %72 = load <2 x float>, ptr %gep1362, align 4, !tbaa !9
  store <2 x float> %72, ptr %gep1364, align 4, !tbaa !9
  %gep1366 = getelementptr %struct.complex, ptr %invariant.gep1365, i64 %indvars.iv726
  %gep1368 = getelementptr %struct.complex, ptr %invariant.gep1367, i64 %indvars.iv728
  %73 = load <2 x float>, ptr %gep1366, align 4, !tbaa !9
  store <2 x float> %73, ptr %gep1368, align 4, !tbaa !9
  %indvars.iv.next729.3 = add nsw i64 %indvars.iv728, 4
  %indvars.iv.next727.3 = add nuw nsw i64 %indvars.iv726, 4
  %exitcond.not.3 = icmp eq i64 %indvars.iv.next727.3, %wide.trip.count
  br i1 %exitcond.not.3, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !17

._crit_edge.loopexit:                             ; preds = %.lr.ph.prol.loopexit, %.lr.ph, %middle.block
  %indvars.iv.next729.lcssa = phi i64 [ %ind.end, %middle.block ], [ %indvars.iv.next729.lcssa1338.unr, %.lr.ph.prol.loopexit ], [ %indvars.iv.next729.3, %.lr.ph ]
  %74 = trunc nsw i64 %indvars.iv.next729.lcssa to i32
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %.preheader519
  %.1437.lcssa = phi i32 [ %.0436525, %.preheader519 ], [ %74, %._crit_edge.loopexit ]
  %indvars.iv.next734 = add nuw nsw i64 %indvars.iv733, %43
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond739.not = icmp eq i64 %indvars.iv.next, %wide.trip.count738
  br i1 %exitcond739.not, label %._crit_edge527, label %.preheader519, !llvm.loop !18

._crit_edge527:                                   ; preds = %._crit_edge
  %.not495535 = icmp eq i32 %., 0
  br i1 %.not495535, label %.loopexit, label %.lr.ph539

.lr.ph539:                                        ; preds = %._crit_edge527
  %75 = add nsw i32 %., -1
  %76 = zext nneg i32 %.0448 to i64
  %77 = add nuw i32 %., 1
  %78 = zext nneg i32 %. to i64
  %79 = sext i32 %75 to i64
  br label %81

.loopexit517.loopexit:                            ; preds = %.lr.ph533
  %80 = trunc nsw i64 %indvars.iv.next745 to i32
  br label %.loopexit517

.loopexit517:                                     ; preds = %.loopexit517.loopexit, %81
  %.3439.lcssa = phi i32 [ %.2438536, %81 ], [ %80, %.loopexit517.loopexit ]
  %.not495.not = icmp slt i64 %indvars.iv750, %79
  %indvars.iv.next741 = add nuw i32 %indvars.iv740, 1
  br i1 %.not495.not, label %81, label %.loopexit, !llvm.loop !19

81:                                               ; preds = %.lr.ph539, %.loopexit517
  %indvars.iv750 = phi i64 [ 0, %.lr.ph539 ], [ %indvars.iv.next751, %.loopexit517 ]
  %indvars.iv740 = phi i32 [ 1, %.lr.ph539 ], [ %indvars.iv.next741, %.loopexit517 ]
  %.2438536 = phi i32 [ %.1437.lcssa, %.lr.ph539 ], [ %.3439.lcssa, %.loopexit517 ]
  %indvars.iv.next751 = add nuw nsw i64 %indvars.iv750, 1
  %.not496529.not = icmp ult i64 %indvars.iv750, %78
  br i1 %.not496529.not, label %.lr.ph533.preheader, label %.loopexit517

.lr.ph533.preheader:                              ; preds = %81
  %82 = sext i32 %indvars.iv740 to i64
  %83 = sext i32 %.2438536 to i64
  %invariant.gep956 = getelementptr %struct.complex, ptr %3, i64 %indvars.iv750
  br label %.lr.ph533

.lr.ph533:                                        ; preds = %.lr.ph533.preheader, %.lr.ph533
  %indvars.iv744 = phi i64 [ %83, %.lr.ph533.preheader ], [ %indvars.iv.next745, %.lr.ph533 ]
  %indvars.iv742 = phi i64 [ %82, %.lr.ph533.preheader ], [ %indvars.iv.next743, %.lr.ph533 ]
  %84 = mul nsw i64 %indvars.iv742, %76
  %gep957 = getelementptr %struct.complex, ptr %invariant.gep956, i64 %84
  %85 = call <2 x float> @Cf(ptr noundef %gep957)
  %.sroa.07.0.vec.extract = extractelement <2 x float> %85, i64 0
  %.sroa.07.4.vec.extract = extractelement <2 x float> %85, i64 1
  %86 = fneg float %.sroa.07.4.vec.extract
  %87 = call ptr @_pCf(ptr noundef nonnull %8)
  %88 = getelementptr inbounds i8, ptr %87, i64 4
  store float %.sroa.07.0.vec.extract, ptr %87, align 4
  store float %86, ptr %88, align 4
  %89 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv744
  %90 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %90, ptr %89, align 4, !tbaa !9
  %indvars.iv.next745 = add nsw i64 %indvars.iv744, 1
  %indvars.iv.next743 = add nsw i64 %indvars.iv742, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next743 to i32
  %exitcond749.not = icmp eq i32 %77, %lftr.wideiv
  br i1 %exitcond749.not, label %.loopexit517.loopexit, label %.lr.ph533, !llvm.loop !20

91:                                               ; preds = %.thread503
  %92 = add nsw i32 %.962, -1
  %.not490543 = icmp slt i32 %.962, 1
  br i1 %.not490543, label %._crit_edge548, label %.lr.ph547

.lr.ph547:                                        ; preds = %91
  %93 = zext nneg i32 %.0448 to i64
  br label %94

94:                                               ; preds = %.lr.ph547, %106
  %indvars.iv762 = phi i32 [ 1, %.lr.ph547 ], [ %indvars.iv.next763, %106 ]
  %indvars.iv753 = phi i32 [ %., %.lr.ph547 ], [ %indvars.iv.next754, %106 ]
  %.2413545 = phi i32 [ 0, %.lr.ph547 ], [ %107, %106 ]
  %.4440544 = phi i32 [ 0, %.lr.ph547 ], [ %97, %106 ]
  %95 = sext i32 %indvars.iv753 to i64
  %96 = sext i32 %.4440544 to i64
  %97 = add i32 %.4440544, %indvars.iv762
  br label %98

98:                                               ; preds = %94, %98
  %indvars.iv757 = phi i64 [ %96, %94 ], [ %indvars.iv.next758, %98 ]
  %indvars.iv755 = phi i64 [ %95, %94 ], [ %indvars.iv.next756, %98 ]
  %99 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv755
  %100 = call <2 x float> @Cf(ptr noundef %99)
  %.sroa.06.0.vec.extract = extractelement <2 x float> %100, i64 0
  %.sroa.06.4.vec.extract = extractelement <2 x float> %100, i64 1
  %101 = fneg float %.sroa.06.4.vec.extract
  %102 = call ptr @_pCf(ptr noundef nonnull %8)
  %103 = getelementptr inbounds i8, ptr %102, i64 4
  store float %.sroa.06.0.vec.extract, ptr %102, align 4
  store float %101, ptr %103, align 4
  %104 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv757
  %105 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %105, ptr %104, align 4, !tbaa !9
  %indvars.iv.next758 = add nsw i64 %indvars.iv757, 1
  %indvars.iv.next756 = add nsw i64 %indvars.iv755, %93
  %lftr.wideiv764 = trunc i64 %indvars.iv.next758 to i32
  %exitcond765.not = icmp eq i32 %97, %lftr.wideiv764
  br i1 %exitcond765.not, label %106, label %98, !llvm.loop !21

106:                                              ; preds = %98
  %107 = add nuw nsw i32 %.2413545, 1
  %.not490.not = icmp slt i32 %.2413545, %92
  %indvars.iv.next754 = add i32 %indvars.iv753, 1
  %indvars.iv.next763 = add nuw i32 %indvars.iv762, 1
  br i1 %.not490.not, label %94, label %._crit_edge548.loopexit, !llvm.loop !22

._crit_edge548.loopexit:                          ; preds = %106
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  br label %._crit_edge548

._crit_edge548:                                   ; preds = %._crit_edge548.loopexit, %91
  %108 = phi i32 [ %17, %91 ], [ %.pre, %._crit_edge548.loopexit ]
  %.4440.lcssa = phi i32 [ 0, %91 ], [ %97, %._crit_edge548.loopexit ]
  %.not491.not557 = icmp slt i32 %.962, %108
  br i1 %.not491.not557, label %.lr.ph562.preheader, label %.loopexit

.lr.ph562.preheader:                              ; preds = %._crit_edge548
  %109 = zext nneg i32 %.0448 to i64
  %110 = sext i32 %.962 to i64
  %wide.trip.count780 = sext i32 %108 to i64
  %scevgep994 = getelementptr i8, ptr %4, i64 4
  %111 = add nuw nsw i64 %109, 1
  %112 = shl nuw nsw i64 %109, 3
  %scevgep999 = getelementptr i8, ptr %4, i64 4
  %scevgep1001 = getelementptr i8, ptr %4, i64 8
  %113 = add nuw nsw i64 %109, 1
  %invariant.gep1373 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1369 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1371 = getelementptr i8, ptr %4, i64 16
  br label %.lr.ph562

.lr.ph562:                                        ; preds = %.lr.ph562.preheader, %._crit_edge555
  %indvar = phi i64 [ 0, %.lr.ph562.preheader ], [ %indvar.next, %._crit_edge555 ]
  %indvars.iv775 = phi i64 [ %110, %.lr.ph562.preheader ], [ %indvars.iv.next776, %._crit_edge555 ]
  %indvars.iv766 = phi i64 [ 0, %.lr.ph562.preheader ], [ %indvars.iv.next767, %._crit_edge555 ]
  %.6442559 = phi i32 [ %.4440.lcssa, %.lr.ph562.preheader ], [ %.7443.lcssa, %._crit_edge555 ]
  %114 = mul i64 %113, %indvar
  %115 = add i64 %114, %110
  %smax1012 = call i64 @llvm.smax.i64(i64 %115, i64 %indvars.iv766)
  %116 = mul i64 %indvar, %109
  %reass.sub = sub i64 %smax1012, %116
  %117 = add i64 %reass.sub, 1
  %118 = mul i64 %111, %indvar
  %119 = add i64 %118, %110
  %smax = call i64 @llvm.smax.i64(i64 %119, i64 %indvars.iv766)
  %120 = mul i64 %indvar, %109
  %121 = sub i64 %smax, %120
  %122 = shl i64 %121, 3
  %123 = mul i64 %112, %indvar
  %scevgep996 = getelementptr i8, ptr %3, i64 %123
  %124 = or disjoint i64 %123, 4
  %scevgep997 = getelementptr i8, ptr %3, i64 %124
  %scevgep998 = getelementptr i8, ptr %scevgep997, i64 %122
  %gep1374 = getelementptr i8, ptr %invariant.gep1373, i64 %123
  %scevgep1004 = getelementptr i8, ptr %gep1374, i64 %122
  %125 = add nsw i64 %indvars.iv775, %indvars.iv766
  %.not492550 = icmp slt i64 %indvars.iv775, 0
  br i1 %.not492550, label %._crit_edge555, label %.lr.ph554.preheader

.lr.ph554.preheader:                              ; preds = %.lr.ph562
  %126 = sext i32 %.6442559 to i64
  %min.iters.check1015 = icmp ult i64 %117, 6
  br i1 %min.iters.check1015, label %.lr.ph554.preheader1332, label %vector.memcheck992

vector.memcheck992:                               ; preds = %.lr.ph554.preheader
  %127 = shl nsw i64 %126, 3
  %scevgep993 = getelementptr i8, ptr %4, i64 %127
  %128 = add i64 %122, %127
  %scevgep995 = getelementptr i8, ptr %scevgep994, i64 %128
  %scevgep1000 = getelementptr i8, ptr %scevgep999, i64 %127
  %scevgep1002 = getelementptr i8, ptr %scevgep1001, i64 %128
  %bound01005 = icmp ult ptr %scevgep993, %scevgep998
  %bound11006 = icmp ult ptr %scevgep996, %scevgep995
  %found.conflict1007 = and i1 %bound01005, %bound11006
  %bound01008 = icmp ult ptr %scevgep1000, %scevgep1004
  %bound11009 = icmp ult ptr %scevgep997, %scevgep1002
  %found.conflict1010 = and i1 %bound01008, %bound11009
  %conflict.rdx1011 = or i1 %found.conflict1007, %found.conflict1010
  br i1 %conflict.rdx1011, label %.lr.ph554.preheader1332, label %vector.ph1016

vector.ph1016:                                    ; preds = %vector.memcheck992
  %n.vec1018 = and i64 %117, -4
  %ind.end1019 = add i64 %n.vec1018, %126
  %ind.end1021 = add i64 %indvars.iv766, %n.vec1018
  br label %vector.body1023

vector.body1023:                                  ; preds = %vector.body1023, %vector.ph1016
  %index1024 = phi i64 [ 0, %vector.ph1016 ], [ %index.next1035, %vector.body1023 ]
  %offset.idx1025 = add i64 %index1024, %126
  %offset.idx1026 = add i64 %indvars.iv766, %index1024
  %129 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1026
  %gep1370 = getelementptr %struct.complex, ptr %invariant.gep1369, i64 %offset.idx1026
  %wide.vec1027 = load <4 x float>, ptr %129, align 4, !tbaa !9
  %wide.vec1028 = load <4 x float>, ptr %gep1370, align 4, !tbaa !9
  %130 = getelementptr inbounds %struct.complex, ptr %4, i64 %offset.idx1025
  %gep1372 = getelementptr %struct.complex, ptr %invariant.gep1371, i64 %offset.idx1025
  store <4 x float> %wide.vec1027, ptr %130, align 4, !tbaa !9
  store <4 x float> %wide.vec1028, ptr %gep1372, align 4, !tbaa !9
  %index.next1035 = add nuw i64 %index1024, 4
  %131 = icmp eq i64 %index.next1035, %n.vec1018
  br i1 %131, label %middle.block1013, label %vector.body1023, !llvm.loop !23

middle.block1013:                                 ; preds = %vector.body1023
  %cmp.n1036 = icmp eq i64 %117, %n.vec1018
  br i1 %cmp.n1036, label %._crit_edge555.loopexit, label %.lr.ph554.preheader1332

.lr.ph554.preheader1332:                          ; preds = %middle.block1013, %vector.memcheck992, %.lr.ph554.preheader
  %indvars.iv770.ph = phi i64 [ %126, %vector.memcheck992 ], [ %126, %.lr.ph554.preheader ], [ %ind.end1019, %middle.block1013 ]
  %indvars.iv768.ph = phi i64 [ %indvars.iv766, %vector.memcheck992 ], [ %indvars.iv766, %.lr.ph554.preheader ], [ %ind.end1021, %middle.block1013 ]
  br label %.lr.ph554

.lr.ph554:                                        ; preds = %.lr.ph554.preheader1332, %.lr.ph554
  %indvars.iv770 = phi i64 [ %indvars.iv.next771, %.lr.ph554 ], [ %indvars.iv770.ph, %.lr.ph554.preheader1332 ]
  %indvars.iv768 = phi i64 [ %indvars.iv.next769, %.lr.ph554 ], [ %indvars.iv768.ph, %.lr.ph554.preheader1332 ]
  %132 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv768
  %133 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv770
  %134 = load <2 x float>, ptr %132, align 4, !tbaa !9
  store <2 x float> %134, ptr %133, align 4, !tbaa !9
  %indvars.iv.next771 = add nsw i64 %indvars.iv770, 1
  %indvars.iv.next769 = add nuw nsw i64 %indvars.iv768, 1
  %.not492.not = icmp slt i64 %indvars.iv768, %125
  br i1 %.not492.not, label %.lr.ph554, label %._crit_edge555.loopexit, !llvm.loop !24

._crit_edge555.loopexit:                          ; preds = %.lr.ph554, %middle.block1013
  %indvars.iv.next771.lcssa = phi i64 [ %ind.end1019, %middle.block1013 ], [ %indvars.iv.next771, %.lr.ph554 ]
  %135 = trunc nsw i64 %indvars.iv.next771.lcssa to i32
  br label %._crit_edge555

._crit_edge555:                                   ; preds = %._crit_edge555.loopexit, %.lr.ph562
  %.7443.lcssa = phi i32 [ %.6442559, %.lr.ph562 ], [ %135, %._crit_edge555.loopexit ]
  %indvars.iv.next767 = add i64 %indvars.iv766, %109
  %indvars.iv.next776 = add nsw i64 %indvars.iv775, 1
  %exitcond781.not = icmp eq i64 %indvars.iv.next776, %wide.trip.count780
  %indvar.next = add i64 %indvar, 1
  br i1 %exitcond781.not, label %.loopexit, label %.lr.ph562, !llvm.loop !25

136:                                              ; preds = %39
  br i1 %.not462, label %198, label %137

137:                                              ; preds = %136
  %.not486614 = icmp slt i32 %., 0
  br i1 %.not486614, label %.loopexit, label %.lr.ph618

.lr.ph618:                                        ; preds = %137
  %138 = add nuw nsw i32 %41, 1
  %139 = zext nneg i32 %41 to i64
  %140 = add nuw nsw i64 %139, 1
  br label %141

141:                                              ; preds = %.lr.ph618, %._crit_edge612
  %indvars.iv841 = phi i64 [ 0, %.lr.ph618 ], [ %indvars.iv.next842, %._crit_edge612 ]
  %.3616 = phi i32 [ 0, %.lr.ph618 ], [ %157, %._crit_edge612 ]
  %.8444615 = phi i32 [ 0, %.lr.ph618 ], [ %.9445.lcssa, %._crit_edge612 ]
  %142 = load i32, ptr %2, align 4, !tbaa !5
  %143 = mul nsw i32 %142, %41
  %144 = mul nuw nsw i32 %.3616, %138
  %145 = icmp slt i32 %144, %143
  br i1 %145, label %.lr.ph611.preheader, label %._crit_edge612

.lr.ph611.preheader:                              ; preds = %141
  %146 = sext i32 %143 to i64
  %147 = sext i32 %.8444615 to i64
  br label %.lr.ph611

.lr.ph611:                                        ; preds = %.lr.ph611.preheader, %.lr.ph611
  %indvars.iv845 = phi i64 [ %147, %.lr.ph611.preheader ], [ %indvars.iv.next846, %.lr.ph611 ]
  %indvars.iv843 = phi i64 [ %indvars.iv841, %.lr.ph611.preheader ], [ %indvars.iv.next844, %.lr.ph611 ]
  %148 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv843
  %149 = call <2 x float> @Cf(ptr noundef %148)
  %.sroa.05.0.vec.extract = extractelement <2 x float> %149, i64 0
  %.sroa.05.4.vec.extract = extractelement <2 x float> %149, i64 1
  %150 = fneg float %.sroa.05.4.vec.extract
  %151 = call ptr @_pCf(ptr noundef nonnull %8)
  %152 = getelementptr inbounds i8, ptr %151, i64 4
  store float %.sroa.05.0.vec.extract, ptr %151, align 4
  store float %150, ptr %152, align 4
  %153 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv845
  %154 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %154, ptr %153, align 4, !tbaa !9
  %indvars.iv.next846 = add nsw i64 %indvars.iv845, 1
  %indvars.iv.next844 = add nsw i64 %indvars.iv843, %139
  %155 = icmp slt i64 %indvars.iv.next844, %146
  br i1 %155, label %.lr.ph611, label %._crit_edge612.loopexit, !llvm.loop !26

._crit_edge612.loopexit:                          ; preds = %.lr.ph611
  %156 = trunc nsw i64 %indvars.iv.next846 to i32
  br label %._crit_edge612

._crit_edge612:                                   ; preds = %._crit_edge612.loopexit, %141
  %.9445.lcssa = phi i32 [ %.8444615, %141 ], [ %156, %._crit_edge612.loopexit ]
  %157 = add nuw nsw i32 %.3616, 1
  %.not486.not = icmp slt i32 %.3616, %.
  %indvars.iv.next842 = add i64 %indvars.iv841, %140
  br i1 %.not486.not, label %141, label %._crit_edge619, !llvm.loop !27

._crit_edge619:                                   ; preds = %._crit_edge612
  %.not487.not628.not = icmp eq i32 %., 0
  br i1 %.not487.not628.not, label %.loopexit, label %.lr.ph633

.lr.ph633:                                        ; preds = %._crit_edge619
  %158 = add nuw nsw i32 %41, 1
  %159 = add nuw i32 %., 1
  %scevgep1130 = getelementptr i8, ptr %4, i64 4
  %160 = add nsw i32 %., -1
  %scevgep1133 = getelementptr i8, ptr %3, i64 4
  %scevgep1135 = getelementptr i8, ptr %4, i64 4
  %scevgep1137 = getelementptr i8, ptr %4, i64 8
  %scevgep1139 = getelementptr i8, ptr %3, i64 4
  %scevgep1141 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1399 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1401 = getelementptr i8, ptr %4, i64 16
  %invariant.gep1403 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1405 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1407 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1409 = getelementptr i8, ptr %4, i64 16
  %invariant.gep1411 = getelementptr i8, ptr %3, i64 24
  %invariant.gep1413 = getelementptr i8, ptr %4, i64 24
  br label %161

161:                                              ; preds = %.lr.ph633, %._crit_edge626
  %indvars.iv859 = phi i32 [ %159, %.lr.ph633 ], [ %indvars.iv.next860, %._crit_edge626 ]
  %indvars.iv850 = phi i32 [ 1, %.lr.ph633 ], [ %indvars.iv.next851, %._crit_edge626 ]
  %.4415631 = phi i32 [ 0, %.lr.ph633 ], [ %197, %._crit_edge626 ]
  %.10446630 = phi i32 [ %.9445.lcssa, %.lr.ph633 ], [ %.11447.lcssa, %._crit_edge626 ]
  %162 = mul i32 %41, %.4415631
  %163 = add i32 %., %162
  %164 = sub i32 %160, %.4415631
  %165 = zext i32 %164 to i64
  %166 = add nuw nsw i64 %165, 1
  %167 = sub i32 %160, %.4415631
  %168 = zext i32 %167 to i64
  %169 = shl nuw nsw i64 %168, 3
  %170 = sext i32 %indvars.iv850 to i64
  %171 = shl nsw i64 %170, 3
  %scevgep1132 = getelementptr i8, ptr %3, i64 %171
  %172 = add nsw i64 %171, %169
  %scevgep1134 = getelementptr i8, ptr %scevgep1133, i64 %172
  %scevgep1140 = getelementptr i8, ptr %scevgep1139, i64 %171
  %scevgep1142 = getelementptr i8, ptr %scevgep1141, i64 %172
  %173 = add nsw i32 %indvars.iv850, %.
  %174 = xor i32 %.4415631, -1
  %175 = add i32 %173, %174
  %.not488621 = icmp sgt i32 %indvars.iv850, %175
  br i1 %.not488621, label %._crit_edge626, label %.lr.ph625.preheader

.lr.ph625.preheader:                              ; preds = %161
  %176 = sext i32 %indvars.iv850 to i64
  %177 = sext i32 %.10446630 to i64
  %min.iters.check1152 = icmp ult i32 %164, 5
  br i1 %min.iters.check1152, label %.lr.ph625.preheader1324, label %vector.memcheck1128

vector.memcheck1128:                              ; preds = %.lr.ph625.preheader
  %178 = shl nsw i64 %177, 3
  %scevgep1129 = getelementptr i8, ptr %4, i64 %178
  %179 = add nsw i64 %178, %169
  %scevgep1131 = getelementptr i8, ptr %scevgep1130, i64 %179
  %scevgep1136 = getelementptr i8, ptr %scevgep1135, i64 %178
  %scevgep1138 = getelementptr i8, ptr %scevgep1137, i64 %179
  %bound01143 = icmp ult ptr %scevgep1129, %scevgep1134
  %bound11144 = icmp ult ptr %scevgep1132, %scevgep1131
  %found.conflict1145 = and i1 %bound01143, %bound11144
  %bound01146 = icmp ult ptr %scevgep1136, %scevgep1142
  %bound11147 = icmp ult ptr %scevgep1140, %scevgep1138
  %found.conflict1148 = and i1 %bound01146, %bound11147
  %conflict.rdx1149 = or i1 %found.conflict1145, %found.conflict1148
  br i1 %conflict.rdx1149, label %.lr.ph625.preheader1324, label %vector.ph1153

vector.ph1153:                                    ; preds = %vector.memcheck1128
  %n.vec1155 = and i64 %166, 8589934588
  %ind.end1156 = add nsw i64 %n.vec1155, %177
  %ind.end1158 = add nsw i64 %n.vec1155, %176
  br label %vector.body1160

vector.body1160:                                  ; preds = %vector.body1160, %vector.ph1153
  %index1161 = phi i64 [ 0, %vector.ph1153 ], [ %index.next1172, %vector.body1160 ]
  %offset.idx1162 = add i64 %index1161, %177
  %offset.idx1163 = add i64 %index1161, %176
  %180 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1163
  %gep1400 = getelementptr %struct.complex, ptr %invariant.gep1399, i64 %offset.idx1163
  %wide.vec1164 = load <4 x float>, ptr %180, align 4, !tbaa !9
  %wide.vec1165 = load <4 x float>, ptr %gep1400, align 4, !tbaa !9
  %181 = getelementptr inbounds %struct.complex, ptr %4, i64 %offset.idx1162
  %gep1402 = getelementptr %struct.complex, ptr %invariant.gep1401, i64 %offset.idx1162
  store <4 x float> %wide.vec1164, ptr %181, align 4, !tbaa !9
  store <4 x float> %wide.vec1165, ptr %gep1402, align 4, !tbaa !9
  %index.next1172 = add nuw i64 %index1161, 4
  %182 = icmp eq i64 %index.next1172, %n.vec1155
  br i1 %182, label %middle.block1150, label %vector.body1160, !llvm.loop !28

middle.block1150:                                 ; preds = %vector.body1160
  %cmp.n1173 = icmp eq i64 %166, %n.vec1155
  br i1 %cmp.n1173, label %._crit_edge626.loopexit, label %.lr.ph625.preheader1324

.lr.ph625.preheader1324:                          ; preds = %middle.block1150, %vector.memcheck1128, %.lr.ph625.preheader
  %indvars.iv854.ph = phi i64 [ %177, %vector.memcheck1128 ], [ %177, %.lr.ph625.preheader ], [ %ind.end1156, %middle.block1150 ]
  %indvars.iv852.ph = phi i64 [ %176, %vector.memcheck1128 ], [ %176, %.lr.ph625.preheader ], [ %ind.end1158, %middle.block1150 ]
  %183 = trunc i64 %indvars.iv852.ph to i32
  %184 = sub i32 %indvars.iv859, %183
  %185 = sub i32 %163, %183
  %xtraiter1342 = and i32 %184, 3
  %lcmp.mod1343.not = icmp eq i32 %xtraiter1342, 0
  br i1 %lcmp.mod1343.not, label %.lr.ph625.prol.loopexit, label %.lr.ph625.prol

.lr.ph625.prol:                                   ; preds = %.lr.ph625.preheader1324, %.lr.ph625.prol
  %indvars.iv854.prol = phi i64 [ %indvars.iv.next855.prol, %.lr.ph625.prol ], [ %indvars.iv854.ph, %.lr.ph625.preheader1324 ]
  %indvars.iv852.prol = phi i64 [ %indvars.iv.next853.prol, %.lr.ph625.prol ], [ %indvars.iv852.ph, %.lr.ph625.preheader1324 ]
  %prol.iter1344 = phi i32 [ %prol.iter1344.next, %.lr.ph625.prol ], [ 0, %.lr.ph625.preheader1324 ]
  %186 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv852.prol
  %187 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv854.prol
  %188 = load <2 x float>, ptr %186, align 4, !tbaa !9
  store <2 x float> %188, ptr %187, align 4, !tbaa !9
  %indvars.iv.next855.prol = add nsw i64 %indvars.iv854.prol, 1
  %indvars.iv.next853.prol = add nsw i64 %indvars.iv852.prol, 1
  %prol.iter1344.next = add i32 %prol.iter1344, 1
  %prol.iter1344.cmp.not = icmp eq i32 %prol.iter1344.next, %xtraiter1342
  br i1 %prol.iter1344.cmp.not, label %.lr.ph625.prol.loopexit, label %.lr.ph625.prol, !llvm.loop !29

.lr.ph625.prol.loopexit:                          ; preds = %.lr.ph625.prol, %.lr.ph625.preheader1324
  %indvars.iv.next855.lcssa1326.unr = phi i64 [ poison, %.lr.ph625.preheader1324 ], [ %indvars.iv.next855.prol, %.lr.ph625.prol ]
  %indvars.iv854.unr = phi i64 [ %indvars.iv854.ph, %.lr.ph625.preheader1324 ], [ %indvars.iv.next855.prol, %.lr.ph625.prol ]
  %indvars.iv852.unr = phi i64 [ %indvars.iv852.ph, %.lr.ph625.preheader1324 ], [ %indvars.iv.next853.prol, %.lr.ph625.prol ]
  %189 = icmp ult i32 %185, 3
  br i1 %189, label %._crit_edge626.loopexit, label %.lr.ph625

.lr.ph625:                                        ; preds = %.lr.ph625.prol.loopexit, %.lr.ph625
  %indvars.iv854 = phi i64 [ %indvars.iv.next855.3, %.lr.ph625 ], [ %indvars.iv854.unr, %.lr.ph625.prol.loopexit ]
  %indvars.iv852 = phi i64 [ %indvars.iv.next853.3, %.lr.ph625 ], [ %indvars.iv852.unr, %.lr.ph625.prol.loopexit ]
  %190 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv852
  %191 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv854
  %192 = load <2 x float>, ptr %190, align 4, !tbaa !9
  store <2 x float> %192, ptr %191, align 4, !tbaa !9
  %gep1404 = getelementptr %struct.complex, ptr %invariant.gep1403, i64 %indvars.iv852
  %gep1406 = getelementptr %struct.complex, ptr %invariant.gep1405, i64 %indvars.iv854
  %193 = load <2 x float>, ptr %gep1404, align 4, !tbaa !9
  store <2 x float> %193, ptr %gep1406, align 4, !tbaa !9
  %gep1408 = getelementptr %struct.complex, ptr %invariant.gep1407, i64 %indvars.iv852
  %gep1410 = getelementptr %struct.complex, ptr %invariant.gep1409, i64 %indvars.iv854
  %194 = load <2 x float>, ptr %gep1408, align 4, !tbaa !9
  store <2 x float> %194, ptr %gep1410, align 4, !tbaa !9
  %gep1412 = getelementptr %struct.complex, ptr %invariant.gep1411, i64 %indvars.iv852
  %gep1414 = getelementptr %struct.complex, ptr %invariant.gep1413, i64 %indvars.iv854
  %195 = load <2 x float>, ptr %gep1412, align 4, !tbaa !9
  store <2 x float> %195, ptr %gep1414, align 4, !tbaa !9
  %indvars.iv.next855.3 = add nsw i64 %indvars.iv854, 4
  %indvars.iv.next853.3 = add nsw i64 %indvars.iv852, 4
  %lftr.wideiv861.3 = trunc i64 %indvars.iv.next853.3 to i32
  %exitcond862.not.3 = icmp eq i32 %indvars.iv859, %lftr.wideiv861.3
  br i1 %exitcond862.not.3, label %._crit_edge626.loopexit, label %.lr.ph625, !llvm.loop !30

._crit_edge626.loopexit:                          ; preds = %.lr.ph625.prol.loopexit, %.lr.ph625, %middle.block1150
  %indvars.iv.next855.lcssa = phi i64 [ %ind.end1156, %middle.block1150 ], [ %indvars.iv.next855.lcssa1326.unr, %.lr.ph625.prol.loopexit ], [ %indvars.iv.next855.3, %.lr.ph625 ]
  %196 = trunc nsw i64 %indvars.iv.next855.lcssa to i32
  br label %._crit_edge626

._crit_edge626:                                   ; preds = %._crit_edge626.loopexit, %161
  %.11447.lcssa = phi i32 [ %.10446630, %161 ], [ %196, %._crit_edge626.loopexit ]
  %indvars.iv.next851 = add i32 %indvars.iv850, %158
  %197 = add nuw nsw i32 %.4415631, 1
  %indvars.iv.next860 = add i32 %indvars.iv859, %41
  %exitcond863.not = icmp eq i32 %197, %.
  br i1 %exitcond863.not, label %.loopexit, label %161, !llvm.loop !31

198:                                              ; preds = %136
  %.not482.not636 = icmp sgt i32 %.962, 0
  br i1 %.not482.not636, label %.lr.ph641.preheader, label %._crit_edge642

.lr.ph641.preheader:                              ; preds = %198
  %199 = mul i32 %., %41
  %200 = sext i32 %199 to i64
  %201 = zext nneg i32 %41 to i64
  %wide.trip.count878 = zext nneg i32 %.962 to i64
  %scevgep1176 = getelementptr i8, ptr %4, i64 4
  %202 = add nuw nsw i64 %201, 1
  %203 = shl nsw i64 %200, 3
  %204 = shl nuw nsw i64 %201, 3
  %205 = or disjoint i64 %203, 4
  %scevgep1182 = getelementptr i8, ptr %4, i64 4
  %scevgep1184 = getelementptr i8, ptr %4, i64 8
  %206 = add nuw nsw i64 %201, 1
  %207 = getelementptr i8, ptr %3, i64 %203
  %208 = getelementptr i8, ptr %207, i64 8
  %209 = getelementptr i8, ptr %3, i64 %205
  %210 = getelementptr i8, ptr %3, i64 %203
  %invariant.gep1415 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1417 = getelementptr i8, ptr %4, i64 16
  br label %.lr.ph641

.lr.ph641:                                        ; preds = %.lr.ph641.preheader, %.loopexit1313
  %indvars.iv873 = phi i64 [ 0, %.lr.ph641.preheader ], [ %indvars.iv.next874, %.loopexit1313 ]
  %indvars.iv864 = phi i64 [ %200, %.lr.ph641.preheader ], [ %indvars.iv.next865, %.loopexit1313 ]
  %.12638 = phi i64 [ 0, %.lr.ph641.preheader ], [ %indvars.iv.next869.lcssa, %.loopexit1313 ]
  %211 = mul i64 %206, %indvars.iv873
  %212 = add i64 %211, %200
  %smax1195 = tail call i64 @llvm.smax.i64(i64 %indvars.iv864, i64 %212)
  %213 = mul i64 %indvars.iv873, %201
  %214 = add i64 %213, %200
  %reass.sub1315 = sub i64 %smax1195, %214
  %215 = add i64 %reass.sub1315, 1
  %216 = add nsw i64 %indvars.iv873, %indvars.iv864
  %sext = shl i64 %.12638, 32
  %217 = ashr exact i64 %sext, 32
  %min.iters.check1198 = icmp ult i64 %215, 6
  br i1 %min.iters.check1198, label %scalar.ph1197.preheader, label %vector.memcheck1174

vector.memcheck1174:                              ; preds = %.lr.ph641
  %218 = mul i64 %204, %indvars.iv873
  %scevgep1186 = getelementptr i8, ptr %208, i64 %218
  %219 = mul i64 %202, %indvars.iv873
  %220 = add i64 %219, %200
  %smax1177 = tail call i64 @llvm.smax.i64(i64 %indvars.iv864, i64 %220)
  %221 = mul i64 %indvars.iv873, %201
  %222 = add i64 %221, %200
  %223 = sub i64 %smax1177, %222
  %224 = shl i64 %223, 3
  %scevgep1187 = getelementptr i8, ptr %scevgep1186, i64 %224
  %scevgep1180 = getelementptr i8, ptr %209, i64 %218
  %scevgep1181 = getelementptr i8, ptr %scevgep1180, i64 %224
  %scevgep1179 = getelementptr i8, ptr %210, i64 %218
  %225 = ashr exact i64 %sext, 29
  %scevgep1175 = getelementptr i8, ptr %4, i64 %225
  %226 = add i64 %224, %225
  %scevgep1178 = getelementptr i8, ptr %scevgep1176, i64 %226
  %scevgep1183 = getelementptr i8, ptr %scevgep1182, i64 %225
  %scevgep1185 = getelementptr i8, ptr %scevgep1184, i64 %226
  %bound01188 = icmp ult ptr %scevgep1175, %scevgep1181
  %bound11189 = icmp ult ptr %scevgep1179, %scevgep1178
  %found.conflict1190 = and i1 %bound01188, %bound11189
  %bound01191 = icmp ult ptr %scevgep1183, %scevgep1187
  %bound11192 = icmp ult ptr %scevgep1180, %scevgep1185
  %found.conflict1193 = and i1 %bound01191, %bound11192
  %conflict.rdx1194 = or i1 %found.conflict1190, %found.conflict1193
  br i1 %conflict.rdx1194, label %scalar.ph1197.preheader, label %vector.ph1199

vector.ph1199:                                    ; preds = %vector.memcheck1174
  %n.vec1201 = and i64 %215, -4
  %ind.end1202 = add i64 %217, %n.vec1201
  %ind.end1204 = add i64 %indvars.iv864, %n.vec1201
  br label %vector.body1206

vector.body1206:                                  ; preds = %vector.body1206, %vector.ph1199
  %index1207 = phi i64 [ 0, %vector.ph1199 ], [ %index.next1218, %vector.body1206 ]
  %offset.idx1208 = add i64 %217, %index1207
  %offset.idx1209 = add i64 %indvars.iv864, %index1207
  %227 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1209
  %gep1416 = getelementptr %struct.complex, ptr %invariant.gep1415, i64 %offset.idx1209
  %wide.vec1210 = load <4 x float>, ptr %227, align 4, !tbaa !9
  %wide.vec1211 = load <4 x float>, ptr %gep1416, align 4, !tbaa !9
  %228 = getelementptr inbounds %struct.complex, ptr %4, i64 %offset.idx1208
  %gep1418 = getelementptr %struct.complex, ptr %invariant.gep1417, i64 %offset.idx1208
  store <4 x float> %wide.vec1210, ptr %228, align 4, !tbaa !9
  store <4 x float> %wide.vec1211, ptr %gep1418, align 4, !tbaa !9
  %index.next1218 = add nuw i64 %index1207, 4
  %229 = icmp eq i64 %index.next1218, %n.vec1201
  br i1 %229, label %middle.block1196, label %vector.body1206, !llvm.loop !32

middle.block1196:                                 ; preds = %vector.body1206
  %cmp.n1219 = icmp eq i64 %215, %n.vec1201
  br i1 %cmp.n1219, label %.loopexit1313, label %scalar.ph1197.preheader

scalar.ph1197.preheader:                          ; preds = %middle.block1196, %vector.memcheck1174, %.lr.ph641
  %indvars.iv868.ph = phi i64 [ %217, %vector.memcheck1174 ], [ %217, %.lr.ph641 ], [ %ind.end1202, %middle.block1196 ]
  %indvars.iv866.ph = phi i64 [ %indvars.iv864, %vector.memcheck1174 ], [ %indvars.iv864, %.lr.ph641 ], [ %ind.end1204, %middle.block1196 ]
  br label %scalar.ph1197

scalar.ph1197:                                    ; preds = %scalar.ph1197.preheader, %scalar.ph1197
  %indvars.iv868 = phi i64 [ %indvars.iv.next869, %scalar.ph1197 ], [ %indvars.iv868.ph, %scalar.ph1197.preheader ]
  %indvars.iv866 = phi i64 [ %indvars.iv.next867, %scalar.ph1197 ], [ %indvars.iv866.ph, %scalar.ph1197.preheader ]
  %230 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv866
  %231 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv868
  %232 = load <2 x float>, ptr %230, align 4, !tbaa !9
  store <2 x float> %232, ptr %231, align 4, !tbaa !9
  %indvars.iv.next869 = add nsw i64 %indvars.iv868, 1
  %indvars.iv.next867 = add nsw i64 %indvars.iv866, 1
  %.not485.not = icmp slt i64 %indvars.iv866, %216
  br i1 %.not485.not, label %scalar.ph1197, label %.loopexit1313, !llvm.loop !33

.loopexit1313:                                    ; preds = %scalar.ph1197, %middle.block1196
  %indvars.iv.next869.lcssa = phi i64 [ %ind.end1202, %middle.block1196 ], [ %indvars.iv.next869, %scalar.ph1197 ]
  %indvars.iv.next865 = add i64 %indvars.iv864, %201
  %indvars.iv.next874 = add nuw nsw i64 %indvars.iv873, 1
  %exitcond879.not = icmp eq i64 %indvars.iv.next874, %wide.trip.count878
  br i1 %exitcond879.not, label %._crit_edge642, label %.lr.ph641, !llvm.loop !34

._crit_edge642:                                   ; preds = %.loopexit1313, %198
  %.12.lcssa = phi i64 [ 0, %198 ], [ %indvars.iv.next869.lcssa, %.loopexit1313 ]
  %.not483651 = icmp slt i32 %.962, 0
  br i1 %.not483651, label %.loopexit, label %.lr.ph655

.lr.ph655:                                        ; preds = %._crit_edge642
  %233 = zext nneg i32 %41 to i64
  %234 = zext nneg i32 %.962 to i64
  br label %.lr.ph648.preheader

.lr.ph648.preheader:                              ; preds = %._crit_edge649, %.lr.ph655
  %indvars.iv880 = phi i64 [ 0, %.lr.ph655 ], [ %indvars.iv.next881, %._crit_edge649 ]
  %.14652 = phi i64 [ %.12.lcssa, %.lr.ph655 ], [ %indvars.iv.next885, %._crit_edge649 ]
  %indvars889 = trunc i64 %indvars.iv880 to i32
  %235 = add nuw nsw i32 %.962, %indvars889
  %236 = mul nsw i32 %235, %41
  %237 = sext i32 %236 to i64
  %238 = add nsw i64 %indvars.iv880, %237
  %sext940 = shl i64 %.14652, 32
  %239 = ashr exact i64 %sext940, 32
  br label %.lr.ph648

.lr.ph648:                                        ; preds = %.lr.ph648.preheader, %.lr.ph648
  %indvars.iv884 = phi i64 [ %239, %.lr.ph648.preheader ], [ %indvars.iv.next885, %.lr.ph648 ]
  %indvars.iv882 = phi i64 [ %indvars.iv880, %.lr.ph648.preheader ], [ %indvars.iv.next883, %.lr.ph648 ]
  %240 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv882
  %241 = call <2 x float> @Cf(ptr noundef %240)
  %.sroa.04.0.vec.extract = extractelement <2 x float> %241, i64 0
  %.sroa.04.4.vec.extract = extractelement <2 x float> %241, i64 1
  %242 = fneg float %.sroa.04.4.vec.extract
  %243 = call ptr @_pCf(ptr noundef nonnull %8)
  %244 = getelementptr inbounds i8, ptr %243, i64 4
  store float %.sroa.04.0.vec.extract, ptr %243, align 4
  store float %242, ptr %244, align 4
  %245 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv884
  %246 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %246, ptr %245, align 4, !tbaa !9
  %indvars.iv.next885 = add nsw i64 %indvars.iv884, 1
  %indvars.iv.next883 = add nuw nsw i64 %indvars.iv882, %233
  %.not941 = icmp sgt i64 %indvars.iv.next883, %238
  br i1 %.not941, label %._crit_edge649, label %.lr.ph648, !llvm.loop !35

._crit_edge649:                                   ; preds = %.lr.ph648
  %indvars.iv.next881 = add nuw nsw i64 %indvars.iv880, 1
  %.not483.not = icmp ult i64 %indvars.iv880, %234
  br i1 %.not483.not, label %.lr.ph648.preheader, label %.loopexit, !llvm.loop !36

.thread506:                                       ; preds = %.thread499
  %247 = add nsw i32 %38, -1
  br i1 %.not462, label %.lr.ph591, label %.preheader515.preheader

.preheader515.preheader:                          ; preds = %.thread506
  %248 = zext nneg i32 %.0448 to i64
  %wide.trip.count798 = zext nneg i32 %38 to i64
  %wide.trip.count791 = zext nneg i32 %17 to i64
  %249 = shl nuw nsw i64 %wide.trip.count791, 3
  %250 = shl nuw nsw i64 %248, 3
  %251 = add nuw nsw i64 %250, 8
  %252 = or disjoint i64 %249, 4
  %253 = shl nuw nsw i64 %248, 3
  %scevgep1043 = getelementptr i8, ptr %4, i64 4
  %254 = or disjoint i64 %249, 8
  %255 = getelementptr i8, ptr %4, i64 %249
  %256 = getelementptr i8, ptr %255, i64 -4
  %257 = getelementptr i8, ptr %3, i64 %252
  %258 = getelementptr i8, ptr %4, i64 %249
  %259 = getelementptr i8, ptr %3, i64 %254
  %invariant.gep1379 = getelementptr i8, ptr %4, i64 16
  %invariant.gep1385 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1389 = getelementptr i8, ptr %4, i64 16
  %invariant.gep1391 = getelementptr i8, ptr %4, i64 24
  br label %.preheader515

.preheader515:                                    ; preds = %.preheader515.preheader, %._crit_edge567
  %indvars.iv793 = phi i64 [ 0, %.preheader515.preheader ], [ %indvars.iv.next794, %._crit_edge567 ]
  %indvars.iv782 = phi i64 [ 0, %.preheader515.preheader ], [ %indvars.iv.next783, %._crit_edge567 ]
  %.16571 = phi i32 [ 0, %.preheader515.preheader ], [ %.17.lcssa, %._crit_edge567 ]
  %260 = sub nsw i64 %wide.trip.count791, %indvars.iv782
  %261 = mul i64 %indvars.iv782, -8
  %scevgep1039 = getelementptr i8, ptr %256, i64 %261
  %262 = mul i64 %251, %indvars.iv782
  %263 = or disjoint i64 %262, 8
  %scevgep1041 = getelementptr i8, ptr %3, i64 %263
  %264 = mul i64 %253, %indvars.iv782
  %scevgep1042 = getelementptr i8, ptr %257, i64 %264
  %scevgep1045 = getelementptr i8, ptr %258, i64 %261
  %265 = or disjoint i64 %262, 12
  %scevgep1047 = getelementptr i8, ptr %3, i64 %265
  %scevgep1048 = getelementptr i8, ptr %259, i64 %264
  %indvars795 = trunc i64 %indvars.iv782 to i32
  %.not481.not563 = icmp sgt i32 %17, %indvars795
  br i1 %.not481.not563, label %.lr.ph566.preheader, label %._crit_edge567

.lr.ph566.preheader:                              ; preds = %.preheader515
  %266 = sext i32 %.16571 to i64
  %invariant.gep958 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv793
  %min.iters.check1058 = icmp ult i64 %260, 6
  br i1 %min.iters.check1058, label %.lr.ph566.preheader1330, label %vector.memcheck1037

vector.memcheck1037:                              ; preds = %.lr.ph566.preheader
  %267 = shl nsw i64 %266, 3
  %scevgep1038 = getelementptr i8, ptr %4, i64 %267
  %scevgep1040 = getelementptr i8, ptr %scevgep1039, i64 %267
  %scevgep1044 = getelementptr i8, ptr %scevgep1043, i64 %267
  %scevgep1046 = getelementptr i8, ptr %scevgep1045, i64 %267
  %bound01049 = icmp ult ptr %scevgep1038, %scevgep1042
  %bound11050 = icmp ult ptr %scevgep1041, %scevgep1040
  %found.conflict1051 = and i1 %bound01049, %bound11050
  %bound01052 = icmp ult ptr %scevgep1044, %scevgep1048
  %bound11053 = icmp ult ptr %scevgep1047, %scevgep1046
  %found.conflict1054 = and i1 %bound01052, %bound11053
  %conflict.rdx1055 = or i1 %found.conflict1051, %found.conflict1054
  br i1 %conflict.rdx1055, label %.lr.ph566.preheader1330, label %vector.ph1059

vector.ph1059:                                    ; preds = %vector.memcheck1037
  %n.vec1061 = and i64 %260, -4
  %ind.end1062 = add i64 %n.vec1061, %266
  %ind.end1064 = add i64 %indvars.iv782, %n.vec1061
  %invariant.gep1375 = getelementptr i8, ptr %invariant.gep958, i64 8
  %invariant.gep1377 = getelementptr i8, ptr %invariant.gep958, i64 24
  br label %vector.body1066

vector.body1066:                                  ; preds = %vector.body1066, %vector.ph1059
  %index1067 = phi i64 [ 0, %vector.ph1059 ], [ %index.next1078, %vector.body1066 ]
  %offset.idx1068 = add i64 %index1067, %266
  %offset.idx1069 = add i64 %indvars.iv782, %index1067
  %gep1376 = getelementptr %struct.complex, ptr %invariant.gep1375, i64 %offset.idx1069
  %gep1378 = getelementptr %struct.complex, ptr %invariant.gep1377, i64 %offset.idx1069
  %wide.vec1070 = load <4 x float>, ptr %gep1376, align 4, !tbaa !9
  %wide.vec1071 = load <4 x float>, ptr %gep1378, align 4, !tbaa !9
  %268 = getelementptr inbounds %struct.complex, ptr %4, i64 %offset.idx1068
  %gep1380 = getelementptr %struct.complex, ptr %invariant.gep1379, i64 %offset.idx1068
  store <4 x float> %wide.vec1070, ptr %268, align 4, !tbaa !9
  store <4 x float> %wide.vec1071, ptr %gep1380, align 4, !tbaa !9
  %index.next1078 = add nuw i64 %index1067, 4
  %269 = icmp eq i64 %index.next1078, %n.vec1061
  br i1 %269, label %middle.block1056, label %vector.body1066, !llvm.loop !37

middle.block1056:                                 ; preds = %vector.body1066
  %cmp.n1079 = icmp eq i64 %260, %n.vec1061
  br i1 %cmp.n1079, label %._crit_edge567.loopexit, label %.lr.ph566.preheader1330

.lr.ph566.preheader1330:                          ; preds = %middle.block1056, %vector.memcheck1037, %.lr.ph566.preheader
  %indvars.iv786.ph = phi i64 [ %266, %vector.memcheck1037 ], [ %266, %.lr.ph566.preheader ], [ %ind.end1062, %middle.block1056 ]
  %indvars.iv784.ph = phi i64 [ %indvars.iv782, %vector.memcheck1037 ], [ %indvars.iv782, %.lr.ph566.preheader ], [ %ind.end1064, %middle.block1056 ]
  %270 = sub i64 %wide.trip.count791, %indvars.iv784.ph
  %xtraiter1339 = and i64 %270, 3
  %lcmp.mod1340.not = icmp eq i64 %xtraiter1339, 0
  br i1 %lcmp.mod1340.not, label %.lr.ph566.prol.loopexit, label %.lr.ph566.prol

.lr.ph566.prol:                                   ; preds = %.lr.ph566.preheader1330, %.lr.ph566.prol
  %indvars.iv786.prol = phi i64 [ %indvars.iv.next787.prol, %.lr.ph566.prol ], [ %indvars.iv786.ph, %.lr.ph566.preheader1330 ]
  %indvars.iv784.prol = phi i64 [ %indvars.iv.next785.prol, %.lr.ph566.prol ], [ %indvars.iv784.ph, %.lr.ph566.preheader1330 ]
  %prol.iter1341 = phi i64 [ %prol.iter1341.next, %.lr.ph566.prol ], [ 0, %.lr.ph566.preheader1330 ]
  %indvars.iv.next785.prol = add nuw nsw i64 %indvars.iv784.prol, 1
  %gep959.prol = getelementptr inbounds %struct.complex, ptr %invariant.gep958, i64 %indvars.iv.next785.prol
  %271 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv786.prol
  %272 = load <2 x float>, ptr %gep959.prol, align 4, !tbaa !9
  store <2 x float> %272, ptr %271, align 4, !tbaa !9
  %indvars.iv.next787.prol = add nsw i64 %indvars.iv786.prol, 1
  %prol.iter1341.next = add i64 %prol.iter1341, 1
  %prol.iter1341.cmp.not = icmp eq i64 %prol.iter1341.next, %xtraiter1339
  br i1 %prol.iter1341.cmp.not, label %.lr.ph566.prol.loopexit, label %.lr.ph566.prol, !llvm.loop !38

.lr.ph566.prol.loopexit:                          ; preds = %.lr.ph566.prol, %.lr.ph566.preheader1330
  %indvars.iv.next787.lcssa1331.unr = phi i64 [ poison, %.lr.ph566.preheader1330 ], [ %indvars.iv.next787.prol, %.lr.ph566.prol ]
  %indvars.iv786.unr = phi i64 [ %indvars.iv786.ph, %.lr.ph566.preheader1330 ], [ %indvars.iv.next787.prol, %.lr.ph566.prol ]
  %indvars.iv784.unr = phi i64 [ %indvars.iv784.ph, %.lr.ph566.preheader1330 ], [ %indvars.iv.next785.prol, %.lr.ph566.prol ]
  %273 = sub i64 %indvars.iv784.ph, %wide.trip.count791
  %274 = icmp ugt i64 %273, -4
  br i1 %274, label %._crit_edge567.loopexit, label %.lr.ph566.preheader1330.new

.lr.ph566.preheader1330.new:                      ; preds = %.lr.ph566.prol.loopexit
  %invariant.gep1381 = getelementptr i8, ptr %invariant.gep958, i64 8
  %invariant.gep1383 = getelementptr i8, ptr %invariant.gep958, i64 16
  %invariant.gep1387 = getelementptr i8, ptr %invariant.gep958, i64 24
  br label %.lr.ph566

.lr.ph566:                                        ; preds = %.lr.ph566, %.lr.ph566.preheader1330.new
  %indvars.iv786 = phi i64 [ %indvars.iv786.unr, %.lr.ph566.preheader1330.new ], [ %indvars.iv.next787.3, %.lr.ph566 ]
  %indvars.iv784 = phi i64 [ %indvars.iv784.unr, %.lr.ph566.preheader1330.new ], [ %indvars.iv.next785.3, %.lr.ph566 ]
  %gep1382 = getelementptr %struct.complex, ptr %invariant.gep1381, i64 %indvars.iv784
  %275 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv786
  %276 = load <2 x float>, ptr %gep1382, align 4, !tbaa !9
  store <2 x float> %276, ptr %275, align 4, !tbaa !9
  %gep1384 = getelementptr %struct.complex, ptr %invariant.gep1383, i64 %indvars.iv784
  %gep1386 = getelementptr %struct.complex, ptr %invariant.gep1385, i64 %indvars.iv786
  %277 = load <2 x float>, ptr %gep1384, align 4, !tbaa !9
  store <2 x float> %277, ptr %gep1386, align 4, !tbaa !9
  %gep1388 = getelementptr %struct.complex, ptr %invariant.gep1387, i64 %indvars.iv784
  %gep1390 = getelementptr %struct.complex, ptr %invariant.gep1389, i64 %indvars.iv786
  %278 = load <2 x float>, ptr %gep1388, align 4, !tbaa !9
  store <2 x float> %278, ptr %gep1390, align 4, !tbaa !9
  %indvars.iv.next785.3 = add nuw nsw i64 %indvars.iv784, 4
  %gep959.3 = getelementptr inbounds %struct.complex, ptr %invariant.gep958, i64 %indvars.iv.next785.3
  %gep1392 = getelementptr %struct.complex, ptr %invariant.gep1391, i64 %indvars.iv786
  %279 = load <2 x float>, ptr %gep959.3, align 4, !tbaa !9
  store <2 x float> %279, ptr %gep1392, align 4, !tbaa !9
  %indvars.iv.next787.3 = add nsw i64 %indvars.iv786, 4
  %exitcond792.not.3 = icmp eq i64 %indvars.iv.next785.3, %wide.trip.count791
  br i1 %exitcond792.not.3, label %._crit_edge567.loopexit, label %.lr.ph566, !llvm.loop !39

._crit_edge567.loopexit:                          ; preds = %.lr.ph566.prol.loopexit, %.lr.ph566, %middle.block1056
  %indvars.iv.next787.lcssa = phi i64 [ %ind.end1062, %middle.block1056 ], [ %indvars.iv.next787.lcssa1331.unr, %.lr.ph566.prol.loopexit ], [ %indvars.iv.next787.3, %.lr.ph566 ]
  %280 = trunc nsw i64 %indvars.iv.next787.lcssa to i32
  br label %._crit_edge567

._crit_edge567:                                   ; preds = %._crit_edge567.loopexit, %.preheader515
  %.17.lcssa = phi i32 [ %.16571, %.preheader515 ], [ %280, %._crit_edge567.loopexit ]
  %indvars.iv.next794 = add nuw nsw i64 %indvars.iv793, %248
  %indvars.iv.next783 = add nuw nsw i64 %indvars.iv782, 1
  %exitcond799.not = icmp eq i64 %indvars.iv.next783, %wide.trip.count798
  br i1 %exitcond799.not, label %._crit_edge573, label %.preheader515, !llvm.loop !40

._crit_edge573:                                   ; preds = %._crit_edge567
  %.not479581 = icmp eq i32 %17, 0
  br i1 %.not479581, label %.loopexit, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %._crit_edge573
  %281 = zext nneg i32 %.0448 to i64
  %282 = zext nneg i32 %38 to i64
  %wide.trip.count809 = zext nneg i32 %38 to i64
  %283 = sext i32 %247 to i64
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge579
  %indvars.iv800 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next801, %._crit_edge579 ]
  %.18582 = phi i32 [ %.17.lcssa, %.preheader.lr.ph ], [ %.19.lcssa, %._crit_edge579 ]
  %.not480.not575 = icmp ult i64 %indvars.iv800, %282
  br i1 %.not480.not575, label %.lr.ph578.preheader, label %._crit_edge579

.lr.ph578.preheader:                              ; preds = %.preheader
  %284 = sext i32 %.18582 to i64
  %invariant.gep960 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv800
  br label %.lr.ph578

.lr.ph578:                                        ; preds = %.lr.ph578.preheader, %.lr.ph578
  %indvars.iv804 = phi i64 [ %284, %.lr.ph578.preheader ], [ %indvars.iv.next805, %.lr.ph578 ]
  %indvars.iv802 = phi i64 [ %indvars.iv800, %.lr.ph578.preheader ], [ %indvars.iv.next803, %.lr.ph578 ]
  %285 = mul nuw nsw i64 %indvars.iv802, %281
  %gep961 = getelementptr inbounds %struct.complex, ptr %invariant.gep960, i64 %285
  %286 = call <2 x float> @Cf(ptr noundef %gep961)
  %.sroa.03.0.vec.extract = extractelement <2 x float> %286, i64 0
  %.sroa.03.4.vec.extract = extractelement <2 x float> %286, i64 1
  %287 = fneg float %.sroa.03.4.vec.extract
  %288 = call ptr @_pCf(ptr noundef nonnull %8)
  %289 = getelementptr inbounds i8, ptr %288, i64 4
  store float %.sroa.03.0.vec.extract, ptr %288, align 4
  store float %287, ptr %289, align 4
  %290 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv804
  %291 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %291, ptr %290, align 4, !tbaa !9
  %indvars.iv.next805 = add nsw i64 %indvars.iv804, 1
  %indvars.iv.next803 = add nuw nsw i64 %indvars.iv802, 1
  %exitcond810.not = icmp eq i64 %indvars.iv.next803, %wide.trip.count809
  br i1 %exitcond810.not, label %._crit_edge579.loopexit, label %.lr.ph578, !llvm.loop !41

._crit_edge579.loopexit:                          ; preds = %.lr.ph578
  %292 = trunc nsw i64 %indvars.iv.next805 to i32
  br label %._crit_edge579

._crit_edge579:                                   ; preds = %._crit_edge579.loopexit, %.preheader
  %.19.lcssa = phi i32 [ %.18582, %.preheader ], [ %292, %._crit_edge579.loopexit ]
  %indvars.iv.next801 = add nuw nsw i64 %indvars.iv800, 1
  %.not479.not = icmp slt i64 %indvars.iv800, %283
  br i1 %.not479.not, label %.preheader, label %.loopexit, !llvm.loop !42

.lr.ph591:                                        ; preds = %.thread506
  %293 = zext nneg i32 %.0448 to i64
  br label %294

294:                                              ; preds = %.lr.ph591, %306
  %indvars.iv821 = phi i32 [ 1, %.lr.ph591 ], [ %indvars.iv.next822, %306 ]
  %indvars.iv812.in = phi i32 [ %38, %.lr.ph591 ], [ %indvars.iv812, %306 ]
  %.8419589 = phi i32 [ 0, %.lr.ph591 ], [ %307, %306 ]
  %.20588 = phi i32 [ 0, %.lr.ph591 ], [ %297, %306 ]
  %indvars.iv812 = add i32 %indvars.iv812.in, 1
  %295 = sext i32 %indvars.iv812 to i64
  %296 = sext i32 %.20588 to i64
  %297 = add i32 %.20588, %indvars.iv821
  br label %298

298:                                              ; preds = %294, %298
  %indvars.iv816 = phi i64 [ %296, %294 ], [ %indvars.iv.next817, %298 ]
  %indvars.iv814 = phi i64 [ %295, %294 ], [ %indvars.iv.next815, %298 ]
  %299 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv814
  %300 = call <2 x float> @Cf(ptr noundef %299)
  %.sroa.02.0.vec.extract = extractelement <2 x float> %300, i64 0
  %.sroa.02.4.vec.extract = extractelement <2 x float> %300, i64 1
  %301 = fneg float %.sroa.02.4.vec.extract
  %302 = call ptr @_pCf(ptr noundef nonnull %8)
  %303 = getelementptr inbounds i8, ptr %302, i64 4
  store float %.sroa.02.0.vec.extract, ptr %302, align 4
  store float %301, ptr %303, align 4
  %304 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv816
  %305 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %305, ptr %304, align 4, !tbaa !9
  %indvars.iv.next817 = add nsw i64 %indvars.iv816, 1
  %indvars.iv.next815 = add nsw i64 %indvars.iv814, %293
  %lftr.wideiv823 = trunc i64 %indvars.iv.next817 to i32
  %exitcond824.not = icmp eq i32 %297, %lftr.wideiv823
  br i1 %exitcond824.not, label %306, label %298, !llvm.loop !43

306:                                              ; preds = %298
  %307 = add nuw nsw i32 %.8419589, 1
  %.not474.not = icmp slt i32 %.8419589, %247
  %indvars.iv.next822 = add nuw i32 %indvars.iv821, 1
  br i1 %.not474.not, label %294, label %._crit_edge592, !llvm.loop !44

._crit_edge592:                                   ; preds = %306
  %.pre939 = load i32, ptr %2, align 4, !tbaa !5
  %.not475.not601 = icmp slt i32 %38, %.pre939
  br i1 %.not475.not601, label %.lr.ph606.preheader, label %.loopexit

.lr.ph606.preheader:                              ; preds = %._crit_edge592
  %308 = zext nneg i32 %.0448 to i64
  %309 = zext nneg i32 %38 to i64
  %wide.trip.count839 = sext i32 %.pre939 to i64
  %scevgep1082 = getelementptr i8, ptr %4, i64 4
  %310 = add nuw nsw i64 %308, 1
  %311 = shl nuw nsw i64 %308, 3
  %scevgep1090 = getelementptr i8, ptr %4, i64 4
  %scevgep1092 = getelementptr i8, ptr %4, i64 8
  %312 = add nuw nsw i64 %308, 1
  %invariant.gep1397 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1393 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1395 = getelementptr i8, ptr %4, i64 16
  br label %.lr.ph606

.lr.ph606:                                        ; preds = %.lr.ph606.preheader, %._crit_edge599.loopexit
  %indvar1083 = phi i64 [ 0, %.lr.ph606.preheader ], [ %indvar.next1084, %._crit_edge599.loopexit ]
  %indvars.iv834 = phi i64 [ %309, %.lr.ph606.preheader ], [ %indvars.iv.next835, %._crit_edge599.loopexit ]
  %indvars.iv825 = phi i64 [ 0, %.lr.ph606.preheader ], [ %indvars.iv.next826, %._crit_edge599.loopexit ]
  %.22603 = phi i32 [ %297, %.lr.ph606.preheader ], [ %334, %._crit_edge599.loopexit ]
  %313 = mul i64 %312, %indvar1083
  %314 = add i64 %313, %309
  %smax1103 = call i64 @llvm.smax.i64(i64 %314, i64 %indvars.iv825)
  %315 = mul i64 %indvar1083, %308
  %reass.sub1314 = sub i64 %smax1103, %315
  %316 = add i64 %reass.sub1314, 1
  %317 = add nsw i64 %indvars.iv834, %indvars.iv825
  %318 = sext i32 %.22603 to i64
  %min.iters.check1106 = icmp ult i64 %316, 6
  br i1 %min.iters.check1106, label %.lr.ph598.preheader, label %vector.memcheck1080

vector.memcheck1080:                              ; preds = %.lr.ph606
  %319 = mul i64 %311, %indvar1083
  %gep1398 = getelementptr i8, ptr %invariant.gep1397, i64 %319
  %320 = mul i64 %310, %indvar1083
  %321 = add i64 %320, %309
  %smax1085 = call i64 @llvm.smax.i64(i64 %321, i64 %indvars.iv825)
  %322 = mul i64 %indvar1083, %308
  %323 = sub i64 %smax1085, %322
  %324 = shl i64 %323, 3
  %scevgep1095 = getelementptr i8, ptr %gep1398, i64 %324
  %325 = or disjoint i64 %319, 4
  %scevgep1088 = getelementptr i8, ptr %3, i64 %325
  %scevgep1089 = getelementptr i8, ptr %scevgep1088, i64 %324
  %scevgep1087 = getelementptr i8, ptr %3, i64 %319
  %326 = shl nsw i64 %318, 3
  %scevgep1081 = getelementptr i8, ptr %4, i64 %326
  %327 = add i64 %324, %326
  %scevgep1086 = getelementptr i8, ptr %scevgep1082, i64 %327
  %scevgep1091 = getelementptr i8, ptr %scevgep1090, i64 %326
  %scevgep1093 = getelementptr i8, ptr %scevgep1092, i64 %327
  %bound01096 = icmp ult ptr %scevgep1081, %scevgep1089
  %bound11097 = icmp ult ptr %scevgep1087, %scevgep1086
  %found.conflict1098 = and i1 %bound01096, %bound11097
  %bound01099 = icmp ult ptr %scevgep1091, %scevgep1095
  %bound11100 = icmp ult ptr %scevgep1088, %scevgep1093
  %found.conflict1101 = and i1 %bound01099, %bound11100
  %conflict.rdx1102 = or i1 %found.conflict1098, %found.conflict1101
  br i1 %conflict.rdx1102, label %.lr.ph598.preheader, label %vector.ph1107

vector.ph1107:                                    ; preds = %vector.memcheck1080
  %n.vec1109 = and i64 %316, -4
  %ind.end1110 = add i64 %n.vec1109, %318
  %ind.end1112 = add i64 %indvars.iv825, %n.vec1109
  br label %vector.body1114

vector.body1114:                                  ; preds = %vector.body1114, %vector.ph1107
  %index1115 = phi i64 [ 0, %vector.ph1107 ], [ %index.next1126, %vector.body1114 ]
  %offset.idx1116 = add i64 %index1115, %318
  %offset.idx1117 = add i64 %indvars.iv825, %index1115
  %328 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1117
  %gep1394 = getelementptr %struct.complex, ptr %invariant.gep1393, i64 %offset.idx1117
  %wide.vec1118 = load <4 x float>, ptr %328, align 4, !tbaa !9
  %wide.vec1119 = load <4 x float>, ptr %gep1394, align 4, !tbaa !9
  %329 = getelementptr inbounds %struct.complex, ptr %4, i64 %offset.idx1116
  %gep1396 = getelementptr %struct.complex, ptr %invariant.gep1395, i64 %offset.idx1116
  store <4 x float> %wide.vec1118, ptr %329, align 4, !tbaa !9
  store <4 x float> %wide.vec1119, ptr %gep1396, align 4, !tbaa !9
  %index.next1126 = add nuw i64 %index1115, 4
  %330 = icmp eq i64 %index.next1126, %n.vec1109
  br i1 %330, label %middle.block1104, label %vector.body1114, !llvm.loop !45

middle.block1104:                                 ; preds = %vector.body1114
  %cmp.n1127 = icmp eq i64 %316, %n.vec1109
  br i1 %cmp.n1127, label %._crit_edge599.loopexit, label %.lr.ph598.preheader

.lr.ph598.preheader:                              ; preds = %middle.block1104, %vector.memcheck1080, %.lr.ph606
  %indvars.iv829.ph = phi i64 [ %318, %vector.memcheck1080 ], [ %318, %.lr.ph606 ], [ %ind.end1110, %middle.block1104 ]
  %indvars.iv827.ph = phi i64 [ %indvars.iv825, %vector.memcheck1080 ], [ %indvars.iv825, %.lr.ph606 ], [ %ind.end1112, %middle.block1104 ]
  br label %.lr.ph598

.lr.ph598:                                        ; preds = %.lr.ph598.preheader, %.lr.ph598
  %indvars.iv829 = phi i64 [ %indvars.iv.next830, %.lr.ph598 ], [ %indvars.iv829.ph, %.lr.ph598.preheader ]
  %indvars.iv827 = phi i64 [ %indvars.iv.next828, %.lr.ph598 ], [ %indvars.iv827.ph, %.lr.ph598.preheader ]
  %331 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv827
  %332 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv829
  %333 = load <2 x float>, ptr %331, align 4, !tbaa !9
  store <2 x float> %333, ptr %332, align 4, !tbaa !9
  %indvars.iv.next830 = add nsw i64 %indvars.iv829, 1
  %indvars.iv.next828 = add nuw nsw i64 %indvars.iv827, 1
  %.not476.not = icmp slt i64 %indvars.iv827, %317
  br i1 %.not476.not, label %.lr.ph598, label %._crit_edge599.loopexit, !llvm.loop !46

._crit_edge599.loopexit:                          ; preds = %.lr.ph598, %middle.block1104
  %indvars.iv.next830.lcssa = phi i64 [ %ind.end1110, %middle.block1104 ], [ %indvars.iv.next830, %.lr.ph598 ]
  %334 = trunc nsw i64 %indvars.iv.next830.lcssa to i32
  %indvars.iv.next826 = add i64 %indvars.iv825, %308
  %indvars.iv.next835 = add nuw nsw i64 %indvars.iv834, 1
  %exitcond840.not = icmp eq i64 %indvars.iv.next835, %wide.trip.count839
  %indvar.next1084 = add i64 %indvar1083, 1
  br i1 %exitcond840.not, label %.loopexit, label %.lr.ph606, !llvm.loop !47

335:                                              ; preds = %39
  %336 = add nsw i32 %38, -1
  br i1 %.not462, label %.lr.ph689.preheader, label %.lr.ph666

.lr.ph666:                                        ; preds = %335
  %337 = add nuw nsw i32 %41, 1
  %338 = zext nneg i32 %41 to i64
  br label %340

.loopexit510.loopexit:                            ; preds = %.lr.ph660
  %339 = trunc nsw i64 %indvars.iv.next895 to i32
  br label %.loopexit510

.loopexit510:                                     ; preds = %.loopexit510.loopexit, %340
  %.25.lcssa = phi i32 [ %.24663, %340 ], [ %339, %.loopexit510.loopexit ]
  %.not470.not = icmp slt i32 %.8664, %336
  %indvars.iv.next891 = add i32 %indvars.iv890, %337
  br i1 %.not470.not, label %340, label %._crit_edge667, !llvm.loop !48

340:                                              ; preds = %.lr.ph666, %.loopexit510
  %indvars.iv890 = phi i32 [ %41, %.lr.ph666 ], [ %indvars.iv.next891, %.loopexit510 ]
  %.8664 = phi i32 [ 0, %.lr.ph666 ], [ %344, %.loopexit510 ]
  %.24663 = phi i32 [ 0, %.lr.ph666 ], [ %.25.lcssa, %.loopexit510 ]
  %341 = load i32, ptr %2, align 4, !tbaa !5
  %342 = add nsw i32 %341, 1
  %343 = mul nsw i32 %342, %41
  %344 = add nuw nsw i32 %.8664, 1
  %345 = mul nuw nsw i32 %344, %41
  %346 = add nuw nsw i32 %345, %.8664
  %347 = icmp slt i32 %346, %343
  br i1 %347, label %.lr.ph660.preheader, label %.loopexit510

.lr.ph660.preheader:                              ; preds = %340
  %348 = sext i32 %indvars.iv890 to i64
  %349 = sext i32 %343 to i64
  %350 = sext i32 %.24663 to i64
  br label %.lr.ph660

.lr.ph660:                                        ; preds = %.lr.ph660.preheader, %.lr.ph660
  %indvars.iv894 = phi i64 [ %350, %.lr.ph660.preheader ], [ %indvars.iv.next895, %.lr.ph660 ]
  %indvars.iv892 = phi i64 [ %348, %.lr.ph660.preheader ], [ %indvars.iv.next893, %.lr.ph660 ]
  %351 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv892
  %352 = call <2 x float> @Cf(ptr noundef %351)
  %.sroa.01.0.vec.extract = extractelement <2 x float> %352, i64 0
  %.sroa.01.4.vec.extract = extractelement <2 x float> %352, i64 1
  %353 = fneg float %.sroa.01.4.vec.extract
  %354 = call ptr @_pCf(ptr noundef nonnull %8)
  %355 = getelementptr inbounds i8, ptr %354, i64 4
  store float %.sroa.01.0.vec.extract, ptr %354, align 4
  store float %353, ptr %355, align 4
  %356 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv894
  %357 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %357, ptr %356, align 4, !tbaa !9
  %indvars.iv.next895 = add nsw i64 %indvars.iv894, 1
  %indvars.iv.next893 = add nsw i64 %indvars.iv892, %338
  %358 = icmp slt i64 %indvars.iv.next893, %349
  br i1 %358, label %.lr.ph660, label %.loopexit510.loopexit, !llvm.loop !49

._crit_edge667:                                   ; preds = %.loopexit510
  %.not471.not676.not = icmp eq i32 %17, 0
  br i1 %.not471.not676.not, label %.loopexit, label %.lr.ph681

.lr.ph681:                                        ; preds = %._crit_edge667
  %359 = add nuw nsw i32 %41, 1
  %scevgep1222 = getelementptr i8, ptr %4, i64 4
  %360 = add nsw i32 %38, -1
  %scevgep1225 = getelementptr i8, ptr %3, i64 4
  %scevgep1227 = getelementptr i8, ptr %4, i64 4
  %scevgep1229 = getelementptr i8, ptr %4, i64 8
  %scevgep1231 = getelementptr i8, ptr %3, i64 4
  %scevgep1233 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1419 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1421 = getelementptr i8, ptr %4, i64 16
  %invariant.gep1423 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1425 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1427 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1429 = getelementptr i8, ptr %4, i64 16
  %invariant.gep1431 = getelementptr i8, ptr %3, i64 24
  %invariant.gep1433 = getelementptr i8, ptr %4, i64 24
  br label %361

361:                                              ; preds = %.lr.ph681, %._crit_edge674
  %indvars.iv908 = phi i32 [ %38, %.lr.ph681 ], [ %indvars.iv.next909, %._crit_edge674 ]
  %indvars.iv899 = phi i32 [ 0, %.lr.ph681 ], [ %indvars.iv.next900, %._crit_edge674 ]
  %.10679 = phi i32 [ 0, %.lr.ph681 ], [ %397, %._crit_edge674 ]
  %.26678 = phi i32 [ %.25.lcssa, %.lr.ph681 ], [ %.27.lcssa, %._crit_edge674 ]
  %362 = mul i32 %41, %.10679
  %363 = add i32 %336, %362
  %364 = sub i32 %360, %.10679
  %365 = zext i32 %364 to i64
  %366 = add nuw nsw i64 %365, 1
  %367 = sub i32 %360, %.10679
  %368 = zext i32 %367 to i64
  %369 = shl nuw nsw i64 %368, 3
  %370 = sext i32 %indvars.iv899 to i64
  %371 = shl nsw i64 %370, 3
  %scevgep1224 = getelementptr i8, ptr %3, i64 %371
  %372 = add nsw i64 %371, %369
  %scevgep1226 = getelementptr i8, ptr %scevgep1225, i64 %372
  %scevgep1232 = getelementptr i8, ptr %scevgep1231, i64 %371
  %scevgep1234 = getelementptr i8, ptr %scevgep1233, i64 %372
  %373 = add nsw i32 %indvars.iv899, %38
  %374 = xor i32 %.10679, -1
  %375 = add i32 %373, %374
  %.not472669 = icmp sgt i32 %indvars.iv899, %375
  br i1 %.not472669, label %._crit_edge674, label %.lr.ph673.preheader

.lr.ph673.preheader:                              ; preds = %361
  %376 = sext i32 %indvars.iv899 to i64
  %377 = sext i32 %.26678 to i64
  %min.iters.check1244 = icmp ult i32 %364, 5
  br i1 %min.iters.check1244, label %.lr.ph673.preheader1319, label %vector.memcheck1220

vector.memcheck1220:                              ; preds = %.lr.ph673.preheader
  %378 = shl nsw i64 %377, 3
  %scevgep1221 = getelementptr i8, ptr %4, i64 %378
  %379 = add nsw i64 %378, %369
  %scevgep1223 = getelementptr i8, ptr %scevgep1222, i64 %379
  %scevgep1228 = getelementptr i8, ptr %scevgep1227, i64 %378
  %scevgep1230 = getelementptr i8, ptr %scevgep1229, i64 %379
  %bound01235 = icmp ult ptr %scevgep1221, %scevgep1226
  %bound11236 = icmp ult ptr %scevgep1224, %scevgep1223
  %found.conflict1237 = and i1 %bound01235, %bound11236
  %bound01238 = icmp ult ptr %scevgep1228, %scevgep1234
  %bound11239 = icmp ult ptr %scevgep1232, %scevgep1230
  %found.conflict1240 = and i1 %bound01238, %bound11239
  %conflict.rdx1241 = or i1 %found.conflict1237, %found.conflict1240
  br i1 %conflict.rdx1241, label %.lr.ph673.preheader1319, label %vector.ph1245

vector.ph1245:                                    ; preds = %vector.memcheck1220
  %n.vec1247 = and i64 %366, 8589934588
  %ind.end1248 = add nsw i64 %n.vec1247, %377
  %ind.end1250 = add nsw i64 %n.vec1247, %376
  br label %vector.body1252

vector.body1252:                                  ; preds = %vector.body1252, %vector.ph1245
  %index1253 = phi i64 [ 0, %vector.ph1245 ], [ %index.next1264, %vector.body1252 ]
  %offset.idx1254 = add i64 %index1253, %377
  %offset.idx1255 = add i64 %index1253, %376
  %380 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1255
  %gep1420 = getelementptr %struct.complex, ptr %invariant.gep1419, i64 %offset.idx1255
  %wide.vec1256 = load <4 x float>, ptr %380, align 4, !tbaa !9
  %wide.vec1257 = load <4 x float>, ptr %gep1420, align 4, !tbaa !9
  %381 = getelementptr inbounds %struct.complex, ptr %4, i64 %offset.idx1254
  %gep1422 = getelementptr %struct.complex, ptr %invariant.gep1421, i64 %offset.idx1254
  store <4 x float> %wide.vec1256, ptr %381, align 4, !tbaa !9
  store <4 x float> %wide.vec1257, ptr %gep1422, align 4, !tbaa !9
  %index.next1264 = add nuw i64 %index1253, 4
  %382 = icmp eq i64 %index.next1264, %n.vec1247
  br i1 %382, label %middle.block1242, label %vector.body1252, !llvm.loop !50

middle.block1242:                                 ; preds = %vector.body1252
  %cmp.n1265 = icmp eq i64 %366, %n.vec1247
  br i1 %cmp.n1265, label %._crit_edge674.loopexit, label %.lr.ph673.preheader1319

.lr.ph673.preheader1319:                          ; preds = %middle.block1242, %vector.memcheck1220, %.lr.ph673.preheader
  %indvars.iv903.ph = phi i64 [ %377, %vector.memcheck1220 ], [ %377, %.lr.ph673.preheader ], [ %ind.end1248, %middle.block1242 ]
  %indvars.iv901.ph = phi i64 [ %376, %vector.memcheck1220 ], [ %376, %.lr.ph673.preheader ], [ %ind.end1250, %middle.block1242 ]
  %383 = trunc i64 %indvars.iv901.ph to i32
  %384 = sub i32 %indvars.iv908, %383
  %385 = sub i32 %363, %383
  %xtraiter1345 = and i32 %384, 3
  %lcmp.mod1346.not = icmp eq i32 %xtraiter1345, 0
  br i1 %lcmp.mod1346.not, label %.lr.ph673.prol.loopexit, label %.lr.ph673.prol

.lr.ph673.prol:                                   ; preds = %.lr.ph673.preheader1319, %.lr.ph673.prol
  %indvars.iv903.prol = phi i64 [ %indvars.iv.next904.prol, %.lr.ph673.prol ], [ %indvars.iv903.ph, %.lr.ph673.preheader1319 ]
  %indvars.iv901.prol = phi i64 [ %indvars.iv.next902.prol, %.lr.ph673.prol ], [ %indvars.iv901.ph, %.lr.ph673.preheader1319 ]
  %prol.iter1347 = phi i32 [ %prol.iter1347.next, %.lr.ph673.prol ], [ 0, %.lr.ph673.preheader1319 ]
  %386 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv901.prol
  %387 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv903.prol
  %388 = load <2 x float>, ptr %386, align 4, !tbaa !9
  store <2 x float> %388, ptr %387, align 4, !tbaa !9
  %indvars.iv.next904.prol = add nsw i64 %indvars.iv903.prol, 1
  %indvars.iv.next902.prol = add nsw i64 %indvars.iv901.prol, 1
  %prol.iter1347.next = add i32 %prol.iter1347, 1
  %prol.iter1347.cmp.not = icmp eq i32 %prol.iter1347.next, %xtraiter1345
  br i1 %prol.iter1347.cmp.not, label %.lr.ph673.prol.loopexit, label %.lr.ph673.prol, !llvm.loop !51

.lr.ph673.prol.loopexit:                          ; preds = %.lr.ph673.prol, %.lr.ph673.preheader1319
  %indvars.iv.next904.lcssa1321.unr = phi i64 [ poison, %.lr.ph673.preheader1319 ], [ %indvars.iv.next904.prol, %.lr.ph673.prol ]
  %indvars.iv903.unr = phi i64 [ %indvars.iv903.ph, %.lr.ph673.preheader1319 ], [ %indvars.iv.next904.prol, %.lr.ph673.prol ]
  %indvars.iv901.unr = phi i64 [ %indvars.iv901.ph, %.lr.ph673.preheader1319 ], [ %indvars.iv.next902.prol, %.lr.ph673.prol ]
  %389 = icmp ult i32 %385, 3
  br i1 %389, label %._crit_edge674.loopexit, label %.lr.ph673

.lr.ph673:                                        ; preds = %.lr.ph673.prol.loopexit, %.lr.ph673
  %indvars.iv903 = phi i64 [ %indvars.iv.next904.3, %.lr.ph673 ], [ %indvars.iv903.unr, %.lr.ph673.prol.loopexit ]
  %indvars.iv901 = phi i64 [ %indvars.iv.next902.3, %.lr.ph673 ], [ %indvars.iv901.unr, %.lr.ph673.prol.loopexit ]
  %390 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv901
  %391 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv903
  %392 = load <2 x float>, ptr %390, align 4, !tbaa !9
  store <2 x float> %392, ptr %391, align 4, !tbaa !9
  %gep1424 = getelementptr %struct.complex, ptr %invariant.gep1423, i64 %indvars.iv901
  %gep1426 = getelementptr %struct.complex, ptr %invariant.gep1425, i64 %indvars.iv903
  %393 = load <2 x float>, ptr %gep1424, align 4, !tbaa !9
  store <2 x float> %393, ptr %gep1426, align 4, !tbaa !9
  %gep1428 = getelementptr %struct.complex, ptr %invariant.gep1427, i64 %indvars.iv901
  %gep1430 = getelementptr %struct.complex, ptr %invariant.gep1429, i64 %indvars.iv903
  %394 = load <2 x float>, ptr %gep1428, align 4, !tbaa !9
  store <2 x float> %394, ptr %gep1430, align 4, !tbaa !9
  %gep1432 = getelementptr %struct.complex, ptr %invariant.gep1431, i64 %indvars.iv901
  %gep1434 = getelementptr %struct.complex, ptr %invariant.gep1433, i64 %indvars.iv903
  %395 = load <2 x float>, ptr %gep1432, align 4, !tbaa !9
  store <2 x float> %395, ptr %gep1434, align 4, !tbaa !9
  %indvars.iv.next904.3 = add nsw i64 %indvars.iv903, 4
  %indvars.iv.next902.3 = add nsw i64 %indvars.iv901, 4
  %lftr.wideiv910.3 = trunc i64 %indvars.iv.next902.3 to i32
  %exitcond911.not.3 = icmp eq i32 %indvars.iv908, %lftr.wideiv910.3
  br i1 %exitcond911.not.3, label %._crit_edge674.loopexit, label %.lr.ph673, !llvm.loop !52

._crit_edge674.loopexit:                          ; preds = %.lr.ph673.prol.loopexit, %.lr.ph673, %middle.block1242
  %indvars.iv.next904.lcssa = phi i64 [ %ind.end1248, %middle.block1242 ], [ %indvars.iv.next904.lcssa1321.unr, %.lr.ph673.prol.loopexit ], [ %indvars.iv.next904.3, %.lr.ph673 ]
  %396 = trunc nsw i64 %indvars.iv.next904.lcssa to i32
  br label %._crit_edge674

._crit_edge674:                                   ; preds = %._crit_edge674.loopexit, %361
  %.27.lcssa = phi i32 [ %.26678, %361 ], [ %396, %._crit_edge674.loopexit ]
  %indvars.iv.next900 = add i32 %indvars.iv899, %359
  %397 = add nuw nsw i32 %.10679, 1
  %indvars.iv.next909 = add i32 %indvars.iv908, %41
  %exitcond912.not = icmp eq i32 %397, %38
  br i1 %exitcond912.not, label %.loopexit, label %361, !llvm.loop !53

.lr.ph689.preheader:                              ; preds = %335
  %398 = add nuw nsw i32 %38, 1
  %399 = mul i32 %398, %41
  %400 = sext i32 %399 to i64
  %401 = zext nneg i32 %41 to i64
  %wide.trip.count927 = zext nneg i32 %38 to i64
  %scevgep1268 = getelementptr i8, ptr %4, i64 4
  %402 = add nuw nsw i64 %401, 1
  %403 = shl nsw i64 %400, 3
  %404 = shl nuw nsw i64 %401, 3
  %405 = or disjoint i64 %403, 4
  %scevgep1274 = getelementptr i8, ptr %4, i64 4
  %scevgep1276 = getelementptr i8, ptr %4, i64 8
  %406 = add nuw nsw i64 %401, 1
  %407 = getelementptr i8, ptr %3, i64 %403
  %408 = getelementptr i8, ptr %407, i64 8
  %409 = getelementptr i8, ptr %3, i64 %405
  %410 = getelementptr i8, ptr %3, i64 %403
  %invariant.gep1435 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1437 = getelementptr i8, ptr %4, i64 16
  br label %.lr.ph689

.lr.ph689:                                        ; preds = %.lr.ph689.preheader, %.loopexit1312
  %indvars.iv922 = phi i64 [ 0, %.lr.ph689.preheader ], [ %indvars.iv.next923, %.loopexit1312 ]
  %indvars.iv913 = phi i64 [ %400, %.lr.ph689.preheader ], [ %indvars.iv.next914, %.loopexit1312 ]
  %.28686 = phi i64 [ 0, %.lr.ph689.preheader ], [ %indvars.iv.next918.lcssa, %.loopexit1312 ]
  %411 = mul i64 %406, %indvars.iv922
  %412 = add i64 %411, %400
  %smax1287 = tail call i64 @llvm.smax.i64(i64 %indvars.iv913, i64 %412)
  %413 = mul i64 %indvars.iv922, %401
  %414 = add i64 %413, %400
  %reass.sub1316 = sub i64 %smax1287, %414
  %415 = add i64 %reass.sub1316, 1
  %416 = add nsw i64 %indvars.iv922, %indvars.iv913
  %sext942 = shl i64 %.28686, 32
  %417 = ashr exact i64 %sext942, 32
  %min.iters.check1290 = icmp ult i64 %415, 6
  br i1 %min.iters.check1290, label %scalar.ph1289.preheader, label %vector.memcheck1266

vector.memcheck1266:                              ; preds = %.lr.ph689
  %418 = mul i64 %404, %indvars.iv922
  %scevgep1278 = getelementptr i8, ptr %408, i64 %418
  %419 = mul i64 %402, %indvars.iv922
  %420 = add i64 %419, %400
  %smax1269 = tail call i64 @llvm.smax.i64(i64 %indvars.iv913, i64 %420)
  %421 = mul i64 %indvars.iv922, %401
  %422 = add i64 %421, %400
  %423 = sub i64 %smax1269, %422
  %424 = shl i64 %423, 3
  %scevgep1279 = getelementptr i8, ptr %scevgep1278, i64 %424
  %scevgep1272 = getelementptr i8, ptr %409, i64 %418
  %scevgep1273 = getelementptr i8, ptr %scevgep1272, i64 %424
  %scevgep1271 = getelementptr i8, ptr %410, i64 %418
  %425 = ashr exact i64 %sext942, 29
  %scevgep1267 = getelementptr i8, ptr %4, i64 %425
  %426 = add i64 %424, %425
  %scevgep1270 = getelementptr i8, ptr %scevgep1268, i64 %426
  %scevgep1275 = getelementptr i8, ptr %scevgep1274, i64 %425
  %scevgep1277 = getelementptr i8, ptr %scevgep1276, i64 %426
  %bound01280 = icmp ult ptr %scevgep1267, %scevgep1273
  %bound11281 = icmp ult ptr %scevgep1271, %scevgep1270
  %found.conflict1282 = and i1 %bound01280, %bound11281
  %bound01283 = icmp ult ptr %scevgep1275, %scevgep1279
  %bound11284 = icmp ult ptr %scevgep1272, %scevgep1277
  %found.conflict1285 = and i1 %bound01283, %bound11284
  %conflict.rdx1286 = or i1 %found.conflict1282, %found.conflict1285
  br i1 %conflict.rdx1286, label %scalar.ph1289.preheader, label %vector.ph1291

vector.ph1291:                                    ; preds = %vector.memcheck1266
  %n.vec1293 = and i64 %415, -4
  %ind.end1294 = add i64 %417, %n.vec1293
  %ind.end1296 = add i64 %indvars.iv913, %n.vec1293
  br label %vector.body1298

vector.body1298:                                  ; preds = %vector.body1298, %vector.ph1291
  %index1299 = phi i64 [ 0, %vector.ph1291 ], [ %index.next1310, %vector.body1298 ]
  %offset.idx1300 = add i64 %417, %index1299
  %offset.idx1301 = add i64 %indvars.iv913, %index1299
  %427 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1301
  %gep1436 = getelementptr %struct.complex, ptr %invariant.gep1435, i64 %offset.idx1301
  %wide.vec1302 = load <4 x float>, ptr %427, align 4, !tbaa !9
  %wide.vec1303 = load <4 x float>, ptr %gep1436, align 4, !tbaa !9
  %428 = getelementptr inbounds %struct.complex, ptr %4, i64 %offset.idx1300
  %gep1438 = getelementptr %struct.complex, ptr %invariant.gep1437, i64 %offset.idx1300
  store <4 x float> %wide.vec1302, ptr %428, align 4, !tbaa !9
  store <4 x float> %wide.vec1303, ptr %gep1438, align 4, !tbaa !9
  %index.next1310 = add nuw i64 %index1299, 4
  %429 = icmp eq i64 %index.next1310, %n.vec1293
  br i1 %429, label %middle.block1288, label %vector.body1298, !llvm.loop !54

middle.block1288:                                 ; preds = %vector.body1298
  %cmp.n1311 = icmp eq i64 %415, %n.vec1293
  br i1 %cmp.n1311, label %.loopexit1312, label %scalar.ph1289.preheader

scalar.ph1289.preheader:                          ; preds = %middle.block1288, %vector.memcheck1266, %.lr.ph689
  %indvars.iv917.ph = phi i64 [ %417, %vector.memcheck1266 ], [ %417, %.lr.ph689 ], [ %ind.end1294, %middle.block1288 ]
  %indvars.iv915.ph = phi i64 [ %indvars.iv913, %vector.memcheck1266 ], [ %indvars.iv913, %.lr.ph689 ], [ %ind.end1296, %middle.block1288 ]
  br label %scalar.ph1289

scalar.ph1289:                                    ; preds = %scalar.ph1289.preheader, %scalar.ph1289
  %indvars.iv917 = phi i64 [ %indvars.iv.next918, %scalar.ph1289 ], [ %indvars.iv917.ph, %scalar.ph1289.preheader ]
  %indvars.iv915 = phi i64 [ %indvars.iv.next916, %scalar.ph1289 ], [ %indvars.iv915.ph, %scalar.ph1289.preheader ]
  %430 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv915
  %431 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv917
  %432 = load <2 x float>, ptr %430, align 4, !tbaa !9
  store <2 x float> %432, ptr %431, align 4, !tbaa !9
  %indvars.iv.next918 = add nsw i64 %indvars.iv917, 1
  %indvars.iv.next916 = add nsw i64 %indvars.iv915, 1
  %.not469.not = icmp slt i64 %indvars.iv915, %416
  br i1 %.not469.not, label %scalar.ph1289, label %.loopexit1312, !llvm.loop !55

.loopexit1312:                                    ; preds = %scalar.ph1289, %middle.block1288
  %indvars.iv.next918.lcssa = phi i64 [ %ind.end1294, %middle.block1288 ], [ %indvars.iv.next918, %scalar.ph1289 ]
  %indvars.iv.next914 = add i64 %indvars.iv913, %401
  %indvars.iv.next923 = add nuw nsw i64 %indvars.iv922, 1
  %exitcond928.not = icmp eq i64 %indvars.iv.next923, %wide.trip.count927
  br i1 %exitcond928.not, label %._crit_edge690, label %.lr.ph689, !llvm.loop !56

._crit_edge690:                                   ; preds = %.loopexit1312
  %.not468699 = icmp eq i32 %17, 0
  br i1 %.not468699, label %.loopexit, label %.lr.ph703

.lr.ph703:                                        ; preds = %._crit_edge690
  %433 = zext nneg i32 %41 to i64
  %434 = sext i32 %336 to i64
  br label %.lr.ph696.preheader

.lr.ph696.preheader:                              ; preds = %.lr.ph703, %._crit_edge697
  %indvars.iv929 = phi i64 [ 0, %.lr.ph703 ], [ %indvars.iv.next930, %._crit_edge697 ]
  %.30700 = phi i64 [ %indvars.iv.next918.lcssa, %.lr.ph703 ], [ %indvars.iv.next934, %._crit_edge697 ]
  %indvars938 = trunc i64 %indvars.iv929 to i32
  %435 = add nsw i32 %38, %indvars938
  %436 = mul nsw i32 %435, %41
  %437 = sext i32 %436 to i64
  %438 = add nsw i64 %indvars.iv929, %437
  %sext1317 = shl i64 %.30700, 32
  %439 = ashr exact i64 %sext1317, 32
  br label %.lr.ph696

.lr.ph696:                                        ; preds = %.lr.ph696.preheader, %.lr.ph696
  %indvars.iv933 = phi i64 [ %439, %.lr.ph696.preheader ], [ %indvars.iv.next934, %.lr.ph696 ]
  %indvars.iv931 = phi i64 [ %indvars.iv929, %.lr.ph696.preheader ], [ %indvars.iv.next932, %.lr.ph696 ]
  %440 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv931
  %441 = call <2 x float> @Cf(ptr noundef %440)
  %.sroa.0.0.vec.extract = extractelement <2 x float> %441, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %441, i64 1
  %442 = fneg float %.sroa.0.4.vec.extract
  %443 = call ptr @_pCf(ptr noundef nonnull %8)
  %444 = getelementptr inbounds i8, ptr %443, i64 4
  store float %.sroa.0.0.vec.extract, ptr %443, align 4
  store float %442, ptr %444, align 4
  %445 = getelementptr inbounds %struct.complex, ptr %4, i64 %indvars.iv933
  %446 = load <2 x float>, ptr %8, align 8, !tbaa !9
  store <2 x float> %446, ptr %445, align 4, !tbaa !9
  %indvars.iv.next934 = add nsw i64 %indvars.iv933, 1
  %indvars.iv.next932 = add nuw nsw i64 %indvars.iv931, %433
  %.not943 = icmp sgt i64 %indvars.iv.next932, %438
  br i1 %.not943, label %._crit_edge697, label %.lr.ph696, !llvm.loop !57

._crit_edge697:                                   ; preds = %.lr.ph696
  %indvars.iv.next930 = add nuw nsw i64 %indvars.iv929, 1
  %.not468.not = icmp slt i64 %indvars.iv929, %434
  br i1 %.not468.not, label %.lr.ph696.preheader, label %.loopexit, !llvm.loop !58

.loopexit:                                        ; preds = %.loopexit517, %._crit_edge555, %._crit_edge579, %._crit_edge599.loopexit, %._crit_edge626, %._crit_edge649, %._crit_edge674, %._crit_edge697, %137, %42, %._crit_edge527, %._crit_edge548, %._crit_edge573, %._crit_edge592, %._crit_edge619, %._crit_edge642, %._crit_edge667, %._crit_edge690, %25, %27, %23, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %7) #6
  ret void
}

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

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

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

; 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

; 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 i64 @llvm.smax.i64(i64, i64) #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 = distinct !{!11, !12, !13, !14}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!"llvm.loop.isvectorized", i32 1}
!14 = !{!"llvm.loop.unroll.runtime.disable"}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.unroll.disable"}
!17 = distinct !{!17, !12, !13}
!18 = distinct !{!18, !12}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12, !13, !14}
!24 = distinct !{!24, !12, !13}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12}
!27 = distinct !{!27, !12}
!28 = distinct !{!28, !12, !13, !14}
!29 = distinct !{!29, !16}
!30 = distinct !{!30, !12, !13}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12, !13, !14}
!33 = distinct !{!33, !12, !13}
!34 = distinct !{!34, !12}
!35 = distinct !{!35, !12}
!36 = distinct !{!36, !12}
!37 = distinct !{!37, !12, !13, !14}
!38 = distinct !{!38, !16}
!39 = distinct !{!39, !12, !13}
!40 = distinct !{!40, !12}
!41 = distinct !{!41, !12}
!42 = distinct !{!42, !12}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12}
!45 = distinct !{!45, !12, !13, !14}
!46 = distinct !{!46, !12, !13}
!47 = distinct !{!47, !12}
!48 = distinct !{!48, !12}
!49 = distinct !{!49, !12}
!50 = distinct !{!50, !12, !13, !14}
!51 = distinct !{!51, !16}
!52 = distinct !{!52, !12, !13}
!53 = distinct !{!53, !12}
!54 = distinct !{!54, !12, !13, !14}
!55 = distinct !{!55, !12, !13}
!56 = distinct !{!56, !12}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12}


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