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

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

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

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

75:                                               ; preds = %69, %7
  %76 = load i32, ptr %28, align 4, !tbaa !9
  %77 = icmp ne i32 %76, 0
  br i1 %77, label %84, label %78

78:                                               ; preds = %75
  %79 = load ptr, ptr %9, align 8, !tbaa !5
  %80 = call i32 @lsame_(ptr noundef %79, ptr noundef @.str.3)
  %81 = icmp ne i32 %80, 0
  br i1 %81, label %84, label %82

82:                                               ; preds = %78
  %83 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 -2, ptr %83, align 4, !tbaa !9
  br label %107

84:                                               ; preds = %78, %75
  %85 = load ptr, ptr %10, align 8, !tbaa !5
  %86 = load i32, ptr %85, align 4, !tbaa !9
  %87 = icmp slt i32 %86, 0
  br i1 %87, label %88, label %90

88:                                               ; preds = %84
  %89 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 -3, ptr %89, align 4, !tbaa !9
  br label %106

90:                                               ; preds = %84
  %91 = load ptr, ptr %12, align 8, !tbaa !5
  %92 = load i32, ptr %91, align 4, !tbaa !9
  %93 = load ptr, ptr %10, align 8, !tbaa !5
  %94 = load i32, ptr %93, align 4, !tbaa !9
  %95 = icmp sge i32 1, %94
  br i1 %95, label %96, label %97

96:                                               ; preds = %90
  br label %100

97:                                               ; preds = %90
  %98 = load ptr, ptr %10, align 8, !tbaa !5
  %99 = load i32, ptr %98, align 4, !tbaa !9
  br label %100

100:                                              ; preds = %97, %96
  %101 = phi i32 [ 1, %96 ], [ %99, %97 ]
  %102 = icmp slt i32 %92, %101
  br i1 %102, label %103, label %105

103:                                              ; preds = %100
  %104 = load ptr, ptr %14, align 8, !tbaa !5
  store i32 -5, ptr %104, align 4, !tbaa !9
  br label %105

105:                                              ; preds = %103, %100
  br label %106

106:                                              ; preds = %105, %88
  br label %107

107:                                              ; preds = %106, %82
  br label %108

108:                                              ; preds = %107, %73
  %109 = load ptr, ptr %14, align 8, !tbaa !5
  %110 = load i32, ptr %109, align 4, !tbaa !9
  %111 = icmp ne i32 %110, 0
  br i1 %111, label %112, label %117

112:                                              ; preds = %108
  %113 = load ptr, ptr %14, align 8, !tbaa !5
  %114 = load i32, ptr %113, align 4, !tbaa !9
  %115 = sub nsw i32 0, %114
  store i32 %115, ptr %17, align 4, !tbaa !9
  %116 = call i32 @xerbla_(ptr noundef @.str.4, ptr noundef %17, i32 noundef 6)
  store i32 1, ptr %35, align 4
  br label %1410

117:                                              ; preds = %108
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = load i32, ptr %118, align 4, !tbaa !9
  %120 = icmp sle i32 %119, 1
  br i1 %120, label %121, label %166

121:                                              ; preds = %117
  %122 = load ptr, ptr %10, align 8, !tbaa !5
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = icmp eq i32 %123, 1
  br i1 %124, label %125, label %165

125:                                              ; preds = %121
  %126 = load i32, ptr %27, align 4, !tbaa !9
  %127 = icmp ne i32 %126, 0
  br i1 %127, label %128, label %143

128:                                              ; preds = %125
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.complex, ptr %129, i64 0
  %131 = getelementptr inbounds %struct.complex, ptr %130, i32 0, i32 0
  %132 = load float, ptr %131, align 4, !tbaa !11
  %133 = load ptr, ptr %13, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.complex, ptr %133, i64 0
  %135 = getelementptr inbounds %struct.complex, ptr %134, i32 0, i32 0
  store float %132, ptr %135, align 4, !tbaa !11
  %136 = load ptr, ptr %11, align 8, !tbaa !5
  %137 = getelementptr inbounds %struct.complex, ptr %136, i64 0
  %138 = getelementptr inbounds %struct.complex, ptr %137, i32 0, i32 1
  %139 = load float, ptr %138, align 4, !tbaa !14
  %140 = load ptr, ptr %13, align 8, !tbaa !5
  %141 = getelementptr inbounds %struct.complex, ptr %140, i64 0
  %142 = getelementptr inbounds %struct.complex, ptr %141, i32 0, i32 1
  store float %139, ptr %142, align 4, !tbaa !14
  br label %164

143:                                              ; preds = %125
  %144 = load ptr, ptr %11, align 8, !tbaa !5
  %145 = call <2 x float> @Cf(ptr noundef %144)
  store <2 x float> %145, ptr %36, align 4
  %146 = getelementptr inbounds { float, float }, ptr %36, i32 0, i32 0
  %147 = load float, ptr %146, align 4
  %148 = getelementptr inbounds { float, float }, ptr %36, i32 0, i32 1
  %149 = load float, ptr %148, align 4
  %150 = fneg float %149
  %151 = call ptr @_pCf(ptr noundef %21)
  %152 = getelementptr inbounds { float, float }, ptr %151, i32 0, i32 0
  %153 = getelementptr inbounds { float, float }, ptr %151, i32 0, i32 1
  store float %147, ptr %152, align 4
  store float %150, ptr %153, align 4
  %154 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %155 = load float, ptr %154, align 4, !tbaa !11
  %156 = load ptr, ptr %13, align 8, !tbaa !5
  %157 = getelementptr inbounds %struct.complex, ptr %156, i64 0
  %158 = getelementptr inbounds %struct.complex, ptr %157, i32 0, i32 0
  store float %155, ptr %158, align 4, !tbaa !11
  %159 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %160 = load float, ptr %159, align 4, !tbaa !14
  %161 = load ptr, ptr %13, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.complex, ptr %161, i64 0
  %163 = getelementptr inbounds %struct.complex, ptr %162, i32 0, i32 1
  store float %160, ptr %163, align 4, !tbaa !14
  br label %164

164:                                              ; preds = %143, %128
  br label %165

165:                                              ; preds = %164, %121
  store i32 1, ptr %35, align 4
  br label %1410

166:                                              ; preds = %117
  %167 = load ptr, ptr %10, align 8, !tbaa !5
  %168 = load i32, ptr %167, align 4, !tbaa !9
  %169 = load ptr, ptr %10, align 8, !tbaa !5
  %170 = load i32, ptr %169, align 4, !tbaa !9
  %171 = add nsw i32 %170, 1
  %172 = mul nsw i32 %168, %171
  %173 = sdiv i32 %172, 2
  store i32 %173, ptr %32, align 4, !tbaa !9
  %174 = load i32, ptr %28, align 4, !tbaa !9
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %184

176:                                              ; preds = %166
  %177 = load ptr, ptr %10, align 8, !tbaa !5
  %178 = load i32, ptr %177, align 4, !tbaa !9
  %179 = sdiv i32 %178, 2
  store i32 %179, ptr %30, align 4, !tbaa !9
  %180 = load ptr, ptr %10, align 8, !tbaa !5
  %181 = load i32, ptr %180, align 4, !tbaa !9
  %182 = load i32, ptr %30, align 4, !tbaa !9
  %183 = sub nsw i32 %181, %182
  store i32 %183, ptr %29, align 4, !tbaa !9
  br label %192

184:                                              ; preds = %166
  %185 = load ptr, ptr %10, align 8, !tbaa !5
  %186 = load i32, ptr %185, align 4, !tbaa !9
  %187 = sdiv i32 %186, 2
  store i32 %187, ptr %29, align 4, !tbaa !9
  %188 = load ptr, ptr %10, align 8, !tbaa !5
  %189 = load i32, ptr %188, align 4, !tbaa !9
  %190 = load i32, ptr %29, align 4, !tbaa !9
  %191 = sub nsw i32 %189, %190
  store i32 %191, ptr %30, align 4, !tbaa !9
  br label %192

192:                                              ; preds = %184, %176
  %193 = load ptr, ptr %10, align 8, !tbaa !5
  %194 = load i32, ptr %193, align 4, !tbaa !9
  %195 = srem i32 %194, 2
  %196 = icmp eq i32 %195, 0
  br i1 %196, label %197, label %211

197:                                              ; preds = %192
  %198 = load ptr, ptr %10, align 8, !tbaa !5
  %199 = load i32, ptr %198, align 4, !tbaa !9
  %200 = sdiv i32 %199, 2
  store i32 %200, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %33, align 4, !tbaa !9
  %201 = load i32, ptr %28, align 4, !tbaa !9
  %202 = icmp ne i32 %201, 0
  br i1 %202, label %210, label %203

203:                                              ; preds = %197
  %204 = load ptr, ptr %10, align 8, !tbaa !5
  %205 = load i32, ptr %204, align 4, !tbaa !9
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = load i32, ptr %206, align 4, !tbaa !9
  %208 = add nsw i32 %205, %207
  %209 = add nsw i32 %208, 2
  store i32 %209, ptr %22, align 4, !tbaa !9
  br label %210

210:                                              ; preds = %203, %197
  br label %221

211:                                              ; preds = %192
  store i32 1, ptr %33, align 4, !tbaa !9
  %212 = load i32, ptr %28, align 4, !tbaa !9
  %213 = icmp ne i32 %212, 0
  br i1 %213, label %220, label %214

214:                                              ; preds = %211
  %215 = load ptr, ptr %10, align 8, !tbaa !5
  %216 = load i32, ptr %215, align 4, !tbaa !9
  %217 = load ptr, ptr %10, align 8, !tbaa !5
  %218 = load i32, ptr %217, align 4, !tbaa !9
  %219 = add nsw i32 %216, %218
  store i32 %219, ptr %34, align 4, !tbaa !9
  br label %220

220:                                              ; preds = %214, %211
  br label %221

221:                                              ; preds = %220, %210
  %222 = load i32, ptr %33, align 4, !tbaa !9
  %223 = icmp ne i32 %222, 0
  br i1 %223, label %224, label %771

224:                                              ; preds = %221
  %225 = load i32, ptr %27, align 4, !tbaa !9
  %226 = icmp ne i32 %225, 0
  br i1 %226, label %227, label %445

227:                                              ; preds = %224
  %228 = load i32, ptr %28, align 4, !tbaa !9
  %229 = icmp ne i32 %228, 0
  br i1 %229, label %230, label %333

230:                                              ; preds = %227
  store i32 0, ptr %31, align 4, !tbaa !9
  %231 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %231, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %232

232:                                              ; preds = %329, %230
  %233 = load i32, ptr %24, align 4, !tbaa !9
  %234 = load i32, ptr %17, align 4, !tbaa !9
  %235 = icmp sle i32 %233, %234
  br i1 %235, label %236, label %332

236:                                              ; preds = %232
  %237 = load i32, ptr %30, align 4, !tbaa !9
  %238 = load i32, ptr %24, align 4, !tbaa !9
  %239 = add nsw i32 %237, %238
  store i32 %239, ptr %18, align 4, !tbaa !9
  %240 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %240, ptr %23, align 4, !tbaa !9
  br label %241

241:                                              ; preds = %282, %236
  %242 = load i32, ptr %23, align 4, !tbaa !9
  %243 = load i32, ptr %18, align 4, !tbaa !9
  %244 = icmp sle i32 %242, %243
  br i1 %244, label %245, label %285

245:                                              ; preds = %241
  %246 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %246, ptr %19, align 4, !tbaa !9
  %247 = load ptr, ptr %11, align 8, !tbaa !5
  %248 = load i32, ptr %30, align 4, !tbaa !9
  %249 = load i32, ptr %24, align 4, !tbaa !9
  %250 = add nsw i32 %248, %249
  %251 = load i32, ptr %23, align 4, !tbaa !9
  %252 = load i32, ptr %15, align 4, !tbaa !9
  %253 = mul nsw i32 %251, %252
  %254 = add nsw i32 %250, %253
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds %struct.complex, ptr %247, i64 %255
  %257 = call <2 x float> @Cf(ptr noundef %256)
  store <2 x float> %257, ptr %37, align 4
  %258 = getelementptr inbounds { float, float }, ptr %37, i32 0, i32 0
  %259 = load float, ptr %258, align 4
  %260 = getelementptr inbounds { float, float }, ptr %37, i32 0, i32 1
  %261 = load float, ptr %260, align 4
  %262 = fneg float %261
  %263 = call ptr @_pCf(ptr noundef %21)
  %264 = getelementptr inbounds { float, float }, ptr %263, i32 0, i32 0
  %265 = getelementptr inbounds { float, float }, ptr %263, i32 0, i32 1
  store float %259, ptr %264, align 4
  store float %262, ptr %265, align 4
  %266 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %267 = load float, ptr %266, align 4, !tbaa !11
  %268 = load ptr, ptr %13, align 8, !tbaa !5
  %269 = load i32, ptr %19, align 4, !tbaa !9
  %270 = sext i32 %269 to i64
  %271 = getelementptr inbounds %struct.complex, ptr %268, i64 %270
  %272 = getelementptr inbounds %struct.complex, ptr %271, i32 0, i32 0
  store float %267, ptr %272, align 4, !tbaa !11
  %273 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %274 = load float, ptr %273, align 4, !tbaa !14
  %275 = load ptr, ptr %13, align 8, !tbaa !5
  %276 = load i32, ptr %19, align 4, !tbaa !9
  %277 = sext i32 %276 to i64
  %278 = getelementptr inbounds %struct.complex, ptr %275, i64 %277
  %279 = getelementptr inbounds %struct.complex, ptr %278, i32 0, i32 1
  store float %274, ptr %279, align 4, !tbaa !14
  %280 = load i32, ptr %31, align 4, !tbaa !9
  %281 = add nsw i32 %280, 1
  store i32 %281, ptr %31, align 4, !tbaa !9
  br label %282

282:                                              ; preds = %245
  %283 = load i32, ptr %23, align 4, !tbaa !9
  %284 = add nsw i32 %283, 1
  store i32 %284, ptr %23, align 4, !tbaa !9
  br label %241, !llvm.loop !15

285:                                              ; preds = %241
  %286 = load ptr, ptr %10, align 8, !tbaa !5
  %287 = load i32, ptr %286, align 4, !tbaa !9
  %288 = sub nsw i32 %287, 1
  store i32 %288, ptr %18, align 4, !tbaa !9
  %289 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %289, ptr %23, align 4, !tbaa !9
  br label %290

290:                                              ; preds = %325, %285
  %291 = load i32, ptr %23, align 4, !tbaa !9
  %292 = load i32, ptr %18, align 4, !tbaa !9
  %293 = icmp sle i32 %291, %292
  br i1 %293, label %294, label %328

294:                                              ; preds = %290
  %295 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %295, ptr %19, align 4, !tbaa !9
  %296 = load i32, ptr %23, align 4, !tbaa !9
  %297 = load i32, ptr %24, align 4, !tbaa !9
  %298 = load i32, ptr %15, align 4, !tbaa !9
  %299 = mul nsw i32 %297, %298
  %300 = add nsw i32 %296, %299
  store i32 %300, ptr %20, align 4, !tbaa !9
  %301 = load ptr, ptr %11, align 8, !tbaa !5
  %302 = load i32, ptr %20, align 4, !tbaa !9
  %303 = sext i32 %302 to i64
  %304 = getelementptr inbounds %struct.complex, ptr %301, i64 %303
  %305 = getelementptr inbounds %struct.complex, ptr %304, i32 0, i32 0
  %306 = load float, ptr %305, align 4, !tbaa !11
  %307 = load ptr, ptr %13, align 8, !tbaa !5
  %308 = load i32, ptr %19, align 4, !tbaa !9
  %309 = sext i32 %308 to i64
  %310 = getelementptr inbounds %struct.complex, ptr %307, i64 %309
  %311 = getelementptr inbounds %struct.complex, ptr %310, i32 0, i32 0
  store float %306, ptr %311, align 4, !tbaa !11
  %312 = load ptr, ptr %11, align 8, !tbaa !5
  %313 = load i32, ptr %20, align 4, !tbaa !9
  %314 = sext i32 %313 to i64
  %315 = getelementptr inbounds %struct.complex, ptr %312, i64 %314
  %316 = getelementptr inbounds %struct.complex, ptr %315, i32 0, i32 1
  %317 = load float, ptr %316, align 4, !tbaa !14
  %318 = load ptr, ptr %13, align 8, !tbaa !5
  %319 = load i32, ptr %19, align 4, !tbaa !9
  %320 = sext i32 %319 to i64
  %321 = getelementptr inbounds %struct.complex, ptr %318, i64 %320
  %322 = getelementptr inbounds %struct.complex, ptr %321, i32 0, i32 1
  store float %317, ptr %322, align 4, !tbaa !14
  %323 = load i32, ptr %31, align 4, !tbaa !9
  %324 = add nsw i32 %323, 1
  store i32 %324, ptr %31, align 4, !tbaa !9
  br label %325

325:                                              ; preds = %294
  %326 = load i32, ptr %23, align 4, !tbaa !9
  %327 = add nsw i32 %326, 1
  store i32 %327, ptr %23, align 4, !tbaa !9
  br label %290, !llvm.loop !17

328:                                              ; preds = %290
  br label %329

329:                                              ; preds = %328
  %330 = load i32, ptr %24, align 4, !tbaa !9
  %331 = add nsw i32 %330, 1
  store i32 %331, ptr %24, align 4, !tbaa !9
  br label %232, !llvm.loop !18

332:                                              ; preds = %232
  br label %444

333:                                              ; preds = %227
  %334 = load i32, ptr %32, align 4, !tbaa !9
  %335 = load ptr, ptr %10, align 8, !tbaa !5
  %336 = load i32, ptr %335, align 4, !tbaa !9
  %337 = sub nsw i32 %334, %336
  store i32 %337, ptr %31, align 4, !tbaa !9
  %338 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %338, ptr %17, align 4, !tbaa !9
  %339 = load ptr, ptr %10, align 8, !tbaa !5
  %340 = load i32, ptr %339, align 4, !tbaa !9
  %341 = sub nsw i32 %340, 1
  store i32 %341, ptr %24, align 4, !tbaa !9
  br label %342

342:                                              ; preds = %440, %333
  %343 = load i32, ptr %24, align 4, !tbaa !9
  %344 = load i32, ptr %17, align 4, !tbaa !9
  %345 = icmp sge i32 %343, %344
  br i1 %345, label %346, label %443

346:                                              ; preds = %342
  %347 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %347, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %348

348:                                              ; preds = %383, %346
  %349 = load i32, ptr %23, align 4, !tbaa !9
  %350 = load i32, ptr %18, align 4, !tbaa !9
  %351 = icmp sle i32 %349, %350
  br i1 %351, label %352, label %386

352:                                              ; preds = %348
  %353 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %353, ptr %19, align 4, !tbaa !9
  %354 = load i32, ptr %23, align 4, !tbaa !9
  %355 = load i32, ptr %24, align 4, !tbaa !9
  %356 = load i32, ptr %15, align 4, !tbaa !9
  %357 = mul nsw i32 %355, %356
  %358 = add nsw i32 %354, %357
  store i32 %358, ptr %20, align 4, !tbaa !9
  %359 = load ptr, ptr %11, align 8, !tbaa !5
  %360 = load i32, ptr %20, align 4, !tbaa !9
  %361 = sext i32 %360 to i64
  %362 = getelementptr inbounds %struct.complex, ptr %359, i64 %361
  %363 = getelementptr inbounds %struct.complex, ptr %362, i32 0, i32 0
  %364 = load float, ptr %363, align 4, !tbaa !11
  %365 = load ptr, ptr %13, align 8, !tbaa !5
  %366 = load i32, ptr %19, align 4, !tbaa !9
  %367 = sext i32 %366 to i64
  %368 = getelementptr inbounds %struct.complex, ptr %365, i64 %367
  %369 = getelementptr inbounds %struct.complex, ptr %368, i32 0, i32 0
  store float %364, ptr %369, align 4, !tbaa !11
  %370 = load ptr, ptr %11, align 8, !tbaa !5
  %371 = load i32, ptr %20, align 4, !tbaa !9
  %372 = sext i32 %371 to i64
  %373 = getelementptr inbounds %struct.complex, ptr %370, i64 %372
  %374 = getelementptr inbounds %struct.complex, ptr %373, i32 0, i32 1
  %375 = load float, ptr %374, align 4, !tbaa !14
  %376 = load ptr, ptr %13, align 8, !tbaa !5
  %377 = load i32, ptr %19, align 4, !tbaa !9
  %378 = sext i32 %377 to i64
  %379 = getelementptr inbounds %struct.complex, ptr %376, i64 %378
  %380 = getelementptr inbounds %struct.complex, ptr %379, i32 0, i32 1
  store float %375, ptr %380, align 4, !tbaa !14
  %381 = load i32, ptr %31, align 4, !tbaa !9
  %382 = add nsw i32 %381, 1
  store i32 %382, ptr %31, align 4, !tbaa !9
  br label %383

383:                                              ; preds = %352
  %384 = load i32, ptr %23, align 4, !tbaa !9
  %385 = add nsw i32 %384, 1
  store i32 %385, ptr %23, align 4, !tbaa !9
  br label %348, !llvm.loop !19

386:                                              ; preds = %348
  %387 = load i32, ptr %29, align 4, !tbaa !9
  %388 = sub nsw i32 %387, 1
  store i32 %388, ptr %18, align 4, !tbaa !9
  %389 = load i32, ptr %24, align 4, !tbaa !9
  %390 = load i32, ptr %29, align 4, !tbaa !9
  %391 = sub nsw i32 %389, %390
  store i32 %391, ptr %26, align 4, !tbaa !9
  br label %392

392:                                              ; preds = %433, %386
  %393 = load i32, ptr %26, align 4, !tbaa !9
  %394 = load i32, ptr %18, align 4, !tbaa !9
  %395 = icmp sle i32 %393, %394
  br i1 %395, label %396, label %436

396:                                              ; preds = %392
  %397 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %397, ptr %19, align 4, !tbaa !9
  %398 = load ptr, ptr %11, align 8, !tbaa !5
  %399 = load i32, ptr %24, align 4, !tbaa !9
  %400 = load i32, ptr %29, align 4, !tbaa !9
  %401 = sub nsw i32 %399, %400
  %402 = load i32, ptr %26, align 4, !tbaa !9
  %403 = load i32, ptr %15, align 4, !tbaa !9
  %404 = mul nsw i32 %402, %403
  %405 = add nsw i32 %401, %404
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds %struct.complex, ptr %398, i64 %406
  %408 = call <2 x float> @Cf(ptr noundef %407)
  store <2 x float> %408, ptr %38, align 4
  %409 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 0
  %410 = load float, ptr %409, align 4
  %411 = getelementptr inbounds { float, float }, ptr %38, i32 0, i32 1
  %412 = load float, ptr %411, align 4
  %413 = fneg float %412
  %414 = call ptr @_pCf(ptr noundef %21)
  %415 = getelementptr inbounds { float, float }, ptr %414, i32 0, i32 0
  %416 = getelementptr inbounds { float, float }, ptr %414, i32 0, i32 1
  store float %410, ptr %415, align 4
  store float %413, ptr %416, align 4
  %417 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %418 = load float, ptr %417, align 4, !tbaa !11
  %419 = load ptr, ptr %13, align 8, !tbaa !5
  %420 = load i32, ptr %19, align 4, !tbaa !9
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds %struct.complex, ptr %419, i64 %421
  %423 = getelementptr inbounds %struct.complex, ptr %422, i32 0, i32 0
  store float %418, ptr %423, align 4, !tbaa !11
  %424 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %425 = load float, ptr %424, align 4, !tbaa !14
  %426 = load ptr, ptr %13, align 8, !tbaa !5
  %427 = load i32, ptr %19, align 4, !tbaa !9
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %struct.complex, ptr %426, i64 %428
  %430 = getelementptr inbounds %struct.complex, ptr %429, i32 0, i32 1
  store float %425, ptr %430, align 4, !tbaa !14
  %431 = load i32, ptr %31, align 4, !tbaa !9
  %432 = add nsw i32 %431, 1
  store i32 %432, ptr %31, align 4, !tbaa !9
  br label %433

433:                                              ; preds = %396
  %434 = load i32, ptr %26, align 4, !tbaa !9
  %435 = add nsw i32 %434, 1
  store i32 %435, ptr %26, align 4, !tbaa !9
  br label %392, !llvm.loop !20

436:                                              ; preds = %392
  %437 = load i32, ptr %34, align 4, !tbaa !9
  %438 = load i32, ptr %31, align 4, !tbaa !9
  %439 = sub nsw i32 %438, %437
  store i32 %439, ptr %31, align 4, !tbaa !9
  br label %440

440:                                              ; preds = %436
  %441 = load i32, ptr %24, align 4, !tbaa !9
  %442 = add nsw i32 %441, -1
  store i32 %442, ptr %24, align 4, !tbaa !9
  br label %342, !llvm.loop !21

443:                                              ; preds = %342
  br label %444

444:                                              ; preds = %443, %332
  br label %770

445:                                              ; preds = %224
  %446 = load i32, ptr %28, align 4, !tbaa !9
  %447 = icmp ne i32 %446, 0
  br i1 %447, label %448, label %609

448:                                              ; preds = %445
  store i32 0, ptr %31, align 4, !tbaa !9
  %449 = load i32, ptr %30, align 4, !tbaa !9
  %450 = sub nsw i32 %449, 1
  store i32 %450, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %451

451:                                              ; preds = %547, %448
  %452 = load i32, ptr %24, align 4, !tbaa !9
  %453 = load i32, ptr %17, align 4, !tbaa !9
  %454 = icmp sle i32 %452, %453
  br i1 %454, label %455, label %550

455:                                              ; preds = %451
  %456 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %456, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %457

457:                                              ; preds = %496, %455
  %458 = load i32, ptr %23, align 4, !tbaa !9
  %459 = load i32, ptr %18, align 4, !tbaa !9
  %460 = icmp sle i32 %458, %459
  br i1 %460, label %461, label %499

461:                                              ; preds = %457
  %462 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %462, ptr %19, align 4, !tbaa !9
  %463 = load ptr, ptr %11, align 8, !tbaa !5
  %464 = load i32, ptr %24, align 4, !tbaa !9
  %465 = load i32, ptr %23, align 4, !tbaa !9
  %466 = load i32, ptr %15, align 4, !tbaa !9
  %467 = mul nsw i32 %465, %466
  %468 = add nsw i32 %464, %467
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds %struct.complex, ptr %463, i64 %469
  %471 = call <2 x float> @Cf(ptr noundef %470)
  store <2 x float> %471, ptr %39, align 4
  %472 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 0
  %473 = load float, ptr %472, align 4
  %474 = getelementptr inbounds { float, float }, ptr %39, i32 0, i32 1
  %475 = load float, ptr %474, align 4
  %476 = fneg float %475
  %477 = call ptr @_pCf(ptr noundef %21)
  %478 = getelementptr inbounds { float, float }, ptr %477, i32 0, i32 0
  %479 = getelementptr inbounds { float, float }, ptr %477, i32 0, i32 1
  store float %473, ptr %478, align 4
  store float %476, ptr %479, align 4
  %480 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %481 = load float, ptr %480, align 4, !tbaa !11
  %482 = load ptr, ptr %13, align 8, !tbaa !5
  %483 = load i32, ptr %19, align 4, !tbaa !9
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %struct.complex, ptr %482, i64 %484
  %486 = getelementptr inbounds %struct.complex, ptr %485, i32 0, i32 0
  store float %481, ptr %486, align 4, !tbaa !11
  %487 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %488 = load float, ptr %487, align 4, !tbaa !14
  %489 = load ptr, ptr %13, align 8, !tbaa !5
  %490 = load i32, ptr %19, align 4, !tbaa !9
  %491 = sext i32 %490 to i64
  %492 = getelementptr inbounds %struct.complex, ptr %489, i64 %491
  %493 = getelementptr inbounds %struct.complex, ptr %492, i32 0, i32 1
  store float %488, ptr %493, align 4, !tbaa !14
  %494 = load i32, ptr %31, align 4, !tbaa !9
  %495 = add nsw i32 %494, 1
  store i32 %495, ptr %31, align 4, !tbaa !9
  br label %496

496:                                              ; preds = %461
  %497 = load i32, ptr %23, align 4, !tbaa !9
  %498 = add nsw i32 %497, 1
  store i32 %498, ptr %23, align 4, !tbaa !9
  br label %457, !llvm.loop !22

499:                                              ; preds = %457
  %500 = load ptr, ptr %10, align 8, !tbaa !5
  %501 = load i32, ptr %500, align 4, !tbaa !9
  %502 = sub nsw i32 %501, 1
  store i32 %502, ptr %18, align 4, !tbaa !9
  %503 = load i32, ptr %29, align 4, !tbaa !9
  %504 = load i32, ptr %24, align 4, !tbaa !9
  %505 = add nsw i32 %503, %504
  store i32 %505, ptr %23, align 4, !tbaa !9
  br label %506

506:                                              ; preds = %543, %499
  %507 = load i32, ptr %23, align 4, !tbaa !9
  %508 = load i32, ptr %18, align 4, !tbaa !9
  %509 = icmp sle i32 %507, %508
  br i1 %509, label %510, label %546

510:                                              ; preds = %506
  %511 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %511, ptr %19, align 4, !tbaa !9
  %512 = load i32, ptr %23, align 4, !tbaa !9
  %513 = load i32, ptr %29, align 4, !tbaa !9
  %514 = load i32, ptr %24, align 4, !tbaa !9
  %515 = add nsw i32 %513, %514
  %516 = load i32, ptr %15, align 4, !tbaa !9
  %517 = mul nsw i32 %515, %516
  %518 = add nsw i32 %512, %517
  store i32 %518, ptr %20, align 4, !tbaa !9
  %519 = load ptr, ptr %11, align 8, !tbaa !5
  %520 = load i32, ptr %20, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds %struct.complex, ptr %519, i64 %521
  %523 = getelementptr inbounds %struct.complex, ptr %522, i32 0, i32 0
  %524 = load float, ptr %523, align 4, !tbaa !11
  %525 = load ptr, ptr %13, align 8, !tbaa !5
  %526 = load i32, ptr %19, 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 0
  store float %524, ptr %529, align 4, !tbaa !11
  %530 = load ptr, ptr %11, align 8, !tbaa !5
  %531 = load i32, ptr %20, align 4, !tbaa !9
  %532 = sext i32 %531 to i64
  %533 = getelementptr inbounds %struct.complex, ptr %530, i64 %532
  %534 = getelementptr inbounds %struct.complex, ptr %533, i32 0, i32 1
  %535 = load float, ptr %534, align 4, !tbaa !14
  %536 = load ptr, ptr %13, align 8, !tbaa !5
  %537 = load i32, ptr %19, align 4, !tbaa !9
  %538 = sext i32 %537 to i64
  %539 = getelementptr inbounds %struct.complex, ptr %536, i64 %538
  %540 = getelementptr inbounds %struct.complex, ptr %539, i32 0, i32 1
  store float %535, ptr %540, align 4, !tbaa !14
  %541 = load i32, ptr %31, align 4, !tbaa !9
  %542 = add nsw i32 %541, 1
  store i32 %542, ptr %31, align 4, !tbaa !9
  br label %543

543:                                              ; preds = %510
  %544 = load i32, ptr %23, align 4, !tbaa !9
  %545 = add nsw i32 %544, 1
  store i32 %545, ptr %23, align 4, !tbaa !9
  br label %506, !llvm.loop !23

546:                                              ; preds = %506
  br label %547

547:                                              ; preds = %546
  %548 = load i32, ptr %24, align 4, !tbaa !9
  %549 = add nsw i32 %548, 1
  store i32 %549, ptr %24, align 4, !tbaa !9
  br label %451, !llvm.loop !24

550:                                              ; preds = %451
  %551 = load ptr, ptr %10, align 8, !tbaa !5
  %552 = load i32, ptr %551, align 4, !tbaa !9
  %553 = sub nsw i32 %552, 1
  store i32 %553, ptr %17, align 4, !tbaa !9
  %554 = load i32, ptr %30, align 4, !tbaa !9
  store i32 %554, ptr %24, align 4, !tbaa !9
  br label %555

555:                                              ; preds = %605, %550
  %556 = load i32, ptr %24, align 4, !tbaa !9
  %557 = load i32, ptr %17, align 4, !tbaa !9
  %558 = icmp sle i32 %556, %557
  br i1 %558, label %559, label %608

559:                                              ; preds = %555
  %560 = load i32, ptr %29, align 4, !tbaa !9
  %561 = sub nsw i32 %560, 1
  store i32 %561, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %562

562:                                              ; preds = %601, %559
  %563 = load i32, ptr %23, align 4, !tbaa !9
  %564 = load i32, ptr %18, align 4, !tbaa !9
  %565 = icmp sle i32 %563, %564
  br i1 %565, label %566, label %604

566:                                              ; preds = %562
  %567 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %567, ptr %19, align 4, !tbaa !9
  %568 = load ptr, ptr %11, align 8, !tbaa !5
  %569 = load i32, ptr %24, align 4, !tbaa !9
  %570 = load i32, ptr %23, align 4, !tbaa !9
  %571 = load i32, ptr %15, align 4, !tbaa !9
  %572 = mul nsw i32 %570, %571
  %573 = add nsw i32 %569, %572
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds %struct.complex, ptr %568, i64 %574
  %576 = call <2 x float> @Cf(ptr noundef %575)
  store <2 x float> %576, ptr %40, align 4
  %577 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 0
  %578 = load float, ptr %577, align 4
  %579 = getelementptr inbounds { float, float }, ptr %40, i32 0, i32 1
  %580 = load float, ptr %579, align 4
  %581 = fneg float %580
  %582 = call ptr @_pCf(ptr noundef %21)
  %583 = getelementptr inbounds { float, float }, ptr %582, i32 0, i32 0
  %584 = getelementptr inbounds { float, float }, ptr %582, i32 0, i32 1
  store float %578, ptr %583, align 4
  store float %581, ptr %584, align 4
  %585 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %586 = load float, ptr %585, align 4, !tbaa !11
  %587 = load ptr, ptr %13, align 8, !tbaa !5
  %588 = load i32, ptr %19, align 4, !tbaa !9
  %589 = sext i32 %588 to i64
  %590 = getelementptr inbounds %struct.complex, ptr %587, i64 %589
  %591 = getelementptr inbounds %struct.complex, ptr %590, i32 0, i32 0
  store float %586, ptr %591, align 4, !tbaa !11
  %592 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %593 = load float, ptr %592, align 4, !tbaa !14
  %594 = load ptr, ptr %13, align 8, !tbaa !5
  %595 = load i32, ptr %19, align 4, !tbaa !9
  %596 = sext i32 %595 to i64
  %597 = getelementptr inbounds %struct.complex, ptr %594, i64 %596
  %598 = getelementptr inbounds %struct.complex, ptr %597, i32 0, i32 1
  store float %593, ptr %598, align 4, !tbaa !14
  %599 = load i32, ptr %31, align 4, !tbaa !9
  %600 = add nsw i32 %599, 1
  store i32 %600, ptr %31, align 4, !tbaa !9
  br label %601

601:                                              ; preds = %566
  %602 = load i32, ptr %23, align 4, !tbaa !9
  %603 = add nsw i32 %602, 1
  store i32 %603, ptr %23, align 4, !tbaa !9
  br label %562, !llvm.loop !25

604:                                              ; preds = %562
  br label %605

605:                                              ; preds = %604
  %606 = load i32, ptr %24, align 4, !tbaa !9
  %607 = add nsw i32 %606, 1
  store i32 %607, ptr %24, align 4, !tbaa !9
  br label %555, !llvm.loop !26

608:                                              ; preds = %555
  br label %769

609:                                              ; preds = %445
  store i32 0, ptr %31, align 4, !tbaa !9
  %610 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %610, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %611

611:                                              ; preds = %663, %609
  %612 = load i32, ptr %24, align 4, !tbaa !9
  %613 = load i32, ptr %17, align 4, !tbaa !9
  %614 = icmp sle i32 %612, %613
  br i1 %614, label %615, label %666

615:                                              ; preds = %611
  %616 = load ptr, ptr %10, align 8, !tbaa !5
  %617 = load i32, ptr %616, align 4, !tbaa !9
  %618 = sub nsw i32 %617, 1
  store i32 %618, ptr %18, align 4, !tbaa !9
  %619 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %619, ptr %23, align 4, !tbaa !9
  br label %620

620:                                              ; preds = %659, %615
  %621 = load i32, ptr %23, align 4, !tbaa !9
  %622 = load i32, ptr %18, align 4, !tbaa !9
  %623 = icmp sle i32 %621, %622
  br i1 %623, label %624, label %662

624:                                              ; preds = %620
  %625 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %625, ptr %19, align 4, !tbaa !9
  %626 = load ptr, ptr %11, align 8, !tbaa !5
  %627 = load i32, ptr %24, align 4, !tbaa !9
  %628 = load i32, ptr %23, align 4, !tbaa !9
  %629 = load i32, ptr %15, align 4, !tbaa !9
  %630 = mul nsw i32 %628, %629
  %631 = add nsw i32 %627, %630
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds %struct.complex, ptr %626, i64 %632
  %634 = call <2 x float> @Cf(ptr noundef %633)
  store <2 x float> %634, ptr %41, align 4
  %635 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 0
  %636 = load float, ptr %635, align 4
  %637 = getelementptr inbounds { float, float }, ptr %41, i32 0, i32 1
  %638 = load float, ptr %637, align 4
  %639 = fneg float %638
  %640 = call ptr @_pCf(ptr noundef %21)
  %641 = getelementptr inbounds { float, float }, ptr %640, i32 0, i32 0
  %642 = getelementptr inbounds { float, float }, ptr %640, i32 0, i32 1
  store float %636, ptr %641, align 4
  store float %639, ptr %642, align 4
  %643 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %644 = load float, ptr %643, align 4, !tbaa !11
  %645 = load ptr, ptr %13, align 8, !tbaa !5
  %646 = load i32, ptr %19, align 4, !tbaa !9
  %647 = sext i32 %646 to i64
  %648 = getelementptr inbounds %struct.complex, ptr %645, i64 %647
  %649 = getelementptr inbounds %struct.complex, ptr %648, i32 0, i32 0
  store float %644, ptr %649, align 4, !tbaa !11
  %650 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %651 = load float, ptr %650, align 4, !tbaa !14
  %652 = load ptr, ptr %13, align 8, !tbaa !5
  %653 = load i32, ptr %19, align 4, !tbaa !9
  %654 = sext i32 %653 to i64
  %655 = getelementptr inbounds %struct.complex, ptr %652, i64 %654
  %656 = getelementptr inbounds %struct.complex, ptr %655, i32 0, i32 1
  store float %651, ptr %656, align 4, !tbaa !14
  %657 = load i32, ptr %31, align 4, !tbaa !9
  %658 = add nsw i32 %657, 1
  store i32 %658, ptr %31, align 4, !tbaa !9
  br label %659

659:                                              ; preds = %624
  %660 = load i32, ptr %23, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %23, align 4, !tbaa !9
  br label %620, !llvm.loop !27

662:                                              ; preds = %620
  br label %663

663:                                              ; preds = %662
  %664 = load i32, ptr %24, align 4, !tbaa !9
  %665 = add nsw i32 %664, 1
  store i32 %665, ptr %24, align 4, !tbaa !9
  br label %611, !llvm.loop !28

666:                                              ; preds = %611
  %667 = load i32, ptr %29, align 4, !tbaa !9
  %668 = sub nsw i32 %667, 1
  store i32 %668, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %669

669:                                              ; preds = %765, %666
  %670 = load i32, ptr %24, align 4, !tbaa !9
  %671 = load i32, ptr %17, align 4, !tbaa !9
  %672 = icmp sle i32 %670, %671
  br i1 %672, label %673, label %768

673:                                              ; preds = %669
  %674 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %674, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %675

675:                                              ; preds = %710, %673
  %676 = load i32, ptr %23, align 4, !tbaa !9
  %677 = load i32, ptr %18, align 4, !tbaa !9
  %678 = icmp sle i32 %676, %677
  br i1 %678, label %679, label %713

679:                                              ; preds = %675
  %680 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %680, ptr %19, align 4, !tbaa !9
  %681 = load i32, ptr %23, align 4, !tbaa !9
  %682 = load i32, ptr %24, align 4, !tbaa !9
  %683 = load i32, ptr %15, align 4, !tbaa !9
  %684 = mul nsw i32 %682, %683
  %685 = add nsw i32 %681, %684
  store i32 %685, ptr %20, align 4, !tbaa !9
  %686 = load ptr, ptr %11, align 8, !tbaa !5
  %687 = load i32, ptr %20, align 4, !tbaa !9
  %688 = sext i32 %687 to i64
  %689 = getelementptr inbounds %struct.complex, ptr %686, i64 %688
  %690 = getelementptr inbounds %struct.complex, ptr %689, i32 0, i32 0
  %691 = load float, ptr %690, align 4, !tbaa !11
  %692 = load ptr, ptr %13, align 8, !tbaa !5
  %693 = load i32, ptr %19, align 4, !tbaa !9
  %694 = sext i32 %693 to i64
  %695 = getelementptr inbounds %struct.complex, ptr %692, i64 %694
  %696 = getelementptr inbounds %struct.complex, ptr %695, i32 0, i32 0
  store float %691, ptr %696, align 4, !tbaa !11
  %697 = load ptr, ptr %11, align 8, !tbaa !5
  %698 = load i32, ptr %20, align 4, !tbaa !9
  %699 = sext i32 %698 to i64
  %700 = getelementptr inbounds %struct.complex, ptr %697, i64 %699
  %701 = getelementptr inbounds %struct.complex, ptr %700, i32 0, i32 1
  %702 = load float, ptr %701, align 4, !tbaa !14
  %703 = load ptr, ptr %13, align 8, !tbaa !5
  %704 = load i32, ptr %19, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds %struct.complex, ptr %703, i64 %705
  %707 = getelementptr inbounds %struct.complex, ptr %706, i32 0, i32 1
  store float %702, ptr %707, align 4, !tbaa !14
  %708 = load i32, ptr %31, align 4, !tbaa !9
  %709 = add nsw i32 %708, 1
  store i32 %709, ptr %31, align 4, !tbaa !9
  br label %710

710:                                              ; preds = %679
  %711 = load i32, ptr %23, align 4, !tbaa !9
  %712 = add nsw i32 %711, 1
  store i32 %712, ptr %23, align 4, !tbaa !9
  br label %675, !llvm.loop !29

713:                                              ; preds = %675
  %714 = load ptr, ptr %10, align 8, !tbaa !5
  %715 = load i32, ptr %714, align 4, !tbaa !9
  %716 = sub nsw i32 %715, 1
  store i32 %716, ptr %18, align 4, !tbaa !9
  %717 = load i32, ptr %30, align 4, !tbaa !9
  %718 = load i32, ptr %24, align 4, !tbaa !9
  %719 = add nsw i32 %717, %718
  store i32 %719, ptr %26, align 4, !tbaa !9
  br label %720

720:                                              ; preds = %761, %713
  %721 = load i32, ptr %26, align 4, !tbaa !9
  %722 = load i32, ptr %18, align 4, !tbaa !9
  %723 = icmp sle i32 %721, %722
  br i1 %723, label %724, label %764

724:                                              ; preds = %720
  %725 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %725, ptr %19, align 4, !tbaa !9
  %726 = load ptr, ptr %11, align 8, !tbaa !5
  %727 = load i32, ptr %30, align 4, !tbaa !9
  %728 = load i32, ptr %24, align 4, !tbaa !9
  %729 = add nsw i32 %727, %728
  %730 = load i32, ptr %26, align 4, !tbaa !9
  %731 = load i32, ptr %15, align 4, !tbaa !9
  %732 = mul nsw i32 %730, %731
  %733 = add nsw i32 %729, %732
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds %struct.complex, ptr %726, i64 %734
  %736 = call <2 x float> @Cf(ptr noundef %735)
  store <2 x float> %736, ptr %42, align 4
  %737 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 0
  %738 = load float, ptr %737, align 4
  %739 = getelementptr inbounds { float, float }, ptr %42, i32 0, i32 1
  %740 = load float, ptr %739, align 4
  %741 = fneg float %740
  %742 = call ptr @_pCf(ptr noundef %21)
  %743 = getelementptr inbounds { float, float }, ptr %742, i32 0, i32 0
  %744 = getelementptr inbounds { float, float }, ptr %742, i32 0, i32 1
  store float %738, ptr %743, align 4
  store float %741, ptr %744, align 4
  %745 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %746 = load float, ptr %745, align 4, !tbaa !11
  %747 = load ptr, ptr %13, align 8, !tbaa !5
  %748 = load i32, ptr %19, align 4, !tbaa !9
  %749 = sext i32 %748 to i64
  %750 = getelementptr inbounds %struct.complex, ptr %747, i64 %749
  %751 = getelementptr inbounds %struct.complex, ptr %750, i32 0, i32 0
  store float %746, ptr %751, align 4, !tbaa !11
  %752 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %753 = load float, ptr %752, align 4, !tbaa !14
  %754 = load ptr, ptr %13, align 8, !tbaa !5
  %755 = load i32, ptr %19, align 4, !tbaa !9
  %756 = sext i32 %755 to i64
  %757 = getelementptr inbounds %struct.complex, ptr %754, i64 %756
  %758 = getelementptr inbounds %struct.complex, ptr %757, i32 0, i32 1
  store float %753, ptr %758, align 4, !tbaa !14
  %759 = load i32, ptr %31, align 4, !tbaa !9
  %760 = add nsw i32 %759, 1
  store i32 %760, ptr %31, align 4, !tbaa !9
  br label %761

761:                                              ; preds = %724
  %762 = load i32, ptr %26, align 4, !tbaa !9
  %763 = add nsw i32 %762, 1
  store i32 %763, ptr %26, align 4, !tbaa !9
  br label %720, !llvm.loop !30

764:                                              ; preds = %720
  br label %765

765:                                              ; preds = %764
  %766 = load i32, ptr %24, align 4, !tbaa !9
  %767 = add nsw i32 %766, 1
  store i32 %767, ptr %24, align 4, !tbaa !9
  br label %669, !llvm.loop !31

768:                                              ; preds = %669
  br label %769

769:                                              ; preds = %768, %608
  br label %770

770:                                              ; preds = %769, %444
  br label %1409

771:                                              ; preds = %221
  %772 = load i32, ptr %27, align 4, !tbaa !9
  %773 = icmp ne i32 %772, 0
  br i1 %773, label %774, label %994

774:                                              ; preds = %771
  %775 = load i32, ptr %28, align 4, !tbaa !9
  %776 = icmp ne i32 %775, 0
  br i1 %776, label %777, label %881

777:                                              ; preds = %774
  store i32 0, ptr %31, align 4, !tbaa !9
  %778 = load i32, ptr %25, align 4, !tbaa !9
  %779 = sub nsw i32 %778, 1
  store i32 %779, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %780

780:                                              ; preds = %877, %777
  %781 = load i32, ptr %24, align 4, !tbaa !9
  %782 = load i32, ptr %17, align 4, !tbaa !9
  %783 = icmp sle i32 %781, %782
  br i1 %783, label %784, label %880

784:                                              ; preds = %780
  %785 = load i32, ptr %25, align 4, !tbaa !9
  %786 = load i32, ptr %24, align 4, !tbaa !9
  %787 = add nsw i32 %785, %786
  store i32 %787, ptr %18, align 4, !tbaa !9
  %788 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %788, ptr %23, align 4, !tbaa !9
  br label %789

789:                                              ; preds = %830, %784
  %790 = load i32, ptr %23, align 4, !tbaa !9
  %791 = load i32, ptr %18, align 4, !tbaa !9
  %792 = icmp sle i32 %790, %791
  br i1 %792, label %793, label %833

793:                                              ; preds = %789
  %794 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %794, ptr %19, align 4, !tbaa !9
  %795 = load ptr, ptr %11, align 8, !tbaa !5
  %796 = load i32, ptr %25, align 4, !tbaa !9
  %797 = load i32, ptr %24, align 4, !tbaa !9
  %798 = add nsw i32 %796, %797
  %799 = load i32, ptr %23, align 4, !tbaa !9
  %800 = load i32, ptr %15, align 4, !tbaa !9
  %801 = mul nsw i32 %799, %800
  %802 = add nsw i32 %798, %801
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds %struct.complex, ptr %795, i64 %803
  %805 = call <2 x float> @Cf(ptr noundef %804)
  store <2 x float> %805, ptr %43, align 4
  %806 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 0
  %807 = load float, ptr %806, align 4
  %808 = getelementptr inbounds { float, float }, ptr %43, i32 0, i32 1
  %809 = load float, ptr %808, align 4
  %810 = fneg float %809
  %811 = call ptr @_pCf(ptr noundef %21)
  %812 = getelementptr inbounds { float, float }, ptr %811, i32 0, i32 0
  %813 = getelementptr inbounds { float, float }, ptr %811, i32 0, i32 1
  store float %807, ptr %812, align 4
  store float %810, ptr %813, align 4
  %814 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %815 = load float, ptr %814, align 4, !tbaa !11
  %816 = load ptr, ptr %13, align 8, !tbaa !5
  %817 = load i32, ptr %19, align 4, !tbaa !9
  %818 = sext i32 %817 to i64
  %819 = getelementptr inbounds %struct.complex, ptr %816, i64 %818
  %820 = getelementptr inbounds %struct.complex, ptr %819, i32 0, i32 0
  store float %815, ptr %820, align 4, !tbaa !11
  %821 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %822 = load float, ptr %821, align 4, !tbaa !14
  %823 = load ptr, ptr %13, align 8, !tbaa !5
  %824 = load i32, ptr %19, align 4, !tbaa !9
  %825 = sext i32 %824 to i64
  %826 = getelementptr inbounds %struct.complex, ptr %823, i64 %825
  %827 = getelementptr inbounds %struct.complex, ptr %826, i32 0, i32 1
  store float %822, ptr %827, align 4, !tbaa !14
  %828 = load i32, ptr %31, align 4, !tbaa !9
  %829 = add nsw i32 %828, 1
  store i32 %829, ptr %31, align 4, !tbaa !9
  br label %830

830:                                              ; preds = %793
  %831 = load i32, ptr %23, align 4, !tbaa !9
  %832 = add nsw i32 %831, 1
  store i32 %832, ptr %23, align 4, !tbaa !9
  br label %789, !llvm.loop !32

833:                                              ; preds = %789
  %834 = load ptr, ptr %10, align 8, !tbaa !5
  %835 = load i32, ptr %834, align 4, !tbaa !9
  %836 = sub nsw i32 %835, 1
  store i32 %836, ptr %18, align 4, !tbaa !9
  %837 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %837, ptr %23, align 4, !tbaa !9
  br label %838

838:                                              ; preds = %873, %833
  %839 = load i32, ptr %23, align 4, !tbaa !9
  %840 = load i32, ptr %18, align 4, !tbaa !9
  %841 = icmp sle i32 %839, %840
  br i1 %841, label %842, label %876

842:                                              ; preds = %838
  %843 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %843, ptr %19, align 4, !tbaa !9
  %844 = load i32, ptr %23, align 4, !tbaa !9
  %845 = load i32, ptr %24, align 4, !tbaa !9
  %846 = load i32, ptr %15, align 4, !tbaa !9
  %847 = mul nsw i32 %845, %846
  %848 = add nsw i32 %844, %847
  store i32 %848, ptr %20, align 4, !tbaa !9
  %849 = load ptr, ptr %11, align 8, !tbaa !5
  %850 = load i32, ptr %20, align 4, !tbaa !9
  %851 = sext i32 %850 to i64
  %852 = getelementptr inbounds %struct.complex, ptr %849, i64 %851
  %853 = getelementptr inbounds %struct.complex, ptr %852, i32 0, i32 0
  %854 = load float, ptr %853, align 4, !tbaa !11
  %855 = load ptr, ptr %13, align 8, !tbaa !5
  %856 = load i32, ptr %19, align 4, !tbaa !9
  %857 = sext i32 %856 to i64
  %858 = getelementptr inbounds %struct.complex, ptr %855, i64 %857
  %859 = getelementptr inbounds %struct.complex, ptr %858, i32 0, i32 0
  store float %854, ptr %859, align 4, !tbaa !11
  %860 = load ptr, ptr %11, align 8, !tbaa !5
  %861 = load i32, ptr %20, align 4, !tbaa !9
  %862 = sext i32 %861 to i64
  %863 = getelementptr inbounds %struct.complex, ptr %860, i64 %862
  %864 = getelementptr inbounds %struct.complex, ptr %863, i32 0, i32 1
  %865 = load float, ptr %864, align 4, !tbaa !14
  %866 = load ptr, ptr %13, align 8, !tbaa !5
  %867 = load i32, ptr %19, align 4, !tbaa !9
  %868 = sext i32 %867 to i64
  %869 = getelementptr inbounds %struct.complex, ptr %866, i64 %868
  %870 = getelementptr inbounds %struct.complex, ptr %869, i32 0, i32 1
  store float %865, ptr %870, align 4, !tbaa !14
  %871 = load i32, ptr %31, align 4, !tbaa !9
  %872 = add nsw i32 %871, 1
  store i32 %872, ptr %31, align 4, !tbaa !9
  br label %873

873:                                              ; preds = %842
  %874 = load i32, ptr %23, align 4, !tbaa !9
  %875 = add nsw i32 %874, 1
  store i32 %875, ptr %23, align 4, !tbaa !9
  br label %838, !llvm.loop !33

876:                                              ; preds = %838
  br label %877

877:                                              ; preds = %876
  %878 = load i32, ptr %24, align 4, !tbaa !9
  %879 = add nsw i32 %878, 1
  store i32 %879, ptr %24, align 4, !tbaa !9
  br label %780, !llvm.loop !34

880:                                              ; preds = %780
  br label %993

881:                                              ; preds = %774
  %882 = load i32, ptr %32, align 4, !tbaa !9
  %883 = load ptr, ptr %10, align 8, !tbaa !5
  %884 = load i32, ptr %883, align 4, !tbaa !9
  %885 = sub nsw i32 %882, %884
  %886 = sub nsw i32 %885, 1
  store i32 %886, ptr %31, align 4, !tbaa !9
  %887 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %887, ptr %17, align 4, !tbaa !9
  %888 = load ptr, ptr %10, align 8, !tbaa !5
  %889 = load i32, ptr %888, align 4, !tbaa !9
  %890 = sub nsw i32 %889, 1
  store i32 %890, ptr %24, align 4, !tbaa !9
  br label %891

891:                                              ; preds = %989, %881
  %892 = load i32, ptr %24, align 4, !tbaa !9
  %893 = load i32, ptr %17, align 4, !tbaa !9
  %894 = icmp sge i32 %892, %893
  br i1 %894, label %895, label %992

895:                                              ; preds = %891
  %896 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %896, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %897

897:                                              ; preds = %932, %895
  %898 = load i32, ptr %23, align 4, !tbaa !9
  %899 = load i32, ptr %18, align 4, !tbaa !9
  %900 = icmp sle i32 %898, %899
  br i1 %900, label %901, label %935

901:                                              ; preds = %897
  %902 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %902, ptr %19, align 4, !tbaa !9
  %903 = load i32, ptr %23, align 4, !tbaa !9
  %904 = load i32, ptr %24, align 4, !tbaa !9
  %905 = load i32, ptr %15, align 4, !tbaa !9
  %906 = mul nsw i32 %904, %905
  %907 = add nsw i32 %903, %906
  store i32 %907, ptr %20, align 4, !tbaa !9
  %908 = load ptr, ptr %11, align 8, !tbaa !5
  %909 = load i32, ptr %20, align 4, !tbaa !9
  %910 = sext i32 %909 to i64
  %911 = getelementptr inbounds %struct.complex, ptr %908, i64 %910
  %912 = getelementptr inbounds %struct.complex, ptr %911, i32 0, i32 0
  %913 = load float, ptr %912, align 4, !tbaa !11
  %914 = load ptr, ptr %13, align 8, !tbaa !5
  %915 = load i32, ptr %19, align 4, !tbaa !9
  %916 = sext i32 %915 to i64
  %917 = getelementptr inbounds %struct.complex, ptr %914, i64 %916
  %918 = getelementptr inbounds %struct.complex, ptr %917, i32 0, i32 0
  store float %913, ptr %918, align 4, !tbaa !11
  %919 = load ptr, ptr %11, align 8, !tbaa !5
  %920 = load i32, ptr %20, align 4, !tbaa !9
  %921 = sext i32 %920 to i64
  %922 = getelementptr inbounds %struct.complex, ptr %919, i64 %921
  %923 = getelementptr inbounds %struct.complex, ptr %922, i32 0, i32 1
  %924 = load float, ptr %923, align 4, !tbaa !14
  %925 = load ptr, ptr %13, align 8, !tbaa !5
  %926 = load i32, ptr %19, align 4, !tbaa !9
  %927 = sext i32 %926 to i64
  %928 = getelementptr inbounds %struct.complex, ptr %925, i64 %927
  %929 = getelementptr inbounds %struct.complex, ptr %928, i32 0, i32 1
  store float %924, ptr %929, align 4, !tbaa !14
  %930 = load i32, ptr %31, align 4, !tbaa !9
  %931 = add nsw i32 %930, 1
  store i32 %931, ptr %31, align 4, !tbaa !9
  br label %932

932:                                              ; preds = %901
  %933 = load i32, ptr %23, align 4, !tbaa !9
  %934 = add nsw i32 %933, 1
  store i32 %934, ptr %23, align 4, !tbaa !9
  br label %897, !llvm.loop !35

935:                                              ; preds = %897
  %936 = load i32, ptr %25, align 4, !tbaa !9
  %937 = sub nsw i32 %936, 1
  store i32 %937, ptr %18, align 4, !tbaa !9
  %938 = load i32, ptr %24, align 4, !tbaa !9
  %939 = load i32, ptr %25, align 4, !tbaa !9
  %940 = sub nsw i32 %938, %939
  store i32 %940, ptr %26, align 4, !tbaa !9
  br label %941

941:                                              ; preds = %982, %935
  %942 = load i32, ptr %26, align 4, !tbaa !9
  %943 = load i32, ptr %18, align 4, !tbaa !9
  %944 = icmp sle i32 %942, %943
  br i1 %944, label %945, label %985

945:                                              ; preds = %941
  %946 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %946, ptr %19, align 4, !tbaa !9
  %947 = load ptr, ptr %11, align 8, !tbaa !5
  %948 = load i32, ptr %24, align 4, !tbaa !9
  %949 = load i32, ptr %25, align 4, !tbaa !9
  %950 = sub nsw i32 %948, %949
  %951 = load i32, ptr %26, align 4, !tbaa !9
  %952 = load i32, ptr %15, align 4, !tbaa !9
  %953 = mul nsw i32 %951, %952
  %954 = add nsw i32 %950, %953
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds %struct.complex, ptr %947, i64 %955
  %957 = call <2 x float> @Cf(ptr noundef %956)
  store <2 x float> %957, ptr %44, align 4
  %958 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 0
  %959 = load float, ptr %958, align 4
  %960 = getelementptr inbounds { float, float }, ptr %44, i32 0, i32 1
  %961 = load float, ptr %960, align 4
  %962 = fneg float %961
  %963 = call ptr @_pCf(ptr noundef %21)
  %964 = getelementptr inbounds { float, float }, ptr %963, i32 0, i32 0
  %965 = getelementptr inbounds { float, float }, ptr %963, i32 0, i32 1
  store float %959, ptr %964, align 4
  store float %962, ptr %965, align 4
  %966 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %967 = load float, ptr %966, align 4, !tbaa !11
  %968 = load ptr, ptr %13, align 8, !tbaa !5
  %969 = load i32, ptr %19, align 4, !tbaa !9
  %970 = sext i32 %969 to i64
  %971 = getelementptr inbounds %struct.complex, ptr %968, i64 %970
  %972 = getelementptr inbounds %struct.complex, ptr %971, i32 0, i32 0
  store float %967, ptr %972, align 4, !tbaa !11
  %973 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %974 = load float, ptr %973, align 4, !tbaa !14
  %975 = load ptr, ptr %13, align 8, !tbaa !5
  %976 = load i32, ptr %19, 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 1
  store float %974, ptr %979, align 4, !tbaa !14
  %980 = load i32, ptr %31, align 4, !tbaa !9
  %981 = add nsw i32 %980, 1
  store i32 %981, ptr %31, align 4, !tbaa !9
  br label %982

982:                                              ; preds = %945
  %983 = load i32, ptr %26, align 4, !tbaa !9
  %984 = add nsw i32 %983, 1
  store i32 %984, ptr %26, align 4, !tbaa !9
  br label %941, !llvm.loop !36

985:                                              ; preds = %941
  %986 = load i32, ptr %22, align 4, !tbaa !9
  %987 = load i32, ptr %31, align 4, !tbaa !9
  %988 = sub nsw i32 %987, %986
  store i32 %988, ptr %31, align 4, !tbaa !9
  br label %989

989:                                              ; preds = %985
  %990 = load i32, ptr %24, align 4, !tbaa !9
  %991 = add nsw i32 %990, -1
  store i32 %991, ptr %24, align 4, !tbaa !9
  br label %891, !llvm.loop !37

992:                                              ; preds = %891
  br label %993

993:                                              ; preds = %992, %880
  br label %1408

994:                                              ; preds = %771
  %995 = load i32, ptr %28, align 4, !tbaa !9
  %996 = icmp ne i32 %995, 0
  br i1 %996, label %997, label %1205

997:                                              ; preds = %994
  store i32 0, ptr %31, align 4, !tbaa !9
  %998 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %998, ptr %24, align 4, !tbaa !9
  %999 = load ptr, ptr %10, align 8, !tbaa !5
  %1000 = load i32, ptr %999, align 4, !tbaa !9
  %1001 = sub nsw i32 %1000, 1
  store i32 %1001, ptr %17, align 4, !tbaa !9
  %1002 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1002, ptr %23, align 4, !tbaa !9
  br label %1003

1003:                                             ; preds = %1038, %997
  %1004 = load i32, ptr %23, align 4, !tbaa !9
  %1005 = load i32, ptr %17, align 4, !tbaa !9
  %1006 = icmp sle i32 %1004, %1005
  br i1 %1006, label %1007, label %1041

1007:                                             ; preds = %1003
  %1008 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1008, ptr %18, align 4, !tbaa !9
  %1009 = load i32, ptr %23, align 4, !tbaa !9
  %1010 = load i32, ptr %24, align 4, !tbaa !9
  %1011 = load i32, ptr %15, align 4, !tbaa !9
  %1012 = mul nsw i32 %1010, %1011
  %1013 = add nsw i32 %1009, %1012
  store i32 %1013, ptr %19, align 4, !tbaa !9
  %1014 = load ptr, ptr %11, align 8, !tbaa !5
  %1015 = load i32, ptr %19, align 4, !tbaa !9
  %1016 = sext i32 %1015 to i64
  %1017 = getelementptr inbounds %struct.complex, ptr %1014, i64 %1016
  %1018 = getelementptr inbounds %struct.complex, ptr %1017, i32 0, i32 0
  %1019 = load float, ptr %1018, align 4, !tbaa !11
  %1020 = load ptr, ptr %13, align 8, !tbaa !5
  %1021 = load i32, ptr %18, align 4, !tbaa !9
  %1022 = sext i32 %1021 to i64
  %1023 = getelementptr inbounds %struct.complex, ptr %1020, i64 %1022
  %1024 = getelementptr inbounds %struct.complex, ptr %1023, i32 0, i32 0
  store float %1019, ptr %1024, align 4, !tbaa !11
  %1025 = load ptr, ptr %11, align 8, !tbaa !5
  %1026 = load i32, ptr %19, 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 1
  %1030 = load float, ptr %1029, align 4, !tbaa !14
  %1031 = load ptr, ptr %13, align 8, !tbaa !5
  %1032 = load i32, ptr %18, align 4, !tbaa !9
  %1033 = sext i32 %1032 to i64
  %1034 = getelementptr inbounds %struct.complex, ptr %1031, i64 %1033
  %1035 = getelementptr inbounds %struct.complex, ptr %1034, i32 0, i32 1
  store float %1030, ptr %1035, align 4, !tbaa !14
  %1036 = load i32, ptr %31, align 4, !tbaa !9
  %1037 = add nsw i32 %1036, 1
  store i32 %1037, ptr %31, align 4, !tbaa !9
  br label %1038

1038:                                             ; preds = %1007
  %1039 = load i32, ptr %23, align 4, !tbaa !9
  %1040 = add nsw i32 %1039, 1
  store i32 %1040, ptr %23, align 4, !tbaa !9
  br label %1003, !llvm.loop !38

1041:                                             ; preds = %1003
  %1042 = load i32, ptr %25, align 4, !tbaa !9
  %1043 = sub nsw i32 %1042, 2
  store i32 %1043, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %1044

1044:                                             ; preds = %1142, %1041
  %1045 = load i32, ptr %24, align 4, !tbaa !9
  %1046 = load i32, ptr %17, align 4, !tbaa !9
  %1047 = icmp sle i32 %1045, %1046
  br i1 %1047, label %1048, label %1145

1048:                                             ; preds = %1044
  %1049 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %1049, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %1050

1050:                                             ; preds = %1089, %1048
  %1051 = load i32, ptr %23, align 4, !tbaa !9
  %1052 = load i32, ptr %18, align 4, !tbaa !9
  %1053 = icmp sle i32 %1051, %1052
  br i1 %1053, label %1054, label %1092

1054:                                             ; preds = %1050
  %1055 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1055, ptr %19, align 4, !tbaa !9
  %1056 = load ptr, ptr %11, align 8, !tbaa !5
  %1057 = load i32, ptr %24, align 4, !tbaa !9
  %1058 = load i32, ptr %23, align 4, !tbaa !9
  %1059 = load i32, ptr %15, align 4, !tbaa !9
  %1060 = mul nsw i32 %1058, %1059
  %1061 = add nsw i32 %1057, %1060
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds %struct.complex, ptr %1056, i64 %1062
  %1064 = call <2 x float> @Cf(ptr noundef %1063)
  store <2 x float> %1064, ptr %45, align 4
  %1065 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 0
  %1066 = load float, ptr %1065, align 4
  %1067 = getelementptr inbounds { float, float }, ptr %45, i32 0, i32 1
  %1068 = load float, ptr %1067, align 4
  %1069 = fneg float %1068
  %1070 = call ptr @_pCf(ptr noundef %21)
  %1071 = getelementptr inbounds { float, float }, ptr %1070, i32 0, i32 0
  %1072 = getelementptr inbounds { float, float }, ptr %1070, i32 0, i32 1
  store float %1066, ptr %1071, align 4
  store float %1069, ptr %1072, align 4
  %1073 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %1074 = load float, ptr %1073, align 4, !tbaa !11
  %1075 = load ptr, ptr %13, align 8, !tbaa !5
  %1076 = load i32, ptr %19, align 4, !tbaa !9
  %1077 = sext i32 %1076 to i64
  %1078 = getelementptr inbounds %struct.complex, ptr %1075, i64 %1077
  %1079 = getelementptr inbounds %struct.complex, ptr %1078, i32 0, i32 0
  store float %1074, ptr %1079, align 4, !tbaa !11
  %1080 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %1081 = load float, ptr %1080, align 4, !tbaa !14
  %1082 = load ptr, ptr %13, align 8, !tbaa !5
  %1083 = load i32, ptr %19, align 4, !tbaa !9
  %1084 = sext i32 %1083 to i64
  %1085 = getelementptr inbounds %struct.complex, ptr %1082, i64 %1084
  %1086 = getelementptr inbounds %struct.complex, ptr %1085, i32 0, i32 1
  store float %1081, ptr %1086, align 4, !tbaa !14
  %1087 = load i32, ptr %31, align 4, !tbaa !9
  %1088 = add nsw i32 %1087, 1
  store i32 %1088, ptr %31, align 4, !tbaa !9
  br label %1089

1089:                                             ; preds = %1054
  %1090 = load i32, ptr %23, align 4, !tbaa !9
  %1091 = add nsw i32 %1090, 1
  store i32 %1091, ptr %23, align 4, !tbaa !9
  br label %1050, !llvm.loop !39

1092:                                             ; preds = %1050
  %1093 = load ptr, ptr %10, align 8, !tbaa !5
  %1094 = load i32, ptr %1093, align 4, !tbaa !9
  %1095 = sub nsw i32 %1094, 1
  store i32 %1095, ptr %18, align 4, !tbaa !9
  %1096 = load i32, ptr %25, align 4, !tbaa !9
  %1097 = add nsw i32 %1096, 1
  %1098 = load i32, ptr %24, align 4, !tbaa !9
  %1099 = add nsw i32 %1097, %1098
  store i32 %1099, ptr %23, align 4, !tbaa !9
  br label %1100

1100:                                             ; preds = %1138, %1092
  %1101 = load i32, ptr %23, align 4, !tbaa !9
  %1102 = load i32, ptr %18, align 4, !tbaa !9
  %1103 = icmp sle i32 %1101, %1102
  br i1 %1103, label %1104, label %1141

1104:                                             ; preds = %1100
  %1105 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1105, ptr %19, align 4, !tbaa !9
  %1106 = load i32, ptr %23, align 4, !tbaa !9
  %1107 = load i32, ptr %25, align 4, !tbaa !9
  %1108 = add nsw i32 %1107, 1
  %1109 = load i32, ptr %24, align 4, !tbaa !9
  %1110 = add nsw i32 %1108, %1109
  %1111 = load i32, ptr %15, align 4, !tbaa !9
  %1112 = mul nsw i32 %1110, %1111
  %1113 = add nsw i32 %1106, %1112
  store i32 %1113, ptr %20, align 4, !tbaa !9
  %1114 = load ptr, ptr %11, align 8, !tbaa !5
  %1115 = load i32, ptr %20, align 4, !tbaa !9
  %1116 = sext i32 %1115 to i64
  %1117 = getelementptr inbounds %struct.complex, ptr %1114, i64 %1116
  %1118 = getelementptr inbounds %struct.complex, ptr %1117, i32 0, i32 0
  %1119 = load float, ptr %1118, align 4, !tbaa !11
  %1120 = load ptr, ptr %13, align 8, !tbaa !5
  %1121 = load i32, ptr %19, align 4, !tbaa !9
  %1122 = sext i32 %1121 to i64
  %1123 = getelementptr inbounds %struct.complex, ptr %1120, i64 %1122
  %1124 = getelementptr inbounds %struct.complex, ptr %1123, i32 0, i32 0
  store float %1119, ptr %1124, align 4, !tbaa !11
  %1125 = load ptr, ptr %11, align 8, !tbaa !5
  %1126 = load i32, ptr %20, align 4, !tbaa !9
  %1127 = sext i32 %1126 to i64
  %1128 = getelementptr inbounds %struct.complex, ptr %1125, i64 %1127
  %1129 = getelementptr inbounds %struct.complex, ptr %1128, i32 0, i32 1
  %1130 = load float, ptr %1129, align 4, !tbaa !14
  %1131 = load ptr, ptr %13, align 8, !tbaa !5
  %1132 = load i32, ptr %19, align 4, !tbaa !9
  %1133 = sext i32 %1132 to i64
  %1134 = getelementptr inbounds %struct.complex, ptr %1131, i64 %1133
  %1135 = getelementptr inbounds %struct.complex, ptr %1134, i32 0, i32 1
  store float %1130, ptr %1135, align 4, !tbaa !14
  %1136 = load i32, ptr %31, align 4, !tbaa !9
  %1137 = add nsw i32 %1136, 1
  store i32 %1137, ptr %31, align 4, !tbaa !9
  br label %1138

1138:                                             ; preds = %1104
  %1139 = load i32, ptr %23, align 4, !tbaa !9
  %1140 = add nsw i32 %1139, 1
  store i32 %1140, ptr %23, align 4, !tbaa !9
  br label %1100, !llvm.loop !40

1141:                                             ; preds = %1100
  br label %1142

1142:                                             ; preds = %1141
  %1143 = load i32, ptr %24, align 4, !tbaa !9
  %1144 = add nsw i32 %1143, 1
  store i32 %1144, ptr %24, align 4, !tbaa !9
  br label %1044, !llvm.loop !41

1145:                                             ; preds = %1044
  %1146 = load ptr, ptr %10, align 8, !tbaa !5
  %1147 = load i32, ptr %1146, align 4, !tbaa !9
  %1148 = sub nsw i32 %1147, 1
  store i32 %1148, ptr %17, align 4, !tbaa !9
  %1149 = load i32, ptr %25, align 4, !tbaa !9
  %1150 = sub nsw i32 %1149, 1
  store i32 %1150, ptr %24, align 4, !tbaa !9
  br label %1151

1151:                                             ; preds = %1201, %1145
  %1152 = load i32, ptr %24, align 4, !tbaa !9
  %1153 = load i32, ptr %17, align 4, !tbaa !9
  %1154 = icmp sle i32 %1152, %1153
  br i1 %1154, label %1155, label %1204

1155:                                             ; preds = %1151
  %1156 = load i32, ptr %25, align 4, !tbaa !9
  %1157 = sub nsw i32 %1156, 1
  store i32 %1157, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %1158

1158:                                             ; preds = %1197, %1155
  %1159 = load i32, ptr %23, align 4, !tbaa !9
  %1160 = load i32, ptr %18, align 4, !tbaa !9
  %1161 = icmp sle i32 %1159, %1160
  br i1 %1161, label %1162, label %1200

1162:                                             ; preds = %1158
  %1163 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1163, ptr %19, align 4, !tbaa !9
  %1164 = load ptr, ptr %11, align 8, !tbaa !5
  %1165 = load i32, ptr %24, align 4, !tbaa !9
  %1166 = load i32, ptr %23, align 4, !tbaa !9
  %1167 = load i32, ptr %15, align 4, !tbaa !9
  %1168 = mul nsw i32 %1166, %1167
  %1169 = add nsw i32 %1165, %1168
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds %struct.complex, ptr %1164, i64 %1170
  %1172 = call <2 x float> @Cf(ptr noundef %1171)
  store <2 x float> %1172, ptr %46, align 4
  %1173 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 0
  %1174 = load float, ptr %1173, align 4
  %1175 = getelementptr inbounds { float, float }, ptr %46, i32 0, i32 1
  %1176 = load float, ptr %1175, align 4
  %1177 = fneg float %1176
  %1178 = call ptr @_pCf(ptr noundef %21)
  %1179 = getelementptr inbounds { float, float }, ptr %1178, i32 0, i32 0
  %1180 = getelementptr inbounds { float, float }, ptr %1178, i32 0, i32 1
  store float %1174, ptr %1179, align 4
  store float %1177, ptr %1180, align 4
  %1181 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %1182 = load float, ptr %1181, align 4, !tbaa !11
  %1183 = load ptr, ptr %13, align 8, !tbaa !5
  %1184 = load i32, ptr %19, align 4, !tbaa !9
  %1185 = sext i32 %1184 to i64
  %1186 = getelementptr inbounds %struct.complex, ptr %1183, i64 %1185
  %1187 = getelementptr inbounds %struct.complex, ptr %1186, i32 0, i32 0
  store float %1182, ptr %1187, align 4, !tbaa !11
  %1188 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %1189 = load float, ptr %1188, align 4, !tbaa !14
  %1190 = load ptr, ptr %13, align 8, !tbaa !5
  %1191 = load i32, ptr %19, align 4, !tbaa !9
  %1192 = sext i32 %1191 to i64
  %1193 = getelementptr inbounds %struct.complex, ptr %1190, i64 %1192
  %1194 = getelementptr inbounds %struct.complex, ptr %1193, i32 0, i32 1
  store float %1189, ptr %1194, align 4, !tbaa !14
  %1195 = load i32, ptr %31, align 4, !tbaa !9
  %1196 = add nsw i32 %1195, 1
  store i32 %1196, ptr %31, align 4, !tbaa !9
  br label %1197

1197:                                             ; preds = %1162
  %1198 = load i32, ptr %23, align 4, !tbaa !9
  %1199 = add nsw i32 %1198, 1
  store i32 %1199, ptr %23, align 4, !tbaa !9
  br label %1158, !llvm.loop !42

1200:                                             ; preds = %1158
  br label %1201

1201:                                             ; preds = %1200
  %1202 = load i32, ptr %24, align 4, !tbaa !9
  %1203 = add nsw i32 %1202, 1
  store i32 %1203, ptr %24, align 4, !tbaa !9
  br label %1151, !llvm.loop !43

1204:                                             ; preds = %1151
  br label %1407

1205:                                             ; preds = %994
  store i32 0, ptr %31, align 4, !tbaa !9
  %1206 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1206, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %1207

1207:                                             ; preds = %1259, %1205
  %1208 = load i32, ptr %24, align 4, !tbaa !9
  %1209 = load i32, ptr %17, align 4, !tbaa !9
  %1210 = icmp sle i32 %1208, %1209
  br i1 %1210, label %1211, label %1262

1211:                                             ; preds = %1207
  %1212 = load ptr, ptr %10, align 8, !tbaa !5
  %1213 = load i32, ptr %1212, align 4, !tbaa !9
  %1214 = sub nsw i32 %1213, 1
  store i32 %1214, ptr %18, align 4, !tbaa !9
  %1215 = load i32, ptr %25, align 4, !tbaa !9
  store i32 %1215, ptr %23, align 4, !tbaa !9
  br label %1216

1216:                                             ; preds = %1255, %1211
  %1217 = load i32, ptr %23, align 4, !tbaa !9
  %1218 = load i32, ptr %18, align 4, !tbaa !9
  %1219 = icmp sle i32 %1217, %1218
  br i1 %1219, label %1220, label %1258

1220:                                             ; preds = %1216
  %1221 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1221, ptr %19, align 4, !tbaa !9
  %1222 = load ptr, ptr %11, align 8, !tbaa !5
  %1223 = load i32, ptr %24, align 4, !tbaa !9
  %1224 = load i32, ptr %23, align 4, !tbaa !9
  %1225 = load i32, ptr %15, align 4, !tbaa !9
  %1226 = mul nsw i32 %1224, %1225
  %1227 = add nsw i32 %1223, %1226
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds %struct.complex, ptr %1222, i64 %1228
  %1230 = call <2 x float> @Cf(ptr noundef %1229)
  store <2 x float> %1230, ptr %47, align 4
  %1231 = getelementptr inbounds { float, float }, ptr %47, i32 0, i32 0
  %1232 = load float, ptr %1231, align 4
  %1233 = getelementptr inbounds { float, float }, ptr %47, i32 0, i32 1
  %1234 = load float, ptr %1233, align 4
  %1235 = fneg float %1234
  %1236 = call ptr @_pCf(ptr noundef %21)
  %1237 = getelementptr inbounds { float, float }, ptr %1236, i32 0, i32 0
  %1238 = getelementptr inbounds { float, float }, ptr %1236, i32 0, i32 1
  store float %1232, ptr %1237, align 4
  store float %1235, ptr %1238, align 4
  %1239 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %1240 = load float, ptr %1239, align 4, !tbaa !11
  %1241 = load ptr, ptr %13, align 8, !tbaa !5
  %1242 = load i32, ptr %19, align 4, !tbaa !9
  %1243 = sext i32 %1242 to i64
  %1244 = getelementptr inbounds %struct.complex, ptr %1241, i64 %1243
  %1245 = getelementptr inbounds %struct.complex, ptr %1244, i32 0, i32 0
  store float %1240, ptr %1245, align 4, !tbaa !11
  %1246 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %1247 = load float, ptr %1246, align 4, !tbaa !14
  %1248 = load ptr, ptr %13, align 8, !tbaa !5
  %1249 = load i32, ptr %19, align 4, !tbaa !9
  %1250 = sext i32 %1249 to i64
  %1251 = getelementptr inbounds %struct.complex, ptr %1248, i64 %1250
  %1252 = getelementptr inbounds %struct.complex, ptr %1251, i32 0, i32 1
  store float %1247, ptr %1252, align 4, !tbaa !14
  %1253 = load i32, ptr %31, align 4, !tbaa !9
  %1254 = add nsw i32 %1253, 1
  store i32 %1254, ptr %31, align 4, !tbaa !9
  br label %1255

1255:                                             ; preds = %1220
  %1256 = load i32, ptr %23, align 4, !tbaa !9
  %1257 = add nsw i32 %1256, 1
  store i32 %1257, ptr %23, align 4, !tbaa !9
  br label %1216, !llvm.loop !44

1258:                                             ; preds = %1216
  br label %1259

1259:                                             ; preds = %1258
  %1260 = load i32, ptr %24, align 4, !tbaa !9
  %1261 = add nsw i32 %1260, 1
  store i32 %1261, ptr %24, align 4, !tbaa !9
  br label %1207, !llvm.loop !45

1262:                                             ; preds = %1207
  %1263 = load i32, ptr %25, align 4, !tbaa !9
  %1264 = sub nsw i32 %1263, 2
  store i32 %1264, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %24, align 4, !tbaa !9
  br label %1265

1265:                                             ; preds = %1363, %1262
  %1266 = load i32, ptr %24, align 4, !tbaa !9
  %1267 = load i32, ptr %17, align 4, !tbaa !9
  %1268 = icmp sle i32 %1266, %1267
  br i1 %1268, label %1269, label %1366

1269:                                             ; preds = %1265
  %1270 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %1270, ptr %18, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %1271

1271:                                             ; preds = %1306, %1269
  %1272 = load i32, ptr %23, align 4, !tbaa !9
  %1273 = load i32, ptr %18, align 4, !tbaa !9
  %1274 = icmp sle i32 %1272, %1273
  br i1 %1274, label %1275, label %1309

1275:                                             ; preds = %1271
  %1276 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1276, ptr %19, align 4, !tbaa !9
  %1277 = load i32, ptr %23, align 4, !tbaa !9
  %1278 = load i32, ptr %24, align 4, !tbaa !9
  %1279 = load i32, ptr %15, align 4, !tbaa !9
  %1280 = mul nsw i32 %1278, %1279
  %1281 = add nsw i32 %1277, %1280
  store i32 %1281, ptr %20, align 4, !tbaa !9
  %1282 = load ptr, ptr %11, align 8, !tbaa !5
  %1283 = load i32, ptr %20, align 4, !tbaa !9
  %1284 = sext i32 %1283 to i64
  %1285 = getelementptr inbounds %struct.complex, ptr %1282, i64 %1284
  %1286 = getelementptr inbounds %struct.complex, ptr %1285, i32 0, i32 0
  %1287 = load float, ptr %1286, align 4, !tbaa !11
  %1288 = load ptr, ptr %13, align 8, !tbaa !5
  %1289 = load i32, ptr %19, align 4, !tbaa !9
  %1290 = sext i32 %1289 to i64
  %1291 = getelementptr inbounds %struct.complex, ptr %1288, i64 %1290
  %1292 = getelementptr inbounds %struct.complex, ptr %1291, i32 0, i32 0
  store float %1287, ptr %1292, align 4, !tbaa !11
  %1293 = load ptr, ptr %11, align 8, !tbaa !5
  %1294 = load i32, ptr %20, align 4, !tbaa !9
  %1295 = sext i32 %1294 to i64
  %1296 = getelementptr inbounds %struct.complex, ptr %1293, i64 %1295
  %1297 = getelementptr inbounds %struct.complex, ptr %1296, i32 0, i32 1
  %1298 = load float, ptr %1297, align 4, !tbaa !14
  %1299 = load ptr, ptr %13, align 8, !tbaa !5
  %1300 = load i32, ptr %19, align 4, !tbaa !9
  %1301 = sext i32 %1300 to i64
  %1302 = getelementptr inbounds %struct.complex, ptr %1299, i64 %1301
  %1303 = getelementptr inbounds %struct.complex, ptr %1302, i32 0, i32 1
  store float %1298, ptr %1303, align 4, !tbaa !14
  %1304 = load i32, ptr %31, align 4, !tbaa !9
  %1305 = add nsw i32 %1304, 1
  store i32 %1305, ptr %31, align 4, !tbaa !9
  br label %1306

1306:                                             ; preds = %1275
  %1307 = load i32, ptr %23, align 4, !tbaa !9
  %1308 = add nsw i32 %1307, 1
  store i32 %1308, ptr %23, align 4, !tbaa !9
  br label %1271, !llvm.loop !46

1309:                                             ; preds = %1271
  %1310 = load ptr, ptr %10, align 8, !tbaa !5
  %1311 = load i32, ptr %1310, align 4, !tbaa !9
  %1312 = sub nsw i32 %1311, 1
  store i32 %1312, ptr %18, align 4, !tbaa !9
  %1313 = load i32, ptr %25, align 4, !tbaa !9
  %1314 = add nsw i32 %1313, 1
  %1315 = load i32, ptr %24, align 4, !tbaa !9
  %1316 = add nsw i32 %1314, %1315
  store i32 %1316, ptr %26, align 4, !tbaa !9
  br label %1317

1317:                                             ; preds = %1359, %1309
  %1318 = load i32, ptr %26, align 4, !tbaa !9
  %1319 = load i32, ptr %18, align 4, !tbaa !9
  %1320 = icmp sle i32 %1318, %1319
  br i1 %1320, label %1321, label %1362

1321:                                             ; preds = %1317
  %1322 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1322, ptr %19, align 4, !tbaa !9
  %1323 = load ptr, ptr %11, align 8, !tbaa !5
  %1324 = load i32, ptr %25, align 4, !tbaa !9
  %1325 = add nsw i32 %1324, 1
  %1326 = load i32, ptr %24, align 4, !tbaa !9
  %1327 = add nsw i32 %1325, %1326
  %1328 = load i32, ptr %26, align 4, !tbaa !9
  %1329 = load i32, ptr %15, align 4, !tbaa !9
  %1330 = mul nsw i32 %1328, %1329
  %1331 = add nsw i32 %1327, %1330
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds %struct.complex, ptr %1323, i64 %1332
  %1334 = call <2 x float> @Cf(ptr noundef %1333)
  store <2 x float> %1334, ptr %48, align 4
  %1335 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 0
  %1336 = load float, ptr %1335, align 4
  %1337 = getelementptr inbounds { float, float }, ptr %48, i32 0, i32 1
  %1338 = load float, ptr %1337, align 4
  %1339 = fneg float %1338
  %1340 = call ptr @_pCf(ptr noundef %21)
  %1341 = getelementptr inbounds { float, float }, ptr %1340, i32 0, i32 0
  %1342 = getelementptr inbounds { float, float }, ptr %1340, i32 0, i32 1
  store float %1336, ptr %1341, align 4
  store float %1339, ptr %1342, align 4
  %1343 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 0
  %1344 = load float, ptr %1343, align 4, !tbaa !11
  %1345 = load ptr, ptr %13, align 8, !tbaa !5
  %1346 = load i32, ptr %19, align 4, !tbaa !9
  %1347 = sext i32 %1346 to i64
  %1348 = getelementptr inbounds %struct.complex, ptr %1345, i64 %1347
  %1349 = getelementptr inbounds %struct.complex, ptr %1348, i32 0, i32 0
  store float %1344, ptr %1349, align 4, !tbaa !11
  %1350 = getelementptr inbounds %struct.complex, ptr %21, i32 0, i32 1
  %1351 = load float, ptr %1350, align 4, !tbaa !14
  %1352 = load ptr, ptr %13, align 8, !tbaa !5
  %1353 = load i32, ptr %19, align 4, !tbaa !9
  %1354 = sext i32 %1353 to i64
  %1355 = getelementptr inbounds %struct.complex, ptr %1352, i64 %1354
  %1356 = getelementptr inbounds %struct.complex, ptr %1355, i32 0, i32 1
  store float %1351, ptr %1356, align 4, !tbaa !14
  %1357 = load i32, ptr %31, align 4, !tbaa !9
  %1358 = add nsw i32 %1357, 1
  store i32 %1358, ptr %31, align 4, !tbaa !9
  br label %1359

1359:                                             ; preds = %1321
  %1360 = load i32, ptr %26, align 4, !tbaa !9
  %1361 = add nsw i32 %1360, 1
  store i32 %1361, ptr %26, align 4, !tbaa !9
  br label %1317, !llvm.loop !47

1362:                                             ; preds = %1317
  br label %1363

1363:                                             ; preds = %1362
  %1364 = load i32, ptr %24, align 4, !tbaa !9
  %1365 = add nsw i32 %1364, 1
  store i32 %1365, ptr %24, align 4, !tbaa !9
  br label %1265, !llvm.loop !48

1366:                                             ; preds = %1265
  %1367 = load i32, ptr %24, align 4, !tbaa !9
  store i32 %1367, ptr %17, align 4, !tbaa !9
  store i32 0, ptr %23, align 4, !tbaa !9
  br label %1368

1368:                                             ; preds = %1403, %1366
  %1369 = load i32, ptr %23, align 4, !tbaa !9
  %1370 = load i32, ptr %17, align 4, !tbaa !9
  %1371 = icmp sle i32 %1369, %1370
  br i1 %1371, label %1372, label %1406

1372:                                             ; preds = %1368
  %1373 = load i32, ptr %31, align 4, !tbaa !9
  store i32 %1373, ptr %18, align 4, !tbaa !9
  %1374 = load i32, ptr %23, align 4, !tbaa !9
  %1375 = load i32, ptr %24, align 4, !tbaa !9
  %1376 = load i32, ptr %15, align 4, !tbaa !9
  %1377 = mul nsw i32 %1375, %1376
  %1378 = add nsw i32 %1374, %1377
  store i32 %1378, ptr %19, align 4, !tbaa !9
  %1379 = load ptr, ptr %11, align 8, !tbaa !5
  %1380 = load i32, ptr %19, align 4, !tbaa !9
  %1381 = sext i32 %1380 to i64
  %1382 = getelementptr inbounds %struct.complex, ptr %1379, i64 %1381
  %1383 = getelementptr inbounds %struct.complex, ptr %1382, i32 0, i32 0
  %1384 = load float, ptr %1383, align 4, !tbaa !11
  %1385 = load ptr, ptr %13, align 8, !tbaa !5
  %1386 = load i32, ptr %18, align 4, !tbaa !9
  %1387 = sext i32 %1386 to i64
  %1388 = getelementptr inbounds %struct.complex, ptr %1385, i64 %1387
  %1389 = getelementptr inbounds %struct.complex, ptr %1388, i32 0, i32 0
  store float %1384, ptr %1389, align 4, !tbaa !11
  %1390 = load ptr, ptr %11, align 8, !tbaa !5
  %1391 = load i32, ptr %19, align 4, !tbaa !9
  %1392 = sext i32 %1391 to i64
  %1393 = getelementptr inbounds %struct.complex, ptr %1390, i64 %1392
  %1394 = getelementptr inbounds %struct.complex, ptr %1393, i32 0, i32 1
  %1395 = load float, ptr %1394, align 4, !tbaa !14
  %1396 = load ptr, ptr %13, align 8, !tbaa !5
  %1397 = load i32, ptr %18, align 4, !tbaa !9
  %1398 = sext i32 %1397 to i64
  %1399 = getelementptr inbounds %struct.complex, ptr %1396, i64 %1398
  %1400 = getelementptr inbounds %struct.complex, ptr %1399, i32 0, i32 1
  store float %1395, ptr %1400, align 4, !tbaa !14
  %1401 = load i32, ptr %31, align 4, !tbaa !9
  %1402 = add nsw i32 %1401, 1
  store i32 %1402, ptr %31, align 4, !tbaa !9
  br label %1403

1403:                                             ; preds = %1372
  %1404 = load i32, ptr %23, align 4, !tbaa !9
  %1405 = add nsw i32 %1404, 1
  store i32 %1405, ptr %23, align 4, !tbaa !9
  br label %1368, !llvm.loop !49

1406:                                             ; preds = %1368
  br label %1407

1407:                                             ; preds = %1406, %1204
  br label %1408

1408:                                             ; preds = %1407, %993
  br label %1409

1409:                                             ; preds = %1408, %770
  store i32 1, ptr %35, align 4
  br label %1410

1410:                                             ; preds = %1409, %165, %112
  call void @llvm.lifetime.end.p0(i64 4, ptr %34) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #5
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #5
  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 8, 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 4, 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
  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}
!48 = distinct !{!48, !16}
!49 = distinct !{!49, !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 @ctrttf_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr nocapture noundef readonly %4, ptr nocapture noundef writeonly %5, ptr nocapture noundef %6) local_unnamed_addr #0 {
  %8 = alloca i32, align 4
  %9 = alloca %struct.complex, align 8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #6
  %10 = load i32, ptr %4, align 4, !tbaa !5
  store i32 0, ptr %6, align 4, !tbaa !5
  %11 = tail call i32 @lsame_(ptr noundef %0, ptr noundef nonnull @.str) #6
  %12 = tail call i32 @lsame_(ptr noundef %1, ptr noundef nonnull @.str.1) #6
  %.not = icmp eq i32 %11, 0
  br i1 %.not, label %13, label %15

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

15:                                               ; preds = %13, %7
  %.not527 = icmp eq i32 %12, 0
  br i1 %.not527, label %16, label %18

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

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

21:                                               ; preds = %18
  %22 = load i32, ptr %4, align 4, !tbaa !5
  %spec.select = tail call i32 @llvm.umax.i32(i32 %19, i32 1)
  %23 = icmp slt i32 %22, %spec.select
  br i1 %23, label %.thread.sink.split, label %24

24:                                               ; preds = %21
  %.pr = load i32, ptr %6, align 4, !tbaa !5
  %.not529 = icmp eq i32 %.pr, 0
  br i1 %.not529, label %28, label %.thread

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

.thread:                                          ; preds = %.thread.sink.split, %24
  %25 = phi i32 [ %.pr, %24 ], [ %.sink, %.thread.sink.split ]
  %26 = sub nsw i32 0, %25
  store i32 %26, ptr %8, align 4, !tbaa !5
  %27 = call i32 @xerbla_(ptr noundef nonnull @.str.4, ptr noundef nonnull %8, i32 noundef 6) #6
  br label %.loopexit

28:                                               ; preds = %24
  %29 = icmp ult i32 %19, 2
  br i1 %29, label %30, label %41

30:                                               ; preds = %28
  %31 = icmp eq i32 %19, 1
  br i1 %31, label %32, label %.loopexit

32:                                               ; preds = %30
  br i1 %.not, label %35, label %33

33:                                               ; preds = %32
  %34 = load <2 x float>, ptr %3, align 4, !tbaa !9
  store <2 x float> %34, ptr %5, align 4, !tbaa !9
  br label %.loopexit

35:                                               ; preds = %32
  %36 = tail call <2 x float> @Cf(ptr noundef %3)
  %.sroa.012.0.vec.extract = extractelement <2 x float> %36, i64 0
  %.sroa.012.4.vec.extract = extractelement <2 x float> %36, i64 1
  %37 = fneg float %.sroa.012.4.vec.extract
  %38 = call ptr @_pCf(ptr noundef nonnull %9)
  %39 = getelementptr inbounds i8, ptr %38, i64 4
  store float %.sroa.012.0.vec.extract, ptr %38, align 4
  store float %37, ptr %39, align 4
  %40 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %40, ptr %5, align 4, !tbaa !9
  br label %.loopexit

41:                                               ; preds = %28
  %42 = add nuw nsw i32 %19, 1
  %43 = mul nuw nsw i32 %42, %19
  %44 = lshr i32 %43, 1
  %45 = lshr i32 %19, 1
  %46 = sub nsw i32 %19, %45
  %.0499 = select i1 %.not527, i32 %46, i32 %45
  %.0498 = select i1 %.not527, i32 %45, i32 %46
  %47 = and i32 %19, 1
  %48 = icmp eq i32 %47, 0
  br i1 %48, label %49, label %50

49:                                               ; preds = %41
  br i1 %.not527, label %266, label %.thread575

50:                                               ; preds = %41
  %51 = shl nuw nsw i32 %19, 1
  %spec.select566 = select i1 %.not527, i32 %51, i32 undef
  br i1 %.not, label %149, label %52

52:                                               ; preds = %50
  br i1 %.not527, label %.preheader593.lr.ph, label %.lr.ph610

.lr.ph610:                                        ; preds = %52
  %53 = sext i32 %46 to i64
  %54 = sext i32 %10 to i64
  %55 = zext nneg i32 %45 to i64
  %56 = zext nneg i32 %45 to i64
  %scevgep1117 = getelementptr i8, ptr %5, i64 4
  %57 = shl nsw i64 %54, 3
  %58 = add nsw i64 %57, 8
  %scevgep1122 = getelementptr i8, ptr %5, i64 4
  %scevgep1124 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1595 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1581 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1585 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1589 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1593 = getelementptr i8, ptr %5, i64 24
  br label %59

59:                                               ; preds = %.lr.ph610, %._crit_edge604
  %60 = phi i32 [ %19, %.lr.ph610 ], [ %74, %._crit_edge604 ]
  %indvars.iv803 = phi i64 [ 0, %.lr.ph610 ], [ %indvars.iv.next804, %._crit_edge604 ]
  %indvars.iv801.in = phi i32 [ %45, %.lr.ph610 ], [ %indvars.iv801, %._crit_edge604 ]
  %.0500607 = phi i32 [ 0, %.lr.ph610 ], [ %.2502.lcssa, %._crit_edge604 ]
  %61 = xor i64 %indvars.iv803, -1
  %62 = mul i64 %58, %indvars.iv803
  %scevgep1119 = getelementptr i8, ptr %3, i64 %62
  %63 = or disjoint i64 %62, 4
  %scevgep1120 = getelementptr i8, ptr %3, i64 %63
  %gep1596 = getelementptr i8, ptr %invariant.gep1595, i64 %62
  %indvars.iv801 = add i32 %indvars.iv801.in, 1
  %64 = add nuw nsw i64 %indvars.iv803, %55
  %.not564596 = icmp slt i64 %64, %53
  br i1 %.not564596, label %._crit_edge, label %.lr.ph.preheader

.lr.ph.preheader:                                 ; preds = %59
  %65 = sext i32 %.0500607 to i64
  %invariant.gep = getelementptr %struct.complex, ptr %3, i64 %64
  br label %.lr.ph

.lr.ph:                                           ; preds = %.lr.ph.preheader, %.lr.ph
  %indvars.iv796 = phi i64 [ %65, %.lr.ph.preheader ], [ %indvars.iv.next797, %.lr.ph ]
  %indvars.iv = phi i64 [ %53, %.lr.ph.preheader ], [ %indvars.iv.next, %.lr.ph ]
  %66 = mul nsw i64 %indvars.iv, %54
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %66
  %67 = call <2 x float> @Cf(ptr noundef %gep)
  %.sroa.011.0.vec.extract = extractelement <2 x float> %67, i64 0
  %.sroa.011.4.vec.extract = extractelement <2 x float> %67, i64 1
  %68 = fneg float %.sroa.011.4.vec.extract
  %69 = call ptr @_pCf(ptr noundef nonnull %9)
  %70 = getelementptr inbounds i8, ptr %69, i64 4
  store float %.sroa.011.0.vec.extract, ptr %69, align 4
  store float %68, ptr %70, align 4
  %71 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv796
  %72 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %72, ptr %71, align 4, !tbaa !9
  %indvars.iv.next797 = add nsw i64 %indvars.iv796, 1
  %indvars.iv.next = add nsw i64 %indvars.iv, 1
  %lftr.wideiv = trunc i64 %indvars.iv.next to i32
  %exitcond.not = icmp eq i32 %indvars.iv801, %lftr.wideiv
  br i1 %exitcond.not, label %._crit_edge.loopexit, label %.lr.ph, !llvm.loop !11

._crit_edge.loopexit:                             ; preds = %.lr.ph
  %73 = trunc nsw i64 %indvars.iv.next797 to i32
  %.pre = load i32, ptr %2, align 4, !tbaa !5
  br label %._crit_edge

._crit_edge:                                      ; preds = %._crit_edge.loopexit, %59
  %74 = phi i32 [ %60, %59 ], [ %.pre, %._crit_edge.loopexit ]
  %.1501.lcssa = phi i32 [ %.0500607, %59 ], [ %73, %._crit_edge.loopexit ]
  %75 = sext i32 %74 to i64
  %.not565.not599 = icmp slt i64 %indvars.iv803, %75
  br i1 %.not565.not599, label %.lr.ph603, label %._crit_edge604

.lr.ph603:                                        ; preds = %._crit_edge
  %76 = mul nsw i64 %indvars.iv803, %54
  %77 = sext i32 %.1501.lcssa to i64
  %wide.trip.count = zext i32 %74 to i64
  %invariant.gep1066 = getelementptr %struct.complex, ptr %3, i64 %76
  %78 = sub nsw i64 %wide.trip.count, %indvars.iv803
  %min.iters.check = icmp ult i64 %78, 8
  br i1 %min.iters.check, label %scalar.ph.preheader, label %vector.memcheck

vector.memcheck:                                  ; preds = %.lr.ph603
  %79 = shl nsw i64 %77, 3
  %scevgep = getelementptr i8, ptr %5, i64 %79
  %80 = add nsw i64 %61, %wide.trip.count
  %81 = shl nsw i64 %80, 3
  %82 = add i64 %81, %79
  %scevgep1118 = getelementptr i8, ptr %scevgep1117, i64 %82
  %scevgep1121 = getelementptr i8, ptr %scevgep1120, i64 %81
  %scevgep1123 = getelementptr i8, ptr %scevgep1122, i64 %79
  %scevgep1125 = getelementptr i8, ptr %scevgep1124, i64 %82
  %scevgep1127 = getelementptr i8, ptr %gep1596, i64 %81
  %bound0 = icmp ult ptr %scevgep, %scevgep1121
  %bound1 = icmp ult ptr %scevgep1119, %scevgep1118
  %found.conflict = and i1 %bound0, %bound1
  %bound01128 = icmp ult ptr %scevgep1123, %scevgep1127
  %bound11129 = icmp ult ptr %scevgep1120, %scevgep1125
  %found.conflict1130 = and i1 %bound01128, %bound11129
  %conflict.rdx = or i1 %found.conflict, %found.conflict1130
  br i1 %conflict.rdx, label %scalar.ph.preheader, label %vector.ph

vector.ph:                                        ; preds = %vector.memcheck
  %n.vec = and i64 %78, -4
  %ind.end = add i64 %n.vec, %77
  %ind.end1131 = add i64 %indvars.iv803, %n.vec
  %invariant.gep1579 = getelementptr i8, ptr %invariant.gep1066, 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, %77
  %offset.idx1133 = add i64 %indvars.iv803, %index
  %83 = getelementptr %struct.complex, ptr %invariant.gep1066, i64 %offset.idx1133
  %gep1580 = getelementptr %struct.complex, ptr %invariant.gep1579, i64 %offset.idx1133
  %wide.vec = load <4 x float>, ptr %83, align 4, !tbaa !9
  %wide.vec1134 = load <4 x float>, ptr %gep1580, align 4, !tbaa !9
  %84 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx
  %gep1582 = getelementptr %struct.complex, ptr %invariant.gep1581, i64 %offset.idx
  store <4 x float> %wide.vec, ptr %84, align 4, !tbaa !9
  store <4 x float> %wide.vec1134, ptr %gep1582, align 4, !tbaa !9
  %index.next = add nuw i64 %index, 4
  %85 = icmp eq i64 %index.next, %n.vec
  br i1 %85, label %middle.block, label %vector.body, !llvm.loop !13

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %78, %n.vec
  br i1 %cmp.n, label %._crit_edge604.loopexit, label %scalar.ph.preheader

scalar.ph.preheader:                              ; preds = %middle.block, %vector.memcheck, %.lr.ph603
  %indvars.iv807.ph = phi i64 [ %77, %vector.memcheck ], [ %77, %.lr.ph603 ], [ %ind.end, %middle.block ]
  %indvars.iv805.ph = phi i64 [ %indvars.iv803, %vector.memcheck ], [ %indvars.iv803, %.lr.ph603 ], [ %ind.end1131, %middle.block ]
  %86 = sub i64 %wide.trip.count, %indvars.iv805.ph
  %xtraiter = and i64 %86, 3
  %lcmp.mod.not = icmp eq i64 %xtraiter, 0
  br i1 %lcmp.mod.not, label %scalar.ph.prol.loopexit, label %scalar.ph.prol

scalar.ph.prol:                                   ; preds = %scalar.ph.preheader, %scalar.ph.prol
  %indvars.iv807.prol = phi i64 [ %indvars.iv.next808.prol, %scalar.ph.prol ], [ %indvars.iv807.ph, %scalar.ph.preheader ]
  %indvars.iv805.prol = phi i64 [ %indvars.iv.next806.prol, %scalar.ph.prol ], [ %indvars.iv805.ph, %scalar.ph.preheader ]
  %prol.iter = phi i64 [ %prol.iter.next, %scalar.ph.prol ], [ 0, %scalar.ph.preheader ]
  %gep1067.prol = getelementptr %struct.complex, ptr %invariant.gep1066, i64 %indvars.iv805.prol
  %87 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv807.prol
  %88 = load <2 x float>, ptr %gep1067.prol, align 4, !tbaa !9
  store <2 x float> %88, ptr %87, align 4, !tbaa !9
  %indvars.iv.next808.prol = add nsw i64 %indvars.iv807.prol, 1
  %indvars.iv.next806.prol = add nuw nsw i64 %indvars.iv805.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 %scalar.ph.prol.loopexit, label %scalar.ph.prol, !llvm.loop !16

scalar.ph.prol.loopexit:                          ; preds = %scalar.ph.prol, %scalar.ph.preheader
  %indvars.iv.next808.lcssa1554.unr = phi i64 [ poison, %scalar.ph.preheader ], [ %indvars.iv.next808.prol, %scalar.ph.prol ]
  %indvars.iv807.unr = phi i64 [ %indvars.iv807.ph, %scalar.ph.preheader ], [ %indvars.iv.next808.prol, %scalar.ph.prol ]
  %indvars.iv805.unr = phi i64 [ %indvars.iv805.ph, %scalar.ph.preheader ], [ %indvars.iv.next806.prol, %scalar.ph.prol ]
  %89 = sub i64 %indvars.iv805.ph, %wide.trip.count
  %90 = icmp ugt i64 %89, -4
  br i1 %90, label %._crit_edge604.loopexit, label %scalar.ph.preheader.new

scalar.ph.preheader.new:                          ; preds = %scalar.ph.prol.loopexit
  %invariant.gep1583 = getelementptr i8, ptr %invariant.gep1066, i64 8
  %invariant.gep1587 = getelementptr i8, ptr %invariant.gep1066, i64 16
  %invariant.gep1591 = getelementptr i8, ptr %invariant.gep1066, i64 24
  br label %scalar.ph

scalar.ph:                                        ; preds = %scalar.ph, %scalar.ph.preheader.new
  %indvars.iv807 = phi i64 [ %indvars.iv807.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next808.3, %scalar.ph ]
  %indvars.iv805 = phi i64 [ %indvars.iv805.unr, %scalar.ph.preheader.new ], [ %indvars.iv.next806.3, %scalar.ph ]
  %gep1067 = getelementptr %struct.complex, ptr %invariant.gep1066, i64 %indvars.iv805
  %91 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv807
  %92 = load <2 x float>, ptr %gep1067, align 4, !tbaa !9
  store <2 x float> %92, ptr %91, align 4, !tbaa !9
  %gep1584 = getelementptr %struct.complex, ptr %invariant.gep1583, i64 %indvars.iv805
  %gep1586 = getelementptr %struct.complex, ptr %invariant.gep1585, i64 %indvars.iv807
  %93 = load <2 x float>, ptr %gep1584, align 4, !tbaa !9
  store <2 x float> %93, ptr %gep1586, align 4, !tbaa !9
  %gep1588 = getelementptr %struct.complex, ptr %invariant.gep1587, i64 %indvars.iv805
  %gep1590 = getelementptr %struct.complex, ptr %invariant.gep1589, i64 %indvars.iv807
  %94 = load <2 x float>, ptr %gep1588, align 4, !tbaa !9
  store <2 x float> %94, ptr %gep1590, align 4, !tbaa !9
  %gep1592 = getelementptr %struct.complex, ptr %invariant.gep1591, i64 %indvars.iv805
  %gep1594 = getelementptr %struct.complex, ptr %invariant.gep1593, i64 %indvars.iv807
  %95 = load <2 x float>, ptr %gep1592, align 4, !tbaa !9
  store <2 x float> %95, ptr %gep1594, align 4, !tbaa !9
  %indvars.iv.next808.3 = add nsw i64 %indvars.iv807, 4
  %indvars.iv.next806.3 = add nuw nsw i64 %indvars.iv805, 4
  %exitcond812.not.3 = icmp eq i64 %indvars.iv.next806.3, %wide.trip.count
  br i1 %exitcond812.not.3, label %._crit_edge604.loopexit, label %scalar.ph, !llvm.loop !18

._crit_edge604.loopexit:                          ; preds = %scalar.ph.prol.loopexit, %scalar.ph, %middle.block
  %indvars.iv.next808.lcssa = phi i64 [ %ind.end, %middle.block ], [ %indvars.iv.next808.lcssa1554.unr, %scalar.ph.prol.loopexit ], [ %indvars.iv.next808.3, %scalar.ph ]
  %96 = trunc nsw i64 %indvars.iv.next808.lcssa to i32
  br label %._crit_edge604

._crit_edge604:                                   ; preds = %._crit_edge604.loopexit, %._crit_edge
  %.2502.lcssa = phi i32 [ %.1501.lcssa, %._crit_edge ], [ %96, %._crit_edge604.loopexit ]
  %indvars.iv.next804 = add nuw nsw i64 %indvars.iv803, 1
  %.not563.not = icmp ult i64 %indvars.iv803, %56
  br i1 %.not563.not, label %59, label %.loopexit, !llvm.loop !19

.preheader593.lr.ph:                              ; preds = %52
  %97 = sub nsw i32 %44, %19
  %98 = xor i32 %45, -1
  %99 = add nsw i32 %19, %98
  %100 = sext i32 %10 to i64
  %101 = zext nneg i32 %45 to i64
  %102 = zext nneg i32 %19 to i64
  %103 = zext nneg i32 %45 to i64
  %scevgep1141 = getelementptr i8, ptr %5, i64 -4
  %104 = add nuw nsw i64 %102, 2305843009213693951
  %105 = mul i64 %104, %100
  %106 = shl i64 %105, 3
  %107 = mul nsw i64 %100, -8
  %scevgep1148 = getelementptr i8, ptr %5, i64 4
  %108 = or disjoint i64 %106, 4
  %109 = getelementptr i8, ptr %3, i64 %106
  %110 = getelementptr i8, ptr %3, i64 %108
  %111 = getelementptr i8, ptr %3, i64 %106
  %112 = getelementptr i8, ptr %111, i64 -4
  %invariant.gep1597 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1601 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1605 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1609 = getelementptr i8, ptr %5, i64 24
  br label %.lr.ph614

.lr.ph614:                                        ; preds = %._crit_edge622, %.preheader593.lr.ph
  %indvar1143 = phi i64 [ %indvar.next1144, %._crit_edge622 ], [ 0, %.preheader593.lr.ph ]
  %indvar = phi i32 [ %indvar.next, %._crit_edge622 ], [ 0, %.preheader593.lr.ph ]
  %indvars.iv832 = phi i64 [ %indvars.iv.next833, %._crit_edge622 ], [ %102, %.preheader593.lr.ph ]
  %indvars.iv823 = phi i32 [ %indvars.iv.next824, %._crit_edge622 ], [ %99, %.preheader593.lr.ph ]
  %.3503626 = phi i32 [ %148, %._crit_edge622 ], [ %97, %.preheader593.lr.ph ]
  %113 = and i64 %indvars.iv832, 4294967295
  %114 = and i64 %indvars.iv832, 4294967295
  %115 = sext i32 %indvars.iv823 to i64
  %indvars.iv.next833 = add nsw i64 %indvars.iv832, -1
  %116 = mul nsw i64 %indvars.iv.next833, %100
  %117 = sext i32 %.3503626 to i64
  %wide.trip.count821 = and i64 %indvars.iv832, 4294967295
  %invariant.gep1068 = getelementptr %struct.complex, ptr %3, i64 %116
  %min.iters.check1162 = icmp ult i64 %114, 6
  br i1 %min.iters.check1162, label %scalar.ph1161.preheader, label %vector.memcheck1139

vector.memcheck1139:                              ; preds = %.lr.ph614
  %118 = mul i64 %107, %indvar1143
  %scevgep1145 = getelementptr i8, ptr %109, i64 %118
  %119 = sub i32 %19, %indvar
  %120 = zext i32 %119 to i64
  %121 = shl nuw nsw i64 %120, 3
  %scevgep1152 = getelementptr i8, ptr %scevgep1145, i64 %121
  %scevgep1151 = getelementptr i8, ptr %110, i64 %118
  %scevgep1146 = getelementptr i8, ptr %112, i64 %118
  %scevgep1147 = getelementptr i8, ptr %scevgep1146, i64 %121
  %122 = shl nsw i64 %117, 3
  %scevgep1140 = getelementptr i8, ptr %5, i64 %122
  %123 = add nsw i64 %122, %121
  %scevgep1142 = getelementptr i8, ptr %scevgep1141, i64 %123
  %scevgep1149 = getelementptr i8, ptr %scevgep1148, i64 %122
  %scevgep1150 = getelementptr i8, ptr %5, i64 %123
  %bound01153 = icmp ult ptr %scevgep1140, %scevgep1147
  %bound11154 = icmp ult ptr %scevgep1145, %scevgep1142
  %found.conflict1155 = and i1 %bound01153, %bound11154
  %bound01156 = icmp ult ptr %scevgep1149, %scevgep1152
  %bound11157 = icmp ult ptr %scevgep1151, %scevgep1150
  %found.conflict1158 = and i1 %bound01156, %bound11157
  %conflict.rdx1159 = or i1 %found.conflict1155, %found.conflict1158
  br i1 %conflict.rdx1159, label %scalar.ph1161.preheader, label %vector.ph1163

vector.ph1163:                                    ; preds = %vector.memcheck1139
  %n.mod.vf1164 = and i64 %indvars.iv832, 3
  %n.vec1165 = sub nsw i64 %114, %n.mod.vf1164
  %ind.end1166 = add nsw i64 %n.vec1165, %117
  br label %vector.body1169

vector.body1169:                                  ; preds = %vector.body1169, %vector.ph1163
  %index1170 = phi i64 [ 0, %vector.ph1163 ], [ %index.next1180, %vector.body1169 ]
  %offset.idx1171 = add i64 %index1170, %117
  %124 = or disjoint i64 %index1170, 2
  %125 = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %index1170
  %126 = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %124
  %wide.vec1172 = load <4 x float>, ptr %125, align 4, !tbaa !9
  %wide.vec1173 = load <4 x float>, ptr %126, align 4, !tbaa !9
  %127 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx1171
  %gep1598 = getelementptr %struct.complex, ptr %invariant.gep1597, i64 %offset.idx1171
  store <4 x float> %wide.vec1172, ptr %127, align 4, !tbaa !9
  store <4 x float> %wide.vec1173, ptr %gep1598, align 4, !tbaa !9
  %index.next1180 = add nuw i64 %index1170, 4
  %128 = icmp eq i64 %index.next1180, %n.vec1165
  br i1 %128, label %middle.block1160, label %vector.body1169, !llvm.loop !20

middle.block1160:                                 ; preds = %vector.body1169
  %cmp.n1181 = icmp eq i64 %n.mod.vf1164, 0
  br i1 %cmp.n1181, label %._crit_edge615, label %scalar.ph1161.preheader

scalar.ph1161.preheader:                          ; preds = %middle.block1160, %vector.memcheck1139, %.lr.ph614
  %indvars.iv816.ph = phi i64 [ %117, %vector.memcheck1139 ], [ %117, %.lr.ph614 ], [ %ind.end1166, %middle.block1160 ]
  %indvars.iv814.ph = phi i64 [ 0, %vector.memcheck1139 ], [ 0, %.lr.ph614 ], [ %n.vec1165, %middle.block1160 ]
  %129 = sub i64 %indvars.iv832, %indvars.iv814.ph
  %xtraiter1555 = and i64 %129, 3
  %lcmp.mod1556.not = icmp eq i64 %xtraiter1555, 0
  br i1 %lcmp.mod1556.not, label %scalar.ph1161.prol.loopexit, label %scalar.ph1161.prol

scalar.ph1161.prol:                               ; preds = %scalar.ph1161.preheader, %scalar.ph1161.prol
  %indvars.iv816.prol = phi i64 [ %indvars.iv.next817.prol, %scalar.ph1161.prol ], [ %indvars.iv816.ph, %scalar.ph1161.preheader ]
  %indvars.iv814.prol = phi i64 [ %indvars.iv.next815.prol, %scalar.ph1161.prol ], [ %indvars.iv814.ph, %scalar.ph1161.preheader ]
  %prol.iter1557 = phi i64 [ %prol.iter1557.next, %scalar.ph1161.prol ], [ 0, %scalar.ph1161.preheader ]
  %gep1069.prol = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %indvars.iv814.prol
  %130 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv816.prol
  %131 = load <2 x float>, ptr %gep1069.prol, align 4, !tbaa !9
  store <2 x float> %131, ptr %130, align 4, !tbaa !9
  %indvars.iv.next817.prol = add nsw i64 %indvars.iv816.prol, 1
  %indvars.iv.next815.prol = add nuw nsw i64 %indvars.iv814.prol, 1
  %prol.iter1557.next = add i64 %prol.iter1557, 1
  %prol.iter1557.cmp.not = icmp eq i64 %prol.iter1557.next, %xtraiter1555
  br i1 %prol.iter1557.cmp.not, label %scalar.ph1161.prol.loopexit, label %scalar.ph1161.prol, !llvm.loop !21

scalar.ph1161.prol.loopexit:                      ; preds = %scalar.ph1161.prol, %scalar.ph1161.preheader
  %indvars.iv.next817.lcssa1552.unr = phi i64 [ poison, %scalar.ph1161.preheader ], [ %indvars.iv.next817.prol, %scalar.ph1161.prol ]
  %indvars.iv816.unr = phi i64 [ %indvars.iv816.ph, %scalar.ph1161.preheader ], [ %indvars.iv.next817.prol, %scalar.ph1161.prol ]
  %indvars.iv814.unr = phi i64 [ %indvars.iv814.ph, %scalar.ph1161.preheader ], [ %indvars.iv.next815.prol, %scalar.ph1161.prol ]
  %132 = sub nsw i64 %indvars.iv814.ph, %113
  %133 = icmp ugt i64 %132, -4
  br i1 %133, label %._crit_edge615, label %scalar.ph1161.preheader.new

scalar.ph1161.preheader.new:                      ; preds = %scalar.ph1161.prol.loopexit
  %invariant.gep1599 = getelementptr i8, ptr %invariant.gep1068, i64 8
  %invariant.gep1603 = getelementptr i8, ptr %invariant.gep1068, i64 16
  %invariant.gep1607 = getelementptr i8, ptr %invariant.gep1068, i64 24
  br label %scalar.ph1161

scalar.ph1161:                                    ; preds = %scalar.ph1161, %scalar.ph1161.preheader.new
  %indvars.iv816 = phi i64 [ %indvars.iv816.unr, %scalar.ph1161.preheader.new ], [ %indvars.iv.next817.3, %scalar.ph1161 ]
  %indvars.iv814 = phi i64 [ %indvars.iv814.unr, %scalar.ph1161.preheader.new ], [ %indvars.iv.next815.3, %scalar.ph1161 ]
  %gep1069 = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %indvars.iv814
  %134 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv816
  %135 = load <2 x float>, ptr %gep1069, align 4, !tbaa !9
  store <2 x float> %135, ptr %134, align 4, !tbaa !9
  %gep1600 = getelementptr %struct.complex, ptr %invariant.gep1599, i64 %indvars.iv814
  %gep1602 = getelementptr %struct.complex, ptr %invariant.gep1601, i64 %indvars.iv816
  %136 = load <2 x float>, ptr %gep1600, align 4, !tbaa !9
  store <2 x float> %136, ptr %gep1602, align 4, !tbaa !9
  %gep1604 = getelementptr %struct.complex, ptr %invariant.gep1603, i64 %indvars.iv814
  %gep1606 = getelementptr %struct.complex, ptr %invariant.gep1605, i64 %indvars.iv816
  %137 = load <2 x float>, ptr %gep1604, align 4, !tbaa !9
  store <2 x float> %137, ptr %gep1606, align 4, !tbaa !9
  %gep1608 = getelementptr %struct.complex, ptr %invariant.gep1607, i64 %indvars.iv814
  %gep1610 = getelementptr %struct.complex, ptr %invariant.gep1609, i64 %indvars.iv816
  %138 = load <2 x float>, ptr %gep1608, align 4, !tbaa !9
  store <2 x float> %138, ptr %gep1610, align 4, !tbaa !9
  %indvars.iv.next817.3 = add nsw i64 %indvars.iv816, 4
  %indvars.iv.next815.3 = add nuw nsw i64 %indvars.iv814, 4
  %exitcond822.not.3 = icmp eq i64 %indvars.iv.next815.3, %wide.trip.count821
  br i1 %exitcond822.not.3, label %._crit_edge615, label %scalar.ph1161, !llvm.loop !22

._crit_edge615:                                   ; preds = %scalar.ph1161.prol.loopexit, %scalar.ph1161, %middle.block1160
  %indvars.iv.next817.lcssa = phi i64 [ %ind.end1166, %middle.block1160 ], [ %indvars.iv.next817.lcssa1552.unr, %scalar.ph1161.prol.loopexit ], [ %indvars.iv.next817.3, %scalar.ph1161 ]
  %139 = sub nsw i64 %indvars.iv.next833, %101
  %.not562.not617 = icmp slt i64 %139, %101
  br i1 %.not562.not617, label %.lr.ph621.preheader, label %._crit_edge622

.lr.ph621.preheader:                              ; preds = %._crit_edge615
  %sext1108 = shl i64 %indvars.iv.next817.lcssa, 32
  %140 = ashr exact i64 %sext1108, 32
  %invariant.gep1070 = getelementptr %struct.complex, ptr %3, i64 %139
  br label %.lr.ph621

.lr.ph621:                                        ; preds = %.lr.ph621.preheader, %.lr.ph621
  %indvars.iv827 = phi i64 [ %140, %.lr.ph621.preheader ], [ %indvars.iv.next828, %.lr.ph621 ]
  %indvars.iv825 = phi i64 [ %115, %.lr.ph621.preheader ], [ %indvars.iv.next826, %.lr.ph621 ]
  %141 = mul nsw i64 %indvars.iv825, %100
  %gep1071 = getelementptr %struct.complex, ptr %invariant.gep1070, i64 %141
  %142 = call <2 x float> @Cf(ptr noundef %gep1071)
  %.sroa.010.0.vec.extract = extractelement <2 x float> %142, i64 0
  %.sroa.010.4.vec.extract = extractelement <2 x float> %142, i64 1
  %143 = fneg float %.sroa.010.4.vec.extract
  %144 = call ptr @_pCf(ptr noundef nonnull %9)
  %145 = getelementptr inbounds i8, ptr %144, i64 4
  store float %.sroa.010.0.vec.extract, ptr %144, align 4
  store float %143, ptr %145, align 4
  %146 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv827
  %147 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %147, ptr %146, align 4, !tbaa !9
  %indvars.iv.next828 = add nsw i64 %indvars.iv827, 1
  %indvars.iv.next826 = add nsw i64 %indvars.iv825, 1
  %.not562.not = icmp slt i64 %indvars.iv.next826, %101
  br i1 %.not562.not, label %.lr.ph621, label %._crit_edge622, !llvm.loop !23

._crit_edge622:                                   ; preds = %.lr.ph621, %._crit_edge615
  %.5505.lcssa.in = phi i64 [ %indvars.iv.next817.lcssa, %._crit_edge615 ], [ %indvars.iv.next828, %.lr.ph621 ]
  %.5505.lcssa = trunc i64 %.5505.lcssa.in to i32
  %148 = sub nsw i32 %.5505.lcssa, %spec.select566
  %.not560.not = icmp sgt i64 %indvars.iv.next833, %103
  %indvars.iv.next824 = add i32 %indvars.iv823, -1
  %indvar.next = add i32 %indvar, 1
  %indvar.next1144 = add i64 %indvar1143, 1
  br i1 %.not560.not, label %.lr.ph614, label %.loopexit, !llvm.loop !24

149:                                              ; preds = %50
  %150 = sext i32 %10 to i64
  br i1 %.not527, label %.lr.ph663, label %.preheader592.lr.ph

.preheader592.lr.ph:                              ; preds = %149
  %151 = add nsw i32 %45, -1
  %152 = sext i32 %46 to i64
  %153 = sext i32 %151 to i64
  %scevgep1184 = getelementptr i8, ptr %5, i64 -4
  %154 = mul nsw i64 %152, %150
  %155 = shl i64 %154, 3
  %156 = shl nsw i64 %150, 3
  %scevgep1191 = getelementptr i8, ptr %5, i64 4
  %157 = or disjoint i64 %155, 4
  %158 = getelementptr i8, ptr %3, i64 %155
  %159 = getelementptr i8, ptr %3, i64 %155
  %160 = getelementptr i8, ptr %159, i64 -4
  %161 = getelementptr i8, ptr %3, i64 %157
  %invariant.gep1613 = getelementptr i8, ptr %5, i64 16
  br label %.preheader592

.preheader592:                                    ; preds = %.preheader592.lr.ph, %._crit_edge636
  %indvars.iv859 = phi i64 [ 0, %.preheader592.lr.ph ], [ %indvars.iv.next860, %._crit_edge636 ]
  %indvars.iv857 = phi i64 [ 1, %.preheader592.lr.ph ], [ %indvars.iv.next858, %._crit_edge636 ]
  %indvars.iv846 = phi i32 [ %46, %.preheader592.lr.ph ], [ %indvars.iv.next847, %._crit_edge636 ]
  %.6506639 = phi i32 [ 0, %.preheader592.lr.ph ], [ %.8508.lcssa, %._crit_edge636 ]
  %162 = sext i32 %indvars.iv846 to i64
  %163 = add nsw i64 %162, 1
  %164 = sext i32 %indvars.iv846 to i64
  %165 = mul nsw i64 %164, -8
  %166 = add nsw i64 %164, 1
  %167 = mul i64 %156, %indvars.iv859
  %scevgep1187 = getelementptr i8, ptr %158, i64 %167
  %168 = shl nsw i64 %164, 3
  %scevgep1188 = getelementptr i8, ptr %scevgep1187, i64 %168
  %scevgep1189 = getelementptr i8, ptr %160, i64 %167
  %scevgep1195 = getelementptr i8, ptr %161, i64 %167
  %scevgep1196 = getelementptr i8, ptr %scevgep1195, i64 %168
  %169 = sext i32 %indvars.iv846 to i64
  %170 = sext i32 %.6506639 to i64
  %invariant.gep1072 = getelementptr %struct.complex, ptr %3, i64 %indvars.iv859
  br label %171

171:                                              ; preds = %.preheader592, %171
  %indvars.iv850.in = phi i32 [ %.6506639, %.preheader592 ], [ %indvars.iv850, %171 ]
  %indvars.iv837 = phi i64 [ %170, %.preheader592 ], [ %indvars.iv.next838, %171 ]
  %indvars.iv835 = phi i64 [ 0, %.preheader592 ], [ %indvars.iv.next836, %171 ]
  %indvars.iv850 = add i32 %indvars.iv850.in, 1
  %172 = mul nsw i64 %indvars.iv835, %150
  %gep1073 = getelementptr %struct.complex, ptr %invariant.gep1072, i64 %172
  %173 = call <2 x float> @Cf(ptr noundef %gep1073)
  %.sroa.09.0.vec.extract = extractelement <2 x float> %173, i64 0
  %.sroa.09.4.vec.extract = extractelement <2 x float> %173, i64 1
  %174 = fneg float %.sroa.09.4.vec.extract
  %175 = call ptr @_pCf(ptr noundef nonnull %9)
  %176 = getelementptr inbounds i8, ptr %175, i64 4
  store float %.sroa.09.0.vec.extract, ptr %175, align 4
  store float %174, ptr %176, align 4
  %177 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv837
  %178 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %178, ptr %177, align 4, !tbaa !9
  %indvars.iv.next838 = add nsw i64 %indvars.iv837, 1
  %indvars.iv.next836 = add nuw nsw i64 %indvars.iv835, 1
  %exitcond845.not = icmp eq i64 %indvars.iv.next836, %indvars.iv857
  br i1 %exitcond845.not, label %179, label %171, !llvm.loop !25

179:                                              ; preds = %171
  %180 = load i32, ptr %2, align 4, !tbaa !5
  %181 = add nsw i64 %indvars.iv859, %152
  %182 = sext i32 %180 to i64
  %.not559.not631 = icmp slt i64 %181, %182
  br i1 %.not559.not631, label %.lr.ph635, label %._crit_edge636

.lr.ph635:                                        ; preds = %179
  %183 = mul nsw i64 %181, %150
  %184 = sext i32 %indvars.iv850 to i64
  %invariant.gep1074 = getelementptr %struct.complex, ptr %3, i64 %183
  %smax1205 = call i64 @llvm.smax.i64(i64 %163, i64 %182)
  %185 = sub i64 %smax1205, %162
  %min.iters.check1208 = icmp ult i64 %185, 10
  br i1 %min.iters.check1208, label %scalar.ph1207.preheader, label %vector.memcheck1182

vector.memcheck1182:                              ; preds = %.lr.ph635
  %186 = shl nsw i64 %184, 3
  %scevgep1183 = getelementptr i8, ptr %5, i64 %186
  %scevgep1185 = getelementptr i8, ptr %scevgep1184, i64 %165
  %smax = call i64 @llvm.smax.i64(i64 %166, i64 %182)
  %187 = add i64 %smax, %184
  %188 = shl nsw i64 %187, 3
  %scevgep1186 = getelementptr i8, ptr %scevgep1185, i64 %188
  %189 = shl nsw i64 %smax, 3
  %scevgep1190 = getelementptr i8, ptr %scevgep1189, i64 %189
  %scevgep1192 = getelementptr i8, ptr %scevgep1191, i64 %186
  %scevgep1193 = getelementptr i8, ptr %5, i64 %165
  %scevgep1194 = getelementptr i8, ptr %scevgep1193, i64 %188
  %scevgep1197 = getelementptr i8, ptr %scevgep1187, i64 %189
  %bound01198 = icmp ult ptr %scevgep1183, %scevgep1190
  %bound11199 = icmp ult ptr %scevgep1188, %scevgep1186
  %found.conflict1200 = and i1 %bound01198, %bound11199
  %bound01201 = icmp ult ptr %scevgep1192, %scevgep1197
  %bound11202 = icmp ult ptr %scevgep1196, %scevgep1194
  %found.conflict1203 = and i1 %bound01201, %bound11202
  %conflict.rdx1204 = or i1 %found.conflict1200, %found.conflict1203
  br i1 %conflict.rdx1204, label %scalar.ph1207.preheader, label %vector.ph1209

vector.ph1209:                                    ; preds = %vector.memcheck1182
  %n.vec1211 = and i64 %185, -4
  %ind.end1212 = add i64 %n.vec1211, %184
  %ind.end1214 = add i64 %n.vec1211, %169
  %invariant.gep1611 = getelementptr i8, ptr %invariant.gep1074, i64 16
  br label %vector.body1216

vector.body1216:                                  ; preds = %vector.body1216, %vector.ph1209
  %index1217 = phi i64 [ 0, %vector.ph1209 ], [ %index.next1228, %vector.body1216 ]
  %offset.idx1218 = add i64 %index1217, %184
  %offset.idx1219 = add i64 %index1217, %169
  %190 = getelementptr %struct.complex, ptr %invariant.gep1074, i64 %offset.idx1219
  %gep1612 = getelementptr %struct.complex, ptr %invariant.gep1611, i64 %offset.idx1219
  %wide.vec1220 = load <4 x float>, ptr %190, align 4, !tbaa !9
  %wide.vec1221 = load <4 x float>, ptr %gep1612, align 4, !tbaa !9
  %191 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx1218
  %gep1614 = getelementptr %struct.complex, ptr %invariant.gep1613, i64 %offset.idx1218
  store <4 x float> %wide.vec1220, ptr %191, align 4, !tbaa !9
  store <4 x float> %wide.vec1221, ptr %gep1614, align 4, !tbaa !9
  %index.next1228 = add nuw i64 %index1217, 4
  %192 = icmp eq i64 %index.next1228, %n.vec1211
  br i1 %192, label %middle.block1206, label %vector.body1216, !llvm.loop !26

middle.block1206:                                 ; preds = %vector.body1216
  %cmp.n1229 = icmp eq i64 %185, %n.vec1211
  br i1 %cmp.n1229, label %._crit_edge636, label %scalar.ph1207.preheader

scalar.ph1207.preheader:                          ; preds = %middle.block1206, %vector.memcheck1182, %.lr.ph635
  %indvars.iv852.ph = phi i64 [ %184, %vector.memcheck1182 ], [ %184, %.lr.ph635 ], [ %ind.end1212, %middle.block1206 ]
  %indvars.iv848.ph = phi i64 [ %169, %vector.memcheck1182 ], [ %169, %.lr.ph635 ], [ %ind.end1214, %middle.block1206 ]
  br label %scalar.ph1207

scalar.ph1207:                                    ; preds = %scalar.ph1207.preheader, %scalar.ph1207
  %indvars.iv852 = phi i64 [ %indvars.iv.next853, %scalar.ph1207 ], [ %indvars.iv852.ph, %scalar.ph1207.preheader ]
  %indvars.iv848 = phi i64 [ %indvars.iv.next849, %scalar.ph1207 ], [ %indvars.iv848.ph, %scalar.ph1207.preheader ]
  %gep1075 = getelementptr %struct.complex, ptr %invariant.gep1074, i64 %indvars.iv848
  %193 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv852
  %194 = load <2 x float>, ptr %gep1075, align 4, !tbaa !9
  store <2 x float> %194, ptr %193, align 4, !tbaa !9
  %indvars.iv.next853 = add nsw i64 %indvars.iv852, 1
  %indvars.iv.next849 = add nsw i64 %indvars.iv848, 1
  %.not559.not = icmp slt i64 %indvars.iv.next849, %182
  br i1 %.not559.not, label %scalar.ph1207, label %._crit_edge636, !llvm.loop !27

._crit_edge636:                                   ; preds = %scalar.ph1207, %middle.block1206, %179
  %.8508.lcssa.in = phi i64 [ %indvars.iv.next838, %179 ], [ %ind.end1212, %middle.block1206 ], [ %indvars.iv.next853, %scalar.ph1207 ]
  %.8508.lcssa = trunc i64 %.8508.lcssa.in to i32
  %indvars.iv.next860 = add nuw nsw i64 %indvars.iv859, 1
  %.not555.not = icmp slt i64 %indvars.iv859, %153
  %indvars.iv.next858 = add nuw nsw i64 %indvars.iv857, 1
  %indvars.iv.next847 = add i32 %indvars.iv846, 1
  br i1 %.not555.not, label %.preheader592, label %._crit_edge641, !llvm.loop !28

._crit_edge641:                                   ; preds = %._crit_edge636
  %195 = add nsw i32 %180, -1
  %.not556649.not = icmp slt i32 %.0499, %180
  %.not557.not643 = icmp sgt i32 %.0498, 0
  %or.cond = select i1 %.not556649.not, i1 %.not557.not643, i1 false
  br i1 %or.cond, label %.preheader590.us.preheader, label %.loopexit

.preheader590.us.preheader:                       ; preds = %._crit_edge641
  %196 = sext i32 %10 to i64
  %197 = sext i32 %.0499 to i64
  %wide.trip.count871 = zext nneg i32 %.0498 to i64
  %198 = sext i32 %195 to i64
  br label %.preheader590.us

.preheader590.us:                                 ; preds = %.preheader590.us.preheader, %._crit_edge647.us
  %indvars.iv873 = phi i64 [ %197, %.preheader590.us.preheader ], [ %indvars.iv.next874, %._crit_edge647.us ]
  %.9509650.us = phi i64 [ %.8508.lcssa.in, %.preheader590.us.preheader ], [ %indvars.iv.next867, %._crit_edge647.us ]
  %sext = shl i64 %.9509650.us, 32
  %199 = ashr exact i64 %sext, 32
  %invariant.gep1076 = getelementptr %struct.complex, ptr %3, i64 %indvars.iv873
  br label %200

200:                                              ; preds = %.preheader590.us, %200
  %indvars.iv866 = phi i64 [ %199, %.preheader590.us ], [ %indvars.iv.next867, %200 ]
  %indvars.iv864 = phi i64 [ 0, %.preheader590.us ], [ %indvars.iv.next865, %200 ]
  %201 = mul nsw i64 %indvars.iv864, %196
  %gep1077 = getelementptr %struct.complex, ptr %invariant.gep1076, i64 %201
  %202 = call <2 x float> @Cf(ptr noundef %gep1077)
  %.sroa.08.0.vec.extract.us = extractelement <2 x float> %202, i64 0
  %.sroa.08.4.vec.extract.us = extractelement <2 x float> %202, i64 1
  %203 = fneg float %.sroa.08.4.vec.extract.us
  %204 = call ptr @_pCf(ptr noundef nonnull %9)
  %205 = getelementptr inbounds i8, ptr %204, i64 4
  store float %.sroa.08.0.vec.extract.us, ptr %204, align 4
  store float %203, ptr %205, align 4
  %206 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv866
  %207 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %207, ptr %206, align 4, !tbaa !9
  %indvars.iv.next867 = add nsw i64 %indvars.iv866, 1
  %indvars.iv.next865 = add nuw nsw i64 %indvars.iv864, 1
  %exitcond872.not = icmp eq i64 %indvars.iv.next865, %wide.trip.count871
  br i1 %exitcond872.not, label %._crit_edge647.us, label %200, !llvm.loop !29

._crit_edge647.us:                                ; preds = %200
  %indvars.iv.next874 = add nsw i64 %indvars.iv873, 1
  %.not556.us.not = icmp slt i64 %indvars.iv873, %198
  br i1 %.not556.us.not, label %.preheader590.us, label %.loopexit, !llvm.loop !30

.lr.ph663:                                        ; preds = %149
  %208 = zext nneg i32 %45 to i64
  %209 = zext nneg i32 %45 to i64
  br label %.lr.ph663.split

.lr.ph663.split:                                  ; preds = %.lr.ph663, %._crit_edge657
  %indvars.iv885 = phi i64 [ 0, %.lr.ph663 ], [ %indvars.iv.next886, %._crit_edge657 ]
  %.11511660 = phi i32 [ 0, %.lr.ph663 ], [ %.12512.lcssa, %._crit_edge657 ]
  %210 = load i32, ptr %2, align 4, !tbaa !5
  %.not554.not652 = icmp slt i32 %.0498, %210
  br i1 %.not554.not652, label %.lr.ph656.preheader, label %._crit_edge657

.lr.ph656.preheader:                              ; preds = %.lr.ph663.split
  %211 = sext i32 %.11511660 to i64
  %invariant.gep1078 = getelementptr %struct.complex, ptr %3, i64 %indvars.iv885
  br label %.lr.ph656

.lr.ph656:                                        ; preds = %.lr.ph656.preheader, %.lr.ph656
  %indvars.iv878 = phi i64 [ %211, %.lr.ph656.preheader ], [ %indvars.iv.next879, %.lr.ph656 ]
  %indvars.iv876 = phi i64 [ %208, %.lr.ph656.preheader ], [ %indvars.iv.next877, %.lr.ph656 ]
  %212 = mul nsw i64 %indvars.iv876, %150
  %gep1079 = getelementptr %struct.complex, ptr %invariant.gep1078, i64 %212
  %213 = call <2 x float> @Cf(ptr noundef %gep1079)
  %.sroa.07.0.vec.extract = extractelement <2 x float> %213, i64 0
  %.sroa.07.4.vec.extract = extractelement <2 x float> %213, i64 1
  %214 = fneg float %.sroa.07.4.vec.extract
  %215 = call ptr @_pCf(ptr noundef nonnull %9)
  %216 = getelementptr inbounds i8, ptr %215, i64 4
  store float %.sroa.07.0.vec.extract, ptr %215, align 4
  store float %214, ptr %216, align 4
  %217 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv878
  %218 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %218, ptr %217, align 4, !tbaa !9
  %indvars.iv.next879 = add nsw i64 %indvars.iv878, 1
  %indvars.iv.next877 = add nuw nsw i64 %indvars.iv876, 1
  %lftr.wideiv883 = trunc i64 %indvars.iv.next877 to i32
  %exitcond884.not = icmp eq i32 %210, %lftr.wideiv883
  br i1 %exitcond884.not, label %._crit_edge657.loopexit, label %.lr.ph656, !llvm.loop !31

._crit_edge657.loopexit:                          ; preds = %.lr.ph656
  %219 = trunc nsw i64 %indvars.iv.next879 to i32
  br label %._crit_edge657

._crit_edge657:                                   ; preds = %._crit_edge657.loopexit, %.lr.ph663.split
  %.12512.lcssa = phi i32 [ %.11511660, %.lr.ph663.split ], [ %219, %._crit_edge657.loopexit ]
  %indvars.iv.next886 = add nuw nsw i64 %indvars.iv885, 1
  %.not550.not = icmp ult i64 %indvars.iv885, %209
  br i1 %.not550.not, label %.lr.ph663.split, label %._crit_edge664, !llvm.loop !32

._crit_edge664:                                   ; preds = %._crit_edge657
  %.not551675 = icmp slt i32 %.0498, 1
  br i1 %.not551675, label %.loopexit, label %.preheader588.lr.ph

.preheader588.lr.ph:                              ; preds = %._crit_edge664
  %220 = add nsw i32 %.0498, -1
  %221 = sext i32 %10 to i64
  %222 = sext i32 %.0499 to i64
  %223 = sext i32 %220 to i64
  %224 = shl nsw i64 %221, 3
  %225 = shl nsw i64 %221, 3
  %226 = add nsw i64 %225, 8
  %scevgep1236 = getelementptr i8, ptr %5, i64 4
  %invariant.gep1629 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1631 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1615 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1619 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1623 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1627 = getelementptr i8, ptr %5, i64 24
  br label %.preheader588

.preheader588:                                    ; preds = %.preheader588.lr.ph, %._crit_edge673
  %indvars.iv912 = phi i64 [ 0, %.preheader588.lr.ph ], [ %indvars.iv.next913, %._crit_edge673 ]
  %indvars.iv910 = phi i64 [ 1, %.preheader588.lr.ph ], [ %indvars.iv.next911, %._crit_edge673 ]
  %indvars.iv899 = phi i32 [ %.0499, %.preheader588.lr.ph ], [ %indvars.iv.next900, %._crit_edge673 ]
  %.13513676 = phi i32 [ %.12512.lcssa, %.preheader588.lr.ph ], [ %.15515.lcssa, %._crit_edge673 ]
  %227 = sext i32 %indvars.iv899 to i64
  %228 = mul nsw i64 %indvars.iv912, %221
  %229 = sext i32 %.13513676 to i64
  %invariant.gep1080 = getelementptr %struct.complex, ptr %3, i64 %228
  %min.iters.check1251 = icmp ult i64 %indvars.iv910, 6
  br i1 %min.iters.check1251, label %scalar.ph1250.preheader, label %vector.memcheck1230

vector.memcheck1230:                              ; preds = %.preheader588
  %230 = mul i64 %226, %indvars.iv912
  %gep1630 = getelementptr i8, ptr %invariant.gep1629, i64 %230
  %231 = mul i64 %224, %indvars.iv912
  %232 = or disjoint i64 %231, 4
  %scevgep1240 = getelementptr i8, ptr %3, i64 %232
  %233 = shl nuw nsw i64 %indvars.iv912, 3
  %gep1632 = getelementptr i8, ptr %invariant.gep1631, i64 %233
  %234 = or disjoint i64 %230, 4
  %scevgep1235 = getelementptr i8, ptr %3, i64 %234
  %scevgep1234 = getelementptr i8, ptr %3, i64 %231
  %235 = or disjoint i64 %233, 4
  %scevgep1232 = getelementptr i8, ptr %5, i64 %235
  %236 = shl nsw i64 %229, 3
  %scevgep1231 = getelementptr i8, ptr %5, i64 %236
  %scevgep1233 = getelementptr i8, ptr %scevgep1232, i64 %236
  %scevgep1237 = getelementptr i8, ptr %scevgep1236, i64 %236
  %scevgep1239 = getelementptr i8, ptr %gep1632, i64 %236
  %bound01242 = icmp ult ptr %scevgep1231, %scevgep1235
  %bound11243 = icmp ult ptr %scevgep1234, %scevgep1233
  %found.conflict1244 = and i1 %bound01242, %bound11243
  %bound01245 = icmp ult ptr %scevgep1237, %gep1630
  %bound11246 = icmp ult ptr %scevgep1240, %scevgep1239
  %found.conflict1247 = and i1 %bound01245, %bound11246
  %conflict.rdx1248 = or i1 %found.conflict1244, %found.conflict1247
  br i1 %conflict.rdx1248, label %scalar.ph1250.preheader, label %vector.ph1252

vector.ph1252:                                    ; preds = %vector.memcheck1230
  %n.vec1254 = and i64 %indvars.iv910, 9223372036854775804
  %ind.end1255 = add i64 %n.vec1254, %229
  %237 = insertelement <2 x i32> <i32 poison, i32 0>, i32 %.13513676, i64 0
  br label %vector.body1258

vector.body1258:                                  ; preds = %vector.body1258, %vector.ph1252
  %index1259 = phi i64 [ 0, %vector.ph1252 ], [ %index.next1270, %vector.body1258 ]
  %vec.phi = phi <2 x i32> [ %237, %vector.ph1252 ], [ %239, %vector.body1258 ]
  %vec.phi1260 = phi <2 x i32> [ zeroinitializer, %vector.ph1252 ], [ %240, %vector.body1258 ]
  %offset.idx1261 = add i64 %index1259, %229
  %238 = or disjoint i64 %index1259, 2
  %239 = add <2 x i32> %vec.phi, <i32 1, i32 1>
  %240 = add <2 x i32> %vec.phi1260, <i32 1, i32 1>
  %241 = getelementptr %struct.complex, ptr %invariant.gep1080, i64 %index1259
  %242 = getelementptr %struct.complex, ptr %invariant.gep1080, i64 %238
  %wide.vec1262 = load <4 x float>, ptr %241, align 4, !tbaa !9
  %wide.vec1263 = load <4 x float>, ptr %242, align 4, !tbaa !9
  %243 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx1261
  %gep1616 = getelementptr %struct.complex, ptr %invariant.gep1615, i64 %offset.idx1261
  store <4 x float> %wide.vec1262, ptr %243, align 4, !tbaa !9
  store <4 x float> %wide.vec1263, ptr %gep1616, align 4, !tbaa !9
  %index.next1270 = add nuw i64 %index1259, 4
  %244 = icmp eq i64 %index.next1270, %n.vec1254
  br i1 %244, label %middle.block1249, label %vector.body1258, !llvm.loop !34

middle.block1249:                                 ; preds = %vector.body1258
  %bin.rdx = add <2 x i32> %240, %239
  %245 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %bin.rdx)
  %cmp.n1271 = icmp eq i64 %indvars.iv910, %n.vec1254
  br i1 %cmp.n1271, label %.loopexit1534, label %scalar.ph1250.preheader

scalar.ph1250.preheader:                          ; preds = %middle.block1249, %vector.memcheck1230, %.preheader588
  %indvars.iv903.in.ph = phi i32 [ %.13513676, %vector.memcheck1230 ], [ %.13513676, %.preheader588 ], [ %245, %middle.block1249 ]
  %indvars.iv890.ph = phi i64 [ %229, %vector.memcheck1230 ], [ %229, %.preheader588 ], [ %ind.end1255, %middle.block1249 ]
  %indvars.iv888.ph = phi i64 [ 0, %vector.memcheck1230 ], [ 0, %.preheader588 ], [ %n.vec1254, %middle.block1249 ]
  %246 = sub nsw i64 %indvars.iv912, %indvars.iv888.ph
  %xtraiter1558 = and i64 %indvars.iv910, 3
  %lcmp.mod1559.not = icmp eq i64 %xtraiter1558, 0
  br i1 %lcmp.mod1559.not, label %scalar.ph1250.prol.loopexit, label %scalar.ph1250.prol

scalar.ph1250.prol:                               ; preds = %scalar.ph1250.preheader, %scalar.ph1250.prol
  %indvars.iv903.in.prol = phi i32 [ %indvars.iv903.prol, %scalar.ph1250.prol ], [ %indvars.iv903.in.ph, %scalar.ph1250.preheader ]
  %indvars.iv890.prol = phi i64 [ %indvars.iv.next891.prol, %scalar.ph1250.prol ], [ %indvars.iv890.ph, %scalar.ph1250.preheader ]
  %indvars.iv888.prol = phi i64 [ %indvars.iv.next889.prol, %scalar.ph1250.prol ], [ %indvars.iv888.ph, %scalar.ph1250.preheader ]
  %prol.iter1560 = phi i64 [ %prol.iter1560.next, %scalar.ph1250.prol ], [ 0, %scalar.ph1250.preheader ]
  %indvars.iv903.prol = add i32 %indvars.iv903.in.prol, 1
  %gep1081.prol = getelementptr %struct.complex, ptr %invariant.gep1080, i64 %indvars.iv888.prol
  %247 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv890.prol
  %248 = load <2 x float>, ptr %gep1081.prol, align 4, !tbaa !9
  store <2 x float> %248, ptr %247, align 4, !tbaa !9
  %indvars.iv.next891.prol = add nsw i64 %indvars.iv890.prol, 1
  %indvars.iv.next889.prol = add nuw nsw i64 %indvars.iv888.prol, 1
  %prol.iter1560.next = add i64 %prol.iter1560, 1
  %prol.iter1560.cmp.not = icmp eq i64 %prol.iter1560.next, %xtraiter1558
  br i1 %prol.iter1560.cmp.not, label %scalar.ph1250.prol.loopexit, label %scalar.ph1250.prol, !llvm.loop !35

scalar.ph1250.prol.loopexit:                      ; preds = %scalar.ph1250.prol, %scalar.ph1250.preheader
  %indvars.iv903.lcssa1548.unr = phi i32 [ poison, %scalar.ph1250.preheader ], [ %indvars.iv903.prol, %scalar.ph1250.prol ]
  %indvars.iv.next891.lcssa1547.unr = phi i64 [ poison, %scalar.ph1250.preheader ], [ %indvars.iv.next891.prol, %scalar.ph1250.prol ]
  %indvars.iv903.in.unr = phi i32 [ %indvars.iv903.in.ph, %scalar.ph1250.preheader ], [ %indvars.iv903.prol, %scalar.ph1250.prol ]
  %indvars.iv890.unr = phi i64 [ %indvars.iv890.ph, %scalar.ph1250.preheader ], [ %indvars.iv.next891.prol, %scalar.ph1250.prol ]
  %indvars.iv888.unr = phi i64 [ %indvars.iv888.ph, %scalar.ph1250.preheader ], [ %indvars.iv.next889.prol, %scalar.ph1250.prol ]
  %249 = icmp ult i64 %246, 3
  br i1 %249, label %.loopexit1534, label %scalar.ph1250.preheader.new

scalar.ph1250.preheader.new:                      ; preds = %scalar.ph1250.prol.loopexit
  %invariant.gep1617 = getelementptr i8, ptr %invariant.gep1080, i64 8
  %invariant.gep1621 = getelementptr i8, ptr %invariant.gep1080, i64 16
  %invariant.gep1625 = getelementptr i8, ptr %invariant.gep1080, i64 24
  br label %scalar.ph1250

scalar.ph1250:                                    ; preds = %scalar.ph1250, %scalar.ph1250.preheader.new
  %indvars.iv903.in = phi i32 [ %indvars.iv903.in.unr, %scalar.ph1250.preheader.new ], [ %indvars.iv903.3, %scalar.ph1250 ]
  %indvars.iv890 = phi i64 [ %indvars.iv890.unr, %scalar.ph1250.preheader.new ], [ %indvars.iv.next891.3, %scalar.ph1250 ]
  %indvars.iv888 = phi i64 [ %indvars.iv888.unr, %scalar.ph1250.preheader.new ], [ %indvars.iv.next889.3, %scalar.ph1250 ]
  %gep1081 = getelementptr %struct.complex, ptr %invariant.gep1080, i64 %indvars.iv888
  %250 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv890
  %251 = load <2 x float>, ptr %gep1081, align 4, !tbaa !9
  store <2 x float> %251, ptr %250, align 4, !tbaa !9
  %gep1618 = getelementptr %struct.complex, ptr %invariant.gep1617, i64 %indvars.iv888
  %gep1620 = getelementptr %struct.complex, ptr %invariant.gep1619, i64 %indvars.iv890
  %252 = load <2 x float>, ptr %gep1618, align 4, !tbaa !9
  store <2 x float> %252, ptr %gep1620, align 4, !tbaa !9
  %gep1622 = getelementptr %struct.complex, ptr %invariant.gep1621, i64 %indvars.iv888
  %gep1624 = getelementptr %struct.complex, ptr %invariant.gep1623, i64 %indvars.iv890
  %253 = load <2 x float>, ptr %gep1622, align 4, !tbaa !9
  store <2 x float> %253, ptr %gep1624, align 4, !tbaa !9
  %indvars.iv903.3 = add i32 %indvars.iv903.in, 4
  %gep1626 = getelementptr %struct.complex, ptr %invariant.gep1625, i64 %indvars.iv888
  %gep1628 = getelementptr %struct.complex, ptr %invariant.gep1627, i64 %indvars.iv890
  %254 = load <2 x float>, ptr %gep1626, align 4, !tbaa !9
  store <2 x float> %254, ptr %gep1628, align 4, !tbaa !9
  %indvars.iv.next891.3 = add nsw i64 %indvars.iv890, 4
  %indvars.iv.next889.3 = add nuw nsw i64 %indvars.iv888, 4
  %exitcond898.not.3 = icmp eq i64 %indvars.iv.next889.3, %indvars.iv910
  br i1 %exitcond898.not.3, label %.loopexit1534, label %scalar.ph1250, !llvm.loop !36

.loopexit1534:                                    ; preds = %scalar.ph1250.prol.loopexit, %scalar.ph1250, %middle.block1249
  %indvars.iv903.lcssa = phi i32 [ %245, %middle.block1249 ], [ %indvars.iv903.lcssa1548.unr, %scalar.ph1250.prol.loopexit ], [ %indvars.iv903.3, %scalar.ph1250 ]
  %indvars.iv.next891.lcssa = phi i64 [ %ind.end1255, %middle.block1249 ], [ %indvars.iv.next891.lcssa1547.unr, %scalar.ph1250.prol.loopexit ], [ %indvars.iv.next891.3, %scalar.ph1250 ]
  %255 = load i32, ptr %2, align 4, !tbaa !5
  %256 = add nsw i64 %indvars.iv912, %222
  %257 = sext i32 %255 to i64
  %.not553.not668 = icmp slt i64 %256, %257
  br i1 %.not553.not668, label %.lr.ph672.preheader, label %._crit_edge673

.lr.ph672.preheader:                              ; preds = %.loopexit1534
  %258 = sext i32 %indvars.iv903.lcssa to i64
  %invariant.gep1082 = getelementptr %struct.complex, ptr %3, i64 %256
  br label %.lr.ph672

.lr.ph672:                                        ; preds = %.lr.ph672.preheader, %.lr.ph672
  %indvars.iv905 = phi i64 [ %258, %.lr.ph672.preheader ], [ %indvars.iv.next906, %.lr.ph672 ]
  %indvars.iv901 = phi i64 [ %227, %.lr.ph672.preheader ], [ %indvars.iv.next902, %.lr.ph672 ]
  %259 = mul nsw i64 %indvars.iv901, %221
  %gep1083 = getelementptr %struct.complex, ptr %invariant.gep1082, i64 %259
  %260 = call <2 x float> @Cf(ptr noundef %gep1083)
  %.sroa.06.0.vec.extract = extractelement <2 x float> %260, i64 0
  %.sroa.06.4.vec.extract = extractelement <2 x float> %260, i64 1
  %261 = fneg float %.sroa.06.4.vec.extract
  %262 = call ptr @_pCf(ptr noundef nonnull %9)
  %263 = getelementptr inbounds i8, ptr %262, i64 4
  store float %.sroa.06.0.vec.extract, ptr %262, align 4
  store float %261, ptr %263, align 4
  %264 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv905
  %265 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %265, ptr %264, align 4, !tbaa !9
  %indvars.iv.next906 = add nsw i64 %indvars.iv905, 1
  %indvars.iv.next902 = add nsw i64 %indvars.iv901, 1
  %.not553.not = icmp slt i64 %indvars.iv.next902, %257
  br i1 %.not553.not, label %.lr.ph672, label %._crit_edge673, !llvm.loop !37

._crit_edge673:                                   ; preds = %.lr.ph672, %.loopexit1534
  %.15515.lcssa.in = phi i64 [ %indvars.iv.next891.lcssa, %.loopexit1534 ], [ %indvars.iv.next906, %.lr.ph672 ]
  %.15515.lcssa = trunc i64 %.15515.lcssa.in to i32
  %indvars.iv.next913 = add nuw nsw i64 %indvars.iv912, 1
  %.not551.not = icmp slt i64 %indvars.iv912, %223
  %indvars.iv.next911 = add nuw nsw i64 %indvars.iv910, 1
  %indvars.iv.next900 = add i32 %indvars.iv899, 1
  br i1 %.not551.not, label %.preheader588, label %.loopexit, !llvm.loop !38

266:                                              ; preds = %49
  br i1 %.not, label %.lr.ph745, label %.preheader582.lr.ph

.thread575:                                       ; preds = %49
  %267 = lshr exact i32 %19, 1
  %268 = zext nneg i32 %267 to i64
  br i1 %.not, label %.lr.ph694, label %.lr.ph690

.lr.ph690:                                        ; preds = %.thread575
  %269 = add nsw i32 %45, -1
  %270 = sext i32 %10 to i64
  %271 = zext nneg i32 %45 to i64
  %272 = sext i32 %269 to i64
  %scevgep1274 = getelementptr i8, ptr %5, i64 4
  %273 = shl nsw i64 %270, 3
  %274 = add nsw i64 %273, 8
  %scevgep1280 = getelementptr i8, ptr %5, i64 4
  %scevgep1282 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1649 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1635 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1639 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1643 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1647 = getelementptr i8, ptr %5, i64 24
  br label %275

275:                                              ; preds = %.lr.ph690, %._crit_edge685
  %indvars.iv922 = phi i64 [ 0, %.lr.ph690 ], [ %indvars.iv.next923, %._crit_edge685 ]
  %.16516688 = phi i32 [ 0, %.lr.ph690 ], [ %.18.lcssa, %._crit_edge685 ]
  %276 = xor i64 %indvars.iv922, -1
  %277 = mul i64 %274, %indvars.iv922
  %scevgep1277 = getelementptr i8, ptr %3, i64 %277
  %278 = or disjoint i64 %277, 4
  %scevgep1278 = getelementptr i8, ptr %3, i64 %278
  %gep1650 = getelementptr i8, ptr %invariant.gep1649, i64 %277
  %279 = add nuw nsw i64 %indvars.iv922, %271
  %280 = sext i32 %.16516688 to i64
  %invariant.gep1084 = getelementptr %struct.complex, ptr %3, i64 %279
  br label %281

281:                                              ; preds = %275, %281
  %indvars.iv926.in = phi i32 [ %.16516688, %275 ], [ %indvars.iv926, %281 ]
  %indvars.iv919 = phi i64 [ %280, %275 ], [ %indvars.iv.next920, %281 ]
  %indvars.iv917 = phi i64 [ %268, %275 ], [ %indvars.iv.next918, %281 ]
  %indvars.iv926 = add i32 %indvars.iv926.in, 1
  %282 = mul nsw i64 %indvars.iv917, %270
  %gep1085 = getelementptr %struct.complex, ptr %invariant.gep1084, i64 %282
  %283 = call <2 x float> @Cf(ptr noundef %gep1085)
  %.sroa.05.0.vec.extract = extractelement <2 x float> %283, i64 0
  %.sroa.05.4.vec.extract = extractelement <2 x float> %283, i64 1
  %284 = fneg float %.sroa.05.4.vec.extract
  %285 = call ptr @_pCf(ptr noundef nonnull %9)
  %286 = getelementptr inbounds i8, ptr %285, i64 4
  store float %.sroa.05.0.vec.extract, ptr %285, align 4
  store float %284, ptr %286, align 4
  %287 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv919
  %288 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %288, ptr %287, align 4, !tbaa !9
  %indvars.iv.next920 = add nsw i64 %indvars.iv919, 1
  %indvars.iv.next918 = add nuw nsw i64 %indvars.iv917, 1
  %.not548.not = icmp ult i64 %indvars.iv917, %279
  br i1 %.not548.not, label %281, label %289, !llvm.loop !39

289:                                              ; preds = %281
  %290 = load i32, ptr %2, align 4, !tbaa !5
  %291 = sext i32 %290 to i64
  %.not549.not680 = icmp slt i64 %indvars.iv922, %291
  br i1 %.not549.not680, label %.lr.ph684, label %._crit_edge685

.lr.ph684:                                        ; preds = %289
  %292 = mul nsw i64 %indvars.iv922, %270
  %293 = sext i32 %indvars.iv926 to i64
  %wide.trip.count933 = zext i32 %290 to i64
  %invariant.gep1086 = getelementptr %struct.complex, ptr %3, i64 %292
  %294 = sub nsw i64 %wide.trip.count933, %indvars.iv922
  %min.iters.check1296 = icmp ult i64 %294, 8
  br i1 %min.iters.check1296, label %scalar.ph1295.preheader, label %vector.memcheck1272

vector.memcheck1272:                              ; preds = %.lr.ph684
  %295 = shl nsw i64 %293, 3
  %scevgep1273 = getelementptr i8, ptr %5, i64 %295
  %296 = add nsw i64 %276, %wide.trip.count933
  %297 = shl nsw i64 %296, 3
  %scevgep1275 = getelementptr i8, ptr %scevgep1274, i64 %297
  %scevgep1276 = getelementptr i8, ptr %scevgep1275, i64 %295
  %scevgep1279 = getelementptr i8, ptr %scevgep1278, i64 %297
  %scevgep1281 = getelementptr i8, ptr %scevgep1280, i64 %295
  %scevgep1283 = getelementptr i8, ptr %scevgep1282, i64 %297
  %scevgep1284 = getelementptr i8, ptr %scevgep1283, i64 %295
  %scevgep1286 = getelementptr i8, ptr %gep1650, i64 %297
  %bound01287 = icmp ult ptr %scevgep1273, %scevgep1279
  %bound11288 = icmp ult ptr %scevgep1277, %scevgep1276
  %found.conflict1289 = and i1 %bound01287, %bound11288
  %bound01290 = icmp ult ptr %scevgep1281, %scevgep1286
  %bound11291 = icmp ult ptr %scevgep1278, %scevgep1284
  %found.conflict1292 = and i1 %bound01290, %bound11291
  %conflict.rdx1293 = or i1 %found.conflict1289, %found.conflict1292
  br i1 %conflict.rdx1293, label %scalar.ph1295.preheader, label %vector.ph1297

vector.ph1297:                                    ; preds = %vector.memcheck1272
  %n.vec1299 = and i64 %294, -4
  %ind.end1300 = add i64 %n.vec1299, %293
  %ind.end1302 = add i64 %indvars.iv922, %n.vec1299
  %invariant.gep1633 = getelementptr i8, ptr %invariant.gep1086, i64 16
  br label %vector.body1304

vector.body1304:                                  ; preds = %vector.body1304, %vector.ph1297
  %index1305 = phi i64 [ 0, %vector.ph1297 ], [ %index.next1316, %vector.body1304 ]
  %offset.idx1306 = add i64 %index1305, %293
  %offset.idx1307 = add i64 %indvars.iv922, %index1305
  %298 = getelementptr %struct.complex, ptr %invariant.gep1086, i64 %offset.idx1307
  %gep1634 = getelementptr %struct.complex, ptr %invariant.gep1633, i64 %offset.idx1307
  %wide.vec1308 = load <4 x float>, ptr %298, align 4, !tbaa !9
  %wide.vec1309 = load <4 x float>, ptr %gep1634, align 4, !tbaa !9
  %299 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx1306
  %gep1636 = getelementptr %struct.complex, ptr %invariant.gep1635, i64 %offset.idx1306
  store <4 x float> %wide.vec1308, ptr %299, align 4, !tbaa !9
  store <4 x float> %wide.vec1309, ptr %gep1636, align 4, !tbaa !9
  %index.next1316 = add nuw i64 %index1305, 4
  %300 = icmp eq i64 %index.next1316, %n.vec1299
  br i1 %300, label %middle.block1294, label %vector.body1304, !llvm.loop !40

middle.block1294:                                 ; preds = %vector.body1304
  %cmp.n1317 = icmp eq i64 %294, %n.vec1299
  br i1 %cmp.n1317, label %._crit_edge685, label %scalar.ph1295.preheader

scalar.ph1295.preheader:                          ; preds = %middle.block1294, %vector.memcheck1272, %.lr.ph684
  %indvars.iv928.ph = phi i64 [ %293, %vector.memcheck1272 ], [ %293, %.lr.ph684 ], [ %ind.end1300, %middle.block1294 ]
  %indvars.iv924.ph = phi i64 [ %indvars.iv922, %vector.memcheck1272 ], [ %indvars.iv922, %.lr.ph684 ], [ %ind.end1302, %middle.block1294 ]
  %301 = sub i64 %wide.trip.count933, %indvars.iv924.ph
  %xtraiter1561 = and i64 %301, 3
  %lcmp.mod1562.not = icmp eq i64 %xtraiter1561, 0
  br i1 %lcmp.mod1562.not, label %scalar.ph1295.prol.loopexit, label %scalar.ph1295.prol

scalar.ph1295.prol:                               ; preds = %scalar.ph1295.preheader, %scalar.ph1295.prol
  %indvars.iv928.prol = phi i64 [ %indvars.iv.next929.prol, %scalar.ph1295.prol ], [ %indvars.iv928.ph, %scalar.ph1295.preheader ]
  %indvars.iv924.prol = phi i64 [ %indvars.iv.next925.prol, %scalar.ph1295.prol ], [ %indvars.iv924.ph, %scalar.ph1295.preheader ]
  %prol.iter1563 = phi i64 [ %prol.iter1563.next, %scalar.ph1295.prol ], [ 0, %scalar.ph1295.preheader ]
  %gep1087.prol = getelementptr %struct.complex, ptr %invariant.gep1086, i64 %indvars.iv924.prol
  %302 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv928.prol
  %303 = load <2 x float>, ptr %gep1087.prol, align 4, !tbaa !9
  store <2 x float> %303, ptr %302, align 4, !tbaa !9
  %indvars.iv.next929.prol = add nsw i64 %indvars.iv928.prol, 1
  %indvars.iv.next925.prol = add nuw nsw i64 %indvars.iv924.prol, 1
  %prol.iter1563.next = add i64 %prol.iter1563, 1
  %prol.iter1563.cmp.not = icmp eq i64 %prol.iter1563.next, %xtraiter1561
  br i1 %prol.iter1563.cmp.not, label %scalar.ph1295.prol.loopexit, label %scalar.ph1295.prol, !llvm.loop !41

scalar.ph1295.prol.loopexit:                      ; preds = %scalar.ph1295.prol, %scalar.ph1295.preheader
  %indvars.iv.next929.lcssa.unr = phi i64 [ poison, %scalar.ph1295.preheader ], [ %indvars.iv.next929.prol, %scalar.ph1295.prol ]
  %indvars.iv928.unr = phi i64 [ %indvars.iv928.ph, %scalar.ph1295.preheader ], [ %indvars.iv.next929.prol, %scalar.ph1295.prol ]
  %indvars.iv924.unr = phi i64 [ %indvars.iv924.ph, %scalar.ph1295.preheader ], [ %indvars.iv.next925.prol, %scalar.ph1295.prol ]
  %304 = sub i64 %indvars.iv924.ph, %wide.trip.count933
  %305 = icmp ugt i64 %304, -4
  br i1 %305, label %._crit_edge685, label %scalar.ph1295.preheader.new

scalar.ph1295.preheader.new:                      ; preds = %scalar.ph1295.prol.loopexit
  %invariant.gep1637 = getelementptr i8, ptr %invariant.gep1086, i64 8
  %invariant.gep1641 = getelementptr i8, ptr %invariant.gep1086, i64 16
  %invariant.gep1645 = getelementptr i8, ptr %invariant.gep1086, i64 24
  br label %scalar.ph1295

scalar.ph1295:                                    ; preds = %scalar.ph1295, %scalar.ph1295.preheader.new
  %indvars.iv928 = phi i64 [ %indvars.iv928.unr, %scalar.ph1295.preheader.new ], [ %indvars.iv.next929.3, %scalar.ph1295 ]
  %indvars.iv924 = phi i64 [ %indvars.iv924.unr, %scalar.ph1295.preheader.new ], [ %indvars.iv.next925.3, %scalar.ph1295 ]
  %gep1087 = getelementptr %struct.complex, ptr %invariant.gep1086, i64 %indvars.iv924
  %306 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv928
  %307 = load <2 x float>, ptr %gep1087, align 4, !tbaa !9
  store <2 x float> %307, ptr %306, align 4, !tbaa !9
  %gep1638 = getelementptr %struct.complex, ptr %invariant.gep1637, i64 %indvars.iv924
  %gep1640 = getelementptr %struct.complex, ptr %invariant.gep1639, i64 %indvars.iv928
  %308 = load <2 x float>, ptr %gep1638, align 4, !tbaa !9
  store <2 x float> %308, ptr %gep1640, align 4, !tbaa !9
  %gep1642 = getelementptr %struct.complex, ptr %invariant.gep1641, i64 %indvars.iv924
  %gep1644 = getelementptr %struct.complex, ptr %invariant.gep1643, i64 %indvars.iv928
  %309 = load <2 x float>, ptr %gep1642, align 4, !tbaa !9
  store <2 x float> %309, ptr %gep1644, align 4, !tbaa !9
  %gep1646 = getelementptr %struct.complex, ptr %invariant.gep1645, i64 %indvars.iv924
  %gep1648 = getelementptr %struct.complex, ptr %invariant.gep1647, i64 %indvars.iv928
  %310 = load <2 x float>, ptr %gep1646, align 4, !tbaa !9
  store <2 x float> %310, ptr %gep1648, align 4, !tbaa !9
  %indvars.iv.next929.3 = add nsw i64 %indvars.iv928, 4
  %indvars.iv.next925.3 = add nuw nsw i64 %indvars.iv924, 4
  %exitcond934.not.3 = icmp eq i64 %indvars.iv.next925.3, %wide.trip.count933
  br i1 %exitcond934.not.3, label %._crit_edge685, label %scalar.ph1295, !llvm.loop !42

._crit_edge685:                                   ; preds = %scalar.ph1295.prol.loopexit, %scalar.ph1295, %middle.block1294, %289
  %.18.lcssa.in = phi i64 [ %indvars.iv.next920, %289 ], [ %ind.end1300, %middle.block1294 ], [ %indvars.iv.next929.lcssa.unr, %scalar.ph1295.prol.loopexit ], [ %indvars.iv.next929.3, %scalar.ph1295 ]
  %.18.lcssa = trunc i64 %.18.lcssa.in to i32
  %indvars.iv.next923 = add nuw nsw i64 %indvars.iv922, 1
  %.not547.not = icmp slt i64 %indvars.iv922, %272
  br i1 %.not547.not, label %275, label %.loopexit, !llvm.loop !43

.preheader582.lr.ph:                              ; preds = %266
  %311 = xor i32 %19, -1
  %312 = add nsw i32 %44, %311
  %313 = shl nuw i32 %19, 1
  %314 = xor i32 %45, -1
  %315 = add nsw i32 %19, %314
  %316 = sext i32 %10 to i64
  %317 = zext nneg i32 %45 to i64
  %318 = zext nneg i32 %19 to i64
  %scevgep1408 = getelementptr i8, ptr %5, i64 -4
  %319 = add nuw nsw i64 %318, 2305843009213693951
  %320 = mul i64 %319, %316
  %321 = shl i64 %320, 3
  %322 = mul nsw i64 %316, -8
  %scevgep1417 = getelementptr i8, ptr %5, i64 4
  %323 = or disjoint i64 %321, 4
  %324 = getelementptr i8, ptr %3, i64 %321
  %325 = getelementptr i8, ptr %3, i64 %321
  %326 = getelementptr i8, ptr %325, i64 -4
  %327 = getelementptr i8, ptr %3, i64 %323
  %invariant.gep1657 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1661 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1665 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1669 = getelementptr i8, ptr %5, i64 24
  br label %.preheader582

.preheader582:                                    ; preds = %.preheader582.lr.ph, %._crit_edge727
  %indvar1412 = phi i64 [ 0, %.preheader582.lr.ph ], [ %indvar.next1413, %._crit_edge727 ]
  %indvar1409 = phi i32 [ 0, %.preheader582.lr.ph ], [ %indvar.next1410, %._crit_edge727 ]
  %indvars.iv999 = phi i64 [ %318, %.preheader582.lr.ph ], [ %indvars.iv.next1000, %._crit_edge727 ]
  %indvars.iv990 = phi i32 [ %315, %.preheader582.lr.ph ], [ %indvars.iv.next991, %._crit_edge727 ]
  %.19731 = phi i32 [ %312, %.preheader582.lr.ph ], [ %365, %._crit_edge727 ]
  %328 = and i64 %indvars.iv999, 4294967295
  %329 = and i64 %indvars.iv999, 4294967295
  %330 = sub i32 %19, %indvar1409
  %331 = zext i32 %330 to i64
  %332 = shl nuw nsw i64 %331, 3
  %333 = mul i64 %322, %indvar1412
  %scevgep1414 = getelementptr i8, ptr %324, i64 %333
  %scevgep1415 = getelementptr i8, ptr %326, i64 %333
  %scevgep1416 = getelementptr i8, ptr %scevgep1415, i64 %332
  %scevgep1420 = getelementptr i8, ptr %327, i64 %333
  %scevgep1421 = getelementptr i8, ptr %scevgep1414, i64 %332
  %334 = sext i32 %indvars.iv990 to i64
  %indvars.iv.next1000 = add nsw i64 %indvars.iv999, -1
  %.not545.not716 = icmp sgt i64 %indvars.iv999, 0
  br i1 %.not545.not716, label %.lr.ph719, label %._crit_edge720

.lr.ph719:                                        ; preds = %.preheader582
  %335 = mul nsw i64 %indvars.iv.next1000, %316
  %336 = sext i32 %.19731 to i64
  %wide.trip.count988 = and i64 %indvars.iv999, 4294967295
  %invariant.gep1096 = getelementptr %struct.complex, ptr %3, i64 %335
  %min.iters.check1431 = icmp ult i64 %329, 6
  br i1 %min.iters.check1431, label %scalar.ph1430.preheader, label %vector.memcheck1406

vector.memcheck1406:                              ; preds = %.lr.ph719
  %337 = shl nsw i64 %336, 3
  %scevgep1407 = getelementptr i8, ptr %5, i64 %337
  %338 = add nsw i64 %337, %332
  %scevgep1411 = getelementptr i8, ptr %scevgep1408, i64 %338
  %scevgep1418 = getelementptr i8, ptr %scevgep1417, i64 %337
  %scevgep1419 = getelementptr i8, ptr %5, i64 %338
  %bound01422 = icmp ult ptr %scevgep1407, %scevgep1416
  %bound11423 = icmp ult ptr %scevgep1414, %scevgep1411
  %found.conflict1424 = and i1 %bound01422, %bound11423
  %bound01425 = icmp ult ptr %scevgep1418, %scevgep1421
  %bound11426 = icmp ult ptr %scevgep1420, %scevgep1419
  %found.conflict1427 = and i1 %bound01425, %bound11426
  %conflict.rdx1428 = or i1 %found.conflict1424, %found.conflict1427
  br i1 %conflict.rdx1428, label %scalar.ph1430.preheader, label %vector.ph1432

vector.ph1432:                                    ; preds = %vector.memcheck1406
  %n.mod.vf1433 = and i64 %indvars.iv999, 3
  %n.vec1434 = sub nsw i64 %329, %n.mod.vf1433
  %ind.end1435 = add nsw i64 %n.vec1434, %336
  br label %vector.body1438

vector.body1438:                                  ; preds = %vector.body1438, %vector.ph1432
  %index1439 = phi i64 [ 0, %vector.ph1432 ], [ %index.next1449, %vector.body1438 ]
  %offset.idx1440 = add i64 %index1439, %336
  %339 = or disjoint i64 %index1439, 2
  %340 = getelementptr %struct.complex, ptr %invariant.gep1096, i64 %index1439
  %341 = getelementptr %struct.complex, ptr %invariant.gep1096, i64 %339
  %wide.vec1441 = load <4 x float>, ptr %340, align 4, !tbaa !9
  %wide.vec1442 = load <4 x float>, ptr %341, align 4, !tbaa !9
  %342 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx1440
  %gep1658 = getelementptr %struct.complex, ptr %invariant.gep1657, i64 %offset.idx1440
  store <4 x float> %wide.vec1441, ptr %342, align 4, !tbaa !9
  store <4 x float> %wide.vec1442, ptr %gep1658, align 4, !tbaa !9
  %index.next1449 = add nuw i64 %index1439, 4
  %343 = icmp eq i64 %index.next1449, %n.vec1434
  br i1 %343, label %middle.block1429, label %vector.body1438, !llvm.loop !44

middle.block1429:                                 ; preds = %vector.body1438
  %cmp.n1450 = icmp eq i64 %n.mod.vf1433, 0
  br i1 %cmp.n1450, label %._crit_edge720.loopexit, label %scalar.ph1430.preheader

scalar.ph1430.preheader:                          ; preds = %middle.block1429, %vector.memcheck1406, %.lr.ph719
  %indvars.iv983.ph = phi i64 [ %336, %vector.memcheck1406 ], [ %336, %.lr.ph719 ], [ %ind.end1435, %middle.block1429 ]
  %indvars.iv981.ph = phi i64 [ 0, %vector.memcheck1406 ], [ 0, %.lr.ph719 ], [ %n.vec1434, %middle.block1429 ]
  %344 = sub i64 %indvars.iv999, %indvars.iv981.ph
  %xtraiter1564 = and i64 %344, 3
  %lcmp.mod1565.not = icmp eq i64 %xtraiter1564, 0
  br i1 %lcmp.mod1565.not, label %scalar.ph1430.prol.loopexit, label %scalar.ph1430.prol

scalar.ph1430.prol:                               ; preds = %scalar.ph1430.preheader, %scalar.ph1430.prol
  %indvars.iv983.prol = phi i64 [ %indvars.iv.next984.prol, %scalar.ph1430.prol ], [ %indvars.iv983.ph, %scalar.ph1430.preheader ]
  %indvars.iv981.prol = phi i64 [ %indvars.iv.next982.prol, %scalar.ph1430.prol ], [ %indvars.iv981.ph, %scalar.ph1430.preheader ]
  %prol.iter1566 = phi i64 [ %prol.iter1566.next, %scalar.ph1430.prol ], [ 0, %scalar.ph1430.preheader ]
  %gep1097.prol = getelementptr %struct.complex, ptr %invariant.gep1096, i64 %indvars.iv981.prol
  %345 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv983.prol
  %346 = load <2 x float>, ptr %gep1097.prol, align 4, !tbaa !9
  store <2 x float> %346, ptr %345, align 4, !tbaa !9
  %indvars.iv.next984.prol = add nsw i64 %indvars.iv983.prol, 1
  %indvars.iv.next982.prol = add nuw nsw i64 %indvars.iv981.prol, 1
  %prol.iter1566.next = add i64 %prol.iter1566, 1
  %prol.iter1566.cmp.not = icmp eq i64 %prol.iter1566.next, %xtraiter1564
  br i1 %prol.iter1566.cmp.not, label %scalar.ph1430.prol.loopexit, label %scalar.ph1430.prol, !llvm.loop !45

scalar.ph1430.prol.loopexit:                      ; preds = %scalar.ph1430.prol, %scalar.ph1430.preheader
  %indvars.iv.next984.lcssa1539.unr = phi i64 [ poison, %scalar.ph1430.preheader ], [ %indvars.iv.next984.prol, %scalar.ph1430.prol ]
  %indvars.iv983.unr = phi i64 [ %indvars.iv983.ph, %scalar.ph1430.preheader ], [ %indvars.iv.next984.prol, %scalar.ph1430.prol ]
  %indvars.iv981.unr = phi i64 [ %indvars.iv981.ph, %scalar.ph1430.preheader ], [ %indvars.iv.next982.prol, %scalar.ph1430.prol ]
  %347 = sub nsw i64 %indvars.iv981.ph, %328
  %348 = icmp ugt i64 %347, -4
  br i1 %348, label %._crit_edge720.loopexit, label %scalar.ph1430.preheader.new

scalar.ph1430.preheader.new:                      ; preds = %scalar.ph1430.prol.loopexit
  %invariant.gep1659 = getelementptr i8, ptr %invariant.gep1096, i64 8
  %invariant.gep1663 = getelementptr i8, ptr %invariant.gep1096, i64 16
  %invariant.gep1667 = getelementptr i8, ptr %invariant.gep1096, i64 24
  br label %scalar.ph1430

scalar.ph1430:                                    ; preds = %scalar.ph1430, %scalar.ph1430.preheader.new
  %indvars.iv983 = phi i64 [ %indvars.iv983.unr, %scalar.ph1430.preheader.new ], [ %indvars.iv.next984.3, %scalar.ph1430 ]
  %indvars.iv981 = phi i64 [ %indvars.iv981.unr, %scalar.ph1430.preheader.new ], [ %indvars.iv.next982.3, %scalar.ph1430 ]
  %gep1097 = getelementptr %struct.complex, ptr %invariant.gep1096, i64 %indvars.iv981
  %349 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv983
  %350 = load <2 x float>, ptr %gep1097, align 4, !tbaa !9
  store <2 x float> %350, ptr %349, align 4, !tbaa !9
  %gep1660 = getelementptr %struct.complex, ptr %invariant.gep1659, i64 %indvars.iv981
  %gep1662 = getelementptr %struct.complex, ptr %invariant.gep1661, i64 %indvars.iv983
  %351 = load <2 x float>, ptr %gep1660, align 4, !tbaa !9
  store <2 x float> %351, ptr %gep1662, align 4, !tbaa !9
  %gep1664 = getelementptr %struct.complex, ptr %invariant.gep1663, i64 %indvars.iv981
  %gep1666 = getelementptr %struct.complex, ptr %invariant.gep1665, i64 %indvars.iv983
  %352 = load <2 x float>, ptr %gep1664, align 4, !tbaa !9
  store <2 x float> %352, ptr %gep1666, align 4, !tbaa !9
  %gep1668 = getelementptr %struct.complex, ptr %invariant.gep1667, i64 %indvars.iv981
  %gep1670 = getelementptr %struct.complex, ptr %invariant.gep1669, i64 %indvars.iv983
  %353 = load <2 x float>, ptr %gep1668, align 4, !tbaa !9
  store <2 x float> %353, ptr %gep1670, align 4, !tbaa !9
  %indvars.iv.next984.3 = add nsw i64 %indvars.iv983, 4
  %indvars.iv.next982.3 = add nuw nsw i64 %indvars.iv981, 4
  %exitcond989.not.3 = icmp eq i64 %indvars.iv.next982.3, %wide.trip.count988
  br i1 %exitcond989.not.3, label %._crit_edge720.loopexit, label %scalar.ph1430, !llvm.loop !46

._crit_edge720.loopexit:                          ; preds = %scalar.ph1430.prol.loopexit, %scalar.ph1430, %middle.block1429
  %indvars.iv.next984.lcssa = phi i64 [ %ind.end1435, %middle.block1429 ], [ %indvars.iv.next984.lcssa1539.unr, %scalar.ph1430.prol.loopexit ], [ %indvars.iv.next984.3, %scalar.ph1430 ]
  %354 = trunc nsw i64 %indvars.iv.next984.lcssa to i32
  br label %._crit_edge720

._crit_edge720:                                   ; preds = %._crit_edge720.loopexit, %.preheader582
  %.20.lcssa = phi i32 [ %.19731, %.preheader582 ], [ %354, %._crit_edge720.loopexit ]
  %355 = sub nsw i64 %indvars.iv.next1000, %317
  %.not546.not722 = icmp slt i64 %355, %317
  br i1 %.not546.not722, label %.lr.ph726.preheader, label %._crit_edge727

.lr.ph726.preheader:                              ; preds = %._crit_edge720
  %356 = sext i32 %.20.lcssa to i64
  %invariant.gep1098 = getelementptr %struct.complex, ptr %3, i64 %355
  br label %.lr.ph726

.lr.ph726:                                        ; preds = %.lr.ph726.preheader, %.lr.ph726
  %indvars.iv994 = phi i64 [ %356, %.lr.ph726.preheader ], [ %indvars.iv.next995, %.lr.ph726 ]
  %indvars.iv992 = phi i64 [ %334, %.lr.ph726.preheader ], [ %indvars.iv.next993, %.lr.ph726 ]
  %357 = mul nsw i64 %indvars.iv992, %316
  %gep1099 = getelementptr %struct.complex, ptr %invariant.gep1098, i64 %357
  %358 = call <2 x float> @Cf(ptr noundef %gep1099)
  %.sroa.04.0.vec.extract = extractelement <2 x float> %358, i64 0
  %.sroa.04.4.vec.extract = extractelement <2 x float> %358, i64 1
  %359 = fneg float %.sroa.04.4.vec.extract
  %360 = call ptr @_pCf(ptr noundef nonnull %9)
  %361 = getelementptr inbounds i8, ptr %360, i64 4
  store float %.sroa.04.0.vec.extract, ptr %360, align 4
  store float %359, ptr %361, align 4
  %362 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv994
  %363 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %363, ptr %362, align 4, !tbaa !9
  %indvars.iv.next995 = add nsw i64 %indvars.iv994, 1
  %indvars.iv.next993 = add nsw i64 %indvars.iv992, 1
  %.not546.not = icmp slt i64 %indvars.iv.next993, %317
  br i1 %.not546.not, label %.lr.ph726, label %._crit_edge727.loopexit, !llvm.loop !47

._crit_edge727.loopexit:                          ; preds = %.lr.ph726
  %364 = trunc nsw i64 %indvars.iv.next995 to i32
  br label %._crit_edge727

._crit_edge727:                                   ; preds = %._crit_edge727.loopexit, %._crit_edge720
  %.21.lcssa = phi i32 [ %.20.lcssa, %._crit_edge720 ], [ %364, %._crit_edge727.loopexit ]
  %reass.sub = sub i32 %.21.lcssa, %313
  %365 = add i32 %reass.sub, -2
  %.not544.not = icmp sgt i64 %indvars.iv.next1000, %317
  %indvars.iv.next991 = add i32 %indvars.iv990, -1
  %indvar.next1410 = add i32 %indvar1409, 1
  %indvar.next1413 = add i64 %indvar1412, 1
  br i1 %.not544.not, label %.preheader582, label %.loopexit, !llvm.loop !48

.lr.ph694:                                        ; preds = %.thread575
  %366 = mul nsw i32 %45, %10
  %367 = sext i32 %366 to i64
  %368 = zext nneg i32 %19 to i64
  %invariant.gep1088 = getelementptr %struct.complex, ptr %3, i64 %367
  %369 = add nuw nsw i64 %268, 1
  %umax1334 = tail call i64 @llvm.umax.i64(i64 %369, i64 %368)
  %370 = sub nsw i64 %umax1334, %268
  %min.iters.check1337 = icmp ult i64 %370, 30
  br i1 %min.iters.check1337, label %scalar.ph1336.preheader, label %vector.memcheck1318

vector.memcheck1318:                              ; preds = %.lr.ph694
  %371 = add nuw nsw i64 %268, 1
  %umax1319 = tail call i64 @llvm.umax.i64(i64 %371, i64 %368)
  %372 = shl nuw nsw i64 %umax1319, 3
  %373 = add nsw i64 %372, -4
  %374 = shl nuw nsw i64 %268, 3
  %375 = sub nsw i64 %373, %374
  %scevgep1320 = getelementptr i8, ptr %5, i64 %375
  %376 = shl nsw i64 %367, 3
  %377 = getelementptr i8, ptr %3, i64 %374
  %scevgep1321 = getelementptr i8, ptr %377, i64 %376
  %378 = add nsw i64 %umax1319, %367
  %379 = shl nsw i64 %378, 3
  %380 = getelementptr i8, ptr %3, i64 %379
  %scevgep1322 = getelementptr i8, ptr %380, i64 -4
  %scevgep1323 = getelementptr i8, ptr %5, i64 4
  %381 = sub nsw i64 %372, %374
  %scevgep1324 = getelementptr i8, ptr %5, i64 %381
  %382 = add nsw i64 %374, %376
  %383 = or disjoint i64 %382, 4
  %scevgep1325 = getelementptr i8, ptr %3, i64 %383
  %scevgep1326 = getelementptr i8, ptr %3, i64 %379
  %bound01327 = icmp ugt ptr %scevgep1322, %5
  %bound11328 = icmp ult ptr %scevgep1321, %scevgep1320
  %found.conflict1329 = and i1 %bound01327, %bound11328
  %bound01330 = icmp ult ptr %scevgep1323, %scevgep1326
  %bound11331 = icmp ult ptr %scevgep1325, %scevgep1324
  %found.conflict1332 = and i1 %bound01330, %bound11331
  %conflict.rdx1333 = or i1 %found.conflict1329, %found.conflict1332
  br i1 %conflict.rdx1333, label %scalar.ph1336.preheader, label %vector.ph1338

vector.ph1338:                                    ; preds = %vector.memcheck1318
  %n.vec1340 = and i64 %370, -4
  %ind.end1342 = add nsw i64 %n.vec1340, %268
  %invariant.gep1651 = getelementptr i8, ptr %invariant.gep1088, i64 16
  br label %vector.body1344

vector.body1344:                                  ; preds = %vector.body1344, %vector.ph1338
  %index1345 = phi i64 [ 0, %vector.ph1338 ], [ %index.next1355, %vector.body1344 ]
  %384 = or disjoint i64 %index1345, 2
  %offset.idx1346 = add i64 %index1345, %268
  %385 = getelementptr %struct.complex, ptr %invariant.gep1088, i64 %offset.idx1346
  %gep1652 = getelementptr %struct.complex, ptr %invariant.gep1651, i64 %offset.idx1346
  %wide.vec1347 = load <4 x float>, ptr %385, align 4, !tbaa !9
  %wide.vec1348 = load <4 x float>, ptr %gep1652, align 4, !tbaa !9
  %386 = getelementptr inbounds %struct.complex, ptr %5, i64 %index1345
  %387 = getelementptr inbounds %struct.complex, ptr %5, i64 %384
  store <4 x float> %wide.vec1347, ptr %386, align 4, !tbaa !9
  store <4 x float> %wide.vec1348, ptr %387, align 4, !tbaa !9
  %index.next1355 = add nuw i64 %index1345, 4
  %388 = icmp eq i64 %index.next1355, %n.vec1340
  br i1 %388, label %middle.block1335, label %vector.body1344, !llvm.loop !49

middle.block1335:                                 ; preds = %vector.body1344
  %cmp.n1356 = icmp eq i64 %370, %n.vec1340
  br i1 %cmp.n1356, label %._crit_edge695, label %scalar.ph1336.preheader

scalar.ph1336.preheader:                          ; preds = %middle.block1335, %vector.memcheck1318, %.lr.ph694
  %indvars.iv938.ph = phi i64 [ 0, %vector.memcheck1318 ], [ 0, %.lr.ph694 ], [ %n.vec1340, %middle.block1335 ]
  %indvars.iv936.ph = phi i64 [ %268, %vector.memcheck1318 ], [ %268, %.lr.ph694 ], [ %ind.end1342, %middle.block1335 ]
  br label %scalar.ph1336

scalar.ph1336:                                    ; preds = %scalar.ph1336.preheader, %scalar.ph1336
  %indvars.iv938 = phi i64 [ %indvars.iv.next939, %scalar.ph1336 ], [ %indvars.iv938.ph, %scalar.ph1336.preheader ]
  %indvars.iv936 = phi i64 [ %indvars.iv.next937, %scalar.ph1336 ], [ %indvars.iv936.ph, %scalar.ph1336.preheader ]
  %gep1089 = getelementptr %struct.complex, ptr %invariant.gep1088, i64 %indvars.iv936
  %389 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv938
  %390 = load <2 x float>, ptr %gep1089, align 4, !tbaa !9
  store <2 x float> %390, ptr %389, align 4, !tbaa !9
  %indvars.iv.next939 = add nuw nsw i64 %indvars.iv938, 1
  %indvars.iv.next937 = add nuw nsw i64 %indvars.iv936, 1
  %.not538.not = icmp ult i64 %indvars.iv.next937, %368
  br i1 %.not538.not, label %scalar.ph1336, label %._crit_edge695, !llvm.loop !50

._crit_edge695:                                   ; preds = %scalar.ph1336, %middle.block1335
  %indvars.iv.next939.lcssa = phi i64 [ %n.vec1340, %middle.block1335 ], [ %indvars.iv.next939, %scalar.ph1336 ]
  %.not539706 = icmp ult i32 %19, 4
  br i1 %.not539706, label %._crit_edge709, label %.preheader586.lr.ph

.preheader586.lr.ph:                              ; preds = %._crit_edge695
  %391 = add nsw i32 %45, -2
  %392 = add nuw nsw i32 %45, 1
  %393 = sext i32 %10 to i64
  %394 = zext nneg i32 %392 to i64
  %395 = sext i32 %391 to i64
  %scevgep1359 = getelementptr i8, ptr %5, i64 -4
  %396 = mul nsw i64 %394, %393
  %397 = shl i64 %396, 3
  %398 = shl nsw i64 %393, 3
  %scevgep1367 = getelementptr i8, ptr %5, i64 4
  %399 = or disjoint i64 %397, 4
  %400 = getelementptr i8, ptr %3, i64 %397
  %401 = getelementptr i8, ptr %3, i64 %397
  %402 = getelementptr i8, ptr %401, i64 -4
  %403 = getelementptr i8, ptr %3, i64 %399
  %invariant.gep1655 = getelementptr i8, ptr %5, i64 16
  br label %.preheader586

.preheader586:                                    ; preds = %.preheader586.lr.ph, %._crit_edge704
  %indvars.iv965 = phi i64 [ 0, %.preheader586.lr.ph ], [ %indvars.iv.next966, %._crit_edge704 ]
  %indvars.iv963 = phi i64 [ 1, %.preheader586.lr.ph ], [ %indvars.iv.next964, %._crit_edge704 ]
  %indvars.iv952 = phi i32 [ %392, %.preheader586.lr.ph ], [ %indvars.iv.next953, %._crit_edge704 ]
  %.23707.in = phi i64 [ %indvars.iv.next939.lcssa, %.preheader586.lr.ph ], [ %.25.lcssa.in, %._crit_edge704 ]
  %404 = sext i32 %indvars.iv952 to i64
  %405 = add nsw i64 %404, 1
  %406 = sext i32 %indvars.iv952 to i64
  %407 = mul nsw i64 %406, -8
  %408 = add nsw i64 %406, 1
  %409 = mul i64 %398, %indvars.iv965
  %scevgep1363 = getelementptr i8, ptr %400, i64 %409
  %410 = shl nsw i64 %406, 3
  %scevgep1364 = getelementptr i8, ptr %scevgep1363, i64 %410
  %scevgep1365 = getelementptr i8, ptr %402, i64 %409
  %scevgep1371 = getelementptr i8, ptr %403, i64 %409
  %scevgep1372 = getelementptr i8, ptr %scevgep1371, i64 %410
  %.23707 = trunc i64 %.23707.in to i32
  %411 = sext i32 %indvars.iv952 to i64
  %sext1054 = shl i64 %.23707.in, 32
  %412 = ashr exact i64 %sext1054, 32
  %invariant.gep1090 = getelementptr %struct.complex, ptr %3, i64 %indvars.iv965
  br label %413

413:                                              ; preds = %.preheader586, %413
  %indvars.iv956.in = phi i32 [ %.23707, %.preheader586 ], [ %indvars.iv956, %413 ]
  %indvars.iv943 = phi i64 [ %412, %.preheader586 ], [ %indvars.iv.next944, %413 ]
  %indvars.iv941 = phi i64 [ 0, %.preheader586 ], [ %indvars.iv.next942, %413 ]
  %indvars.iv956 = add i32 %indvars.iv956.in, 1
  %414 = mul nsw i64 %indvars.iv941, %393
  %gep1091 = getelementptr %struct.complex, ptr %invariant.gep1090, i64 %414
  %415 = call <2 x float> @Cf(ptr noundef %gep1091)
  %.sroa.03.0.vec.extract = extractelement <2 x float> %415, i64 0
  %.sroa.03.4.vec.extract = extractelement <2 x float> %415, i64 1
  %416 = fneg float %.sroa.03.4.vec.extract
  %417 = call ptr @_pCf(ptr noundef nonnull %9)
  %418 = getelementptr inbounds i8, ptr %417, i64 4
  store float %.sroa.03.0.vec.extract, ptr %417, align 4
  store float %416, ptr %418, align 4
  %419 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv943
  %420 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %420, ptr %419, align 4, !tbaa !9
  %indvars.iv.next944 = add nsw i64 %indvars.iv943, 1
  %indvars.iv.next942 = add nuw nsw i64 %indvars.iv941, 1
  %exitcond951.not = icmp eq i64 %indvars.iv.next942, %indvars.iv963
  br i1 %exitcond951.not, label %421, label %413, !llvm.loop !51

421:                                              ; preds = %413
  %422 = load i32, ptr %2, align 4, !tbaa !5
  %423 = add nuw nsw i64 %indvars.iv965, %394
  %424 = sext i32 %422 to i64
  %.not543.not699 = icmp slt i64 %423, %424
  br i1 %.not543.not699, label %.lr.ph703, label %._crit_edge704

.lr.ph703:                                        ; preds = %421
  %425 = mul nsw i64 %423, %393
  %426 = sext i32 %indvars.iv956 to i64
  %invariant.gep1092 = getelementptr %struct.complex, ptr %3, i64 %425
  %smax1381 = call i64 @llvm.smax.i64(i64 %405, i64 %424)
  %427 = sub i64 %smax1381, %404
  %min.iters.check1384 = icmp ult i64 %427, 10
  br i1 %min.iters.check1384, label %scalar.ph1383.preheader, label %vector.memcheck1357

vector.memcheck1357:                              ; preds = %.lr.ph703
  %428 = shl nsw i64 %426, 3
  %scevgep1358 = getelementptr i8, ptr %5, i64 %428
  %scevgep1360 = getelementptr i8, ptr %scevgep1359, i64 %407
  %smax1361 = call i64 @llvm.smax.i64(i64 %408, i64 %424)
  %429 = add i64 %smax1361, %426
  %430 = shl nsw i64 %429, 3
  %scevgep1362 = getelementptr i8, ptr %scevgep1360, i64 %430
  %431 = shl nsw i64 %smax1361, 3
  %scevgep1366 = getelementptr i8, ptr %scevgep1365, i64 %431
  %scevgep1368 = getelementptr i8, ptr %scevgep1367, i64 %428
  %scevgep1369 = getelementptr i8, ptr %5, i64 %407
  %scevgep1370 = getelementptr i8, ptr %scevgep1369, i64 %430
  %scevgep1373 = getelementptr i8, ptr %scevgep1363, i64 %431
  %bound01374 = icmp ult ptr %scevgep1358, %scevgep1366
  %bound11375 = icmp ult ptr %scevgep1364, %scevgep1362
  %found.conflict1376 = and i1 %bound01374, %bound11375
  %bound01377 = icmp ult ptr %scevgep1368, %scevgep1373
  %bound11378 = icmp ult ptr %scevgep1372, %scevgep1370
  %found.conflict1379 = and i1 %bound01377, %bound11378
  %conflict.rdx1380 = or i1 %found.conflict1376, %found.conflict1379
  br i1 %conflict.rdx1380, label %scalar.ph1383.preheader, label %vector.ph1385

vector.ph1385:                                    ; preds = %vector.memcheck1357
  %n.vec1387 = and i64 %427, -4
  %ind.end1388 = add i64 %n.vec1387, %426
  %ind.end1390 = add i64 %n.vec1387, %411
  %invariant.gep1653 = getelementptr i8, ptr %invariant.gep1092, i64 16
  br label %vector.body1392

vector.body1392:                                  ; preds = %vector.body1392, %vector.ph1385
  %index1393 = phi i64 [ 0, %vector.ph1385 ], [ %index.next1404, %vector.body1392 ]
  %offset.idx1394 = add i64 %index1393, %426
  %offset.idx1395 = add i64 %index1393, %411
  %432 = getelementptr %struct.complex, ptr %invariant.gep1092, i64 %offset.idx1395
  %gep1654 = getelementptr %struct.complex, ptr %invariant.gep1653, i64 %offset.idx1395
  %wide.vec1396 = load <4 x float>, ptr %432, align 4, !tbaa !9
  %wide.vec1397 = load <4 x float>, ptr %gep1654, align 4, !tbaa !9
  %433 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx1394
  %gep1656 = getelementptr %struct.complex, ptr %invariant.gep1655, i64 %offset.idx1394
  store <4 x float> %wide.vec1396, ptr %433, align 4, !tbaa !9
  store <4 x float> %wide.vec1397, ptr %gep1656, align 4, !tbaa !9
  %index.next1404 = add nuw i64 %index1393, 4
  %434 = icmp eq i64 %index.next1404, %n.vec1387
  br i1 %434, label %middle.block1382, label %vector.body1392, !llvm.loop !52

middle.block1382:                                 ; preds = %vector.body1392
  %cmp.n1405 = icmp eq i64 %427, %n.vec1387
  br i1 %cmp.n1405, label %._crit_edge704, label %scalar.ph1383.preheader

scalar.ph1383.preheader:                          ; preds = %middle.block1382, %vector.memcheck1357, %.lr.ph703
  %indvars.iv958.ph = phi i64 [ %426, %vector.memcheck1357 ], [ %426, %.lr.ph703 ], [ %ind.end1388, %middle.block1382 ]
  %indvars.iv954.ph = phi i64 [ %411, %vector.memcheck1357 ], [ %411, %.lr.ph703 ], [ %ind.end1390, %middle.block1382 ]
  br label %scalar.ph1383

scalar.ph1383:                                    ; preds = %scalar.ph1383.preheader, %scalar.ph1383
  %indvars.iv958 = phi i64 [ %indvars.iv.next959, %scalar.ph1383 ], [ %indvars.iv958.ph, %scalar.ph1383.preheader ]
  %indvars.iv954 = phi i64 [ %indvars.iv.next955, %scalar.ph1383 ], [ %indvars.iv954.ph, %scalar.ph1383.preheader ]
  %gep1093 = getelementptr %struct.complex, ptr %invariant.gep1092, i64 %indvars.iv954
  %435 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv958
  %436 = load <2 x float>, ptr %gep1093, align 4, !tbaa !9
  store <2 x float> %436, ptr %435, align 4, !tbaa !9
  %indvars.iv.next959 = add nsw i64 %indvars.iv958, 1
  %indvars.iv.next955 = add nuw nsw i64 %indvars.iv954, 1
  %.not543.not = icmp slt i64 %indvars.iv.next955, %424
  br i1 %.not543.not, label %scalar.ph1383, label %._crit_edge704, !llvm.loop !53

._crit_edge704:                                   ; preds = %scalar.ph1383, %middle.block1382, %421
  %.25.lcssa.in = phi i64 [ %indvars.iv.next944, %421 ], [ %ind.end1388, %middle.block1382 ], [ %indvars.iv.next959, %scalar.ph1383 ]
  %indvars.iv.next966 = add nuw nsw i64 %indvars.iv965, 1
  %.not539.not = icmp slt i64 %indvars.iv965, %395
  %indvars.iv.next964 = add nuw nsw i64 %indvars.iv963, 1
  %indvars.iv.next953 = add i32 %indvars.iv952, 1
  br i1 %.not539.not, label %.preheader586, label %._crit_edge709, !llvm.loop !54

._crit_edge709:                                   ; preds = %._crit_edge704, %._crit_edge695
  %437 = phi i32 [ %19, %._crit_edge695 ], [ %422, %._crit_edge704 ]
  %.23.lcssa = phi i64 [ %indvars.iv.next939.lcssa, %._crit_edge695 ], [ %.25.lcssa.in, %._crit_edge704 ]
  %.not540713 = icmp sgt i32 %45, %437
  br i1 %.not540713, label %.loopexit, label %.preheader584.lr.ph

.preheader584.lr.ph:                              ; preds = %._crit_edge709
  %.pre-phi = add nsw i32 %437, -1
  %438 = sext i32 %10 to i64
  %umax = call i32 @llvm.umax.i32(i32 %45, i32 1)
  %439 = lshr exact i32 %19, 1
  %440 = zext nneg i32 %439 to i64
  %441 = add nsw i64 %440, -1
  %wide.trip.count977 = zext nneg i32 %umax to i64
  %442 = sext i32 %.pre-phi to i64
  br label %.preheader584

.preheader584:                                    ; preds = %.preheader584.lr.ph, %452
  %indvars.iv979 = phi i64 [ %441, %.preheader584.lr.ph ], [ %indvars.iv.next980, %452 ]
  %.26714 = phi i64 [ %.23.lcssa, %.preheader584.lr.ph ], [ %indvars.iv.next973, %452 ]
  %sext1053 = shl i64 %.26714, 32
  %443 = ashr exact i64 %sext1053, 32
  %invariant.gep1094 = getelementptr %struct.complex, ptr %3, i64 %indvars.iv979
  br label %444

444:                                              ; preds = %.preheader584, %444
  %indvars.iv972 = phi i64 [ %443, %.preheader584 ], [ %indvars.iv.next973, %444 ]
  %indvars.iv970 = phi i64 [ 0, %.preheader584 ], [ %indvars.iv.next971, %444 ]
  %445 = mul nsw i64 %indvars.iv970, %438
  %gep1095 = getelementptr %struct.complex, ptr %invariant.gep1094, i64 %445
  %446 = call <2 x float> @Cf(ptr noundef %gep1095)
  %.sroa.02.0.vec.extract = extractelement <2 x float> %446, i64 0
  %.sroa.02.4.vec.extract = extractelement <2 x float> %446, i64 1
  %447 = fneg float %.sroa.02.4.vec.extract
  %448 = call ptr @_pCf(ptr noundef nonnull %9)
  %449 = getelementptr inbounds i8, ptr %448, i64 4
  store float %.sroa.02.0.vec.extract, ptr %448, align 4
  store float %447, ptr %449, align 4
  %450 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv972
  %451 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %451, ptr %450, align 4, !tbaa !9
  %indvars.iv.next973 = add nsw i64 %indvars.iv972, 1
  %indvars.iv.next971 = add nuw nsw i64 %indvars.iv970, 1
  %exitcond978.not = icmp eq i64 %indvars.iv.next971, %wide.trip.count977
  br i1 %exitcond978.not, label %452, label %444, !llvm.loop !55

452:                                              ; preds = %444
  %indvars.iv.next980 = add nsw i64 %indvars.iv979, 1
  %.not540.not = icmp slt i64 %indvars.iv979, %442
  br i1 %.not540.not, label %.preheader584, label %.loopexit, !llvm.loop !56

.lr.ph745:                                        ; preds = %266
  %453 = lshr exact i32 %19, 1
  %454 = zext nneg i32 %453 to i64
  %455 = sext i32 %10 to i64
  %456 = sub nsw i32 %453, %45
  %457 = zext nneg i32 %45 to i64
  br label %458

458:                                              ; preds = %.lr.ph745, %._crit_edge739
  %indvars.iv1009 = phi i64 [ 0, %.lr.ph745 ], [ %indvars.iv.next1010, %._crit_edge739 ]
  %.28742 = phi i32 [ 0, %.lr.ph745 ], [ %.29.lcssa, %._crit_edge739 ]
  %459 = load i32, ptr %2, align 4, !tbaa !5
  %.not537.not734 = icmp slt i32 %45, %459
  br i1 %.not537.not734, label %.lr.ph738.preheader, label %._crit_edge739

.lr.ph738.preheader:                              ; preds = %458
  %460 = sext i32 %.28742 to i64
  %461 = add i32 %456, %459
  %invariant.gep1100 = getelementptr %struct.complex, ptr %3, i64 %indvars.iv1009
  br label %.lr.ph738

.lr.ph738:                                        ; preds = %.lr.ph738.preheader, %.lr.ph738
  %indvars.iv1004 = phi i64 [ %460, %.lr.ph738.preheader ], [ %indvars.iv.next1005, %.lr.ph738 ]
  %indvars.iv1002 = phi i64 [ %454, %.lr.ph738.preheader ], [ %indvars.iv.next1003, %.lr.ph738 ]
  %462 = mul nsw i64 %indvars.iv1002, %455
  %gep1101 = getelementptr %struct.complex, ptr %invariant.gep1100, i64 %462
  %463 = call <2 x float> @Cf(ptr noundef %gep1101)
  %.sroa.01.0.vec.extract = extractelement <2 x float> %463, i64 0
  %.sroa.01.4.vec.extract = extractelement <2 x float> %463, i64 1
  %464 = fneg float %.sroa.01.4.vec.extract
  %465 = call ptr @_pCf(ptr noundef nonnull %9)
  %466 = getelementptr inbounds i8, ptr %465, i64 4
  store float %.sroa.01.0.vec.extract, ptr %465, align 4
  store float %464, ptr %466, align 4
  %467 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv1004
  %468 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %468, ptr %467, align 4, !tbaa !9
  %indvars.iv.next1005 = add nsw i64 %indvars.iv1004, 1
  %indvars.iv.next1003 = add nuw nsw i64 %indvars.iv1002, 1
  %lftr.wideiv1007 = trunc i64 %indvars.iv.next1003 to i32
  %exitcond1008.not = icmp eq i32 %461, %lftr.wideiv1007
  br i1 %exitcond1008.not, label %._crit_edge739.loopexit, label %.lr.ph738, !llvm.loop !57

._crit_edge739.loopexit:                          ; preds = %.lr.ph738
  %469 = trunc nsw i64 %indvars.iv.next1005 to i32
  br label %._crit_edge739

._crit_edge739:                                   ; preds = %._crit_edge739.loopexit, %458
  %.29.lcssa = phi i32 [ %.28742, %458 ], [ %469, %._crit_edge739.loopexit ]
  %indvars.iv.next1010 = add nuw nsw i64 %indvars.iv1009, 1
  %.not532.not = icmp ult i64 %indvars.iv1009, %457
  br i1 %.not532.not, label %458, label %._crit_edge746, !llvm.loop !58

._crit_edge746:                                   ; preds = %._crit_edge739
  %.not533757 = icmp ult i32 %19, 4
  br i1 %.not533757, label %._crit_edge760, label %.preheader.lr.ph

.preheader.lr.ph:                                 ; preds = %._crit_edge746
  %470 = add nsw i32 %45, -2
  %471 = add nuw nsw i32 %45, 1
  %472 = sext i32 %10 to i64
  %473 = zext nneg i32 %471 to i64
  %474 = sext i32 %470 to i64
  %475 = shl nsw i64 %472, 3
  %476 = shl nsw i64 %472, 3
  %477 = add nsw i64 %476, 8
  %scevgep1457 = getelementptr i8, ptr %5, i64 4
  %invariant.gep1685 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1687 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1671 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1675 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1679 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1683 = getelementptr i8, ptr %5, i64 24
  br label %.preheader

.preheader:                                       ; preds = %.preheader.lr.ph, %._crit_edge755
  %indvars.iv1036 = phi i64 [ 0, %.preheader.lr.ph ], [ %indvars.iv.next1037, %._crit_edge755 ]
  %indvars.iv1034 = phi i64 [ 1, %.preheader.lr.ph ], [ %indvars.iv.next1035, %._crit_edge755 ]
  %indvars.iv1023 = phi i32 [ %471, %.preheader.lr.ph ], [ %indvars.iv.next1024, %._crit_edge755 ]
  %.30758 = phi i32 [ %.29.lcssa, %.preheader.lr.ph ], [ %.32.lcssa, %._crit_edge755 ]
  %478 = sext i32 %indvars.iv1023 to i64
  %479 = mul nsw i64 %indvars.iv1036, %472
  %480 = sext i32 %.30758 to i64
  %invariant.gep1102 = getelementptr %struct.complex, ptr %3, i64 %479
  %min.iters.check1472 = icmp ult i64 %indvars.iv1034, 6
  br i1 %min.iters.check1472, label %scalar.ph1471.preheader, label %vector.memcheck1451

vector.memcheck1451:                              ; preds = %.preheader
  %481 = mul i64 %477, %indvars.iv1036
  %gep1686 = getelementptr i8, ptr %invariant.gep1685, i64 %481
  %482 = mul i64 %475, %indvars.iv1036
  %483 = or disjoint i64 %482, 4
  %scevgep1461 = getelementptr i8, ptr %3, i64 %483
  %484 = shl nuw nsw i64 %indvars.iv1036, 3
  %gep1688 = getelementptr i8, ptr %invariant.gep1687, i64 %484
  %485 = or disjoint i64 %481, 4
  %scevgep1456 = getelementptr i8, ptr %3, i64 %485
  %scevgep1455 = getelementptr i8, ptr %3, i64 %482
  %486 = or disjoint i64 %484, 4
  %scevgep1453 = getelementptr i8, ptr %5, i64 %486
  %487 = shl nsw i64 %480, 3
  %scevgep1452 = getelementptr i8, ptr %5, i64 %487
  %scevgep1454 = getelementptr i8, ptr %scevgep1453, i64 %487
  %scevgep1458 = getelementptr i8, ptr %scevgep1457, i64 %487
  %scevgep1460 = getelementptr i8, ptr %gep1688, i64 %487
  %bound01463 = icmp ult ptr %scevgep1452, %scevgep1456
  %bound11464 = icmp ult ptr %scevgep1455, %scevgep1454
  %found.conflict1465 = and i1 %bound01463, %bound11464
  %bound01466 = icmp ult ptr %scevgep1458, %gep1686
  %bound11467 = icmp ult ptr %scevgep1461, %scevgep1460
  %found.conflict1468 = and i1 %bound01466, %bound11467
  %conflict.rdx1469 = or i1 %found.conflict1465, %found.conflict1468
  br i1 %conflict.rdx1469, label %scalar.ph1471.preheader, label %vector.ph1473

vector.ph1473:                                    ; preds = %vector.memcheck1451
  %n.vec1475 = and i64 %indvars.iv1034, 9223372036854775804
  %ind.end1476 = add i64 %n.vec1475, %480
  %488 = insertelement <2 x i32> <i32 poison, i32 0>, i32 %.30758, i64 0
  br label %vector.body1479

vector.body1479:                                  ; preds = %vector.body1479, %vector.ph1473
  %index1480 = phi i64 [ 0, %vector.ph1473 ], [ %index.next1492, %vector.body1479 ]
  %vec.phi1481 = phi <2 x i32> [ %488, %vector.ph1473 ], [ %490, %vector.body1479 ]
  %vec.phi1482 = phi <2 x i32> [ zeroinitializer, %vector.ph1473 ], [ %491, %vector.body1479 ]
  %offset.idx1483 = add i64 %index1480, %480
  %489 = or disjoint i64 %index1480, 2
  %490 = add <2 x i32> %vec.phi1481, <i32 1, i32 1>
  %491 = add <2 x i32> %vec.phi1482, <i32 1, i32 1>
  %492 = getelementptr %struct.complex, ptr %invariant.gep1102, i64 %index1480
  %493 = getelementptr %struct.complex, ptr %invariant.gep1102, i64 %489
  %wide.vec1484 = load <4 x float>, ptr %492, align 4, !tbaa !9
  %wide.vec1485 = load <4 x float>, ptr %493, align 4, !tbaa !9
  %494 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx1483
  %gep1672 = getelementptr %struct.complex, ptr %invariant.gep1671, i64 %offset.idx1483
  store <4 x float> %wide.vec1484, ptr %494, align 4, !tbaa !9
  store <4 x float> %wide.vec1485, ptr %gep1672, align 4, !tbaa !9
  %index.next1492 = add nuw i64 %index1480, 4
  %495 = icmp eq i64 %index.next1492, %n.vec1475
  br i1 %495, label %middle.block1470, label %vector.body1479, !llvm.loop !59

middle.block1470:                                 ; preds = %vector.body1479
  %bin.rdx1493 = add <2 x i32> %491, %490
  %496 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %bin.rdx1493)
  %cmp.n1494 = icmp eq i64 %indvars.iv1034, %n.vec1475
  br i1 %cmp.n1494, label %.loopexit1533, label %scalar.ph1471.preheader

scalar.ph1471.preheader:                          ; preds = %middle.block1470, %vector.memcheck1451, %.preheader
  %indvars.iv1027.in.ph = phi i32 [ %.30758, %vector.memcheck1451 ], [ %.30758, %.preheader ], [ %496, %middle.block1470 ]
  %indvars.iv1014.ph = phi i64 [ %480, %vector.memcheck1451 ], [ %480, %.preheader ], [ %ind.end1476, %middle.block1470 ]
  %indvars.iv1012.ph = phi i64 [ 0, %vector.memcheck1451 ], [ 0, %.preheader ], [ %n.vec1475, %middle.block1470 ]
  %497 = sub nsw i64 %indvars.iv1036, %indvars.iv1012.ph
  %xtraiter1567 = and i64 %indvars.iv1034, 3
  %lcmp.mod1568.not = icmp eq i64 %xtraiter1567, 0
  br i1 %lcmp.mod1568.not, label %scalar.ph1471.prol.loopexit, label %scalar.ph1471.prol

scalar.ph1471.prol:                               ; preds = %scalar.ph1471.preheader, %scalar.ph1471.prol
  %indvars.iv1027.in.prol = phi i32 [ %indvars.iv1027.prol, %scalar.ph1471.prol ], [ %indvars.iv1027.in.ph, %scalar.ph1471.preheader ]
  %indvars.iv1014.prol = phi i64 [ %indvars.iv.next1015.prol, %scalar.ph1471.prol ], [ %indvars.iv1014.ph, %scalar.ph1471.preheader ]
  %indvars.iv1012.prol = phi i64 [ %indvars.iv.next1013.prol, %scalar.ph1471.prol ], [ %indvars.iv1012.ph, %scalar.ph1471.preheader ]
  %prol.iter1569 = phi i64 [ %prol.iter1569.next, %scalar.ph1471.prol ], [ 0, %scalar.ph1471.preheader ]
  %indvars.iv1027.prol = add i32 %indvars.iv1027.in.prol, 1
  %gep1103.prol = getelementptr %struct.complex, ptr %invariant.gep1102, i64 %indvars.iv1012.prol
  %498 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv1014.prol
  %499 = load <2 x float>, ptr %gep1103.prol, align 4, !tbaa !9
  store <2 x float> %499, ptr %498, align 4, !tbaa !9
  %indvars.iv.next1015.prol = add nsw i64 %indvars.iv1014.prol, 1
  %indvars.iv.next1013.prol = add nuw nsw i64 %indvars.iv1012.prol, 1
  %prol.iter1569.next = add i64 %prol.iter1569, 1
  %prol.iter1569.cmp.not = icmp eq i64 %prol.iter1569.next, %xtraiter1567
  br i1 %prol.iter1569.cmp.not, label %scalar.ph1471.prol.loopexit, label %scalar.ph1471.prol, !llvm.loop !60

scalar.ph1471.prol.loopexit:                      ; preds = %scalar.ph1471.prol, %scalar.ph1471.preheader
  %indvars.iv1027.lcssa1537.unr = phi i32 [ poison, %scalar.ph1471.preheader ], [ %indvars.iv1027.prol, %scalar.ph1471.prol ]
  %indvars.iv.next1015.lcssa1536.unr = phi i64 [ poison, %scalar.ph1471.preheader ], [ %indvars.iv.next1015.prol, %scalar.ph1471.prol ]
  %indvars.iv1027.in.unr = phi i32 [ %indvars.iv1027.in.ph, %scalar.ph1471.preheader ], [ %indvars.iv1027.prol, %scalar.ph1471.prol ]
  %indvars.iv1014.unr = phi i64 [ %indvars.iv1014.ph, %scalar.ph1471.preheader ], [ %indvars.iv.next1015.prol, %scalar.ph1471.prol ]
  %indvars.iv1012.unr = phi i64 [ %indvars.iv1012.ph, %scalar.ph1471.preheader ], [ %indvars.iv.next1013.prol, %scalar.ph1471.prol ]
  %500 = icmp ult i64 %497, 3
  br i1 %500, label %.loopexit1533, label %scalar.ph1471.preheader.new

scalar.ph1471.preheader.new:                      ; preds = %scalar.ph1471.prol.loopexit
  %invariant.gep1673 = getelementptr i8, ptr %invariant.gep1102, i64 8
  %invariant.gep1677 = getelementptr i8, ptr %invariant.gep1102, i64 16
  %invariant.gep1681 = getelementptr i8, ptr %invariant.gep1102, i64 24
  br label %scalar.ph1471

scalar.ph1471:                                    ; preds = %scalar.ph1471, %scalar.ph1471.preheader.new
  %indvars.iv1027.in = phi i32 [ %indvars.iv1027.in.unr, %scalar.ph1471.preheader.new ], [ %indvars.iv1027.3, %scalar.ph1471 ]
  %indvars.iv1014 = phi i64 [ %indvars.iv1014.unr, %scalar.ph1471.preheader.new ], [ %indvars.iv.next1015.3, %scalar.ph1471 ]
  %indvars.iv1012 = phi i64 [ %indvars.iv1012.unr, %scalar.ph1471.preheader.new ], [ %indvars.iv.next1013.3, %scalar.ph1471 ]
  %gep1103 = getelementptr %struct.complex, ptr %invariant.gep1102, i64 %indvars.iv1012
  %501 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv1014
  %502 = load <2 x float>, ptr %gep1103, align 4, !tbaa !9
  store <2 x float> %502, ptr %501, align 4, !tbaa !9
  %gep1674 = getelementptr %struct.complex, ptr %invariant.gep1673, i64 %indvars.iv1012
  %gep1676 = getelementptr %struct.complex, ptr %invariant.gep1675, i64 %indvars.iv1014
  %503 = load <2 x float>, ptr %gep1674, align 4, !tbaa !9
  store <2 x float> %503, ptr %gep1676, align 4, !tbaa !9
  %gep1678 = getelementptr %struct.complex, ptr %invariant.gep1677, i64 %indvars.iv1012
  %gep1680 = getelementptr %struct.complex, ptr %invariant.gep1679, i64 %indvars.iv1014
  %504 = load <2 x float>, ptr %gep1678, align 4, !tbaa !9
  store <2 x float> %504, ptr %gep1680, align 4, !tbaa !9
  %indvars.iv1027.3 = add i32 %indvars.iv1027.in, 4
  %gep1682 = getelementptr %struct.complex, ptr %invariant.gep1681, i64 %indvars.iv1012
  %gep1684 = getelementptr %struct.complex, ptr %invariant.gep1683, i64 %indvars.iv1014
  %505 = load <2 x float>, ptr %gep1682, align 4, !tbaa !9
  store <2 x float> %505, ptr %gep1684, align 4, !tbaa !9
  %indvars.iv.next1015.3 = add nsw i64 %indvars.iv1014, 4
  %indvars.iv.next1013.3 = add nuw nsw i64 %indvars.iv1012, 4
  %exitcond1022.not.3 = icmp eq i64 %indvars.iv.next1013.3, %indvars.iv1034
  br i1 %exitcond1022.not.3, label %.loopexit1533, label %scalar.ph1471, !llvm.loop !61

.loopexit1533:                                    ; preds = %scalar.ph1471.prol.loopexit, %scalar.ph1471, %middle.block1470
  %indvars.iv1027.lcssa = phi i32 [ %496, %middle.block1470 ], [ %indvars.iv1027.lcssa1537.unr, %scalar.ph1471.prol.loopexit ], [ %indvars.iv1027.3, %scalar.ph1471 ]
  %indvars.iv.next1015.lcssa = phi i64 [ %ind.end1476, %middle.block1470 ], [ %indvars.iv.next1015.lcssa1536.unr, %scalar.ph1471.prol.loopexit ], [ %indvars.iv.next1015.3, %scalar.ph1471 ]
  %506 = load i32, ptr %2, align 4, !tbaa !5
  %507 = add nuw nsw i64 %indvars.iv1036, %473
  %508 = sext i32 %506 to i64
  %.not536.not750 = icmp slt i64 %507, %508
  br i1 %.not536.not750, label %.lr.ph754.preheader, label %._crit_edge755

.lr.ph754.preheader:                              ; preds = %.loopexit1533
  %509 = sext i32 %indvars.iv1027.lcssa to i64
  %invariant.gep1104 = getelementptr %struct.complex, ptr %3, i64 %507
  br label %.lr.ph754

.lr.ph754:                                        ; preds = %.lr.ph754.preheader, %.lr.ph754
  %indvars.iv1029 = phi i64 [ %509, %.lr.ph754.preheader ], [ %indvars.iv.next1030, %.lr.ph754 ]
  %indvars.iv1025 = phi i64 [ %478, %.lr.ph754.preheader ], [ %indvars.iv.next1026, %.lr.ph754 ]
  %510 = mul nsw i64 %indvars.iv1025, %472
  %gep1105 = getelementptr %struct.complex, ptr %invariant.gep1104, i64 %510
  %511 = call <2 x float> @Cf(ptr noundef %gep1105)
  %.sroa.0.0.vec.extract = extractelement <2 x float> %511, i64 0
  %.sroa.0.4.vec.extract = extractelement <2 x float> %511, i64 1
  %512 = fneg float %.sroa.0.4.vec.extract
  %513 = call ptr @_pCf(ptr noundef nonnull %9)
  %514 = getelementptr inbounds i8, ptr %513, i64 4
  store float %.sroa.0.0.vec.extract, ptr %513, align 4
  store float %512, ptr %514, align 4
  %515 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv1029
  %516 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %516, ptr %515, align 4, !tbaa !9
  %indvars.iv.next1030 = add nsw i64 %indvars.iv1029, 1
  %indvars.iv.next1026 = add nuw nsw i64 %indvars.iv1025, 1
  %.not536.not = icmp slt i64 %indvars.iv.next1026, %508
  br i1 %.not536.not, label %.lr.ph754, label %._crit_edge755, !llvm.loop !62

._crit_edge755:                                   ; preds = %.lr.ph754, %.loopexit1533
  %.32.lcssa.in = phi i64 [ %indvars.iv.next1015.lcssa, %.loopexit1533 ], [ %indvars.iv.next1030, %.lr.ph754 ]
  %.32.lcssa = trunc i64 %.32.lcssa.in to i32
  %indvars.iv.next1037 = add nuw nsw i64 %indvars.iv1036, 1
  %.not533.not = icmp slt i64 %indvars.iv1036, %474
  %indvars.iv.next1035 = add nuw nsw i64 %indvars.iv1034, 1
  %indvars.iv.next1024 = add i32 %indvars.iv1023, 1
  br i1 %.not533.not, label %.preheader, label %._crit_edge760.loopexit, !llvm.loop !63

._crit_edge760.loopexit:                          ; preds = %._crit_edge755
  %517 = trunc nsw i64 %indvars.iv.next1037 to i32
  br label %._crit_edge760

._crit_edge760:                                   ; preds = %._crit_edge760.loopexit, %._crit_edge746
  %.30.lcssa = phi i32 [ %.29.lcssa, %._crit_edge746 ], [ %.32.lcssa, %._crit_edge760.loopexit ]
  %.11492.lcssa = phi i32 [ 0, %._crit_edge746 ], [ %517, %._crit_edge760.loopexit ]
  %518 = mul nsw i32 %.11492.lcssa, %10
  %519 = sext i32 %518 to i64
  %520 = sext i32 %.30.lcssa to i64
  %521 = add nuw i32 %.11492.lcssa, 1
  %wide.trip.count1048 = zext i32 %521 to i64
  %invariant.gep1106 = getelementptr %struct.complex, ptr %3, i64 %519
  %min.iters.check1513 = icmp ult i32 %.11492.lcssa, 29
  br i1 %min.iters.check1513, label %scalar.ph1512.preheader, label %vector.memcheck1496

vector.memcheck1496:                              ; preds = %._crit_edge760
  %522 = shl nsw i64 %520, 3
  %scevgep1497 = getelementptr i8, ptr %5, i64 %522
  %523 = zext nneg i32 %.11492.lcssa to i64
  %524 = shl nuw nsw i64 %523, 3
  %525 = add nsw i64 %522, %524
  %526 = or disjoint i64 %525, 4
  %scevgep1498 = getelementptr i8, ptr %5, i64 %526
  %527 = shl nsw i64 %519, 3
  %528 = add nsw i64 %527, %524
  %529 = or disjoint i64 %528, 4
  %scevgep1499 = getelementptr i8, ptr %3, i64 %529
  %530 = or disjoint i64 %522, 4
  %scevgep1500 = getelementptr i8, ptr %5, i64 %530
  %531 = getelementptr i8, ptr %5, i64 %522
  %532 = getelementptr i8, ptr %531, i64 %524
  %scevgep1501 = getelementptr i8, ptr %532, i64 8
  %533 = or disjoint i64 %527, 4
  %scevgep1502 = getelementptr i8, ptr %3, i64 %533
  %534 = getelementptr i8, ptr %3, i64 %527
  %535 = getelementptr i8, ptr %534, i64 %524
  %scevgep1503 = getelementptr i8, ptr %535, i64 8
  %bound01504 = icmp ult ptr %scevgep1497, %scevgep1499
  %bound11505 = icmp ult ptr %invariant.gep1106, %scevgep1498
  %found.conflict1506 = and i1 %bound01504, %bound11505
  %bound01507 = icmp ult ptr %scevgep1500, %scevgep1503
  %bound11508 = icmp ult ptr %scevgep1502, %scevgep1501
  %found.conflict1509 = and i1 %bound01507, %bound11508
  %conflict.rdx1510 = or i1 %found.conflict1506, %found.conflict1509
  br i1 %conflict.rdx1510, label %scalar.ph1512.preheader, label %vector.ph1514

vector.ph1514:                                    ; preds = %vector.memcheck1496
  %n.vec1516 = and i64 %wide.trip.count1048, 4294967292
  %ind.end1517 = add nsw i64 %n.vec1516, %520
  %invariant.gep1689 = getelementptr i8, ptr %5, i64 16
  br label %vector.body1520

vector.body1520:                                  ; preds = %vector.body1520, %vector.ph1514
  %index1521 = phi i64 [ 0, %vector.ph1514 ], [ %index.next1531, %vector.body1520 ]
  %offset.idx1522 = add i64 %index1521, %520
  %536 = or disjoint i64 %index1521, 2
  %537 = getelementptr %struct.complex, ptr %invariant.gep1106, i64 %index1521
  %538 = getelementptr %struct.complex, ptr %invariant.gep1106, i64 %536
  %wide.vec1523 = load <4 x float>, ptr %537, align 4, !tbaa !9
  %wide.vec1524 = load <4 x float>, ptr %538, align 4, !tbaa !9
  %539 = getelementptr inbounds %struct.complex, ptr %5, i64 %offset.idx1522
  %gep1690 = getelementptr %struct.complex, ptr %invariant.gep1689, i64 %offset.idx1522
  store <4 x float> %wide.vec1523, ptr %539, align 4, !tbaa !9
  store <4 x float> %wide.vec1524, ptr %gep1690, align 4, !tbaa !9
  %index.next1531 = add nuw i64 %index1521, 4
  %540 = icmp eq i64 %index.next1531, %n.vec1516
  br i1 %540, label %middle.block1511, label %vector.body1520, !llvm.loop !64

middle.block1511:                                 ; preds = %vector.body1520
  %cmp.n1532 = icmp eq i64 %n.vec1516, %wide.trip.count1048
  br i1 %cmp.n1532, label %.loopexit, label %scalar.ph1512.preheader

scalar.ph1512.preheader:                          ; preds = %middle.block1511, %vector.memcheck1496, %._crit_edge760
  %indvars.iv1043.ph = phi i64 [ %520, %vector.memcheck1496 ], [ %520, %._crit_edge760 ], [ %ind.end1517, %middle.block1511 ]
  %indvars.iv1041.ph = phi i64 [ 0, %vector.memcheck1496 ], [ 0, %._crit_edge760 ], [ %n.vec1516, %middle.block1511 ]
  %541 = zext nneg i32 %.11492.lcssa to i64
  %542 = add nuw nsw i64 %541, 1
  %543 = sub nsw i64 %541, %indvars.iv1041.ph
  %xtraiter1570 = and i64 %542, 3
  %lcmp.mod1571.not = icmp eq i64 %xtraiter1570, 0
  br i1 %lcmp.mod1571.not, label %scalar.ph1512.prol.loopexit, label %scalar.ph1512.prol

scalar.ph1512.prol:                               ; preds = %scalar.ph1512.preheader, %scalar.ph1512.prol
  %indvars.iv1043.prol = phi i64 [ %indvars.iv.next1044.prol, %scalar.ph1512.prol ], [ %indvars.iv1043.ph, %scalar.ph1512.preheader ]
  %indvars.iv1041.prol = phi i64 [ %indvars.iv.next1042.prol, %scalar.ph1512.prol ], [ %indvars.iv1041.ph, %scalar.ph1512.preheader ]
  %prol.iter1572 = phi i64 [ %prol.iter1572.next, %scalar.ph1512.prol ], [ 0, %scalar.ph1512.preheader ]
  %gep1107.prol = getelementptr %struct.complex, ptr %invariant.gep1106, i64 %indvars.iv1041.prol
  %544 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv1043.prol
  %545 = load <2 x float>, ptr %gep1107.prol, align 4, !tbaa !9
  store <2 x float> %545, ptr %544, align 4, !tbaa !9
  %indvars.iv.next1044.prol = add nsw i64 %indvars.iv1043.prol, 1
  %indvars.iv.next1042.prol = add nuw nsw i64 %indvars.iv1041.prol, 1
  %prol.iter1572.next = add i64 %prol.iter1572, 1
  %prol.iter1572.cmp.not = icmp eq i64 %prol.iter1572.next, %xtraiter1570
  br i1 %prol.iter1572.cmp.not, label %scalar.ph1512.prol.loopexit, label %scalar.ph1512.prol, !llvm.loop !65

scalar.ph1512.prol.loopexit:                      ; preds = %scalar.ph1512.prol, %scalar.ph1512.preheader
  %indvars.iv1043.unr = phi i64 [ %indvars.iv1043.ph, %scalar.ph1512.preheader ], [ %indvars.iv.next1044.prol, %scalar.ph1512.prol ]
  %indvars.iv1041.unr = phi i64 [ %indvars.iv1041.ph, %scalar.ph1512.preheader ], [ %indvars.iv.next1042.prol, %scalar.ph1512.prol ]
  %546 = icmp ult i64 %543, 3
  br i1 %546, label %.loopexit, label %scalar.ph1512.preheader.new

scalar.ph1512.preheader.new:                      ; preds = %scalar.ph1512.prol.loopexit
  %invariant.gep1691 = getelementptr i8, ptr %invariant.gep1106, i64 8
  %invariant.gep1693 = getelementptr i8, ptr %5, i64 8
  %invariant.gep1695 = getelementptr i8, ptr %invariant.gep1106, i64 16
  %invariant.gep1697 = getelementptr i8, ptr %5, i64 16
  %invariant.gep1699 = getelementptr i8, ptr %invariant.gep1106, i64 24
  %invariant.gep1701 = getelementptr i8, ptr %5, i64 24
  br label %scalar.ph1512

scalar.ph1512:                                    ; preds = %scalar.ph1512, %scalar.ph1512.preheader.new
  %indvars.iv1043 = phi i64 [ %indvars.iv1043.unr, %scalar.ph1512.preheader.new ], [ %indvars.iv.next1044.3, %scalar.ph1512 ]
  %indvars.iv1041 = phi i64 [ %indvars.iv1041.unr, %scalar.ph1512.preheader.new ], [ %indvars.iv.next1042.3, %scalar.ph1512 ]
  %gep1107 = getelementptr %struct.complex, ptr %invariant.gep1106, i64 %indvars.iv1041
  %547 = getelementptr inbounds %struct.complex, ptr %5, i64 %indvars.iv1043
  %548 = load <2 x float>, ptr %gep1107, align 4, !tbaa !9
  store <2 x float> %548, ptr %547, align 4, !tbaa !9
  %gep1692 = getelementptr %struct.complex, ptr %invariant.gep1691, i64 %indvars.iv1041
  %gep1694 = getelementptr %struct.complex, ptr %invariant.gep1693, i64 %indvars.iv1043
  %549 = load <2 x float>, ptr %gep1692, align 4, !tbaa !9
  store <2 x float> %549, ptr %gep1694, align 4, !tbaa !9
  %gep1696 = getelementptr %struct.complex, ptr %invariant.gep1695, i64 %indvars.iv1041
  %gep1698 = getelementptr %struct.complex, ptr %invariant.gep1697, i64 %indvars.iv1043
  %550 = load <2 x float>, ptr %gep1696, align 4, !tbaa !9
  store <2 x float> %550, ptr %gep1698, align 4, !tbaa !9
  %gep1700 = getelementptr %struct.complex, ptr %invariant.gep1699, i64 %indvars.iv1041
  %gep1702 = getelementptr %struct.complex, ptr %invariant.gep1701, i64 %indvars.iv1043
  %551 = load <2 x float>, ptr %gep1700, align 4, !tbaa !9
  store <2 x float> %551, ptr %gep1702, align 4, !tbaa !9
  %indvars.iv.next1044.3 = add nsw i64 %indvars.iv1043, 4
  %indvars.iv.next1042.3 = add nuw nsw i64 %indvars.iv1041, 4
  %exitcond1049.not.3 = icmp eq i64 %indvars.iv.next1042.3, %wide.trip.count1048
  br i1 %exitcond1049.not.3, label %.loopexit, label %scalar.ph1512, !llvm.loop !66

.loopexit:                                        ; preds = %._crit_edge604, %._crit_edge622, %._crit_edge647.us, %._crit_edge673, %._crit_edge685, %452, %._crit_edge727, %scalar.ph1512.prol.loopexit, %scalar.ph1512, %middle.block1511, %._crit_edge641, %._crit_edge664, %._crit_edge709, %30, %35, %33, %.thread
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #6
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #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 i32 @llvm.umax.i32(i32, i32) #5

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.vector.reduce.add.v2i32(<2 x i32>) #5

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i64 @llvm.umax.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}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12, !14, !15}
!14 = !{!"llvm.loop.isvectorized", i32 1}
!15 = !{!"llvm.loop.unroll.runtime.disable"}
!16 = distinct !{!16, !17}
!17 = !{!"llvm.loop.unroll.disable"}
!18 = distinct !{!18, !12, !14}
!19 = distinct !{!19, !12}
!20 = distinct !{!20, !12, !14, !15}
!21 = distinct !{!21, !17}
!22 = distinct !{!22, !12, !14}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}
!25 = distinct !{!25, !12}
!26 = distinct !{!26, !12, !14, !15}
!27 = distinct !{!27, !12, !14}
!28 = distinct !{!28, !12}
!29 = distinct !{!29, !12}
!30 = distinct !{!30, !12}
!31 = distinct !{!31, !12}
!32 = distinct !{!32, !12, !33}
!33 = !{!"llvm.loop.unswitch.partial.disable"}
!34 = distinct !{!34, !12, !14, !15}
!35 = distinct !{!35, !17}
!36 = distinct !{!36, !12, !14}
!37 = distinct !{!37, !12}
!38 = distinct !{!38, !12}
!39 = distinct !{!39, !12}
!40 = distinct !{!40, !12, !14, !15}
!41 = distinct !{!41, !17}
!42 = distinct !{!42, !12, !14}
!43 = distinct !{!43, !12}
!44 = distinct !{!44, !12, !14, !15}
!45 = distinct !{!45, !17}
!46 = distinct !{!46, !12, !14}
!47 = distinct !{!47, !12}
!48 = distinct !{!48, !12}
!49 = distinct !{!49, !12, !14, !15}
!50 = distinct !{!50, !12, !14}
!51 = distinct !{!51, !12}
!52 = distinct !{!52, !12, !14, !15}
!53 = distinct !{!53, !12, !14}
!54 = distinct !{!54, !12}
!55 = distinct !{!55, !12}
!56 = distinct !{!56, !12}
!57 = distinct !{!57, !12}
!58 = distinct !{!58, !12}
!59 = distinct !{!59, !12, !14, !15}
!60 = distinct !{!60, !17}
!61 = distinct !{!61, !12, !14}
!62 = distinct !{!62, !12}
!63 = distinct !{!63, !12}
!64 = distinct !{!64, !12, !14, !15}
!65 = distinct !{!65, !17}
!66 = distinct !{!66, !12, !14}


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