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

; 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 @ctfttr_(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 %13, 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 %12, 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 %12, 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 %13, 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 -6, 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 %12, 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 %12, 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 %12, 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 %12, 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 %30, align 4, !tbaa !9
  %247 = load i32, ptr %24, align 4, !tbaa !9
  %248 = add nsw i32 %246, %247
  %249 = load i32, ptr %23, align 4, !tbaa !9
  %250 = load i32, ptr %15, align 4, !tbaa !9
  %251 = mul nsw i32 %249, %250
  %252 = add nsw i32 %248, %251
  store i32 %252, ptr %19, align 4, !tbaa !9
  %253 = load ptr, ptr %11, align 8, !tbaa !5
  %254 = load i32, ptr %31, align 4, !tbaa !9
  %255 = sext i32 %254 to i64
  %256 = getelementptr inbounds %struct.complex, ptr %253, 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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %296 = load i32, ptr %24, align 4, !tbaa !9
  %297 = load i32, ptr %15, align 4, !tbaa !9
  %298 = mul nsw i32 %296, %297
  %299 = add nsw i32 %295, %298
  store i32 %299, ptr %19, align 4, !tbaa !9
  %300 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %354 = load i32, ptr %24, align 4, !tbaa !9
  %355 = load i32, ptr %15, align 4, !tbaa !9
  %356 = mul nsw i32 %354, %355
  %357 = add nsw i32 %353, %356
  store i32 %357, ptr %19, align 4, !tbaa !9
  %358 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %24, align 4, !tbaa !9
  %398 = load i32, ptr %29, align 4, !tbaa !9
  %399 = sub nsw i32 %397, %398
  %400 = load i32, ptr %26, align 4, !tbaa !9
  %401 = load i32, ptr %15, align 4, !tbaa !9
  %402 = mul nsw i32 %400, %401
  %403 = add nsw i32 %399, %402
  store i32 %403, ptr %19, align 4, !tbaa !9
  %404 = load ptr, ptr %11, align 8, !tbaa !5
  %405 = load i32, ptr %31, align 4, !tbaa !9
  %406 = sext i32 %405 to i64
  %407 = getelementptr inbounds %struct.complex, ptr %404, 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 %12, 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 %12, 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 %24, align 4, !tbaa !9
  %463 = load i32, ptr %23, align 4, !tbaa !9
  %464 = load i32, ptr %15, align 4, !tbaa !9
  %465 = mul nsw i32 %463, %464
  %466 = add nsw i32 %462, %465
  store i32 %466, ptr %19, align 4, !tbaa !9
  %467 = load ptr, ptr %11, align 8, !tbaa !5
  %468 = load i32, ptr %31, align 4, !tbaa !9
  %469 = sext i32 %468 to i64
  %470 = getelementptr inbounds %struct.complex, ptr %467, 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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %512 = load i32, ptr %29, align 4, !tbaa !9
  %513 = load i32, ptr %24, align 4, !tbaa !9
  %514 = add nsw i32 %512, %513
  %515 = load i32, ptr %15, align 4, !tbaa !9
  %516 = mul nsw i32 %514, %515
  %517 = add nsw i32 %511, %516
  store i32 %517, ptr %19, align 4, !tbaa !9
  %518 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %24, align 4, !tbaa !9
  %568 = load i32, ptr %23, align 4, !tbaa !9
  %569 = load i32, ptr %15, align 4, !tbaa !9
  %570 = mul nsw i32 %568, %569
  %571 = add nsw i32 %567, %570
  store i32 %571, ptr %19, align 4, !tbaa !9
  %572 = load ptr, ptr %11, align 8, !tbaa !5
  %573 = load i32, ptr %31, align 4, !tbaa !9
  %574 = sext i32 %573 to i64
  %575 = getelementptr inbounds %struct.complex, ptr %572, 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 %12, 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 %12, 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 %24, align 4, !tbaa !9
  %626 = load i32, ptr %23, align 4, !tbaa !9
  %627 = load i32, ptr %15, align 4, !tbaa !9
  %628 = mul nsw i32 %626, %627
  %629 = add nsw i32 %625, %628
  store i32 %629, ptr %19, align 4, !tbaa !9
  %630 = load ptr, ptr %11, align 8, !tbaa !5
  %631 = load i32, ptr %31, align 4, !tbaa !9
  %632 = sext i32 %631 to i64
  %633 = getelementptr inbounds %struct.complex, ptr %630, 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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %681 = load i32, ptr %24, align 4, !tbaa !9
  %682 = load i32, ptr %15, align 4, !tbaa !9
  %683 = mul nsw i32 %681, %682
  %684 = add nsw i32 %680, %683
  store i32 %684, ptr %19, align 4, !tbaa !9
  %685 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %30, align 4, !tbaa !9
  %726 = load i32, ptr %24, align 4, !tbaa !9
  %727 = add nsw i32 %725, %726
  %728 = load i32, ptr %26, align 4, !tbaa !9
  %729 = load i32, ptr %15, align 4, !tbaa !9
  %730 = mul nsw i32 %728, %729
  %731 = add nsw i32 %727, %730
  store i32 %731, ptr %19, align 4, !tbaa !9
  %732 = load ptr, ptr %11, align 8, !tbaa !5
  %733 = load i32, ptr %31, align 4, !tbaa !9
  %734 = sext i32 %733 to i64
  %735 = getelementptr inbounds %struct.complex, ptr %732, 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 %12, 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 %12, 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 %25, align 4, !tbaa !9
  %795 = load i32, ptr %24, align 4, !tbaa !9
  %796 = add nsw i32 %794, %795
  %797 = load i32, ptr %23, align 4, !tbaa !9
  %798 = load i32, ptr %15, align 4, !tbaa !9
  %799 = mul nsw i32 %797, %798
  %800 = add nsw i32 %796, %799
  store i32 %800, ptr %19, align 4, !tbaa !9
  %801 = load ptr, ptr %11, align 8, !tbaa !5
  %802 = load i32, ptr %31, align 4, !tbaa !9
  %803 = sext i32 %802 to i64
  %804 = getelementptr inbounds %struct.complex, ptr %801, 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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %844 = load i32, ptr %24, align 4, !tbaa !9
  %845 = load i32, ptr %15, align 4, !tbaa !9
  %846 = mul nsw i32 %844, %845
  %847 = add nsw i32 %843, %846
  store i32 %847, ptr %19, align 4, !tbaa !9
  %848 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %903 = load i32, ptr %24, align 4, !tbaa !9
  %904 = load i32, ptr %15, align 4, !tbaa !9
  %905 = mul nsw i32 %903, %904
  %906 = add nsw i32 %902, %905
  store i32 %906, ptr %19, align 4, !tbaa !9
  %907 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %24, align 4, !tbaa !9
  %947 = load i32, ptr %25, align 4, !tbaa !9
  %948 = sub nsw i32 %946, %947
  %949 = load i32, ptr %26, align 4, !tbaa !9
  %950 = load i32, ptr %15, align 4, !tbaa !9
  %951 = mul nsw i32 %949, %950
  %952 = add nsw i32 %948, %951
  store i32 %952, ptr %19, align 4, !tbaa !9
  %953 = load ptr, ptr %11, align 8, !tbaa !5
  %954 = load i32, ptr %31, align 4, !tbaa !9
  %955 = sext i32 %954 to i64
  %956 = getelementptr inbounds %struct.complex, ptr %953, 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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %1009 = load i32, ptr %24, align 4, !tbaa !9
  %1010 = load i32, ptr %15, align 4, !tbaa !9
  %1011 = mul nsw i32 %1009, %1010
  %1012 = add nsw i32 %1008, %1011
  store i32 %1012, ptr %18, align 4, !tbaa !9
  %1013 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %24, align 4, !tbaa !9
  %1056 = load i32, ptr %23, align 4, !tbaa !9
  %1057 = load i32, ptr %15, align 4, !tbaa !9
  %1058 = mul nsw i32 %1056, %1057
  %1059 = add nsw i32 %1055, %1058
  store i32 %1059, ptr %19, align 4, !tbaa !9
  %1060 = load ptr, ptr %11, align 8, !tbaa !5
  %1061 = load i32, ptr %31, align 4, !tbaa !9
  %1062 = sext i32 %1061 to i64
  %1063 = getelementptr inbounds %struct.complex, ptr %1060, 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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %1106 = load i32, ptr %25, align 4, !tbaa !9
  %1107 = add nsw i32 %1106, 1
  %1108 = load i32, ptr %24, align 4, !tbaa !9
  %1109 = add nsw i32 %1107, %1108
  %1110 = load i32, ptr %15, align 4, !tbaa !9
  %1111 = mul nsw i32 %1109, %1110
  %1112 = add nsw i32 %1105, %1111
  store i32 %1112, ptr %19, align 4, !tbaa !9
  %1113 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %24, align 4, !tbaa !9
  %1164 = load i32, ptr %23, align 4, !tbaa !9
  %1165 = load i32, ptr %15, align 4, !tbaa !9
  %1166 = mul nsw i32 %1164, %1165
  %1167 = add nsw i32 %1163, %1166
  store i32 %1167, ptr %19, align 4, !tbaa !9
  %1168 = load ptr, ptr %11, align 8, !tbaa !5
  %1169 = load i32, ptr %31, align 4, !tbaa !9
  %1170 = sext i32 %1169 to i64
  %1171 = getelementptr inbounds %struct.complex, ptr %1168, 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 %12, 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 %12, 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 %24, align 4, !tbaa !9
  %1222 = load i32, ptr %23, align 4, !tbaa !9
  %1223 = load i32, ptr %15, align 4, !tbaa !9
  %1224 = mul nsw i32 %1222, %1223
  %1225 = add nsw i32 %1221, %1224
  store i32 %1225, ptr %19, align 4, !tbaa !9
  %1226 = load ptr, ptr %11, align 8, !tbaa !5
  %1227 = load i32, ptr %31, align 4, !tbaa !9
  %1228 = sext i32 %1227 to i64
  %1229 = getelementptr inbounds %struct.complex, ptr %1226, 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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %1277 = load i32, ptr %24, align 4, !tbaa !9
  %1278 = load i32, ptr %15, align 4, !tbaa !9
  %1279 = mul nsw i32 %1277, %1278
  %1280 = add nsw i32 %1276, %1279
  store i32 %1280, ptr %19, align 4, !tbaa !9
  %1281 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 %25, align 4, !tbaa !9
  %1323 = add nsw i32 %1322, 1
  %1324 = load i32, ptr %24, align 4, !tbaa !9
  %1325 = add nsw i32 %1323, %1324
  %1326 = load i32, ptr %26, align 4, !tbaa !9
  %1327 = load i32, ptr %15, align 4, !tbaa !9
  %1328 = mul nsw i32 %1326, %1327
  %1329 = add nsw i32 %1325, %1328
  store i32 %1329, ptr %19, align 4, !tbaa !9
  %1330 = load ptr, ptr %11, align 8, !tbaa !5
  %1331 = load i32, ptr %31, align 4, !tbaa !9
  %1332 = sext i32 %1331 to i64
  %1333 = getelementptr inbounds %struct.complex, ptr %1330, 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 %12, 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 %12, 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 %23, align 4, !tbaa !9
  %1374 = load i32, ptr %24, align 4, !tbaa !9
  %1375 = load i32, ptr %15, align 4, !tbaa !9
  %1376 = mul nsw i32 %1374, %1375
  %1377 = add nsw i32 %1373, %1376
  store i32 %1377, ptr %18, align 4, !tbaa !9
  %1378 = load i32, ptr %31, align 4, !tbaa !9
  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 %12, 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 %12, 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 @ctfttr_(ptr noundef %0, ptr noundef %1, ptr nocapture noundef readonly %2, ptr noundef %3, ptr nocapture noundef writeonly %4, ptr nocapture noundef readonly %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 %5, 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 %5, 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 ], [ -6, %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 %4, 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 %4, 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 %265, 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 %148, 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
  %57 = shl nsw i64 %54, 3
  %58 = add nsw i64 %57, 8
  %scevgep1120 = getelementptr i8, ptr %3, i64 4
  %scevgep1124 = getelementptr i8, ptr %3, i64 4
  %scevgep1126 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1591 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1575 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1579 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1583 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1587 = getelementptr i8, ptr %3, 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 = mul i64 %58, %indvars.iv803
  %scevgep = getelementptr i8, ptr %4, i64 %61
  %62 = or disjoint i64 %61, 4
  %scevgep1117 = getelementptr i8, ptr %4, i64 %62
  %63 = xor i64 %indvars.iv803, -1
  %gep1592 = getelementptr i8, ptr %invariant.gep1591, i64 %61
  %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 %4, 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
  %67 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv796
  %68 = call <2 x float> @Cf(ptr noundef %67)
  %.sroa.011.0.vec.extract = extractelement <2 x float> %68, i64 0
  %.sroa.011.4.vec.extract = extractelement <2 x float> %68, i64 1
  %69 = fneg float %.sroa.011.4.vec.extract
  %70 = call ptr @_pCf(ptr noundef nonnull %9)
  %71 = getelementptr inbounds i8, ptr %70, i64 4
  store float %.sroa.011.0.vec.extract, ptr %70, align 4
  store float %69, ptr %71, align 4
  %gep = getelementptr %struct.complex, ptr %invariant.gep, i64 %66
  %72 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %72, ptr %gep, 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 %4, 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 = add nsw i64 %63, %wide.trip.count
  %80 = shl nsw i64 %79, 3
  %scevgep1118 = getelementptr i8, ptr %scevgep1117, i64 %80
  %81 = shl nsw i64 %77, 3
  %scevgep1119 = getelementptr i8, ptr %3, i64 %81
  %82 = add i64 %80, %81
  %scevgep1121 = getelementptr i8, ptr %scevgep1120, i64 %82
  %scevgep1123 = getelementptr i8, ptr %gep1592, i64 %80
  %scevgep1125 = getelementptr i8, ptr %scevgep1124, i64 %81
  %scevgep1127 = getelementptr i8, ptr %scevgep1126, i64 %82
  %bound0 = icmp ult ptr %scevgep, %scevgep1121
  %bound1 = icmp ult ptr %scevgep1119, %scevgep1118
  %found.conflict = and i1 %bound0, %bound1
  %bound01128 = icmp ult ptr %scevgep1117, %scevgep1127
  %bound11129 = icmp ult ptr %scevgep1125, %scevgep1123
  %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.gep1577 = 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 inbounds %struct.complex, ptr %3, i64 %offset.idx
  %gep1576 = getelementptr %struct.complex, ptr %invariant.gep1575, i64 %offset.idx
  %wide.vec = load <4 x float>, ptr %83, align 4, !tbaa !9
  %wide.vec1134 = load <4 x float>, ptr %gep1576, align 4, !tbaa !9
  %84 = getelementptr %struct.complex, ptr %invariant.gep1066, i64 %offset.idx1133
  %gep1578 = getelementptr %struct.complex, ptr %invariant.gep1577, i64 %offset.idx1133
  store <4 x float> %wide.vec, ptr %84, align 4, !tbaa !9
  store <4 x float> %wide.vec1134, ptr %gep1578, 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 ]
  %87 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv807.prol
  %gep1067.prol = getelementptr %struct.complex, ptr %invariant.gep1066, i64 %indvars.iv805.prol
  %88 = load <2 x float>, ptr %87, align 4, !tbaa !9
  store <2 x float> %88, ptr %gep1067.prol, 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.lcssa1550.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.gep1581 = getelementptr i8, ptr %invariant.gep1066, i64 8
  %invariant.gep1585 = getelementptr i8, ptr %invariant.gep1066, i64 16
  %invariant.gep1589 = 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 ]
  %91 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv807
  %gep1067 = getelementptr %struct.complex, ptr %invariant.gep1066, i64 %indvars.iv805
  %92 = load <2 x float>, ptr %91, align 4, !tbaa !9
  store <2 x float> %92, ptr %gep1067, align 4, !tbaa !9
  %gep1580 = getelementptr %struct.complex, ptr %invariant.gep1579, i64 %indvars.iv807
  %gep1582 = getelementptr %struct.complex, ptr %invariant.gep1581, i64 %indvars.iv805
  %93 = load <2 x float>, ptr %gep1580, align 4, !tbaa !9
  store <2 x float> %93, ptr %gep1582, align 4, !tbaa !9
  %gep1584 = getelementptr %struct.complex, ptr %invariant.gep1583, i64 %indvars.iv807
  %gep1586 = getelementptr %struct.complex, ptr %invariant.gep1585, i64 %indvars.iv805
  %94 = load <2 x float>, ptr %gep1584, align 4, !tbaa !9
  store <2 x float> %94, ptr %gep1586, align 4, !tbaa !9
  %gep1588 = getelementptr %struct.complex, ptr %invariant.gep1587, i64 %indvars.iv807
  %gep1590 = getelementptr %struct.complex, ptr %invariant.gep1589, i64 %indvars.iv805
  %95 = load <2 x float>, ptr %gep1588, align 4, !tbaa !9
  store <2 x float> %95, ptr %gep1590, 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.lcssa1550.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
  %104 = add nuw nsw i64 %102, 2305843009213693951
  %105 = mul i64 %104, %100
  %106 = shl i64 %105, 3
  %107 = mul nsw i64 %100, -8
  %scevgep1144 = getelementptr i8, ptr %3, i64 -4
  %108 = or disjoint i64 %106, 4
  %scevgep1148 = getelementptr i8, ptr %3, i64 4
  %109 = getelementptr i8, ptr %4, i64 %106
  %110 = getelementptr i8, ptr %4, i64 %108
  %111 = getelementptr i8, ptr %4, i64 %106
  %112 = getelementptr i8, ptr %111, i64 -4
  %invariant.gep1593 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1595 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1599 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1603 = getelementptr i8, ptr %3, i64 24
  br label %.lr.ph614

.lr.ph614:                                        ; preds = %._crit_edge622, %.preheader593.lr.ph
  %indvar = phi i64 [ %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 [ %147, %._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 %4, i64 %116
  %min.iters.check1160 = icmp ult i64 %114, 6
  br i1 %min.iters.check1160, label %scalar.ph1159.preheader, label %vector.memcheck1139

vector.memcheck1139:                              ; preds = %.lr.ph614
  %118 = mul i64 %107, %indvar
  %scevgep1140 = getelementptr i8, ptr %109, i64 %118
  %119 = shl i64 %indvars.iv832, 3
  %120 = and i64 %119, 34359738360
  %scevgep1147 = getelementptr i8, ptr %scevgep1140, i64 %120
  %scevgep1146 = getelementptr i8, ptr %110, i64 %118
  %scevgep1141 = getelementptr i8, ptr %112, i64 %118
  %scevgep1142 = getelementptr i8, ptr %scevgep1141, i64 %120
  %121 = shl nsw i64 %117, 3
  %scevgep1143 = getelementptr i8, ptr %3, i64 %121
  %122 = add nsw i64 %121, %120
  %scevgep1145 = getelementptr i8, ptr %scevgep1144, i64 %122
  %scevgep1149 = getelementptr i8, ptr %scevgep1148, i64 %121
  %scevgep1150 = getelementptr i8, ptr %3, i64 %122
  %bound01151 = icmp ult ptr %scevgep1140, %scevgep1145
  %bound11152 = icmp ult ptr %scevgep1143, %scevgep1142
  %found.conflict1153 = and i1 %bound01151, %bound11152
  %bound01154 = icmp ult ptr %scevgep1146, %scevgep1150
  %bound11155 = icmp ult ptr %scevgep1149, %scevgep1147
  %found.conflict1156 = and i1 %bound01154, %bound11155
  %conflict.rdx1157 = or i1 %found.conflict1153, %found.conflict1156
  br i1 %conflict.rdx1157, label %scalar.ph1159.preheader, label %vector.ph1161

vector.ph1161:                                    ; preds = %vector.memcheck1139
  %n.mod.vf1162 = and i64 %indvars.iv832, 3
  %n.vec1163 = sub nsw i64 %114, %n.mod.vf1162
  %ind.end1164 = add nsw i64 %n.vec1163, %117
  br label %vector.body1167

vector.body1167:                                  ; preds = %vector.body1167, %vector.ph1161
  %index1168 = phi i64 [ 0, %vector.ph1161 ], [ %index.next1178, %vector.body1167 ]
  %offset.idx1169 = add i64 %index1168, %117
  %123 = or disjoint i64 %index1168, 2
  %124 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1169
  %gep1594 = getelementptr %struct.complex, ptr %invariant.gep1593, i64 %offset.idx1169
  %wide.vec1170 = load <4 x float>, ptr %124, align 4, !tbaa !9
  %wide.vec1171 = load <4 x float>, ptr %gep1594, align 4, !tbaa !9
  %125 = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %index1168
  %126 = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %123
  store <4 x float> %wide.vec1170, ptr %125, align 4, !tbaa !9
  store <4 x float> %wide.vec1171, ptr %126, align 4, !tbaa !9
  %index.next1178 = add nuw i64 %index1168, 4
  %127 = icmp eq i64 %index.next1178, %n.vec1163
  br i1 %127, label %middle.block1158, label %vector.body1167, !llvm.loop !20

middle.block1158:                                 ; preds = %vector.body1167
  %cmp.n1179 = icmp eq i64 %n.mod.vf1162, 0
  br i1 %cmp.n1179, label %._crit_edge615, label %scalar.ph1159.preheader

scalar.ph1159.preheader:                          ; preds = %middle.block1158, %vector.memcheck1139, %.lr.ph614
  %indvars.iv816.ph = phi i64 [ %117, %vector.memcheck1139 ], [ %117, %.lr.ph614 ], [ %ind.end1164, %middle.block1158 ]
  %indvars.iv814.ph = phi i64 [ 0, %vector.memcheck1139 ], [ 0, %.lr.ph614 ], [ %n.vec1163, %middle.block1158 ]
  %128 = sub i64 %indvars.iv832, %indvars.iv814.ph
  %xtraiter1551 = and i64 %128, 3
  %lcmp.mod1552.not = icmp eq i64 %xtraiter1551, 0
  br i1 %lcmp.mod1552.not, label %scalar.ph1159.prol.loopexit, label %scalar.ph1159.prol

scalar.ph1159.prol:                               ; preds = %scalar.ph1159.preheader, %scalar.ph1159.prol
  %indvars.iv816.prol = phi i64 [ %indvars.iv.next817.prol, %scalar.ph1159.prol ], [ %indvars.iv816.ph, %scalar.ph1159.preheader ]
  %indvars.iv814.prol = phi i64 [ %indvars.iv.next815.prol, %scalar.ph1159.prol ], [ %indvars.iv814.ph, %scalar.ph1159.preheader ]
  %prol.iter1553 = phi i64 [ %prol.iter1553.next, %scalar.ph1159.prol ], [ 0, %scalar.ph1159.preheader ]
  %129 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv816.prol
  %gep1069.prol = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %indvars.iv814.prol
  %130 = load <2 x float>, ptr %129, align 4, !tbaa !9
  store <2 x float> %130, ptr %gep1069.prol, 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.iter1553.next = add i64 %prol.iter1553, 1
  %prol.iter1553.cmp.not = icmp eq i64 %prol.iter1553.next, %xtraiter1551
  br i1 %prol.iter1553.cmp.not, label %scalar.ph1159.prol.loopexit, label %scalar.ph1159.prol, !llvm.loop !21

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

scalar.ph1159.preheader.new:                      ; preds = %scalar.ph1159.prol.loopexit
  %invariant.gep1597 = getelementptr i8, ptr %invariant.gep1068, i64 8
  %invariant.gep1601 = getelementptr i8, ptr %invariant.gep1068, i64 16
  %invariant.gep1605 = getelementptr i8, ptr %invariant.gep1068, i64 24
  br label %scalar.ph1159

scalar.ph1159:                                    ; preds = %scalar.ph1159, %scalar.ph1159.preheader.new
  %indvars.iv816 = phi i64 [ %indvars.iv816.unr, %scalar.ph1159.preheader.new ], [ %indvars.iv.next817.3, %scalar.ph1159 ]
  %indvars.iv814 = phi i64 [ %indvars.iv814.unr, %scalar.ph1159.preheader.new ], [ %indvars.iv.next815.3, %scalar.ph1159 ]
  %133 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv816
  %gep1069 = getelementptr %struct.complex, ptr %invariant.gep1068, i64 %indvars.iv814
  %134 = load <2 x float>, ptr %133, align 4, !tbaa !9
  store <2 x float> %134, ptr %gep1069, align 4, !tbaa !9
  %gep1596 = getelementptr %struct.complex, ptr %invariant.gep1595, i64 %indvars.iv816
  %gep1598 = getelementptr %struct.complex, ptr %invariant.gep1597, i64 %indvars.iv814
  %135 = load <2 x float>, ptr %gep1596, align 4, !tbaa !9
  store <2 x float> %135, ptr %gep1598, align 4, !tbaa !9
  %gep1600 = getelementptr %struct.complex, ptr %invariant.gep1599, i64 %indvars.iv816
  %gep1602 = getelementptr %struct.complex, ptr %invariant.gep1601, i64 %indvars.iv814
  %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.iv816
  %gep1606 = getelementptr %struct.complex, ptr %invariant.gep1605, i64 %indvars.iv814
  %137 = load <2 x float>, ptr %gep1604, align 4, !tbaa !9
  store <2 x float> %137, ptr %gep1606, 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.ph1159, !llvm.loop !22

._crit_edge615:                                   ; preds = %scalar.ph1159.prol.loopexit, %scalar.ph1159, %middle.block1158
  %indvars.iv.next817.lcssa = phi i64 [ %ind.end1164, %middle.block1158 ], [ %indvars.iv.next817.lcssa1548.unr, %scalar.ph1159.prol.loopexit ], [ %indvars.iv.next817.3, %scalar.ph1159 ]
  %138 = sub nsw i64 %indvars.iv.next833, %101
  %.not562.not617 = icmp slt i64 %138, %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
  %139 = ashr exact i64 %sext1108, 32
  %invariant.gep1070 = getelementptr %struct.complex, ptr %4, i64 %138
  br label %.lr.ph621

.lr.ph621:                                        ; preds = %.lr.ph621.preheader, %.lr.ph621
  %indvars.iv827 = phi i64 [ %139, %.lr.ph621.preheader ], [ %indvars.iv.next828, %.lr.ph621 ]
  %indvars.iv825 = phi i64 [ %115, %.lr.ph621.preheader ], [ %indvars.iv.next826, %.lr.ph621 ]
  %140 = mul nsw i64 %indvars.iv825, %100
  %141 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv827
  %142 = call <2 x float> @Cf(ptr noundef %141)
  %.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
  %gep1071 = getelementptr %struct.complex, ptr %invariant.gep1070, i64 %140
  %146 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %146, ptr %gep1071, 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
  %147 = 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 i64 %indvar, 1
  br i1 %.not560.not, label %.lr.ph614, label %.loopexit, !llvm.loop !24

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

.preheader592.lr.ph:                              ; preds = %148
  %150 = add nsw i32 %45, -1
  %151 = sext i32 %46 to i64
  %152 = sext i32 %150 to i64
  %153 = mul nsw i64 %151, %149
  %154 = shl i64 %153, 3
  %155 = shl nsw i64 %149, 3
  %scevgep1186 = getelementptr i8, ptr %3, i64 -4
  %156 = or disjoint i64 %154, 4
  %scevgep1192 = getelementptr i8, ptr %3, i64 4
  %157 = getelementptr i8, ptr %4, i64 %154
  %158 = getelementptr i8, ptr %4, i64 %154
  %159 = getelementptr i8, ptr %158, i64 -4
  %160 = getelementptr i8, ptr %4, i64 %156
  %invariant.gep1607 = getelementptr i8, ptr %3, 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 ]
  %161 = sext i32 %indvars.iv846 to i64
  %162 = add nsw i64 %161, 1
  %163 = mul i64 %155, %indvars.iv859
  %scevgep1181 = getelementptr i8, ptr %157, i64 %163
  %164 = sext i32 %indvars.iv846 to i64
  %165 = shl nsw i64 %164, 3
  %scevgep1182 = getelementptr i8, ptr %scevgep1181, i64 %165
  %scevgep1183 = getelementptr i8, ptr %159, i64 %163
  %166 = add nsw i64 %164, 1
  %167 = mul nsw i64 %164, -8
  %scevgep1189 = getelementptr i8, ptr %160, i64 %163
  %scevgep1190 = getelementptr i8, ptr %scevgep1189, i64 %165
  %168 = sext i32 %indvars.iv846 to i64
  %169 = sext i32 %.6506639 to i64
  %invariant.gep1072 = getelementptr %struct.complex, ptr %4, i64 %indvars.iv859
  br label %170

170:                                              ; preds = %.preheader592, %170
  %indvars.iv850.in = phi i32 [ %.6506639, %.preheader592 ], [ %indvars.iv850, %170 ]
  %indvars.iv837 = phi i64 [ %169, %.preheader592 ], [ %indvars.iv.next838, %170 ]
  %indvars.iv835 = phi i64 [ 0, %.preheader592 ], [ %indvars.iv.next836, %170 ]
  %indvars.iv850 = add i32 %indvars.iv850.in, 1
  %171 = mul nsw i64 %indvars.iv835, %149
  %172 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv837
  %173 = call <2 x float> @Cf(ptr noundef %172)
  %.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
  %gep1073 = getelementptr %struct.complex, ptr %invariant.gep1072, i64 %171
  %177 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %177, ptr %gep1073, 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 %178, label %170, !llvm.loop !25

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

.lr.ph635:                                        ; preds = %178
  %182 = mul nsw i64 %180, %149
  %183 = sext i32 %indvars.iv850 to i64
  %invariant.gep1074 = getelementptr %struct.complex, ptr %4, i64 %182
  %smax1203 = call i64 @llvm.smax.i64(i64 %162, i64 %181)
  %184 = sub i64 %smax1203, %161
  %min.iters.check1206 = icmp ult i64 %184, 10
  br i1 %min.iters.check1206, label %scalar.ph1205.preheader, label %vector.memcheck1180

vector.memcheck1180:                              ; preds = %.lr.ph635
  %smax = call i64 @llvm.smax.i64(i64 %166, i64 %181)
  %185 = shl nsw i64 %smax, 3
  %scevgep1184 = getelementptr i8, ptr %scevgep1183, i64 %185
  %186 = shl nsw i64 %183, 3
  %scevgep1185 = getelementptr i8, ptr %3, i64 %186
  %scevgep1187 = getelementptr i8, ptr %scevgep1186, i64 %167
  %187 = add i64 %smax, %183
  %188 = shl nsw i64 %187, 3
  %scevgep1188 = getelementptr i8, ptr %scevgep1187, i64 %188
  %scevgep1191 = getelementptr i8, ptr %scevgep1181, i64 %185
  %scevgep1193 = getelementptr i8, ptr %scevgep1192, i64 %186
  %scevgep1194 = getelementptr i8, ptr %3, i64 %167
  %scevgep1195 = getelementptr i8, ptr %scevgep1194, i64 %188
  %bound01196 = icmp ult ptr %scevgep1182, %scevgep1188
  %bound11197 = icmp ult ptr %scevgep1185, %scevgep1184
  %found.conflict1198 = and i1 %bound01196, %bound11197
  %bound01199 = icmp ult ptr %scevgep1190, %scevgep1195
  %bound11200 = icmp ult ptr %scevgep1193, %scevgep1191
  %found.conflict1201 = and i1 %bound01199, %bound11200
  %conflict.rdx1202 = or i1 %found.conflict1198, %found.conflict1201
  br i1 %conflict.rdx1202, label %scalar.ph1205.preheader, label %vector.ph1207

vector.ph1207:                                    ; preds = %vector.memcheck1180
  %n.vec1209 = and i64 %184, -4
  %ind.end1210 = add i64 %n.vec1209, %183
  %ind.end1212 = add i64 %n.vec1209, %168
  %invariant.gep1609 = getelementptr i8, ptr %invariant.gep1074, i64 16
  br label %vector.body1214

vector.body1214:                                  ; preds = %vector.body1214, %vector.ph1207
  %index1215 = phi i64 [ 0, %vector.ph1207 ], [ %index.next1226, %vector.body1214 ]
  %offset.idx1216 = add i64 %index1215, %183
  %offset.idx1217 = add i64 %index1215, %168
  %189 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1216
  %gep1608 = getelementptr %struct.complex, ptr %invariant.gep1607, i64 %offset.idx1216
  %wide.vec1218 = load <4 x float>, ptr %189, align 4, !tbaa !9
  %wide.vec1219 = load <4 x float>, ptr %gep1608, align 4, !tbaa !9
  %190 = getelementptr %struct.complex, ptr %invariant.gep1074, i64 %offset.idx1217
  %gep1610 = getelementptr %struct.complex, ptr %invariant.gep1609, i64 %offset.idx1217
  store <4 x float> %wide.vec1218, ptr %190, align 4, !tbaa !9
  store <4 x float> %wide.vec1219, ptr %gep1610, align 4, !tbaa !9
  %index.next1226 = add nuw i64 %index1215, 4
  %191 = icmp eq i64 %index.next1226, %n.vec1209
  br i1 %191, label %middle.block1204, label %vector.body1214, !llvm.loop !26

middle.block1204:                                 ; preds = %vector.body1214
  %cmp.n1227 = icmp eq i64 %184, %n.vec1209
  br i1 %cmp.n1227, label %._crit_edge636, label %scalar.ph1205.preheader

scalar.ph1205.preheader:                          ; preds = %middle.block1204, %vector.memcheck1180, %.lr.ph635
  %indvars.iv852.ph = phi i64 [ %183, %vector.memcheck1180 ], [ %183, %.lr.ph635 ], [ %ind.end1210, %middle.block1204 ]
  %indvars.iv848.ph = phi i64 [ %168, %vector.memcheck1180 ], [ %168, %.lr.ph635 ], [ %ind.end1212, %middle.block1204 ]
  br label %scalar.ph1205

scalar.ph1205:                                    ; preds = %scalar.ph1205.preheader, %scalar.ph1205
  %indvars.iv852 = phi i64 [ %indvars.iv.next853, %scalar.ph1205 ], [ %indvars.iv852.ph, %scalar.ph1205.preheader ]
  %indvars.iv848 = phi i64 [ %indvars.iv.next849, %scalar.ph1205 ], [ %indvars.iv848.ph, %scalar.ph1205.preheader ]
  %192 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv852
  %gep1075 = getelementptr %struct.complex, ptr %invariant.gep1074, i64 %indvars.iv848
  %193 = load <2 x float>, ptr %192, align 4, !tbaa !9
  store <2 x float> %193, ptr %gep1075, 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, %181
  br i1 %.not559.not, label %scalar.ph1205, label %._crit_edge636, !llvm.loop !27

._crit_edge636:                                   ; preds = %scalar.ph1205, %middle.block1204, %178
  %.8508.lcssa.in = phi i64 [ %indvars.iv.next838, %178 ], [ %ind.end1210, %middle.block1204 ], [ %indvars.iv.next853, %scalar.ph1205 ]
  %.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, %152
  %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
  %194 = add nsw i32 %179, -1
  %.not556649.not = icmp slt i32 %.0499, %179
  %.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
  %195 = sext i32 %10 to i64
  %196 = sext i32 %.0499 to i64
  %wide.trip.count871 = zext nneg i32 %.0498 to i64
  %197 = sext i32 %194 to i64
  br label %.preheader590.us

.preheader590.us:                                 ; preds = %.preheader590.us.preheader, %._crit_edge647.us
  %indvars.iv873 = phi i64 [ %196, %.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
  %198 = ashr exact i64 %sext, 32
  %invariant.gep1076 = getelementptr %struct.complex, ptr %4, i64 %indvars.iv873
  br label %199

199:                                              ; preds = %.preheader590.us, %199
  %indvars.iv866 = phi i64 [ %198, %.preheader590.us ], [ %indvars.iv.next867, %199 ]
  %indvars.iv864 = phi i64 [ 0, %.preheader590.us ], [ %indvars.iv.next865, %199 ]
  %200 = mul nsw i64 %indvars.iv864, %195
  %201 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv866
  %202 = call <2 x float> @Cf(ptr noundef %201)
  %.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
  %gep1077 = getelementptr %struct.complex, ptr %invariant.gep1076, i64 %200
  %206 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %206, ptr %gep1077, 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 %199, !llvm.loop !29

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

.lr.ph663:                                        ; preds = %148
  %207 = zext nneg i32 %45 to i64
  %208 = 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 ]
  %209 = load i32, ptr %2, align 4, !tbaa !5
  %.not554.not652 = icmp slt i32 %.0498, %209
  br i1 %.not554.not652, label %.lr.ph656.preheader, label %._crit_edge657

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

.lr.ph656:                                        ; preds = %.lr.ph656.preheader, %.lr.ph656
  %indvars.iv878 = phi i64 [ %210, %.lr.ph656.preheader ], [ %indvars.iv.next879, %.lr.ph656 ]
  %indvars.iv876 = phi i64 [ %207, %.lr.ph656.preheader ], [ %indvars.iv.next877, %.lr.ph656 ]
  %211 = mul nsw i64 %indvars.iv876, %149
  %212 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv878
  %213 = call <2 x float> @Cf(ptr noundef %212)
  %.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
  %gep1079 = getelementptr %struct.complex, ptr %invariant.gep1078, i64 %211
  %217 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %217, ptr %gep1079, 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 %209, %lftr.wideiv883
  br i1 %exitcond884.not, label %._crit_edge657.loopexit, label %.lr.ph656, !llvm.loop !31

._crit_edge657.loopexit:                          ; preds = %.lr.ph656
  %218 = 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 ], [ %218, %._crit_edge657.loopexit ]
  %indvars.iv.next886 = add nuw nsw i64 %indvars.iv885, 1
  %.not550.not = icmp ult i64 %indvars.iv885, %208
  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
  %219 = add nsw i32 %.0498, -1
  %220 = sext i32 %10 to i64
  %221 = sext i32 %.0499 to i64
  %222 = sext i32 %219 to i64
  %223 = shl nsw i64 %220, 3
  %224 = shl nsw i64 %220, 3
  %225 = add nsw i64 %224, 8
  %scevgep1236 = getelementptr i8, ptr %3, i64 4
  %invariant.gep1625 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1627 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1611 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1613 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1617 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1621 = getelementptr i8, ptr %3, 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 ]
  %226 = sext i32 %indvars.iv899 to i64
  %227 = mul nsw i64 %indvars.iv912, %220
  %228 = sext i32 %.13513676 to i64
  %invariant.gep1080 = getelementptr %struct.complex, ptr %4, i64 %227
  %min.iters.check1249 = icmp ult i64 %indvars.iv910, 6
  br i1 %min.iters.check1249, label %scalar.ph1248.preheader, label %vector.memcheck1228

vector.memcheck1228:                              ; preds = %.preheader588
  %229 = shl nuw nsw i64 %indvars.iv912, 3
  %gep1626 = getelementptr i8, ptr %invariant.gep1625, i64 %229
  %230 = mul i64 %225, %indvars.iv912
  %gep1628 = getelementptr i8, ptr %invariant.gep1627, i64 %230
  %231 = mul i64 %223, %indvars.iv912
  %232 = or disjoint i64 %231, 4
  %scevgep1234 = getelementptr i8, ptr %4, i64 %232
  %233 = or disjoint i64 %229, 4
  %scevgep1232 = getelementptr i8, ptr %3, i64 %233
  %234 = or disjoint i64 %230, 4
  %scevgep1230 = getelementptr i8, ptr %4, i64 %234
  %scevgep1229 = getelementptr i8, ptr %4, i64 %231
  %235 = shl nsw i64 %228, 3
  %scevgep1231 = getelementptr i8, ptr %3, i64 %235
  %scevgep1233 = getelementptr i8, ptr %scevgep1232, i64 %235
  %scevgep1237 = getelementptr i8, ptr %scevgep1236, i64 %235
  %scevgep1239 = getelementptr i8, ptr %gep1626, i64 %235
  %bound01240 = icmp ult ptr %scevgep1229, %scevgep1233
  %bound11241 = icmp ult ptr %scevgep1231, %scevgep1230
  %found.conflict1242 = and i1 %bound01240, %bound11241
  %bound01243 = icmp ult ptr %scevgep1234, %scevgep1239
  %bound11244 = icmp ult ptr %scevgep1237, %gep1628
  %found.conflict1245 = and i1 %bound01243, %bound11244
  %conflict.rdx1246 = or i1 %found.conflict1242, %found.conflict1245
  br i1 %conflict.rdx1246, label %scalar.ph1248.preheader, label %vector.ph1250

vector.ph1250:                                    ; preds = %vector.memcheck1228
  %n.vec1252 = and i64 %indvars.iv910, 9223372036854775804
  %ind.end1253 = add i64 %n.vec1252, %228
  %236 = insertelement <2 x i32> <i32 poison, i32 0>, i32 %.13513676, i64 0
  br label %vector.body1256

vector.body1256:                                  ; preds = %vector.body1256, %vector.ph1250
  %index1257 = phi i64 [ 0, %vector.ph1250 ], [ %index.next1268, %vector.body1256 ]
  %vec.phi = phi <2 x i32> [ %236, %vector.ph1250 ], [ %238, %vector.body1256 ]
  %vec.phi1258 = phi <2 x i32> [ zeroinitializer, %vector.ph1250 ], [ %239, %vector.body1256 ]
  %offset.idx1259 = add i64 %index1257, %228
  %237 = or disjoint i64 %index1257, 2
  %238 = add <2 x i32> %vec.phi, <i32 1, i32 1>
  %239 = add <2 x i32> %vec.phi1258, <i32 1, i32 1>
  %240 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1259
  %gep1612 = getelementptr %struct.complex, ptr %invariant.gep1611, i64 %offset.idx1259
  %wide.vec1260 = load <4 x float>, ptr %240, align 4, !tbaa !9
  %wide.vec1261 = load <4 x float>, ptr %gep1612, align 4, !tbaa !9
  %241 = getelementptr %struct.complex, ptr %invariant.gep1080, i64 %index1257
  %242 = getelementptr %struct.complex, ptr %invariant.gep1080, i64 %237
  store <4 x float> %wide.vec1260, ptr %241, align 4, !tbaa !9
  store <4 x float> %wide.vec1261, ptr %242, align 4, !tbaa !9
  %index.next1268 = add nuw i64 %index1257, 4
  %243 = icmp eq i64 %index.next1268, %n.vec1252
  br i1 %243, label %middle.block1247, label %vector.body1256, !llvm.loop !34

middle.block1247:                                 ; preds = %vector.body1256
  %bin.rdx = add <2 x i32> %239, %238
  %244 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %bin.rdx)
  %cmp.n1269 = icmp eq i64 %indvars.iv910, %n.vec1252
  br i1 %cmp.n1269, label %.loopexit1530, label %scalar.ph1248.preheader

scalar.ph1248.preheader:                          ; preds = %middle.block1247, %vector.memcheck1228, %.preheader588
  %indvars.iv903.in.ph = phi i32 [ %.13513676, %vector.memcheck1228 ], [ %.13513676, %.preheader588 ], [ %244, %middle.block1247 ]
  %indvars.iv890.ph = phi i64 [ %228, %vector.memcheck1228 ], [ %228, %.preheader588 ], [ %ind.end1253, %middle.block1247 ]
  %indvars.iv888.ph = phi i64 [ 0, %vector.memcheck1228 ], [ 0, %.preheader588 ], [ %n.vec1252, %middle.block1247 ]
  %245 = sub nsw i64 %indvars.iv912, %indvars.iv888.ph
  %xtraiter1554 = and i64 %indvars.iv910, 3
  %lcmp.mod1555.not = icmp eq i64 %xtraiter1554, 0
  br i1 %lcmp.mod1555.not, label %scalar.ph1248.prol.loopexit, label %scalar.ph1248.prol

scalar.ph1248.prol:                               ; preds = %scalar.ph1248.preheader, %scalar.ph1248.prol
  %indvars.iv903.in.prol = phi i32 [ %indvars.iv903.prol, %scalar.ph1248.prol ], [ %indvars.iv903.in.ph, %scalar.ph1248.preheader ]
  %indvars.iv890.prol = phi i64 [ %indvars.iv.next891.prol, %scalar.ph1248.prol ], [ %indvars.iv890.ph, %scalar.ph1248.preheader ]
  %indvars.iv888.prol = phi i64 [ %indvars.iv.next889.prol, %scalar.ph1248.prol ], [ %indvars.iv888.ph, %scalar.ph1248.preheader ]
  %prol.iter1556 = phi i64 [ %prol.iter1556.next, %scalar.ph1248.prol ], [ 0, %scalar.ph1248.preheader ]
  %indvars.iv903.prol = add i32 %indvars.iv903.in.prol, 1
  %246 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv890.prol
  %gep1081.prol = getelementptr %struct.complex, ptr %invariant.gep1080, i64 %indvars.iv888.prol
  %247 = load <2 x float>, ptr %246, align 4, !tbaa !9
  store <2 x float> %247, ptr %gep1081.prol, 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.iter1556.next = add i64 %prol.iter1556, 1
  %prol.iter1556.cmp.not = icmp eq i64 %prol.iter1556.next, %xtraiter1554
  br i1 %prol.iter1556.cmp.not, label %scalar.ph1248.prol.loopexit, label %scalar.ph1248.prol, !llvm.loop !35

scalar.ph1248.prol.loopexit:                      ; preds = %scalar.ph1248.prol, %scalar.ph1248.preheader
  %indvars.iv903.lcssa1544.unr = phi i32 [ poison, %scalar.ph1248.preheader ], [ %indvars.iv903.prol, %scalar.ph1248.prol ]
  %indvars.iv.next891.lcssa1543.unr = phi i64 [ poison, %scalar.ph1248.preheader ], [ %indvars.iv.next891.prol, %scalar.ph1248.prol ]
  %indvars.iv903.in.unr = phi i32 [ %indvars.iv903.in.ph, %scalar.ph1248.preheader ], [ %indvars.iv903.prol, %scalar.ph1248.prol ]
  %indvars.iv890.unr = phi i64 [ %indvars.iv890.ph, %scalar.ph1248.preheader ], [ %indvars.iv.next891.prol, %scalar.ph1248.prol ]
  %indvars.iv888.unr = phi i64 [ %indvars.iv888.ph, %scalar.ph1248.preheader ], [ %indvars.iv.next889.prol, %scalar.ph1248.prol ]
  %248 = icmp ult i64 %245, 3
  br i1 %248, label %.loopexit1530, label %scalar.ph1248.preheader.new

scalar.ph1248.preheader.new:                      ; preds = %scalar.ph1248.prol.loopexit
  %invariant.gep1615 = getelementptr i8, ptr %invariant.gep1080, i64 8
  %invariant.gep1619 = getelementptr i8, ptr %invariant.gep1080, i64 16
  %invariant.gep1623 = getelementptr i8, ptr %invariant.gep1080, i64 24
  br label %scalar.ph1248

scalar.ph1248:                                    ; preds = %scalar.ph1248, %scalar.ph1248.preheader.new
  %indvars.iv903.in = phi i32 [ %indvars.iv903.in.unr, %scalar.ph1248.preheader.new ], [ %indvars.iv903.3, %scalar.ph1248 ]
  %indvars.iv890 = phi i64 [ %indvars.iv890.unr, %scalar.ph1248.preheader.new ], [ %indvars.iv.next891.3, %scalar.ph1248 ]
  %indvars.iv888 = phi i64 [ %indvars.iv888.unr, %scalar.ph1248.preheader.new ], [ %indvars.iv.next889.3, %scalar.ph1248 ]
  %249 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv890
  %gep1081 = getelementptr %struct.complex, ptr %invariant.gep1080, i64 %indvars.iv888
  %250 = load <2 x float>, ptr %249, align 4, !tbaa !9
  store <2 x float> %250, ptr %gep1081, align 4, !tbaa !9
  %gep1614 = getelementptr %struct.complex, ptr %invariant.gep1613, i64 %indvars.iv890
  %gep1616 = getelementptr %struct.complex, ptr %invariant.gep1615, i64 %indvars.iv888
  %251 = load <2 x float>, ptr %gep1614, align 4, !tbaa !9
  store <2 x float> %251, ptr %gep1616, align 4, !tbaa !9
  %gep1618 = getelementptr %struct.complex, ptr %invariant.gep1617, i64 %indvars.iv890
  %gep1620 = getelementptr %struct.complex, ptr %invariant.gep1619, i64 %indvars.iv888
  %252 = load <2 x float>, ptr %gep1618, align 4, !tbaa !9
  store <2 x float> %252, ptr %gep1620, align 4, !tbaa !9
  %indvars.iv903.3 = add i32 %indvars.iv903.in, 4
  %gep1622 = getelementptr %struct.complex, ptr %invariant.gep1621, i64 %indvars.iv890
  %gep1624 = getelementptr %struct.complex, ptr %invariant.gep1623, i64 %indvars.iv888
  %253 = load <2 x float>, ptr %gep1622, align 4, !tbaa !9
  store <2 x float> %253, ptr %gep1624, 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 %.loopexit1530, label %scalar.ph1248, !llvm.loop !36

.loopexit1530:                                    ; preds = %scalar.ph1248.prol.loopexit, %scalar.ph1248, %middle.block1247
  %indvars.iv903.lcssa = phi i32 [ %244, %middle.block1247 ], [ %indvars.iv903.lcssa1544.unr, %scalar.ph1248.prol.loopexit ], [ %indvars.iv903.3, %scalar.ph1248 ]
  %indvars.iv.next891.lcssa = phi i64 [ %ind.end1253, %middle.block1247 ], [ %indvars.iv.next891.lcssa1543.unr, %scalar.ph1248.prol.loopexit ], [ %indvars.iv.next891.3, %scalar.ph1248 ]
  %254 = load i32, ptr %2, align 4, !tbaa !5
  %255 = add nsw i64 %indvars.iv912, %221
  %256 = sext i32 %254 to i64
  %.not553.not668 = icmp slt i64 %255, %256
  br i1 %.not553.not668, label %.lr.ph672.preheader, label %._crit_edge673

.lr.ph672.preheader:                              ; preds = %.loopexit1530
  %257 = sext i32 %indvars.iv903.lcssa to i64
  %invariant.gep1082 = getelementptr %struct.complex, ptr %4, i64 %255
  br label %.lr.ph672

.lr.ph672:                                        ; preds = %.lr.ph672.preheader, %.lr.ph672
  %indvars.iv905 = phi i64 [ %257, %.lr.ph672.preheader ], [ %indvars.iv.next906, %.lr.ph672 ]
  %indvars.iv901 = phi i64 [ %226, %.lr.ph672.preheader ], [ %indvars.iv.next902, %.lr.ph672 ]
  %258 = mul nsw i64 %indvars.iv901, %220
  %259 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv905
  %260 = call <2 x float> @Cf(ptr noundef %259)
  %.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
  %gep1083 = getelementptr %struct.complex, ptr %invariant.gep1082, i64 %258
  %264 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %264, ptr %gep1083, 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, %256
  br i1 %.not553.not, label %.lr.ph672, label %._crit_edge673, !llvm.loop !37

._crit_edge673:                                   ; preds = %.lr.ph672, %.loopexit1530
  %.15515.lcssa.in = phi i64 [ %indvars.iv.next891.lcssa, %.loopexit1530 ], [ %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, %222
  %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

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

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

.lr.ph690:                                        ; preds = %.thread575
  %268 = add nsw i32 %45, -1
  %269 = sext i32 %10 to i64
  %270 = zext nneg i32 %45 to i64
  %271 = sext i32 %268 to i64
  %272 = shl nsw i64 %269, 3
  %273 = add nsw i64 %272, 8
  %scevgep1275 = getelementptr i8, ptr %3, i64 4
  %scevgep1280 = getelementptr i8, ptr %3, i64 4
  %scevgep1282 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1645 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1629 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1633 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1637 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1641 = getelementptr i8, ptr %3, i64 24
  br label %274

274:                                              ; 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 ]
  %275 = mul i64 %273, %indvars.iv922
  %scevgep1271 = getelementptr i8, ptr %4, i64 %275
  %276 = or disjoint i64 %275, 4
  %scevgep1272 = getelementptr i8, ptr %4, i64 %276
  %277 = xor i64 %indvars.iv922, -1
  %gep1646 = getelementptr i8, ptr %invariant.gep1645, i64 %275
  %278 = add nuw nsw i64 %indvars.iv922, %270
  %279 = and i64 %278, 4294967295
  %280 = sext i32 %.16516688 to i64
  %invariant.gep1084 = getelementptr %struct.complex, ptr %4, i64 %278
  br label %281

281:                                              ; preds = %274, %281
  %indvars.iv926.in = phi i32 [ %.16516688, %274 ], [ %indvars.iv926, %281 ]
  %indvars.iv919 = phi i64 [ %280, %274 ], [ %indvars.iv.next920, %281 ]
  %indvars.iv917 = phi i64 [ %267, %274 ], [ %indvars.iv.next918, %281 ]
  %indvars.iv926 = add i32 %indvars.iv926.in, 1
  %282 = mul nsw i64 %indvars.iv917, %269
  %283 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv919
  %284 = call <2 x float> @Cf(ptr noundef %283)
  %.sroa.05.0.vec.extract = extractelement <2 x float> %284, i64 0
  %.sroa.05.4.vec.extract = extractelement <2 x float> %284, i64 1
  %285 = fneg float %.sroa.05.4.vec.extract
  %286 = call ptr @_pCf(ptr noundef nonnull %9)
  %287 = getelementptr inbounds i8, ptr %286, i64 4
  store float %.sroa.05.0.vec.extract, ptr %286, align 4
  store float %285, ptr %287, align 4
  %gep1085 = getelementptr %struct.complex, ptr %invariant.gep1084, i64 %282
  %288 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %288, ptr %gep1085, 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, %269
  %293 = sext i32 %indvars.iv926 to i64
  %wide.trip.count933 = zext i32 %290 to i64
  %invariant.gep1086 = getelementptr %struct.complex, ptr %4, i64 %292
  %294 = sub nsw i64 %wide.trip.count933, %indvars.iv922
  %min.iters.check1294 = icmp ult i64 %294, 8
  br i1 %min.iters.check1294, label %scalar.ph1293.preheader, label %vector.memcheck1270

vector.memcheck1270:                              ; preds = %.lr.ph684
  %295 = add nsw i64 %277, %wide.trip.count933
  %296 = shl nsw i64 %295, 3
  %scevgep1273 = getelementptr i8, ptr %scevgep1272, i64 %296
  %297 = shl nsw i64 %293, 3
  %scevgep1274 = getelementptr i8, ptr %3, i64 %297
  %scevgep1276 = getelementptr i8, ptr %scevgep1275, i64 %296
  %scevgep1277 = getelementptr i8, ptr %scevgep1276, i64 %297
  %scevgep1279 = getelementptr i8, ptr %gep1646, i64 %296
  %scevgep1281 = getelementptr i8, ptr %scevgep1280, i64 %297
  %scevgep1283 = getelementptr i8, ptr %scevgep1282, i64 %296
  %scevgep1284 = getelementptr i8, ptr %scevgep1283, i64 %297
  %bound01285 = icmp ult ptr %scevgep1271, %scevgep1277
  %bound11286 = icmp ult ptr %scevgep1274, %scevgep1273
  %found.conflict1287 = and i1 %bound01285, %bound11286
  %bound01288 = icmp ult ptr %scevgep1272, %scevgep1284
  %bound11289 = icmp ult ptr %scevgep1281, %scevgep1279
  %found.conflict1290 = and i1 %bound01288, %bound11289
  %conflict.rdx1291 = or i1 %found.conflict1287, %found.conflict1290
  br i1 %conflict.rdx1291, label %scalar.ph1293.preheader, label %vector.ph1295

vector.ph1295:                                    ; preds = %vector.memcheck1270
  %n.vec1297 = and i64 %294, -4
  %ind.end1298 = add i64 %n.vec1297, %293
  %ind.end1300 = add i64 %indvars.iv922, %n.vec1297
  %invariant.gep1631 = getelementptr i8, ptr %invariant.gep1086, i64 16
  br label %vector.body1302

vector.body1302:                                  ; preds = %vector.body1302, %vector.ph1295
  %index1303 = phi i64 [ 0, %vector.ph1295 ], [ %index.next1314, %vector.body1302 ]
  %offset.idx1304 = add i64 %index1303, %293
  %offset.idx1305 = add i64 %indvars.iv922, %index1303
  %298 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1304
  %gep1630 = getelementptr %struct.complex, ptr %invariant.gep1629, i64 %offset.idx1304
  %wide.vec1306 = load <4 x float>, ptr %298, align 4, !tbaa !9
  %wide.vec1307 = load <4 x float>, ptr %gep1630, align 4, !tbaa !9
  %299 = getelementptr %struct.complex, ptr %invariant.gep1086, i64 %offset.idx1305
  %gep1632 = getelementptr %struct.complex, ptr %invariant.gep1631, i64 %offset.idx1305
  store <4 x float> %wide.vec1306, ptr %299, align 4, !tbaa !9
  store <4 x float> %wide.vec1307, ptr %gep1632, align 4, !tbaa !9
  %index.next1314 = add nuw i64 %index1303, 4
  %300 = icmp eq i64 %index.next1314, %n.vec1297
  br i1 %300, label %middle.block1292, label %vector.body1302, !llvm.loop !40

middle.block1292:                                 ; preds = %vector.body1302
  %cmp.n1315 = icmp eq i64 %294, %n.vec1297
  br i1 %cmp.n1315, label %._crit_edge685, label %scalar.ph1293.preheader

scalar.ph1293.preheader:                          ; preds = %middle.block1292, %vector.memcheck1270, %.lr.ph684
  %indvars.iv928.ph = phi i64 [ %293, %vector.memcheck1270 ], [ %293, %.lr.ph684 ], [ %ind.end1298, %middle.block1292 ]
  %indvars.iv924.ph = phi i64 [ %indvars.iv922, %vector.memcheck1270 ], [ %indvars.iv922, %.lr.ph684 ], [ %ind.end1300, %middle.block1292 ]
  %301 = sub i64 %wide.trip.count933, %indvars.iv924.ph
  %xtraiter1557 = and i64 %301, 3
  %lcmp.mod1558.not = icmp eq i64 %xtraiter1557, 0
  br i1 %lcmp.mod1558.not, label %scalar.ph1293.prol.loopexit, label %scalar.ph1293.prol

scalar.ph1293.prol:                               ; preds = %scalar.ph1293.preheader, %scalar.ph1293.prol
  %indvars.iv928.prol = phi i64 [ %indvars.iv.next929.prol, %scalar.ph1293.prol ], [ %indvars.iv928.ph, %scalar.ph1293.preheader ]
  %indvars.iv924.prol = phi i64 [ %indvars.iv.next925.prol, %scalar.ph1293.prol ], [ %indvars.iv924.ph, %scalar.ph1293.preheader ]
  %prol.iter1559 = phi i64 [ %prol.iter1559.next, %scalar.ph1293.prol ], [ 0, %scalar.ph1293.preheader ]
  %302 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv928.prol
  %gep1087.prol = getelementptr %struct.complex, ptr %invariant.gep1086, i64 %indvars.iv924.prol
  %303 = load <2 x float>, ptr %302, align 4, !tbaa !9
  store <2 x float> %303, ptr %gep1087.prol, 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.iter1559.next = add i64 %prol.iter1559, 1
  %prol.iter1559.cmp.not = icmp eq i64 %prol.iter1559.next, %xtraiter1557
  br i1 %prol.iter1559.cmp.not, label %scalar.ph1293.prol.loopexit, label %scalar.ph1293.prol, !llvm.loop !41

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

scalar.ph1293.preheader.new:                      ; preds = %scalar.ph1293.prol.loopexit
  %invariant.gep1635 = getelementptr i8, ptr %invariant.gep1086, i64 8
  %invariant.gep1639 = getelementptr i8, ptr %invariant.gep1086, i64 16
  %invariant.gep1643 = getelementptr i8, ptr %invariant.gep1086, i64 24
  br label %scalar.ph1293

scalar.ph1293:                                    ; preds = %scalar.ph1293, %scalar.ph1293.preheader.new
  %indvars.iv928 = phi i64 [ %indvars.iv928.unr, %scalar.ph1293.preheader.new ], [ %indvars.iv.next929.3, %scalar.ph1293 ]
  %indvars.iv924 = phi i64 [ %indvars.iv924.unr, %scalar.ph1293.preheader.new ], [ %indvars.iv.next925.3, %scalar.ph1293 ]
  %306 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv928
  %gep1087 = getelementptr %struct.complex, ptr %invariant.gep1086, i64 %indvars.iv924
  %307 = load <2 x float>, ptr %306, align 4, !tbaa !9
  store <2 x float> %307, ptr %gep1087, align 4, !tbaa !9
  %gep1634 = getelementptr %struct.complex, ptr %invariant.gep1633, i64 %indvars.iv928
  %gep1636 = getelementptr %struct.complex, ptr %invariant.gep1635, i64 %indvars.iv924
  %308 = load <2 x float>, ptr %gep1634, align 4, !tbaa !9
  store <2 x float> %308, ptr %gep1636, align 4, !tbaa !9
  %gep1638 = getelementptr %struct.complex, ptr %invariant.gep1637, i64 %indvars.iv928
  %gep1640 = getelementptr %struct.complex, ptr %invariant.gep1639, i64 %indvars.iv924
  %309 = load <2 x float>, ptr %gep1638, align 4, !tbaa !9
  store <2 x float> %309, ptr %gep1640, align 4, !tbaa !9
  %gep1642 = getelementptr %struct.complex, ptr %invariant.gep1641, i64 %indvars.iv928
  %gep1644 = getelementptr %struct.complex, ptr %invariant.gep1643, i64 %indvars.iv924
  %310 = load <2 x float>, ptr %gep1642, align 4, !tbaa !9
  store <2 x float> %310, ptr %gep1644, 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.ph1293, !llvm.loop !42

._crit_edge685:                                   ; preds = %scalar.ph1293.prol.loopexit, %scalar.ph1293, %middle.block1292, %289
  %.18.lcssa.in = phi i64 [ %indvars.iv.next920, %289 ], [ %ind.end1298, %middle.block1292 ], [ %indvars.iv.next929.lcssa.unr, %scalar.ph1293.prol.loopexit ], [ %indvars.iv.next929.3, %scalar.ph1293 ]
  %.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, %271
  br i1 %.not547.not, label %274, label %.loopexit, !llvm.loop !43

.preheader582.lr.ph:                              ; preds = %265
  %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
  %319 = add nuw nsw i64 %318, 2305843009213693951
  %320 = mul i64 %319, %316
  %321 = shl i64 %320, 3
  %322 = mul nsw i64 %316, -8
  %scevgep1411 = getelementptr i8, ptr %3, i64 -4
  %323 = or disjoint i64 %321, 4
  %scevgep1415 = getelementptr i8, ptr %3, i64 4
  %324 = getelementptr i8, ptr %4, i64 %321
  %325 = getelementptr i8, ptr %4, i64 %321
  %326 = getelementptr i8, ptr %325, i64 -4
  %327 = getelementptr i8, ptr %4, i64 %323
  %invariant.gep1653 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1655 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1659 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1663 = getelementptr i8, ptr %3, i64 24
  br label %.preheader582

.preheader582:                                    ; preds = %.preheader582.lr.ph, %._crit_edge727
  %indvar1405 = phi i64 [ 0, %.preheader582.lr.ph ], [ %indvar.next1406, %._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 ], [ %364, %._crit_edge727 ]
  %328 = and i64 %indvars.iv999, 4294967295
  %329 = and i64 %indvars.iv999, 4294967295
  %330 = mul i64 %322, %indvar1405
  %scevgep1407 = getelementptr i8, ptr %324, i64 %330
  %scevgep1408 = getelementptr i8, ptr %326, i64 %330
  %331 = shl i64 %indvars.iv999, 3
  %332 = and i64 %331, 34359738360
  %scevgep1409 = getelementptr i8, ptr %scevgep1408, i64 %332
  %scevgep1413 = getelementptr i8, ptr %327, i64 %330
  %scevgep1414 = getelementptr i8, ptr %scevgep1407, i64 %332
  %333 = 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
  %334 = mul nsw i64 %indvars.iv.next1000, %316
  %335 = sext i32 %.19731 to i64
  %wide.trip.count988 = and i64 %indvars.iv999, 4294967295
  %invariant.gep1096 = getelementptr %struct.complex, ptr %4, i64 %334
  %min.iters.check1427 = icmp ult i64 %329, 6
  br i1 %min.iters.check1427, label %scalar.ph1426.preheader, label %vector.memcheck1404

vector.memcheck1404:                              ; preds = %.lr.ph719
  %336 = shl nsw i64 %335, 3
  %scevgep1410 = getelementptr i8, ptr %3, i64 %336
  %337 = add nsw i64 %336, %332
  %scevgep1412 = getelementptr i8, ptr %scevgep1411, i64 %337
  %scevgep1416 = getelementptr i8, ptr %scevgep1415, i64 %336
  %scevgep1417 = getelementptr i8, ptr %3, i64 %337
  %bound01418 = icmp ult ptr %scevgep1407, %scevgep1412
  %bound11419 = icmp ult ptr %scevgep1410, %scevgep1409
  %found.conflict1420 = and i1 %bound01418, %bound11419
  %bound01421 = icmp ult ptr %scevgep1413, %scevgep1417
  %bound11422 = icmp ult ptr %scevgep1416, %scevgep1414
  %found.conflict1423 = and i1 %bound01421, %bound11422
  %conflict.rdx1424 = or i1 %found.conflict1420, %found.conflict1423
  br i1 %conflict.rdx1424, label %scalar.ph1426.preheader, label %vector.ph1428

vector.ph1428:                                    ; preds = %vector.memcheck1404
  %n.mod.vf1429 = and i64 %indvars.iv999, 3
  %n.vec1430 = sub nsw i64 %329, %n.mod.vf1429
  %ind.end1431 = add nsw i64 %n.vec1430, %335
  br label %vector.body1434

vector.body1434:                                  ; preds = %vector.body1434, %vector.ph1428
  %index1435 = phi i64 [ 0, %vector.ph1428 ], [ %index.next1445, %vector.body1434 ]
  %offset.idx1436 = add i64 %index1435, %335
  %338 = or disjoint i64 %index1435, 2
  %339 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1436
  %gep1654 = getelementptr %struct.complex, ptr %invariant.gep1653, i64 %offset.idx1436
  %wide.vec1437 = load <4 x float>, ptr %339, align 4, !tbaa !9
  %wide.vec1438 = load <4 x float>, ptr %gep1654, align 4, !tbaa !9
  %340 = getelementptr %struct.complex, ptr %invariant.gep1096, i64 %index1435
  %341 = getelementptr %struct.complex, ptr %invariant.gep1096, i64 %338
  store <4 x float> %wide.vec1437, ptr %340, align 4, !tbaa !9
  store <4 x float> %wide.vec1438, ptr %341, align 4, !tbaa !9
  %index.next1445 = add nuw i64 %index1435, 4
  %342 = icmp eq i64 %index.next1445, %n.vec1430
  br i1 %342, label %middle.block1425, label %vector.body1434, !llvm.loop !44

middle.block1425:                                 ; preds = %vector.body1434
  %cmp.n1446 = icmp eq i64 %n.mod.vf1429, 0
  br i1 %cmp.n1446, label %._crit_edge720.loopexit, label %scalar.ph1426.preheader

scalar.ph1426.preheader:                          ; preds = %middle.block1425, %vector.memcheck1404, %.lr.ph719
  %indvars.iv983.ph = phi i64 [ %335, %vector.memcheck1404 ], [ %335, %.lr.ph719 ], [ %ind.end1431, %middle.block1425 ]
  %indvars.iv981.ph = phi i64 [ 0, %vector.memcheck1404 ], [ 0, %.lr.ph719 ], [ %n.vec1430, %middle.block1425 ]
  %343 = sub i64 %indvars.iv999, %indvars.iv981.ph
  %xtraiter1560 = and i64 %343, 3
  %lcmp.mod1561.not = icmp eq i64 %xtraiter1560, 0
  br i1 %lcmp.mod1561.not, label %scalar.ph1426.prol.loopexit, label %scalar.ph1426.prol

scalar.ph1426.prol:                               ; preds = %scalar.ph1426.preheader, %scalar.ph1426.prol
  %indvars.iv983.prol = phi i64 [ %indvars.iv.next984.prol, %scalar.ph1426.prol ], [ %indvars.iv983.ph, %scalar.ph1426.preheader ]
  %indvars.iv981.prol = phi i64 [ %indvars.iv.next982.prol, %scalar.ph1426.prol ], [ %indvars.iv981.ph, %scalar.ph1426.preheader ]
  %prol.iter1562 = phi i64 [ %prol.iter1562.next, %scalar.ph1426.prol ], [ 0, %scalar.ph1426.preheader ]
  %344 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv983.prol
  %gep1097.prol = getelementptr %struct.complex, ptr %invariant.gep1096, i64 %indvars.iv981.prol
  %345 = load <2 x float>, ptr %344, align 4, !tbaa !9
  store <2 x float> %345, ptr %gep1097.prol, 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.iter1562.next = add i64 %prol.iter1562, 1
  %prol.iter1562.cmp.not = icmp eq i64 %prol.iter1562.next, %xtraiter1560
  br i1 %prol.iter1562.cmp.not, label %scalar.ph1426.prol.loopexit, label %scalar.ph1426.prol, !llvm.loop !45

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

scalar.ph1426.preheader.new:                      ; preds = %scalar.ph1426.prol.loopexit
  %invariant.gep1657 = getelementptr i8, ptr %invariant.gep1096, i64 8
  %invariant.gep1661 = getelementptr i8, ptr %invariant.gep1096, i64 16
  %invariant.gep1665 = getelementptr i8, ptr %invariant.gep1096, i64 24
  br label %scalar.ph1426

scalar.ph1426:                                    ; preds = %scalar.ph1426, %scalar.ph1426.preheader.new
  %indvars.iv983 = phi i64 [ %indvars.iv983.unr, %scalar.ph1426.preheader.new ], [ %indvars.iv.next984.3, %scalar.ph1426 ]
  %indvars.iv981 = phi i64 [ %indvars.iv981.unr, %scalar.ph1426.preheader.new ], [ %indvars.iv.next982.3, %scalar.ph1426 ]
  %348 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv983
  %gep1097 = getelementptr %struct.complex, ptr %invariant.gep1096, i64 %indvars.iv981
  %349 = load <2 x float>, ptr %348, align 4, !tbaa !9
  store <2 x float> %349, ptr %gep1097, align 4, !tbaa !9
  %gep1656 = getelementptr %struct.complex, ptr %invariant.gep1655, i64 %indvars.iv983
  %gep1658 = getelementptr %struct.complex, ptr %invariant.gep1657, i64 %indvars.iv981
  %350 = load <2 x float>, ptr %gep1656, align 4, !tbaa !9
  store <2 x float> %350, ptr %gep1658, align 4, !tbaa !9
  %gep1660 = getelementptr %struct.complex, ptr %invariant.gep1659, i64 %indvars.iv983
  %gep1662 = getelementptr %struct.complex, ptr %invariant.gep1661, i64 %indvars.iv981
  %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.iv983
  %gep1666 = getelementptr %struct.complex, ptr %invariant.gep1665, i64 %indvars.iv981
  %352 = load <2 x float>, ptr %gep1664, align 4, !tbaa !9
  store <2 x float> %352, ptr %gep1666, 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.ph1426, !llvm.loop !46

._crit_edge720.loopexit:                          ; preds = %scalar.ph1426.prol.loopexit, %scalar.ph1426, %middle.block1425
  %indvars.iv.next984.lcssa = phi i64 [ %ind.end1431, %middle.block1425 ], [ %indvars.iv.next984.lcssa1535.unr, %scalar.ph1426.prol.loopexit ], [ %indvars.iv.next984.3, %scalar.ph1426 ]
  %353 = 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 ], [ %353, %._crit_edge720.loopexit ]
  %354 = sub nsw i64 %indvars.iv.next1000, %317
  %.not546.not722 = icmp slt i64 %354, %317
  br i1 %.not546.not722, label %.lr.ph726.preheader, label %._crit_edge727

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

.lr.ph726:                                        ; preds = %.lr.ph726.preheader, %.lr.ph726
  %indvars.iv994 = phi i64 [ %355, %.lr.ph726.preheader ], [ %indvars.iv.next995, %.lr.ph726 ]
  %indvars.iv992 = phi i64 [ %333, %.lr.ph726.preheader ], [ %indvars.iv.next993, %.lr.ph726 ]
  %356 = mul nsw i64 %indvars.iv992, %316
  %357 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv994
  %358 = call <2 x float> @Cf(ptr noundef %357)
  %.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
  %gep1099 = getelementptr %struct.complex, ptr %invariant.gep1098, i64 %356
  %362 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %362, ptr %gep1099, 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
  %363 = 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 ], [ %363, %._crit_edge727.loopexit ]
  %reass.sub = sub i32 %.21.lcssa, %313
  %364 = add i32 %reass.sub, -2
  %.not544.not = icmp sgt i64 %indvars.iv.next1000, %317
  %indvars.iv.next991 = add i32 %indvars.iv990, -1
  %indvar.next1406 = add i64 %indvar1405, 1
  br i1 %.not544.not, label %.preheader582, label %.loopexit, !llvm.loop !48

.lr.ph694:                                        ; preds = %.thread575
  %365 = mul nsw i32 %45, %10
  %366 = sext i32 %365 to i64
  %367 = zext nneg i32 %19 to i64
  %invariant.gep1088 = getelementptr %struct.complex, ptr %4, i64 %366
  %368 = add nuw nsw i64 %267, 1
  %umax1332 = tail call i64 @llvm.umax.i64(i64 %368, i64 %367)
  %369 = sub nsw i64 %umax1332, %267
  %min.iters.check1335 = icmp ult i64 %369, 30
  br i1 %min.iters.check1335, label %scalar.ph1334.preheader, label %vector.memcheck1316

vector.memcheck1316:                              ; preds = %.lr.ph694
  %370 = shl nuw nsw i64 %267, 3
  %371 = shl nsw i64 %366, 3
  %372 = getelementptr i8, ptr %4, i64 %370
  %scevgep1317 = getelementptr i8, ptr %372, i64 %371
  %373 = add nuw nsw i64 %267, 1
  %umax1318 = tail call i64 @llvm.umax.i64(i64 %373, i64 %367)
  %374 = add nsw i64 %umax1318, %366
  %375 = shl nsw i64 %374, 3
  %376 = getelementptr i8, ptr %4, i64 %375
  %scevgep1319 = getelementptr i8, ptr %376, i64 -4
  %377 = shl nuw nsw i64 %umax1318, 3
  %378 = add nsw i64 %377, -4
  %379 = sub nsw i64 %378, %370
  %scevgep1320 = getelementptr i8, ptr %3, i64 %379
  %380 = add nsw i64 %370, %371
  %381 = or disjoint i64 %380, 4
  %scevgep1321 = getelementptr i8, ptr %4, i64 %381
  %scevgep1322 = getelementptr i8, ptr %4, i64 %375
  %scevgep1323 = getelementptr i8, ptr %3, i64 4
  %382 = sub nsw i64 %377, %370
  %scevgep1324 = getelementptr i8, ptr %3, i64 %382
  %bound01325 = icmp ult ptr %scevgep1317, %scevgep1320
  %bound11326 = icmp ugt ptr %scevgep1319, %3
  %found.conflict1327 = and i1 %bound01325, %bound11326
  %bound01328 = icmp ult ptr %scevgep1321, %scevgep1324
  %bound11329 = icmp ult ptr %scevgep1323, %scevgep1322
  %found.conflict1330 = and i1 %bound01328, %bound11329
  %conflict.rdx1331 = or i1 %found.conflict1327, %found.conflict1330
  br i1 %conflict.rdx1331, label %scalar.ph1334.preheader, label %vector.ph1336

vector.ph1336:                                    ; preds = %vector.memcheck1316
  %n.vec1338 = and i64 %369, -4
  %ind.end1340 = add nsw i64 %n.vec1338, %267
  %invariant.gep1647 = getelementptr i8, ptr %invariant.gep1088, i64 16
  br label %vector.body1342

vector.body1342:                                  ; preds = %vector.body1342, %vector.ph1336
  %index1343 = phi i64 [ 0, %vector.ph1336 ], [ %index.next1353, %vector.body1342 ]
  %383 = or disjoint i64 %index1343, 2
  %offset.idx1344 = add i64 %index1343, %267
  %384 = getelementptr inbounds %struct.complex, ptr %3, i64 %index1343
  %385 = getelementptr inbounds %struct.complex, ptr %3, i64 %383
  %wide.vec1345 = load <4 x float>, ptr %384, align 4, !tbaa !9
  %wide.vec1346 = load <4 x float>, ptr %385, align 4, !tbaa !9
  %386 = getelementptr %struct.complex, ptr %invariant.gep1088, i64 %offset.idx1344
  %gep1648 = getelementptr %struct.complex, ptr %invariant.gep1647, i64 %offset.idx1344
  store <4 x float> %wide.vec1345, ptr %386, align 4, !tbaa !9
  store <4 x float> %wide.vec1346, ptr %gep1648, align 4, !tbaa !9
  %index.next1353 = add nuw i64 %index1343, 4
  %387 = icmp eq i64 %index.next1353, %n.vec1338
  br i1 %387, label %middle.block1333, label %vector.body1342, !llvm.loop !49

middle.block1333:                                 ; preds = %vector.body1342
  %cmp.n1354 = icmp eq i64 %369, %n.vec1338
  br i1 %cmp.n1354, label %._crit_edge695, label %scalar.ph1334.preheader

scalar.ph1334.preheader:                          ; preds = %middle.block1333, %vector.memcheck1316, %.lr.ph694
  %indvars.iv938.ph = phi i64 [ 0, %vector.memcheck1316 ], [ 0, %.lr.ph694 ], [ %n.vec1338, %middle.block1333 ]
  %indvars.iv936.ph = phi i64 [ %267, %vector.memcheck1316 ], [ %267, %.lr.ph694 ], [ %ind.end1340, %middle.block1333 ]
  br label %scalar.ph1334

scalar.ph1334:                                    ; preds = %scalar.ph1334.preheader, %scalar.ph1334
  %indvars.iv938 = phi i64 [ %indvars.iv.next939, %scalar.ph1334 ], [ %indvars.iv938.ph, %scalar.ph1334.preheader ]
  %indvars.iv936 = phi i64 [ %indvars.iv.next937, %scalar.ph1334 ], [ %indvars.iv936.ph, %scalar.ph1334.preheader ]
  %388 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv938
  %gep1089 = getelementptr %struct.complex, ptr %invariant.gep1088, i64 %indvars.iv936
  %389 = load <2 x float>, ptr %388, align 4, !tbaa !9
  store <2 x float> %389, ptr %gep1089, 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, %367
  br i1 %.not538.not, label %scalar.ph1334, label %._crit_edge695, !llvm.loop !50

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

.preheader586.lr.ph:                              ; preds = %._crit_edge695
  %390 = add nsw i32 %45, -2
  %391 = add nuw nsw i32 %45, 1
  %392 = sext i32 %10 to i64
  %393 = zext nneg i32 %391 to i64
  %394 = sext i32 %390 to i64
  %395 = mul nsw i64 %393, %392
  %396 = shl i64 %395, 3
  %397 = shl nsw i64 %392, 3
  %scevgep1362 = getelementptr i8, ptr %3, i64 -4
  %398 = or disjoint i64 %396, 4
  %scevgep1368 = getelementptr i8, ptr %3, i64 4
  %399 = getelementptr i8, ptr %4, i64 %396
  %400 = getelementptr i8, ptr %4, i64 %396
  %401 = getelementptr i8, ptr %400, i64 -4
  %402 = getelementptr i8, ptr %4, i64 %398
  %invariant.gep1649 = getelementptr i8, ptr %3, 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 [ %391, %.preheader586.lr.ph ], [ %indvars.iv.next953, %._crit_edge704 ]
  %.23707.in = phi i64 [ %indvars.iv.next939.lcssa, %.preheader586.lr.ph ], [ %.25.lcssa.in, %._crit_edge704 ]
  %403 = sext i32 %indvars.iv952 to i64
  %404 = add nsw i64 %403, 1
  %405 = mul i64 %397, %indvars.iv965
  %scevgep1356 = getelementptr i8, ptr %399, i64 %405
  %406 = sext i32 %indvars.iv952 to i64
  %407 = shl nsw i64 %406, 3
  %scevgep1357 = getelementptr i8, ptr %scevgep1356, i64 %407
  %scevgep1358 = getelementptr i8, ptr %401, i64 %405
  %408 = add nsw i64 %406, 1
  %409 = mul nsw i64 %406, -8
  %scevgep1365 = getelementptr i8, ptr %402, i64 %405
  %scevgep1366 = getelementptr i8, ptr %scevgep1365, i64 %407
  %.23707 = trunc i64 %.23707.in to i32
  %410 = sext i32 %indvars.iv952 to i64
  %sext1054 = shl i64 %.23707.in, 32
  %411 = ashr exact i64 %sext1054, 32
  %invariant.gep1090 = getelementptr %struct.complex, ptr %4, i64 %indvars.iv965
  br label %412

412:                                              ; preds = %.preheader586, %412
  %indvars.iv956.in = phi i32 [ %.23707, %.preheader586 ], [ %indvars.iv956, %412 ]
  %indvars.iv943 = phi i64 [ %411, %.preheader586 ], [ %indvars.iv.next944, %412 ]
  %indvars.iv941 = phi i64 [ 0, %.preheader586 ], [ %indvars.iv.next942, %412 ]
  %indvars.iv956 = add i32 %indvars.iv956.in, 1
  %413 = mul nsw i64 %indvars.iv941, %392
  %414 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv943
  %415 = call <2 x float> @Cf(ptr noundef %414)
  %.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
  %gep1091 = getelementptr %struct.complex, ptr %invariant.gep1090, i64 %413
  %419 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %419, ptr %gep1091, 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 %420, label %412, !llvm.loop !51

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

.lr.ph703:                                        ; preds = %420
  %424 = mul nsw i64 %422, %392
  %425 = sext i32 %indvars.iv956 to i64
  %invariant.gep1092 = getelementptr %struct.complex, ptr %4, i64 %424
  %smax1379 = call i64 @llvm.smax.i64(i64 %404, i64 %423)
  %426 = sub i64 %smax1379, %403
  %min.iters.check1382 = icmp ult i64 %426, 10
  br i1 %min.iters.check1382, label %scalar.ph1381.preheader, label %vector.memcheck1355

vector.memcheck1355:                              ; preds = %.lr.ph703
  %smax1359 = call i64 @llvm.smax.i64(i64 %408, i64 %423)
  %427 = shl nsw i64 %smax1359, 3
  %scevgep1360 = getelementptr i8, ptr %scevgep1358, i64 %427
  %428 = shl nsw i64 %425, 3
  %scevgep1361 = getelementptr i8, ptr %3, i64 %428
  %scevgep1363 = getelementptr i8, ptr %scevgep1362, i64 %409
  %429 = add i64 %smax1359, %425
  %430 = shl nsw i64 %429, 3
  %scevgep1364 = getelementptr i8, ptr %scevgep1363, i64 %430
  %scevgep1367 = getelementptr i8, ptr %scevgep1356, i64 %427
  %scevgep1369 = getelementptr i8, ptr %scevgep1368, i64 %428
  %scevgep1370 = getelementptr i8, ptr %3, i64 %409
  %scevgep1371 = getelementptr i8, ptr %scevgep1370, i64 %430
  %bound01372 = icmp ult ptr %scevgep1357, %scevgep1364
  %bound11373 = icmp ult ptr %scevgep1361, %scevgep1360
  %found.conflict1374 = and i1 %bound01372, %bound11373
  %bound01375 = icmp ult ptr %scevgep1366, %scevgep1371
  %bound11376 = icmp ult ptr %scevgep1369, %scevgep1367
  %found.conflict1377 = and i1 %bound01375, %bound11376
  %conflict.rdx1378 = or i1 %found.conflict1374, %found.conflict1377
  br i1 %conflict.rdx1378, label %scalar.ph1381.preheader, label %vector.ph1383

vector.ph1383:                                    ; preds = %vector.memcheck1355
  %n.vec1385 = and i64 %426, -4
  %ind.end1386 = add i64 %n.vec1385, %425
  %ind.end1388 = add i64 %n.vec1385, %410
  %invariant.gep1651 = getelementptr i8, ptr %invariant.gep1092, i64 16
  br label %vector.body1390

vector.body1390:                                  ; preds = %vector.body1390, %vector.ph1383
  %index1391 = phi i64 [ 0, %vector.ph1383 ], [ %index.next1402, %vector.body1390 ]
  %offset.idx1392 = add i64 %index1391, %425
  %offset.idx1393 = add i64 %index1391, %410
  %431 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1392
  %gep1650 = getelementptr %struct.complex, ptr %invariant.gep1649, i64 %offset.idx1392
  %wide.vec1394 = load <4 x float>, ptr %431, align 4, !tbaa !9
  %wide.vec1395 = load <4 x float>, ptr %gep1650, align 4, !tbaa !9
  %432 = getelementptr %struct.complex, ptr %invariant.gep1092, i64 %offset.idx1393
  %gep1652 = getelementptr %struct.complex, ptr %invariant.gep1651, i64 %offset.idx1393
  store <4 x float> %wide.vec1394, ptr %432, align 4, !tbaa !9
  store <4 x float> %wide.vec1395, ptr %gep1652, align 4, !tbaa !9
  %index.next1402 = add nuw i64 %index1391, 4
  %433 = icmp eq i64 %index.next1402, %n.vec1385
  br i1 %433, label %middle.block1380, label %vector.body1390, !llvm.loop !52

middle.block1380:                                 ; preds = %vector.body1390
  %cmp.n1403 = icmp eq i64 %426, %n.vec1385
  br i1 %cmp.n1403, label %._crit_edge704, label %scalar.ph1381.preheader

scalar.ph1381.preheader:                          ; preds = %middle.block1380, %vector.memcheck1355, %.lr.ph703
  %indvars.iv958.ph = phi i64 [ %425, %vector.memcheck1355 ], [ %425, %.lr.ph703 ], [ %ind.end1386, %middle.block1380 ]
  %indvars.iv954.ph = phi i64 [ %410, %vector.memcheck1355 ], [ %410, %.lr.ph703 ], [ %ind.end1388, %middle.block1380 ]
  br label %scalar.ph1381

scalar.ph1381:                                    ; preds = %scalar.ph1381.preheader, %scalar.ph1381
  %indvars.iv958 = phi i64 [ %indvars.iv.next959, %scalar.ph1381 ], [ %indvars.iv958.ph, %scalar.ph1381.preheader ]
  %indvars.iv954 = phi i64 [ %indvars.iv.next955, %scalar.ph1381 ], [ %indvars.iv954.ph, %scalar.ph1381.preheader ]
  %434 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv958
  %gep1093 = getelementptr %struct.complex, ptr %invariant.gep1092, i64 %indvars.iv954
  %435 = load <2 x float>, ptr %434, align 4, !tbaa !9
  store <2 x float> %435, ptr %gep1093, 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, %423
  br i1 %.not543.not, label %scalar.ph1381, label %._crit_edge704, !llvm.loop !53

._crit_edge704:                                   ; preds = %scalar.ph1381, %middle.block1380, %420
  %.25.lcssa.in = phi i64 [ %indvars.iv.next944, %420 ], [ %ind.end1386, %middle.block1380 ], [ %indvars.iv.next959, %scalar.ph1381 ]
  %indvars.iv.next966 = add nuw nsw i64 %indvars.iv965, 1
  %.not539.not = icmp slt i64 %indvars.iv965, %394
  %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
  %436 = phi i32 [ %19, %._crit_edge695 ], [ %421, %._crit_edge704 ]
  %.23.lcssa = phi i64 [ %indvars.iv.next939.lcssa, %._crit_edge695 ], [ %.25.lcssa.in, %._crit_edge704 ]
  %.not540713 = icmp sgt i32 %45, %436
  br i1 %.not540713, label %.loopexit, label %.preheader584.lr.ph

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

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

443:                                              ; preds = %.preheader584, %443
  %indvars.iv972 = phi i64 [ %442, %.preheader584 ], [ %indvars.iv.next973, %443 ]
  %indvars.iv970 = phi i64 [ 0, %.preheader584 ], [ %indvars.iv.next971, %443 ]
  %444 = mul nsw i64 %indvars.iv970, %437
  %445 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv972
  %446 = call <2 x float> @Cf(ptr noundef %445)
  %.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
  %gep1095 = getelementptr %struct.complex, ptr %invariant.gep1094, i64 %444
  %450 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %450, ptr %gep1095, 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 %451, label %443, !llvm.loop !55

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

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

457:                                              ; 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 ]
  %458 = load i32, ptr %2, align 4, !tbaa !5
  %.not537.not734 = icmp slt i32 %45, %458
  br i1 %.not537.not734, label %.lr.ph738.preheader, label %._crit_edge739

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

.lr.ph738:                                        ; preds = %.lr.ph738.preheader, %.lr.ph738
  %indvars.iv1004 = phi i64 [ %459, %.lr.ph738.preheader ], [ %indvars.iv.next1005, %.lr.ph738 ]
  %indvars.iv1002 = phi i64 [ %453, %.lr.ph738.preheader ], [ %indvars.iv.next1003, %.lr.ph738 ]
  %461 = mul nsw i64 %indvars.iv1002, %454
  %462 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv1004
  %463 = call <2 x float> @Cf(ptr noundef %462)
  %.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
  %gep1101 = getelementptr %struct.complex, ptr %invariant.gep1100, i64 %461
  %467 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %467, ptr %gep1101, 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 %460, %lftr.wideiv1007
  br i1 %exitcond1008.not, label %._crit_edge739.loopexit, label %.lr.ph738, !llvm.loop !57

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

._crit_edge739:                                   ; preds = %._crit_edge739.loopexit, %457
  %.29.lcssa = phi i32 [ %.28742, %457 ], [ %468, %._crit_edge739.loopexit ]
  %indvars.iv.next1010 = add nuw nsw i64 %indvars.iv1009, 1
  %.not532.not = icmp ult i64 %indvars.iv1009, %456
  br i1 %.not532.not, label %457, 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
  %469 = add nsw i32 %45, -2
  %470 = add nuw nsw i32 %45, 1
  %471 = sext i32 %10 to i64
  %472 = zext nneg i32 %470 to i64
  %473 = sext i32 %469 to i64
  %474 = shl nsw i64 %471, 3
  %475 = shl nsw i64 %471, 3
  %476 = add nsw i64 %475, 8
  %scevgep1455 = getelementptr i8, ptr %3, i64 4
  %invariant.gep1681 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1683 = getelementptr i8, ptr %4, i64 8
  %invariant.gep1667 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1669 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1673 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1677 = getelementptr i8, ptr %3, 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 [ %470, %.preheader.lr.ph ], [ %indvars.iv.next1024, %._crit_edge755 ]
  %.30758 = phi i32 [ %.29.lcssa, %.preheader.lr.ph ], [ %.32.lcssa, %._crit_edge755 ]
  %477 = sext i32 %indvars.iv1023 to i64
  %478 = mul nsw i64 %indvars.iv1036, %471
  %479 = sext i32 %.30758 to i64
  %invariant.gep1102 = getelementptr %struct.complex, ptr %4, i64 %478
  %min.iters.check1468 = icmp ult i64 %indvars.iv1034, 6
  br i1 %min.iters.check1468, label %scalar.ph1467.preheader, label %vector.memcheck1447

vector.memcheck1447:                              ; preds = %.preheader
  %480 = shl nuw nsw i64 %indvars.iv1036, 3
  %gep1682 = getelementptr i8, ptr %invariant.gep1681, i64 %480
  %481 = mul i64 %476, %indvars.iv1036
  %gep1684 = getelementptr i8, ptr %invariant.gep1683, i64 %481
  %482 = mul i64 %474, %indvars.iv1036
  %483 = or disjoint i64 %482, 4
  %scevgep1453 = getelementptr i8, ptr %4, i64 %483
  %484 = or disjoint i64 %480, 4
  %scevgep1451 = getelementptr i8, ptr %3, i64 %484
  %485 = or disjoint i64 %481, 4
  %scevgep1449 = getelementptr i8, ptr %4, i64 %485
  %scevgep1448 = getelementptr i8, ptr %4, i64 %482
  %486 = shl nsw i64 %479, 3
  %scevgep1450 = getelementptr i8, ptr %3, i64 %486
  %scevgep1452 = getelementptr i8, ptr %scevgep1451, i64 %486
  %scevgep1456 = getelementptr i8, ptr %scevgep1455, i64 %486
  %scevgep1458 = getelementptr i8, ptr %gep1682, i64 %486
  %bound01459 = icmp ult ptr %scevgep1448, %scevgep1452
  %bound11460 = icmp ult ptr %scevgep1450, %scevgep1449
  %found.conflict1461 = and i1 %bound01459, %bound11460
  %bound01462 = icmp ult ptr %scevgep1453, %scevgep1458
  %bound11463 = icmp ult ptr %scevgep1456, %gep1684
  %found.conflict1464 = and i1 %bound01462, %bound11463
  %conflict.rdx1465 = or i1 %found.conflict1461, %found.conflict1464
  br i1 %conflict.rdx1465, label %scalar.ph1467.preheader, label %vector.ph1469

vector.ph1469:                                    ; preds = %vector.memcheck1447
  %n.vec1471 = and i64 %indvars.iv1034, 9223372036854775804
  %ind.end1472 = add i64 %n.vec1471, %479
  %487 = insertelement <2 x i32> <i32 poison, i32 0>, i32 %.30758, i64 0
  br label %vector.body1475

vector.body1475:                                  ; preds = %vector.body1475, %vector.ph1469
  %index1476 = phi i64 [ 0, %vector.ph1469 ], [ %index.next1488, %vector.body1475 ]
  %vec.phi1477 = phi <2 x i32> [ %487, %vector.ph1469 ], [ %489, %vector.body1475 ]
  %vec.phi1478 = phi <2 x i32> [ zeroinitializer, %vector.ph1469 ], [ %490, %vector.body1475 ]
  %offset.idx1479 = add i64 %index1476, %479
  %488 = or disjoint i64 %index1476, 2
  %489 = add <2 x i32> %vec.phi1477, <i32 1, i32 1>
  %490 = add <2 x i32> %vec.phi1478, <i32 1, i32 1>
  %491 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1479
  %gep1668 = getelementptr %struct.complex, ptr %invariant.gep1667, i64 %offset.idx1479
  %wide.vec1480 = load <4 x float>, ptr %491, align 4, !tbaa !9
  %wide.vec1481 = load <4 x float>, ptr %gep1668, align 4, !tbaa !9
  %492 = getelementptr %struct.complex, ptr %invariant.gep1102, i64 %index1476
  %493 = getelementptr %struct.complex, ptr %invariant.gep1102, i64 %488
  store <4 x float> %wide.vec1480, ptr %492, align 4, !tbaa !9
  store <4 x float> %wide.vec1481, ptr %493, align 4, !tbaa !9
  %index.next1488 = add nuw i64 %index1476, 4
  %494 = icmp eq i64 %index.next1488, %n.vec1471
  br i1 %494, label %middle.block1466, label %vector.body1475, !llvm.loop !59

middle.block1466:                                 ; preds = %vector.body1475
  %bin.rdx1489 = add <2 x i32> %490, %489
  %495 = call i32 @llvm.vector.reduce.add.v2i32(<2 x i32> %bin.rdx1489)
  %cmp.n1490 = icmp eq i64 %indvars.iv1034, %n.vec1471
  br i1 %cmp.n1490, label %.loopexit1529, label %scalar.ph1467.preheader

scalar.ph1467.preheader:                          ; preds = %middle.block1466, %vector.memcheck1447, %.preheader
  %indvars.iv1027.in.ph = phi i32 [ %.30758, %vector.memcheck1447 ], [ %.30758, %.preheader ], [ %495, %middle.block1466 ]
  %indvars.iv1014.ph = phi i64 [ %479, %vector.memcheck1447 ], [ %479, %.preheader ], [ %ind.end1472, %middle.block1466 ]
  %indvars.iv1012.ph = phi i64 [ 0, %vector.memcheck1447 ], [ 0, %.preheader ], [ %n.vec1471, %middle.block1466 ]
  %496 = sub nsw i64 %indvars.iv1036, %indvars.iv1012.ph
  %xtraiter1563 = and i64 %indvars.iv1034, 3
  %lcmp.mod1564.not = icmp eq i64 %xtraiter1563, 0
  br i1 %lcmp.mod1564.not, label %scalar.ph1467.prol.loopexit, label %scalar.ph1467.prol

scalar.ph1467.prol:                               ; preds = %scalar.ph1467.preheader, %scalar.ph1467.prol
  %indvars.iv1027.in.prol = phi i32 [ %indvars.iv1027.prol, %scalar.ph1467.prol ], [ %indvars.iv1027.in.ph, %scalar.ph1467.preheader ]
  %indvars.iv1014.prol = phi i64 [ %indvars.iv.next1015.prol, %scalar.ph1467.prol ], [ %indvars.iv1014.ph, %scalar.ph1467.preheader ]
  %indvars.iv1012.prol = phi i64 [ %indvars.iv.next1013.prol, %scalar.ph1467.prol ], [ %indvars.iv1012.ph, %scalar.ph1467.preheader ]
  %prol.iter1565 = phi i64 [ %prol.iter1565.next, %scalar.ph1467.prol ], [ 0, %scalar.ph1467.preheader ]
  %indvars.iv1027.prol = add i32 %indvars.iv1027.in.prol, 1
  %497 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv1014.prol
  %gep1103.prol = getelementptr %struct.complex, ptr %invariant.gep1102, i64 %indvars.iv1012.prol
  %498 = load <2 x float>, ptr %497, align 4, !tbaa !9
  store <2 x float> %498, ptr %gep1103.prol, 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.iter1565.next = add i64 %prol.iter1565, 1
  %prol.iter1565.cmp.not = icmp eq i64 %prol.iter1565.next, %xtraiter1563
  br i1 %prol.iter1565.cmp.not, label %scalar.ph1467.prol.loopexit, label %scalar.ph1467.prol, !llvm.loop !60

scalar.ph1467.prol.loopexit:                      ; preds = %scalar.ph1467.prol, %scalar.ph1467.preheader
  %indvars.iv1027.lcssa1533.unr = phi i32 [ poison, %scalar.ph1467.preheader ], [ %indvars.iv1027.prol, %scalar.ph1467.prol ]
  %indvars.iv.next1015.lcssa1532.unr = phi i64 [ poison, %scalar.ph1467.preheader ], [ %indvars.iv.next1015.prol, %scalar.ph1467.prol ]
  %indvars.iv1027.in.unr = phi i32 [ %indvars.iv1027.in.ph, %scalar.ph1467.preheader ], [ %indvars.iv1027.prol, %scalar.ph1467.prol ]
  %indvars.iv1014.unr = phi i64 [ %indvars.iv1014.ph, %scalar.ph1467.preheader ], [ %indvars.iv.next1015.prol, %scalar.ph1467.prol ]
  %indvars.iv1012.unr = phi i64 [ %indvars.iv1012.ph, %scalar.ph1467.preheader ], [ %indvars.iv.next1013.prol, %scalar.ph1467.prol ]
  %499 = icmp ult i64 %496, 3
  br i1 %499, label %.loopexit1529, label %scalar.ph1467.preheader.new

scalar.ph1467.preheader.new:                      ; preds = %scalar.ph1467.prol.loopexit
  %invariant.gep1671 = getelementptr i8, ptr %invariant.gep1102, i64 8
  %invariant.gep1675 = getelementptr i8, ptr %invariant.gep1102, i64 16
  %invariant.gep1679 = getelementptr i8, ptr %invariant.gep1102, i64 24
  br label %scalar.ph1467

scalar.ph1467:                                    ; preds = %scalar.ph1467, %scalar.ph1467.preheader.new
  %indvars.iv1027.in = phi i32 [ %indvars.iv1027.in.unr, %scalar.ph1467.preheader.new ], [ %indvars.iv1027.3, %scalar.ph1467 ]
  %indvars.iv1014 = phi i64 [ %indvars.iv1014.unr, %scalar.ph1467.preheader.new ], [ %indvars.iv.next1015.3, %scalar.ph1467 ]
  %indvars.iv1012 = phi i64 [ %indvars.iv1012.unr, %scalar.ph1467.preheader.new ], [ %indvars.iv.next1013.3, %scalar.ph1467 ]
  %500 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv1014
  %gep1103 = getelementptr %struct.complex, ptr %invariant.gep1102, i64 %indvars.iv1012
  %501 = load <2 x float>, ptr %500, align 4, !tbaa !9
  store <2 x float> %501, ptr %gep1103, align 4, !tbaa !9
  %gep1670 = getelementptr %struct.complex, ptr %invariant.gep1669, i64 %indvars.iv1014
  %gep1672 = getelementptr %struct.complex, ptr %invariant.gep1671, i64 %indvars.iv1012
  %502 = load <2 x float>, ptr %gep1670, align 4, !tbaa !9
  store <2 x float> %502, ptr %gep1672, align 4, !tbaa !9
  %gep1674 = getelementptr %struct.complex, ptr %invariant.gep1673, i64 %indvars.iv1014
  %gep1676 = getelementptr %struct.complex, ptr %invariant.gep1675, i64 %indvars.iv1012
  %503 = load <2 x float>, ptr %gep1674, align 4, !tbaa !9
  store <2 x float> %503, ptr %gep1676, align 4, !tbaa !9
  %indvars.iv1027.3 = add i32 %indvars.iv1027.in, 4
  %gep1678 = getelementptr %struct.complex, ptr %invariant.gep1677, i64 %indvars.iv1014
  %gep1680 = getelementptr %struct.complex, ptr %invariant.gep1679, i64 %indvars.iv1012
  %504 = load <2 x float>, ptr %gep1678, align 4, !tbaa !9
  store <2 x float> %504, ptr %gep1680, 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 %.loopexit1529, label %scalar.ph1467, !llvm.loop !61

.loopexit1529:                                    ; preds = %scalar.ph1467.prol.loopexit, %scalar.ph1467, %middle.block1466
  %indvars.iv1027.lcssa = phi i32 [ %495, %middle.block1466 ], [ %indvars.iv1027.lcssa1533.unr, %scalar.ph1467.prol.loopexit ], [ %indvars.iv1027.3, %scalar.ph1467 ]
  %indvars.iv.next1015.lcssa = phi i64 [ %ind.end1472, %middle.block1466 ], [ %indvars.iv.next1015.lcssa1532.unr, %scalar.ph1467.prol.loopexit ], [ %indvars.iv.next1015.3, %scalar.ph1467 ]
  %505 = load i32, ptr %2, align 4, !tbaa !5
  %506 = add nuw nsw i64 %indvars.iv1036, %472
  %507 = sext i32 %505 to i64
  %.not536.not750 = icmp slt i64 %506, %507
  br i1 %.not536.not750, label %.lr.ph754.preheader, label %._crit_edge755

.lr.ph754.preheader:                              ; preds = %.loopexit1529
  %508 = sext i32 %indvars.iv1027.lcssa to i64
  %invariant.gep1104 = getelementptr %struct.complex, ptr %4, i64 %506
  br label %.lr.ph754

.lr.ph754:                                        ; preds = %.lr.ph754.preheader, %.lr.ph754
  %indvars.iv1029 = phi i64 [ %508, %.lr.ph754.preheader ], [ %indvars.iv.next1030, %.lr.ph754 ]
  %indvars.iv1025 = phi i64 [ %477, %.lr.ph754.preheader ], [ %indvars.iv.next1026, %.lr.ph754 ]
  %509 = mul nsw i64 %indvars.iv1025, %471
  %510 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv1029
  %511 = call <2 x float> @Cf(ptr noundef %510)
  %.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
  %gep1105 = getelementptr %struct.complex, ptr %invariant.gep1104, i64 %509
  %515 = load <2 x float>, ptr %9, align 8, !tbaa !9
  store <2 x float> %515, ptr %gep1105, 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, %507
  br i1 %.not536.not, label %.lr.ph754, label %._crit_edge755, !llvm.loop !62

._crit_edge755:                                   ; preds = %.lr.ph754, %.loopexit1529
  %.32.lcssa.in = phi i64 [ %indvars.iv.next1015.lcssa, %.loopexit1529 ], [ %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, %473
  %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
  %516 = 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 ], [ %516, %._crit_edge760.loopexit ]
  %517 = mul nsw i32 %.11492.lcssa, %10
  %518 = sext i32 %517 to i64
  %519 = sext i32 %.30.lcssa to i64
  %520 = add nuw i32 %.11492.lcssa, 1
  %wide.trip.count1048 = zext i32 %520 to i64
  %invariant.gep1106 = getelementptr %struct.complex, ptr %4, i64 %518
  %min.iters.check1509 = icmp ult i32 %.11492.lcssa, 29
  br i1 %min.iters.check1509, label %scalar.ph1508.preheader, label %vector.memcheck1492

vector.memcheck1492:                              ; preds = %._crit_edge760
  %521 = shl nsw i64 %518, 3
  %522 = zext nneg i32 %.11492.lcssa to i64
  %523 = shl nuw nsw i64 %522, 3
  %524 = add nsw i64 %521, %523
  %525 = or disjoint i64 %524, 4
  %scevgep1493 = getelementptr i8, ptr %4, i64 %525
  %526 = shl nsw i64 %519, 3
  %scevgep1494 = getelementptr i8, ptr %3, i64 %526
  %527 = add nsw i64 %526, %523
  %528 = or disjoint i64 %527, 4
  %scevgep1495 = getelementptr i8, ptr %3, i64 %528
  %529 = or disjoint i64 %521, 4
  %scevgep1496 = getelementptr i8, ptr %4, i64 %529
  %530 = getelementptr i8, ptr %4, i64 %521
  %531 = getelementptr i8, ptr %530, i64 %523
  %scevgep1497 = getelementptr i8, ptr %531, i64 8
  %532 = or disjoint i64 %526, 4
  %scevgep1498 = getelementptr i8, ptr %3, i64 %532
  %533 = getelementptr i8, ptr %3, i64 %526
  %534 = getelementptr i8, ptr %533, i64 %523
  %scevgep1499 = getelementptr i8, ptr %534, i64 8
  %bound01500 = icmp ult ptr %invariant.gep1106, %scevgep1495
  %bound11501 = icmp ult ptr %scevgep1494, %scevgep1493
  %found.conflict1502 = and i1 %bound01500, %bound11501
  %bound01503 = icmp ult ptr %scevgep1496, %scevgep1499
  %bound11504 = icmp ult ptr %scevgep1498, %scevgep1497
  %found.conflict1505 = and i1 %bound01503, %bound11504
  %conflict.rdx1506 = or i1 %found.conflict1502, %found.conflict1505
  br i1 %conflict.rdx1506, label %scalar.ph1508.preheader, label %vector.ph1510

vector.ph1510:                                    ; preds = %vector.memcheck1492
  %n.vec1512 = and i64 %wide.trip.count1048, 4294967292
  %ind.end1513 = add nsw i64 %n.vec1512, %519
  %invariant.gep1685 = getelementptr i8, ptr %3, i64 16
  br label %vector.body1516

vector.body1516:                                  ; preds = %vector.body1516, %vector.ph1510
  %index1517 = phi i64 [ 0, %vector.ph1510 ], [ %index.next1527, %vector.body1516 ]
  %offset.idx1518 = add i64 %index1517, %519
  %535 = or disjoint i64 %index1517, 2
  %536 = getelementptr inbounds %struct.complex, ptr %3, i64 %offset.idx1518
  %gep1686 = getelementptr %struct.complex, ptr %invariant.gep1685, i64 %offset.idx1518
  %wide.vec1519 = load <4 x float>, ptr %536, align 4, !tbaa !9
  %wide.vec1520 = load <4 x float>, ptr %gep1686, align 4, !tbaa !9
  %537 = getelementptr %struct.complex, ptr %invariant.gep1106, i64 %index1517
  %538 = getelementptr %struct.complex, ptr %invariant.gep1106, i64 %535
  store <4 x float> %wide.vec1519, ptr %537, align 4, !tbaa !9
  store <4 x float> %wide.vec1520, ptr %538, align 4, !tbaa !9
  %index.next1527 = add nuw i64 %index1517, 4
  %539 = icmp eq i64 %index.next1527, %n.vec1512
  br i1 %539, label %middle.block1507, label %vector.body1516, !llvm.loop !64

middle.block1507:                                 ; preds = %vector.body1516
  %cmp.n1528 = icmp eq i64 %n.vec1512, %wide.trip.count1048
  br i1 %cmp.n1528, label %.loopexit, label %scalar.ph1508.preheader

scalar.ph1508.preheader:                          ; preds = %middle.block1507, %vector.memcheck1492, %._crit_edge760
  %indvars.iv1043.ph = phi i64 [ %519, %vector.memcheck1492 ], [ %519, %._crit_edge760 ], [ %ind.end1513, %middle.block1507 ]
  %indvars.iv1041.ph = phi i64 [ 0, %vector.memcheck1492 ], [ 0, %._crit_edge760 ], [ %n.vec1512, %middle.block1507 ]
  %540 = zext nneg i32 %.11492.lcssa to i64
  %541 = add nuw nsw i64 %540, 1
  %542 = sub nsw i64 %540, %indvars.iv1041.ph
  %xtraiter1566 = and i64 %541, 3
  %lcmp.mod1567.not = icmp eq i64 %xtraiter1566, 0
  br i1 %lcmp.mod1567.not, label %scalar.ph1508.prol.loopexit, label %scalar.ph1508.prol

scalar.ph1508.prol:                               ; preds = %scalar.ph1508.preheader, %scalar.ph1508.prol
  %indvars.iv1043.prol = phi i64 [ %indvars.iv.next1044.prol, %scalar.ph1508.prol ], [ %indvars.iv1043.ph, %scalar.ph1508.preheader ]
  %indvars.iv1041.prol = phi i64 [ %indvars.iv.next1042.prol, %scalar.ph1508.prol ], [ %indvars.iv1041.ph, %scalar.ph1508.preheader ]
  %prol.iter1568 = phi i64 [ %prol.iter1568.next, %scalar.ph1508.prol ], [ 0, %scalar.ph1508.preheader ]
  %543 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv1043.prol
  %gep1107.prol = getelementptr %struct.complex, ptr %invariant.gep1106, i64 %indvars.iv1041.prol
  %544 = load <2 x float>, ptr %543, align 4, !tbaa !9
  store <2 x float> %544, ptr %gep1107.prol, 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.iter1568.next = add i64 %prol.iter1568, 1
  %prol.iter1568.cmp.not = icmp eq i64 %prol.iter1568.next, %xtraiter1566
  br i1 %prol.iter1568.cmp.not, label %scalar.ph1508.prol.loopexit, label %scalar.ph1508.prol, !llvm.loop !65

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

scalar.ph1508.preheader.new:                      ; preds = %scalar.ph1508.prol.loopexit
  %invariant.gep1687 = getelementptr i8, ptr %3, i64 8
  %invariant.gep1689 = getelementptr i8, ptr %invariant.gep1106, i64 8
  %invariant.gep1691 = getelementptr i8, ptr %3, i64 16
  %invariant.gep1693 = getelementptr i8, ptr %invariant.gep1106, i64 16
  %invariant.gep1695 = getelementptr i8, ptr %3, i64 24
  %invariant.gep1697 = getelementptr i8, ptr %invariant.gep1106, i64 24
  br label %scalar.ph1508

scalar.ph1508:                                    ; preds = %scalar.ph1508, %scalar.ph1508.preheader.new
  %indvars.iv1043 = phi i64 [ %indvars.iv1043.unr, %scalar.ph1508.preheader.new ], [ %indvars.iv.next1044.3, %scalar.ph1508 ]
  %indvars.iv1041 = phi i64 [ %indvars.iv1041.unr, %scalar.ph1508.preheader.new ], [ %indvars.iv.next1042.3, %scalar.ph1508 ]
  %546 = getelementptr inbounds %struct.complex, ptr %3, i64 %indvars.iv1043
  %gep1107 = getelementptr %struct.complex, ptr %invariant.gep1106, i64 %indvars.iv1041
  %547 = load <2 x float>, ptr %546, align 4, !tbaa !9
  store <2 x float> %547, ptr %gep1107, align 4, !tbaa !9
  %gep1688 = getelementptr %struct.complex, ptr %invariant.gep1687, i64 %indvars.iv1043
  %gep1690 = getelementptr %struct.complex, ptr %invariant.gep1689, i64 %indvars.iv1041
  %548 = load <2 x float>, ptr %gep1688, align 4, !tbaa !9
  store <2 x float> %548, ptr %gep1690, align 4, !tbaa !9
  %gep1692 = getelementptr %struct.complex, ptr %invariant.gep1691, i64 %indvars.iv1043
  %gep1694 = getelementptr %struct.complex, ptr %invariant.gep1693, i64 %indvars.iv1041
  %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.iv1043
  %gep1698 = getelementptr %struct.complex, ptr %invariant.gep1697, i64 %indvars.iv1041
  %550 = load <2 x float>, ptr %gep1696, align 4, !tbaa !9
  store <2 x float> %550, ptr %gep1698, 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.ph1508, !llvm.loop !66

.loopexit:                                        ; preds = %._crit_edge604, %._crit_edge622, %._crit_edge647.us, %._crit_edge673, %._crit_edge685, %451, %._crit_edge727, %scalar.ph1508.prol.loopexit, %scalar.ph1508, %middle.block1507, %._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