; LLVM IR from kkumatani/distant_speech_recognition :: btk20_src/matrix/linpack_c.ll (Z5chpdiPSt7complexIfEiPiPfS2_i)

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

%"class.std::complex" = type { { float, float } }

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #1 align 2

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare { i64, i1 } @llvm.umul.with.overflow.i64(i64, i64) #2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) #3

declare i32 @__gxx_personality_v0(...)

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPvm(ptr noundef, i64 noundef) #4

declare void @_Z5cswapiPSt7complexIfEiS1_i(i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #5

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZSt4conjIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8)) #7

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8)) #8

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZStngIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8)) #7

declare void @_Z5caxpyiSt7complexIfEPS0_iS1_i(i32 noundef, <2 x float>, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #5

declare <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef float @_ZSt3absIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8)) #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZStdvIfESt7complexIT_ERKS2_RKS1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) #7

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) #9

; Function Attrs: mustprogress uwtable
define dso_local void @_Z5chpdiPSt7complexIfEiPiPfS2_i(ptr noundef %0, i32 noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, i32 noundef %5) #10 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca i32, align 4
  %13 = alloca float, align 4
  %14 = alloca %"class.std::complex", align 4
  %15 = alloca float, align 4
  %16 = alloca float, align 4
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca i32, align 4
  %21 = alloca i32, align 4
  %22 = alloca i32, align 4
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca i32, align 4
  %28 = alloca i32, align 4
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  %35 = alloca i8, align 1
  %36 = alloca float, align 4
  %37 = alloca %"class.std::complex", align 4
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca i32, align 4
  %41 = alloca %"class.std::complex", align 4
  %42 = alloca %"class.std::complex", align 4
  %43 = alloca %"class.std::complex", align 4
  %44 = alloca %"class.std::complex", align 4
  %45 = alloca %"class.std::complex", align 4
  %46 = alloca %"class.std::complex", align 4
  %47 = alloca %"class.std::complex", align 4
  %48 = alloca %"class.std::complex", align 4
  %49 = alloca %"class.std::complex", align 4
  %50 = alloca %"class.std::complex", align 4
  %51 = alloca %"class.std::complex", align 4
  %52 = alloca %"class.std::complex", align 4
  %53 = alloca %"class.std::complex", align 4
  %54 = alloca %"class.std::complex", align 4
  %55 = alloca %"class.std::complex", align 4
  %56 = alloca %"class.std::complex", align 4
  %57 = alloca %"class.std::complex", align 4
  %58 = alloca %"class.std::complex", align 4
  %59 = alloca %"class.std::complex", align 4
  %60 = alloca %"class.std::complex", align 4
  %61 = alloca %"class.std::complex", align 4
  %62 = alloca %"class.std::complex", align 4
  %63 = alloca %"class.std::complex", align 4
  %64 = alloca %"class.std::complex", align 4
  %65 = alloca %"class.std::complex", align 4
  store ptr %0, ptr %7, align 8, !tbaa !5
  store i32 %1, ptr %8, align 4, !tbaa !9
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store i32 %5, ptr %12, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %13) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #11
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %22) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %26) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %28) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %32) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #11
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #11
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #11
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %37, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #11
  %66 = load i32, ptr %12, align 4, !tbaa !9
  %67 = srem i32 %66, 10
  %68 = icmp eq i32 %67, 0
  %69 = zext i1 %68 to i8
  store i8 %69, ptr %35, align 1, !tbaa !11
  %70 = load i32, ptr %12, align 4, !tbaa !9
  %71 = srem i32 %70, 100
  %72 = sdiv i32 %71, 10
  %73 = icmp eq i32 %72, 0
  %74 = zext i1 %73 to i8
  store i8 %74, ptr %33, align 1, !tbaa !11
  %75 = load i32, ptr %12, align 4, !tbaa !9
  %76 = srem i32 %75, 1000
  %77 = sdiv i32 %76, 100
  %78 = icmp eq i32 %77, 0
  %79 = zext i1 %78 to i8
  store i8 %79, ptr %34, align 1, !tbaa !11
  %80 = load i8, ptr %33, align 1, !tbaa !11, !range !13, !noundef !14
  %81 = trunc i8 %80 to i1
  br i1 %81, label %82, label %85

82:                                               ; preds = %6
  %83 = load i8, ptr %34, align 1, !tbaa !11, !range !13, !noundef !14
  %84 = trunc i8 %83 to i1
  br i1 %84, label %271, label %85

85:                                               ; preds = %82, %6
  %86 = load i8, ptr %34, align 1, !tbaa !11, !range !13, !noundef !14
  %87 = trunc i8 %86 to i1
  br i1 %87, label %95, label %88

88:                                               ; preds = %85
  %89 = load ptr, ptr %11, align 8, !tbaa !5
  %90 = getelementptr inbounds i32, ptr %89, i64 0
  store i32 0, ptr %90, align 4, !tbaa !9
  %91 = load ptr, ptr %11, align 8, !tbaa !5
  %92 = getelementptr inbounds i32, ptr %91, i64 1
  store i32 0, ptr %92, align 4, !tbaa !9
  %93 = load ptr, ptr %11, align 8, !tbaa !5
  %94 = getelementptr inbounds i32, ptr %93, i64 2
  store i32 0, ptr %94, align 4, !tbaa !9
  br label %95

95:                                               ; preds = %88, %85
  %96 = load i8, ptr %33, align 1, !tbaa !11, !range !13, !noundef !14
  %97 = trunc i8 %96 to i1
  br i1 %97, label %103, label %98

98:                                               ; preds = %95
  %99 = load ptr, ptr %10, align 8, !tbaa !5
  %100 = getelementptr inbounds float, ptr %99, i64 0
  store float 1.000000e+00, ptr %100, align 4, !tbaa !15
  %101 = load ptr, ptr %10, align 8, !tbaa !5
  %102 = getelementptr inbounds float, ptr %101, i64 1
  store float 0.000000e+00, ptr %102, align 4, !tbaa !15
  br label %103

103:                                              ; preds = %98, %95
  store float 0.000000e+00, ptr %36, align 4, !tbaa !15
  store i32 0, ptr %18, align 4, !tbaa !9
  store i32 1, ptr %25, align 4, !tbaa !9
  br label %104

104:                                              ; preds = %267, %103
  %105 = load i32, ptr %25, align 4, !tbaa !9
  %106 = load i32, ptr %8, align 4, !tbaa !9
  %107 = icmp sle i32 %105, %106
  br i1 %107, label %108, label %270

108:                                              ; preds = %104
  %109 = load i32, ptr %18, align 4, !tbaa !9
  %110 = load i32, ptr %25, align 4, !tbaa !9
  %111 = add nsw i32 %109, %110
  store i32 %111, ptr %26, align 4, !tbaa !9
  %112 = load ptr, ptr %7, align 8, !tbaa !5
  %113 = load i32, ptr %26, align 4, !tbaa !9
  %114 = sub nsw i32 %113, 1
  %115 = sext i32 %114 to i64
  %116 = getelementptr inbounds %"class.std::complex", ptr %112, i64 %115
  %117 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %116)
  store float %117, ptr %16, align 4, !tbaa !15
  %118 = load ptr, ptr %9, align 8, !tbaa !5
  %119 = load i32, ptr %25, align 4, !tbaa !9
  %120 = sub nsw i32 %119, 1
  %121 = sext i32 %120 to i64
  %122 = getelementptr inbounds i32, ptr %118, i64 %121
  %123 = load i32, ptr %122, align 4, !tbaa !9
  %124 = icmp sle i32 %123, 0
  br i1 %124, label %125, label %156

125:                                              ; preds = %108
  %126 = load float, ptr %36, align 4, !tbaa !15
  %127 = fpext float %126 to double
  %128 = fcmp oeq double %127, 0.000000e+00
  br i1 %128, label %129, label %153

129:                                              ; preds = %125
  %130 = load i32, ptr %18, align 4, !tbaa !9
  %131 = load i32, ptr %25, align 4, !tbaa !9
  %132 = add nsw i32 %130, %131
  store i32 %132, ptr %19, align 4, !tbaa !9
  %133 = load i32, ptr %19, align 4, !tbaa !9
  %134 = load i32, ptr %25, align 4, !tbaa !9
  %135 = add nsw i32 %133, %134
  store i32 %135, ptr %27, align 4, !tbaa !9
  %136 = load ptr, ptr %7, align 8, !tbaa !5
  %137 = load i32, ptr %27, align 4, !tbaa !9
  %138 = sub nsw i32 %137, 1
  %139 = sext i32 %138 to i64
  %140 = getelementptr inbounds %"class.std::complex", ptr %136, i64 %139
  %141 = call noundef float @_ZSt3absIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %140)
  store float %141, ptr %36, align 4, !tbaa !15
  %142 = load float, ptr %16, align 4, !tbaa !15
  %143 = load float, ptr %36, align 4, !tbaa !15
  %144 = fdiv float %142, %143
  %145 = load ptr, ptr %7, align 8, !tbaa !5
  %146 = load i32, ptr %27, align 4, !tbaa !9
  %147 = sext i32 %146 to i64
  %148 = getelementptr inbounds %"class.std::complex", ptr %145, i64 %147
  %149 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %148)
  %150 = load float, ptr %36, align 4, !tbaa !15
  %151 = fneg float %150
  %152 = call float @llvm.fmuladd.f32(float %144, float %149, float %151)
  store float %152, ptr %16, align 4, !tbaa !15
  br label %155

153:                                              ; preds = %125
  %154 = load float, ptr %36, align 4, !tbaa !15
  store float %154, ptr %16, align 4, !tbaa !15
  store float 0.000000e+00, ptr %36, align 4, !tbaa !15
  br label %155

155:                                              ; preds = %153, %129
  br label %156

156:                                              ; preds = %155, %108
  %157 = load i8, ptr %34, align 1, !tbaa !11, !range !13, !noundef !14
  %158 = trunc i8 %157 to i1
  br i1 %158, label %195, label %159

159:                                              ; preds = %156
  %160 = load float, ptr %16, align 4, !tbaa !15
  %161 = fpext float %160 to double
  %162 = fcmp olt double 0.000000e+00, %161
  br i1 %162, label %163, label %170

163:                                              ; preds = %159
  %164 = load ptr, ptr %11, align 8, !tbaa !5
  %165 = getelementptr inbounds i32, ptr %164, i64 0
  %166 = load i32, ptr %165, align 4, !tbaa !9
  %167 = add nsw i32 %166, 1
  %168 = load ptr, ptr %11, align 8, !tbaa !5
  %169 = getelementptr inbounds i32, ptr %168, i64 0
  store i32 %167, ptr %169, align 4, !tbaa !9
  br label %194

170:                                              ; preds = %159
  %171 = load float, ptr %16, align 4, !tbaa !15
  %172 = fpext float %171 to double
  %173 = fcmp olt double %172, 0.000000e+00
  br i1 %173, label %174, label %181

174:                                              ; preds = %170
  %175 = load ptr, ptr %11, align 8, !tbaa !5
  %176 = getelementptr inbounds i32, ptr %175, i64 1
  %177 = load i32, ptr %176, align 4, !tbaa !9
  %178 = add nsw i32 %177, 1
  %179 = load ptr, ptr %11, align 8, !tbaa !5
  %180 = getelementptr inbounds i32, ptr %179, i64 1
  store i32 %178, ptr %180, align 4, !tbaa !9
  br label %193

181:                                              ; preds = %170
  %182 = load float, ptr %16, align 4, !tbaa !15
  %183 = fpext float %182 to double
  %184 = fcmp oeq double %183, 0.000000e+00
  br i1 %184, label %185, label %192

185:                                              ; preds = %181
  %186 = load ptr, ptr %11, align 8, !tbaa !5
  %187 = getelementptr inbounds i32, ptr %186, i64 2
  %188 = load i32, ptr %187, align 4, !tbaa !9
  %189 = add nsw i32 %188, 1
  %190 = load ptr, ptr %11, align 8, !tbaa !5
  %191 = getelementptr inbounds i32, ptr %190, i64 2
  store i32 %189, ptr %191, align 4, !tbaa !9
  br label %192

192:                                              ; preds = %185, %181
  br label %193

193:                                              ; preds = %192, %174
  br label %194

194:                                              ; preds = %193, %163
  br label %195

195:                                              ; preds = %194, %156
  %196 = load i8, ptr %33, align 1, !tbaa !11, !range !13, !noundef !14
  %197 = trunc i8 %196 to i1
  br i1 %197, label %263, label %198

198:                                              ; preds = %195
  %199 = load ptr, ptr %10, align 8, !tbaa !5
  %200 = getelementptr inbounds float, ptr %199, i64 0
  %201 = load float, ptr %200, align 4, !tbaa !15
  %202 = load float, ptr %16, align 4, !tbaa !15
  %203 = fmul float %201, %202
  %204 = load ptr, ptr %10, align 8, !tbaa !5
  %205 = getelementptr inbounds float, ptr %204, i64 0
  store float %203, ptr %205, align 4, !tbaa !15
  %206 = load ptr, ptr %10, align 8, !tbaa !5
  %207 = getelementptr inbounds float, ptr %206, i64 0
  %208 = load float, ptr %207, align 4, !tbaa !15
  %209 = fpext float %208 to double
  %210 = fcmp une double %209, 0.000000e+00
  br i1 %210, label %211, label %262

211:                                              ; preds = %198
  br label %212

212:                                              ; preds = %219, %211
  %213 = load ptr, ptr %10, align 8, !tbaa !5
  %214 = getelementptr inbounds float, ptr %213, i64 0
  %215 = load float, ptr %214, align 4, !tbaa !15
  %216 = call noundef float @_ZSt4fabsf(float noundef %215)
  %217 = fpext float %216 to double
  %218 = fcmp olt double %217, 1.000000e+00
  br i1 %218, label %219, label %236

219:                                              ; preds = %212
  %220 = load ptr, ptr %10, align 8, !tbaa !5
  %221 = getelementptr inbounds float, ptr %220, i64 0
  %222 = load float, ptr %221, align 4, !tbaa !15
  %223 = fpext float %222 to double
  %224 = fmul double %223, 1.000000e+01
  %225 = fptrunc double %224 to float
  %226 = load ptr, ptr %10, align 8, !tbaa !5
  %227 = getelementptr inbounds float, ptr %226, i64 0
  store float %225, ptr %227, align 4, !tbaa !15
  %228 = load ptr, ptr %10, align 8, !tbaa !5
  %229 = getelementptr inbounds float, ptr %228, i64 1
  %230 = load float, ptr %229, align 4, !tbaa !15
  %231 = fpext float %230 to double
  %232 = fsub double %231, 1.000000e+00
  %233 = fptrunc double %232 to float
  %234 = load ptr, ptr %10, align 8, !tbaa !5
  %235 = getelementptr inbounds float, ptr %234, i64 1
  store float %233, ptr %235, align 4, !tbaa !15
  br label %212, !llvm.loop !17

236:                                              ; preds = %212
  br label %237

237:                                              ; preds = %244, %236
  %238 = load ptr, ptr %10, align 8, !tbaa !5
  %239 = getelementptr inbounds float, ptr %238, i64 0
  %240 = load float, ptr %239, align 4, !tbaa !15
  %241 = call noundef float @_ZSt4fabsf(float noundef %240)
  %242 = fpext float %241 to double
  %243 = fcmp ole double 1.000000e+01, %242
  br i1 %243, label %244, label %261

244:                                              ; preds = %237
  %245 = load ptr, ptr %10, align 8, !tbaa !5
  %246 = getelementptr inbounds float, ptr %245, i64 0
  %247 = load float, ptr %246, align 4, !tbaa !15
  %248 = fpext float %247 to double
  %249 = fdiv double %248, 1.000000e+01
  %250 = fptrunc double %249 to float
  %251 = load ptr, ptr %10, align 8, !tbaa !5
  %252 = getelementptr inbounds float, ptr %251, i64 0
  store float %250, ptr %252, align 4, !tbaa !15
  %253 = load ptr, ptr %10, align 8, !tbaa !5
  %254 = getelementptr inbounds float, ptr %253, i64 1
  %255 = load float, ptr %254, align 4, !tbaa !15
  %256 = fpext float %255 to double
  %257 = fadd double %256, 1.000000e+00
  %258 = fptrunc double %257 to float
  %259 = load ptr, ptr %10, align 8, !tbaa !5
  %260 = getelementptr inbounds float, ptr %259, i64 1
  store float %258, ptr %260, align 4, !tbaa !15
  br label %237, !llvm.loop !19

261:                                              ; preds = %237
  br label %262

262:                                              ; preds = %261, %198
  br label %263

263:                                              ; preds = %262, %195
  %264 = load i32, ptr %18, align 4, !tbaa !9
  %265 = load i32, ptr %25, align 4, !tbaa !9
  %266 = add nsw i32 %264, %265
  store i32 %266, ptr %18, align 4, !tbaa !9
  br label %267

267:                                              ; preds = %263
  %268 = load i32, ptr %25, align 4, !tbaa !9
  %269 = add nsw i32 %268, 1
  store i32 %269, ptr %25, align 4, !tbaa !9
  br label %104, !llvm.loop !20

270:                                              ; preds = %104
  br label %271

271:                                              ; preds = %270, %82
  %272 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %273 = trunc i8 %272 to i1
  br i1 %273, label %807, label %274

274:                                              ; preds = %271
  %275 = load i32, ptr %8, align 4, !tbaa !9
  %276 = sext i32 %275 to i64
  %277 = call { i64, i1 } @llvm.umul.with.overflow.i64(i64 %276, i64 8)
  %278 = extractvalue { i64, i1 } %277, 1
  %279 = extractvalue { i64, i1 } %277, 0
  %280 = select i1 %278, i64 -1, i64 %279
  %281 = call noalias noundef nonnull ptr @_Znam(i64 noundef %280) #12
  %282 = icmp eq i64 %276, 0
  br i1 %282, label %290, label %283

283:                                              ; preds = %274
  %284 = getelementptr inbounds %"class.std::complex", ptr %281, i64 %276
  br label %285

285:                                              ; preds = %287, %283
  %286 = phi ptr [ %281, %283 ], [ %288, %287 ]
  invoke void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %286, float noundef 0.000000e+00, float noundef 0.000000e+00)
          to label %287 unwind label %352

287:                                              ; preds = %285
  %288 = getelementptr inbounds %"class.std::complex", ptr %286, i64 1
  %289 = icmp eq ptr %288, %284
  br i1 %289, label %290, label %285

290:                                              ; preds = %287, %274
  store ptr %281, ptr %38, align 8, !tbaa !5
  store i32 1, ptr %25, align 4, !tbaa !9
  store i32 0, ptr %18, align 4, !tbaa !9
  br label %291

291:                                              ; preds = %798, %290
  %292 = load i32, ptr %25, align 4, !tbaa !9
  %293 = load i32, ptr %8, align 4, !tbaa !9
  %294 = icmp sle i32 %292, %293
  br i1 %294, label %295, label %802

295:                                              ; preds = %291
  %296 = load i32, ptr %25, align 4, !tbaa !9
  %297 = sub nsw i32 %296, 1
  store i32 %297, ptr %28, align 4, !tbaa !9
  %298 = load i32, ptr %18, align 4, !tbaa !9
  %299 = load i32, ptr %25, align 4, !tbaa !9
  %300 = add nsw i32 %298, %299
  store i32 %300, ptr %26, align 4, !tbaa !9
  %301 = load i32, ptr %18, align 4, !tbaa !9
  %302 = load i32, ptr %25, align 4, !tbaa !9
  %303 = add nsw i32 %301, %302
  store i32 %303, ptr %19, align 4, !tbaa !9
  %304 = load i32, ptr %19, align 4, !tbaa !9
  %305 = load i32, ptr %25, align 4, !tbaa !9
  %306 = add nsw i32 %304, %305
  store i32 %306, ptr %27, align 4, !tbaa !9
  %307 = load ptr, ptr %9, align 8, !tbaa !5
  %308 = load i32, ptr %25, align 4, !tbaa !9
  %309 = sub nsw i32 %308, 1
  %310 = sext i32 %309 to i64
  %311 = getelementptr inbounds i32, ptr %307, i64 %310
  %312 = load i32, ptr %311, align 4, !tbaa !9
  %313 = icmp sle i32 0, %312
  br i1 %313, label %314, label %424

314:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #11
  %315 = load ptr, ptr %7, align 8, !tbaa !5
  %316 = load i32, ptr %26, align 4, !tbaa !9
  %317 = sub nsw i32 %316, 1
  %318 = sext i32 %317 to i64
  %319 = getelementptr inbounds %"class.std::complex", ptr %315, i64 %318
  %320 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %319)
  %321 = fpext float %320 to double
  %322 = fdiv double 1.000000e+00, %321
  %323 = fptrunc double %322 to float
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %41, float noundef %323, float noundef 0.000000e+00)
  %324 = load ptr, ptr %7, align 8, !tbaa !5
  %325 = load i32, ptr %26, align 4, !tbaa !9
  %326 = sub nsw i32 %325, 1
  %327 = sext i32 %326 to i64
  %328 = getelementptr inbounds %"class.std::complex", ptr %324, i64 %327
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %328, ptr align 4 %41, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #11
  %329 = load i32, ptr %28, align 4, !tbaa !9
  %330 = icmp sle i32 1, %329
  br i1 %330, label %331, label %423

331:                                              ; preds = %314
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %332

332:                                              ; preds = %349, %331
  %333 = load i32, ptr %21, align 4, !tbaa !9
  %334 = load i32, ptr %28, align 4, !tbaa !9
  %335 = icmp sle i32 %333, %334
  br i1 %335, label %336, label %356

336:                                              ; preds = %332
  %337 = load ptr, ptr %7, align 8, !tbaa !5
  %338 = load i32, ptr %18, align 4, !tbaa !9
  %339 = load i32, ptr %21, align 4, !tbaa !9
  %340 = add nsw i32 %338, %339
  %341 = sub nsw i32 %340, 1
  %342 = sext i32 %341 to i64
  %343 = getelementptr inbounds %"class.std::complex", ptr %337, i64 %342
  %344 = load ptr, ptr %38, align 8, !tbaa !5
  %345 = load i32, ptr %21, align 4, !tbaa !9
  %346 = sub nsw i32 %345, 1
  %347 = sext i32 %346 to i64
  %348 = getelementptr inbounds %"class.std::complex", ptr %344, i64 %347
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %348, ptr align 4 %343, i64 8, i1 false), !tbaa.struct !21
  br label %349

349:                                              ; preds = %336
  %350 = load i32, ptr %21, align 4, !tbaa !9
  %351 = add nsw i32 %350, 1
  store i32 %351, ptr %21, align 4, !tbaa !9
  br label %332, !llvm.loop !23

352:                                              ; preds = %285
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %39, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %40, align 4
  call void @_ZdaPvm(ptr noundef %281, i64 noundef %280) #13
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  br label %808

356:                                              ; preds = %332
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %357

357:                                              ; preds = %398, %356
  %358 = load i32, ptr %21, align 4, !tbaa !9
  %359 = load i32, ptr %28, align 4, !tbaa !9
  %360 = icmp sle i32 %358, %359
  br i1 %360, label %361, label %401

361:                                              ; preds = %357
  %362 = load i32, ptr %18, align 4, !tbaa !9
  %363 = load i32, ptr %21, align 4, !tbaa !9
  %364 = add nsw i32 %362, %363
  store i32 %364, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #11
  %365 = load i32, ptr %21, align 4, !tbaa !9
  %366 = load ptr, ptr %7, align 8, !tbaa !5
  %367 = load i32, ptr %17, align 4, !tbaa !9
  %368 = sext i32 %367 to i64
  %369 = getelementptr inbounds %"class.std::complex", ptr %366, i64 %368
  %370 = load ptr, ptr %38, align 8, !tbaa !5
  %371 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %365, ptr noundef %369, i32 noundef 1, ptr noundef %370, i32 noundef 1)
  %372 = getelementptr inbounds %"class.std::complex", ptr %42, i32 0, i32 0
  store <2 x float> %371, ptr %372, align 4
  %373 = load ptr, ptr %7, align 8, !tbaa !5
  %374 = load i32, ptr %23, align 4, !tbaa !9
  %375 = sub nsw i32 %374, 1
  %376 = sext i32 %375 to i64
  %377 = getelementptr inbounds %"class.std::complex", ptr %373, i64 %376
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %377, ptr align 4 %42, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #11
  %378 = load i32, ptr %21, align 4, !tbaa !9
  %379 = sub nsw i32 %378, 1
  %380 = load ptr, ptr %38, align 8, !tbaa !5
  %381 = load i32, ptr %21, align 4, !tbaa !9
  %382 = sub nsw i32 %381, 1
  %383 = sext i32 %382 to i64
  %384 = getelementptr inbounds %"class.std::complex", ptr %380, i64 %383
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %43, ptr align 4 %384, i64 8, i1 false), !tbaa.struct !21
  %385 = load ptr, ptr %7, align 8, !tbaa !5
  %386 = load i32, ptr %17, align 4, !tbaa !9
  %387 = sext i32 %386 to i64
  %388 = getelementptr inbounds %"class.std::complex", ptr %385, i64 %387
  %389 = load ptr, ptr %7, align 8, !tbaa !5
  %390 = load i32, ptr %18, align 4, !tbaa !9
  %391 = sext i32 %390 to i64
  %392 = getelementptr inbounds %"class.std::complex", ptr %389, i64 %391
  %393 = getelementptr inbounds %"class.std::complex", ptr %43, i32 0, i32 0
  %394 = load <2 x float>, ptr %393, align 4
  call void @_Z5caxpyiSt7complexIfEPS0_iS1_i(i32 noundef %379, <2 x float> %394, ptr noundef %388, i32 noundef 1, ptr noundef %392, i32 noundef 1)
  %395 = load i32, ptr %17, align 4, !tbaa !9
  %396 = load i32, ptr %21, align 4, !tbaa !9
  %397 = add nsw i32 %395, %396
  store i32 %397, ptr %17, align 4, !tbaa !9
  br label %398

398:                                              ; preds = %361
  %399 = load i32, ptr %21, align 4, !tbaa !9
  %400 = add nsw i32 %399, 1
  store i32 %400, ptr %21, align 4, !tbaa !9
  br label %357, !llvm.loop !24

401:                                              ; preds = %357
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #11
  %402 = load ptr, ptr %7, align 8, !tbaa !5
  %403 = load i32, ptr %26, align 4, !tbaa !9
  %404 = sub nsw i32 %403, 1
  %405 = sext i32 %404 to i64
  %406 = getelementptr inbounds %"class.std::complex", ptr %402, i64 %405
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #11
  %407 = load i32, ptr %28, align 4, !tbaa !9
  %408 = load ptr, ptr %38, align 8, !tbaa !5
  %409 = load ptr, ptr %7, align 8, !tbaa !5
  %410 = load i32, ptr %18, align 4, !tbaa !9
  %411 = sext i32 %410 to i64
  %412 = getelementptr inbounds %"class.std::complex", ptr %409, i64 %411
  %413 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %407, ptr noundef %408, i32 noundef 1, ptr noundef %412, i32 noundef 1)
  %414 = getelementptr inbounds %"class.std::complex", ptr %46, i32 0, i32 0
  store <2 x float> %413, ptr %414, align 4
  %415 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %46)
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %45, float noundef %415, float noundef 0.000000e+00)
  %416 = call <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8) %406, ptr noundef nonnull align 4 dereferenceable(8) %45)
  %417 = getelementptr inbounds %"class.std::complex", ptr %44, i32 0, i32 0
  store <2 x float> %416, ptr %417, align 4
  %418 = load ptr, ptr %7, align 8, !tbaa !5
  %419 = load i32, ptr %26, align 4, !tbaa !9
  %420 = sub nsw i32 %419, 1
  %421 = sext i32 %420 to i64
  %422 = getelementptr inbounds %"class.std::complex", ptr %418, i64 %421
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %422, ptr align 4 %44, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #11
  br label %423

423:                                              ; preds = %401, %314
  store i32 1, ptr %32, align 4, !tbaa !9
  br label %685

424:                                              ; preds = %295
  %425 = load ptr, ptr %7, align 8, !tbaa !5
  %426 = load i32, ptr %27, align 4, !tbaa !9
  %427 = sub nsw i32 %426, 1
  %428 = sext i32 %427 to i64
  %429 = getelementptr inbounds %"class.std::complex", ptr %425, i64 %428
  %430 = call noundef float @_ZSt3absIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %429)
  store float %430, ptr %36, align 4, !tbaa !15
  %431 = load ptr, ptr %7, align 8, !tbaa !5
  %432 = load i32, ptr %26, align 4, !tbaa !9
  %433 = sub nsw i32 %432, 1
  %434 = sext i32 %433 to i64
  %435 = getelementptr inbounds %"class.std::complex", ptr %431, i64 %434
  %436 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %435)
  %437 = load float, ptr %36, align 4, !tbaa !15
  %438 = fdiv float %436, %437
  store float %438, ptr %13, align 4, !tbaa !15
  %439 = load ptr, ptr %7, align 8, !tbaa !5
  %440 = load i32, ptr %27, align 4, !tbaa !9
  %441 = sext i32 %440 to i64
  %442 = getelementptr inbounds %"class.std::complex", ptr %439, i64 %441
  %443 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %442)
  %444 = load float, ptr %36, align 4, !tbaa !15
  %445 = fdiv float %443, %444
  store float %445, ptr %15, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #11
  %446 = load ptr, ptr %7, align 8, !tbaa !5
  %447 = load i32, ptr %27, align 4, !tbaa !9
  %448 = sub nsw i32 %447, 1
  %449 = sext i32 %448 to i64
  %450 = getelementptr inbounds %"class.std::complex", ptr %446, i64 %449
  %451 = call <2 x float> @_ZStdvIfESt7complexIT_ERKS2_RKS1_(ptr noundef nonnull align 4 dereferenceable(8) %450, ptr noundef nonnull align 4 dereferenceable(4) %36)
  %452 = getelementptr inbounds %"class.std::complex", ptr %47, i32 0, i32 0
  store <2 x float> %451, ptr %452, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %14, ptr align 4 %47, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #11
  %453 = load float, ptr %36, align 4, !tbaa !15
  %454 = fpext float %453 to double
  %455 = load float, ptr %13, align 4, !tbaa !15
  %456 = load float, ptr %15, align 4, !tbaa !15
  %457 = fmul float %455, %456
  %458 = fpext float %457 to double
  %459 = fsub double %458, 1.000000e+00
  %460 = fmul double %454, %459
  %461 = fptrunc double %460 to float
  store float %461, ptr %16, align 4, !tbaa !15
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #11
  %462 = load float, ptr %15, align 4, !tbaa !15
  %463 = load float, ptr %16, align 4, !tbaa !15
  %464 = fdiv float %462, %463
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %48, float noundef %464, float noundef 0.000000e+00)
  %465 = load ptr, ptr %7, align 8, !tbaa !5
  %466 = load i32, ptr %26, align 4, !tbaa !9
  %467 = sub nsw i32 %466, 1
  %468 = sext i32 %467 to i64
  %469 = getelementptr inbounds %"class.std::complex", ptr %465, i64 %468
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %469, ptr align 4 %48, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #11
  %470 = load float, ptr %13, align 4, !tbaa !15
  %471 = load float, ptr %16, align 4, !tbaa !15
  %472 = fdiv float %470, %471
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %49, float noundef %472, float noundef 0.000000e+00)
  %473 = load ptr, ptr %7, align 8, !tbaa !5
  %474 = load i32, ptr %27, align 4, !tbaa !9
  %475 = sext i32 %474 to i64
  %476 = getelementptr inbounds %"class.std::complex", ptr %473, i64 %475
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %476, ptr align 4 %49, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #11
  %477 = call <2 x float> @_ZStngIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8) %14)
  %478 = getelementptr inbounds %"class.std::complex", ptr %51, i32 0, i32 0
  store <2 x float> %477, ptr %478, align 4
  %479 = call <2 x float> @_ZStdvIfESt7complexIT_ERKS2_RKS1_(ptr noundef nonnull align 4 dereferenceable(8) %51, ptr noundef nonnull align 4 dereferenceable(4) %16)
  %480 = getelementptr inbounds %"class.std::complex", ptr %50, i32 0, i32 0
  store <2 x float> %479, ptr %480, align 4
  %481 = load ptr, ptr %7, align 8, !tbaa !5
  %482 = load i32, ptr %27, align 4, !tbaa !9
  %483 = sub nsw i32 %482, 1
  %484 = sext i32 %483 to i64
  %485 = getelementptr inbounds %"class.std::complex", ptr %481, i64 %484
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %485, ptr align 4 %50, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #11
  %486 = load i32, ptr %28, align 4, !tbaa !9
  %487 = icmp sle i32 1, %486
  br i1 %487, label %488, label %684

488:                                              ; preds = %424
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %489

489:                                              ; preds = %506, %488
  %490 = load i32, ptr %21, align 4, !tbaa !9
  %491 = load i32, ptr %28, align 4, !tbaa !9
  %492 = icmp sle i32 %490, %491
  br i1 %492, label %493, label %509

493:                                              ; preds = %489
  %494 = load ptr, ptr %7, align 8, !tbaa !5
  %495 = load i32, ptr %19, align 4, !tbaa !9
  %496 = load i32, ptr %21, align 4, !tbaa !9
  %497 = add nsw i32 %495, %496
  %498 = sub nsw i32 %497, 1
  %499 = sext i32 %498 to i64
  %500 = getelementptr inbounds %"class.std::complex", ptr %494, i64 %499
  %501 = load ptr, ptr %38, align 8, !tbaa !5
  %502 = load i32, ptr %21, align 4, !tbaa !9
  %503 = sub nsw i32 %502, 1
  %504 = sext i32 %503 to i64
  %505 = getelementptr inbounds %"class.std::complex", ptr %501, i64 %504
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %505, ptr align 4 %500, i64 8, i1 false), !tbaa.struct !21
  br label %506

506:                                              ; preds = %493
  %507 = load i32, ptr %21, align 4, !tbaa !9
  %508 = add nsw i32 %507, 1
  store i32 %508, ptr %21, align 4, !tbaa !9
  br label %489, !llvm.loop !25

509:                                              ; preds = %489
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %510

510:                                              ; preds = %551, %509
  %511 = load i32, ptr %21, align 4, !tbaa !9
  %512 = load i32, ptr %28, align 4, !tbaa !9
  %513 = icmp sle i32 %511, %512
  br i1 %513, label %514, label %554

514:                                              ; preds = %510
  %515 = load i32, ptr %19, align 4, !tbaa !9
  %516 = load i32, ptr %21, align 4, !tbaa !9
  %517 = add nsw i32 %515, %516
  store i32 %517, ptr %24, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #11
  %518 = load i32, ptr %21, align 4, !tbaa !9
  %519 = load ptr, ptr %7, align 8, !tbaa !5
  %520 = load i32, ptr %17, align 4, !tbaa !9
  %521 = sext i32 %520 to i64
  %522 = getelementptr inbounds %"class.std::complex", ptr %519, i64 %521
  %523 = load ptr, ptr %38, align 8, !tbaa !5
  %524 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %518, ptr noundef %522, i32 noundef 1, ptr noundef %523, i32 noundef 1)
  %525 = getelementptr inbounds %"class.std::complex", ptr %52, i32 0, i32 0
  store <2 x float> %524, ptr %525, align 4
  %526 = load ptr, ptr %7, align 8, !tbaa !5
  %527 = load i32, ptr %24, align 4, !tbaa !9
  %528 = sub nsw i32 %527, 1
  %529 = sext i32 %528 to i64
  %530 = getelementptr inbounds %"class.std::complex", ptr %526, i64 %529
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %530, ptr align 4 %52, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #11
  %531 = load i32, ptr %21, align 4, !tbaa !9
  %532 = sub nsw i32 %531, 1
  %533 = load ptr, ptr %38, align 8, !tbaa !5
  %534 = load i32, ptr %21, align 4, !tbaa !9
  %535 = sub nsw i32 %534, 1
  %536 = sext i32 %535 to i64
  %537 = getelementptr inbounds %"class.std::complex", ptr %533, i64 %536
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %53, ptr align 4 %537, i64 8, i1 false), !tbaa.struct !21
  %538 = load ptr, ptr %7, align 8, !tbaa !5
  %539 = load i32, ptr %17, align 4, !tbaa !9
  %540 = sext i32 %539 to i64
  %541 = getelementptr inbounds %"class.std::complex", ptr %538, i64 %540
  %542 = load ptr, ptr %7, align 8, !tbaa !5
  %543 = load i32, ptr %19, align 4, !tbaa !9
  %544 = sext i32 %543 to i64
  %545 = getelementptr inbounds %"class.std::complex", ptr %542, i64 %544
  %546 = getelementptr inbounds %"class.std::complex", ptr %53, i32 0, i32 0
  %547 = load <2 x float>, ptr %546, align 4
  call void @_Z5caxpyiSt7complexIfEPS0_iS1_i(i32 noundef %532, <2 x float> %547, ptr noundef %541, i32 noundef 1, ptr noundef %545, i32 noundef 1)
  %548 = load i32, ptr %17, align 4, !tbaa !9
  %549 = load i32, ptr %21, align 4, !tbaa !9
  %550 = add nsw i32 %548, %549
  store i32 %550, ptr %17, align 4, !tbaa !9
  br label %551

551:                                              ; preds = %514
  %552 = load i32, ptr %21, align 4, !tbaa !9
  %553 = add nsw i32 %552, 1
  store i32 %553, ptr %21, align 4, !tbaa !9
  br label %510, !llvm.loop !26

554:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #11
  %555 = load ptr, ptr %7, align 8, !tbaa !5
  %556 = load i32, ptr %27, align 4, !tbaa !9
  %557 = sext i32 %556 to i64
  %558 = getelementptr inbounds %"class.std::complex", ptr %555, i64 %557
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #11
  %559 = load i32, ptr %28, align 4, !tbaa !9
  %560 = load ptr, ptr %38, align 8, !tbaa !5
  %561 = load ptr, ptr %7, align 8, !tbaa !5
  %562 = load i32, ptr %19, align 4, !tbaa !9
  %563 = sext i32 %562 to i64
  %564 = getelementptr inbounds %"class.std::complex", ptr %561, i64 %563
  %565 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %559, ptr noundef %560, i32 noundef 1, ptr noundef %564, i32 noundef 1)
  %566 = getelementptr inbounds %"class.std::complex", ptr %56, i32 0, i32 0
  store <2 x float> %565, ptr %566, align 4
  %567 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %56)
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %55, float noundef %567, float noundef 0.000000e+00)
  %568 = call <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8) %558, ptr noundef nonnull align 4 dereferenceable(8) %55)
  %569 = getelementptr inbounds %"class.std::complex", ptr %54, i32 0, i32 0
  store <2 x float> %568, ptr %569, align 4
  %570 = load ptr, ptr %7, align 8, !tbaa !5
  %571 = load i32, ptr %27, align 4, !tbaa !9
  %572 = sext i32 %571 to i64
  %573 = getelementptr inbounds %"class.std::complex", ptr %570, i64 %572
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %573, ptr align 4 %54, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #11
  %574 = load ptr, ptr %7, align 8, !tbaa !5
  %575 = load i32, ptr %27, align 4, !tbaa !9
  %576 = sub nsw i32 %575, 1
  %577 = sext i32 %576 to i64
  %578 = getelementptr inbounds %"class.std::complex", ptr %574, i64 %577
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #11
  %579 = load i32, ptr %28, align 4, !tbaa !9
  %580 = load ptr, ptr %7, align 8, !tbaa !5
  %581 = load i32, ptr %18, align 4, !tbaa !9
  %582 = sext i32 %581 to i64
  %583 = getelementptr inbounds %"class.std::complex", ptr %580, i64 %582
  %584 = load ptr, ptr %7, align 8, !tbaa !5
  %585 = load i32, ptr %19, align 4, !tbaa !9
  %586 = sext i32 %585 to i64
  %587 = getelementptr inbounds %"class.std::complex", ptr %584, i64 %586
  %588 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %579, ptr noundef %583, i32 noundef 1, ptr noundef %587, i32 noundef 1)
  %589 = getelementptr inbounds %"class.std::complex", ptr %58, i32 0, i32 0
  store <2 x float> %588, ptr %589, align 4
  %590 = call <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8) %578, ptr noundef nonnull align 4 dereferenceable(8) %58)
  %591 = getelementptr inbounds %"class.std::complex", ptr %57, i32 0, i32 0
  store <2 x float> %590, ptr %591, align 4
  %592 = load ptr, ptr %7, align 8, !tbaa !5
  %593 = load i32, ptr %27, align 4, !tbaa !9
  %594 = sub nsw i32 %593, 1
  %595 = sext i32 %594 to i64
  %596 = getelementptr inbounds %"class.std::complex", ptr %592, i64 %595
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %596, ptr align 4 %57, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #11
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %597

597:                                              ; preds = %614, %554
  %598 = load i32, ptr %21, align 4, !tbaa !9
  %599 = load i32, ptr %28, align 4, !tbaa !9
  %600 = icmp sle i32 %598, %599
  br i1 %600, label %601, label %617

601:                                              ; preds = %597
  %602 = load ptr, ptr %7, align 8, !tbaa !5
  %603 = load i32, ptr %18, align 4, !tbaa !9
  %604 = load i32, ptr %21, align 4, !tbaa !9
  %605 = add nsw i32 %603, %604
  %606 = sub nsw i32 %605, 1
  %607 = sext i32 %606 to i64
  %608 = getelementptr inbounds %"class.std::complex", ptr %602, i64 %607
  %609 = load ptr, ptr %38, align 8, !tbaa !5
  %610 = load i32, ptr %21, align 4, !tbaa !9
  %611 = sub nsw i32 %610, 1
  %612 = sext i32 %611 to i64
  %613 = getelementptr inbounds %"class.std::complex", ptr %609, i64 %612
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %613, ptr align 4 %608, i64 8, i1 false), !tbaa.struct !21
  br label %614

614:                                              ; preds = %601
  %615 = load i32, ptr %21, align 4, !tbaa !9
  %616 = add nsw i32 %615, 1
  store i32 %616, ptr %21, align 4, !tbaa !9
  br label %597, !llvm.loop !27

617:                                              ; preds = %597
  store i32 0, ptr %17, align 4, !tbaa !9
  store i32 1, ptr %21, align 4, !tbaa !9
  br label %618

618:                                              ; preds = %659, %617
  %619 = load i32, ptr %21, align 4, !tbaa !9
  %620 = load i32, ptr %28, align 4, !tbaa !9
  %621 = icmp sle i32 %619, %620
  br i1 %621, label %622, label %662

622:                                              ; preds = %618
  %623 = load i32, ptr %18, align 4, !tbaa !9
  %624 = load i32, ptr %21, align 4, !tbaa !9
  %625 = add nsw i32 %623, %624
  store i32 %625, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #11
  %626 = load i32, ptr %21, align 4, !tbaa !9
  %627 = load ptr, ptr %7, align 8, !tbaa !5
  %628 = load i32, ptr %17, align 4, !tbaa !9
  %629 = sext i32 %628 to i64
  %630 = getelementptr inbounds %"class.std::complex", ptr %627, i64 %629
  %631 = load ptr, ptr %38, align 8, !tbaa !5
  %632 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %626, ptr noundef %630, i32 noundef 1, ptr noundef %631, i32 noundef 1)
  %633 = getelementptr inbounds %"class.std::complex", ptr %59, i32 0, i32 0
  store <2 x float> %632, ptr %633, align 4
  %634 = load ptr, ptr %7, align 8, !tbaa !5
  %635 = load i32, ptr %23, align 4, !tbaa !9
  %636 = sub nsw i32 %635, 1
  %637 = sext i32 %636 to i64
  %638 = getelementptr inbounds %"class.std::complex", ptr %634, i64 %637
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %638, ptr align 4 %59, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #11
  %639 = load i32, ptr %21, align 4, !tbaa !9
  %640 = sub nsw i32 %639, 1
  %641 = load ptr, ptr %38, align 8, !tbaa !5
  %642 = load i32, ptr %21, align 4, !tbaa !9
  %643 = sub nsw i32 %642, 1
  %644 = sext i32 %643 to i64
  %645 = getelementptr inbounds %"class.std::complex", ptr %641, i64 %644
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %60, ptr align 4 %645, i64 8, i1 false), !tbaa.struct !21
  %646 = load ptr, ptr %7, align 8, !tbaa !5
  %647 = load i32, ptr %17, align 4, !tbaa !9
  %648 = sext i32 %647 to i64
  %649 = getelementptr inbounds %"class.std::complex", ptr %646, i64 %648
  %650 = load ptr, ptr %7, align 8, !tbaa !5
  %651 = load i32, ptr %18, align 4, !tbaa !9
  %652 = sext i32 %651 to i64
  %653 = getelementptr inbounds %"class.std::complex", ptr %650, i64 %652
  %654 = getelementptr inbounds %"class.std::complex", ptr %60, i32 0, i32 0
  %655 = load <2 x float>, ptr %654, align 4
  call void @_Z5caxpyiSt7complexIfEPS0_iS1_i(i32 noundef %640, <2 x float> %655, ptr noundef %649, i32 noundef 1, ptr noundef %653, i32 noundef 1)
  %656 = load i32, ptr %17, align 4, !tbaa !9
  %657 = load i32, ptr %21, align 4, !tbaa !9
  %658 = add nsw i32 %656, %657
  store i32 %658, ptr %17, align 4, !tbaa !9
  br label %659

659:                                              ; preds = %622
  %660 = load i32, ptr %21, align 4, !tbaa !9
  %661 = add nsw i32 %660, 1
  store i32 %661, ptr %21, align 4, !tbaa !9
  br label %618, !llvm.loop !28

662:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #11
  %663 = load ptr, ptr %7, align 8, !tbaa !5
  %664 = load i32, ptr %26, align 4, !tbaa !9
  %665 = sub nsw i32 %664, 1
  %666 = sext i32 %665 to i64
  %667 = getelementptr inbounds %"class.std::complex", ptr %663, i64 %666
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #11
  %668 = load i32, ptr %28, align 4, !tbaa !9
  %669 = load ptr, ptr %38, align 8, !tbaa !5
  %670 = load ptr, ptr %7, align 8, !tbaa !5
  %671 = load i32, ptr %18, align 4, !tbaa !9
  %672 = sext i32 %671 to i64
  %673 = getelementptr inbounds %"class.std::complex", ptr %670, i64 %672
  %674 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %668, ptr noundef %669, i32 noundef 1, ptr noundef %673, i32 noundef 1)
  %675 = getelementptr inbounds %"class.std::complex", ptr %63, i32 0, i32 0
  store <2 x float> %674, ptr %675, align 4
  %676 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %63)
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %62, float noundef %676, float noundef 0.000000e+00)
  %677 = call <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8) %667, ptr noundef nonnull align 4 dereferenceable(8) %62)
  %678 = getelementptr inbounds %"class.std::complex", ptr %61, i32 0, i32 0
  store <2 x float> %677, ptr %678, align 4
  %679 = load ptr, ptr %7, align 8, !tbaa !5
  %680 = load i32, ptr %26, align 4, !tbaa !9
  %681 = sub nsw i32 %680, 1
  %682 = sext i32 %681 to i64
  %683 = getelementptr inbounds %"class.std::complex", ptr %679, i64 %682
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %683, ptr align 4 %61, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #11
  br label %684

684:                                              ; preds = %662, %424
  store i32 2, ptr %32, align 4, !tbaa !9
  br label %685

685:                                              ; preds = %684, %423
  %686 = load ptr, ptr %9, align 8, !tbaa !5
  %687 = load i32, ptr %25, align 4, !tbaa !9
  %688 = sub nsw i32 %687, 1
  %689 = sext i32 %688 to i64
  %690 = getelementptr inbounds i32, ptr %686, i64 %689
  %691 = load i32, ptr %690, align 4, !tbaa !9
  %692 = call i32 @llvm.abs.i32(i32 %691, i1 true)
  store i32 %692, ptr %29, align 4, !tbaa !9
  %693 = load i32, ptr %29, align 4, !tbaa !9
  %694 = load i32, ptr %25, align 4, !tbaa !9
  %695 = icmp ne i32 %693, %694
  br i1 %695, label %696, label %787

696:                                              ; preds = %685
  %697 = load i32, ptr %29, align 4, !tbaa !9
  %698 = load i32, ptr %29, align 4, !tbaa !9
  %699 = sub nsw i32 %698, 1
  %700 = mul nsw i32 %697, %699
  %701 = sdiv i32 %700, 2
  store i32 %701, ptr %20, align 4, !tbaa !9
  %702 = load i32, ptr %29, align 4, !tbaa !9
  %703 = load ptr, ptr %7, align 8, !tbaa !5
  %704 = load i32, ptr %20, align 4, !tbaa !9
  %705 = sext i32 %704 to i64
  %706 = getelementptr inbounds %"class.std::complex", ptr %703, i64 %705
  %707 = load ptr, ptr %7, align 8, !tbaa !5
  %708 = load i32, ptr %18, align 4, !tbaa !9
  %709 = sext i32 %708 to i64
  %710 = getelementptr inbounds %"class.std::complex", ptr %707, i64 %709
  call void @_Z5cswapiPSt7complexIfEiS1_i(i32 noundef %702, ptr noundef %706, i32 noundef 1, ptr noundef %710, i32 noundef 1)
  %711 = load i32, ptr %18, align 4, !tbaa !9
  %712 = load i32, ptr %29, align 4, !tbaa !9
  %713 = add nsw i32 %711, %712
  store i32 %713, ptr %30, align 4, !tbaa !9
  %714 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %714, ptr %22, align 4, !tbaa !9
  br label %715

715:                                              ; preds = %756, %696
  %716 = load i32, ptr %22, align 4, !tbaa !9
  %717 = load i32, ptr %25, align 4, !tbaa !9
  %718 = icmp sle i32 %716, %717
  br i1 %718, label %719, label %759

719:                                              ; preds = %715
  %720 = load i32, ptr %25, align 4, !tbaa !9
  %721 = load i32, ptr %29, align 4, !tbaa !9
  %722 = add nsw i32 %720, %721
  %723 = load i32, ptr %22, align 4, !tbaa !9
  %724 = sub nsw i32 %722, %723
  store i32 %724, ptr %21, align 4, !tbaa !9
  %725 = load i32, ptr %18, align 4, !tbaa !9
  %726 = load i32, ptr %21, align 4, !tbaa !9
  %727 = add nsw i32 %725, %726
  store i32 %727, ptr %23, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #11
  %728 = load ptr, ptr %7, align 8, !tbaa !5
  %729 = load i32, ptr %23, align 4, !tbaa !9
  %730 = sub nsw i32 %729, 1
  %731 = sext i32 %730 to i64
  %732 = getelementptr inbounds %"class.std::complex", ptr %728, i64 %731
  %733 = call <2 x float> @_ZSt4conjIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8) %732)
  %734 = getelementptr inbounds %"class.std::complex", ptr %64, i32 0, i32 0
  store <2 x float> %733, ptr %734, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %64, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #11
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #11
  %735 = load ptr, ptr %7, align 8, !tbaa !5
  %736 = load i32, ptr %30, align 4, !tbaa !9
  %737 = sub nsw i32 %736, 1
  %738 = sext i32 %737 to i64
  %739 = getelementptr inbounds %"class.std::complex", ptr %735, i64 %738
  %740 = call <2 x float> @_ZSt4conjIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8) %739)
  %741 = getelementptr inbounds %"class.std::complex", ptr %65, i32 0, i32 0
  store <2 x float> %740, ptr %741, align 4
  %742 = load ptr, ptr %7, align 8, !tbaa !5
  %743 = load i32, ptr %23, align 4, !tbaa !9
  %744 = sub nsw i32 %743, 1
  %745 = sext i32 %744 to i64
  %746 = getelementptr inbounds %"class.std::complex", ptr %742, i64 %745
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %746, ptr align 4 %65, i64 8, i1 false), !tbaa.struct !21
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #11
  %747 = load ptr, ptr %7, align 8, !tbaa !5
  %748 = load i32, ptr %30, align 4, !tbaa !9
  %749 = sub nsw i32 %748, 1
  %750 = sext i32 %749 to i64
  %751 = getelementptr inbounds %"class.std::complex", ptr %747, i64 %750
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %751, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !21
  %752 = load i32, ptr %30, align 4, !tbaa !9
  %753 = load i32, ptr %21, align 4, !tbaa !9
  %754 = sub nsw i32 %753, 1
  %755 = sub nsw i32 %752, %754
  store i32 %755, ptr %30, align 4, !tbaa !9
  br label %756

756:                                              ; preds = %719
  %757 = load i32, ptr %22, align 4, !tbaa !9
  %758 = add nsw i32 %757, 1
  store i32 %758, ptr %22, align 4, !tbaa !9
  br label %715, !llvm.loop !29

759:                                              ; preds = %715
  %760 = load i32, ptr %32, align 4, !tbaa !9
  %761 = icmp ne i32 %760, 1
  br i1 %761, label %762, label %786

762:                                              ; preds = %759
  %763 = load i32, ptr %19, align 4, !tbaa !9
  %764 = load i32, ptr %29, align 4, !tbaa !9
  %765 = add nsw i32 %763, %764
  store i32 %765, ptr %31, align 4, !tbaa !9
  %766 = load ptr, ptr %7, align 8, !tbaa !5
  %767 = load i32, ptr %31, align 4, !tbaa !9
  %768 = sub nsw i32 %767, 1
  %769 = sext i32 %768 to i64
  %770 = getelementptr inbounds %"class.std::complex", ptr %766, i64 %769
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %37, ptr align 4 %770, i64 8, i1 false), !tbaa.struct !21
  %771 = load ptr, ptr %7, align 8, !tbaa !5
  %772 = load i32, ptr %27, align 4, !tbaa !9
  %773 = sub nsw i32 %772, 1
  %774 = sext i32 %773 to i64
  %775 = getelementptr inbounds %"class.std::complex", ptr %771, i64 %774
  %776 = load ptr, ptr %7, align 8, !tbaa !5
  %777 = load i32, ptr %31, align 4, !tbaa !9
  %778 = sub nsw i32 %777, 1
  %779 = sext i32 %778 to i64
  %780 = getelementptr inbounds %"class.std::complex", ptr %776, i64 %779
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %780, ptr align 4 %775, i64 8, i1 false), !tbaa.struct !21
  %781 = load ptr, ptr %7, align 8, !tbaa !5
  %782 = load i32, ptr %27, align 4, !tbaa !9
  %783 = sub nsw i32 %782, 1
  %784 = sext i32 %783 to i64
  %785 = getelementptr inbounds %"class.std::complex", ptr %781, i64 %784
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %785, ptr align 4 %37, i64 8, i1 false), !tbaa.struct !21
  br label %786

786:                                              ; preds = %762, %759
  br label %787

787:                                              ; preds = %786, %685
  %788 = load i32, ptr %18, align 4, !tbaa !9
  %789 = load i32, ptr %25, align 4, !tbaa !9
  %790 = add nsw i32 %788, %789
  store i32 %790, ptr %18, align 4, !tbaa !9
  %791 = load i32, ptr %32, align 4, !tbaa !9
  %792 = icmp eq i32 %791, 2
  br i1 %792, label %793, label %798

793:                                              ; preds = %787
  %794 = load i32, ptr %18, align 4, !tbaa !9
  %795 = load i32, ptr %25, align 4, !tbaa !9
  %796 = add nsw i32 %794, %795
  %797 = add nsw i32 %796, 1
  store i32 %797, ptr %18, align 4, !tbaa !9
  br label %798

798:                                              ; preds = %793, %787
  %799 = load i32, ptr %25, align 4, !tbaa !9
  %800 = load i32, ptr %32, align 4, !tbaa !9
  %801 = add nsw i32 %799, %800
  store i32 %801, ptr %25, align 4, !tbaa !9
  br label %291, !llvm.loop !30

802:                                              ; preds = %291
  %803 = load ptr, ptr %38, align 8, !tbaa !5
  %804 = icmp eq ptr %803, null
  br i1 %804, label %806, label %805

805:                                              ; preds = %802
  call void @_ZdaPv(ptr noundef %803) #13
  br label %806

806:                                              ; preds = %805, %802
  br label %807

807:                                              ; preds = %806, %271
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #11
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %32) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %28) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %26) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %23) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %22) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %18) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %17) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %16) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #11
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #11
  call void @llvm.lifetime.end.p0(i64 4, ptr %13) #11
  ret void

808:                                              ; preds = %352
  %809 = load ptr, ptr %39, align 8
  %810 = load i32, ptr %40, align 4
  %811 = insertvalue { ptr, i32 } poison, ptr %809, 0
  %812 = insertvalue { ptr, i32 } %811, i32 %810, 1
  resume { ptr, i32 } %812
}

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 #2 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #3 = { nobuiltin allocsize(0) "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #7 = { inlinehint mustprogress 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 #8 = { mustprogress 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 #9 = { inlinehint mustprogress 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 #10 = { mustprogress 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 #11 = { nounwind }
attributes #12 = { builtin allocsize(0) }
attributes #13 = { builtin 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !16, i64 0}
!16 = !{!"float", !7, i64 0}
!17 = distinct !{!17, !18}
!18 = !{!"llvm.loop.mustprogress"}
!19 = distinct !{!19, !18}
!20 = distinct !{!20, !18}
!21 = !{i64 0, i64 8, !22}
!22 = !{!7, !7, i64 0}
!23 = distinct !{!23, !18}
!24 = distinct !{!24, !18}
!25 = distinct !{!25, !18}
!26 = distinct !{!26, !18}
!27 = distinct !{!27, !18}
!28 = distinct !{!28, !18}
!29 = distinct !{!29, !18}
!30 = distinct !{!30, !18}


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

%"class.std::complex" = type { { float, float } }

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8), float noundef, float noundef) unnamed_addr #1 align 2

; Function Attrs: nobuiltin allocsize(0)
declare noundef nonnull ptr @_Znam(i64 noundef) local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

declare void @_Z5cswapiPSt7complexIfEiS1_i(i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #4

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZSt4conjIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #6

; Function Attrs: nobuiltin nounwind
declare void @_ZdaPv(ptr noundef) local_unnamed_addr #7

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZStngIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5

declare void @_Z5caxpyiSt7complexIfEPS0_iS1_i(i32 noundef, <2 x float>, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

declare <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef, ptr noundef, i32 noundef, ptr noundef, i32 noundef) local_unnamed_addr #3

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef float @_ZSt3absIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZStdvIfESt7complexIT_ERKS2_RKS1_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare float @llvm.fmuladd.f32(float, float, float) #8

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(8)) local_unnamed_addr #5

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare i32 @llvm.abs.i32(i32, i1 immarg) #8

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef float @_ZSt4fabsf(float noundef) local_unnamed_addr #9

; Function Attrs: mustprogress uwtable
define dso_local void @_Z5chpdiPSt7complexIfEiPiPfS2_i(ptr noundef %0, i32 noundef %1, ptr nocapture noundef readonly %2, ptr nocapture noundef %3, ptr nocapture noundef %4, i32 noundef %5) local_unnamed_addr #10 personality ptr @__gxx_personality_v0 {
  %7 = alloca %"class.std::complex", align 8
  %8 = alloca float, align 4
  %9 = alloca float, align 4
  %10 = alloca %"class.std::complex", align 8
  %11 = alloca %"class.std::complex", align 8
  %12 = alloca %"class.std::complex", align 4
  %13 = alloca %"class.std::complex", align 8
  %14 = alloca %"class.std::complex", align 8
  %15 = alloca %"class.std::complex", align 8
  %16 = alloca %"class.std::complex", align 8
  %17 = alloca %"class.std::complex", align 4
  %18 = alloca %"class.std::complex", align 8
  %19 = alloca %"class.std::complex", align 8
  %20 = alloca %"class.std::complex", align 4
  %21 = alloca %"class.std::complex", align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #12
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %7, float noundef 0.000000e+00, float noundef 0.000000e+00)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %8) #12
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %9) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #12
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %10, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %22 = srem i32 %5, 10
  %23 = icmp eq i32 %22, 0
  %24 = srem i32 %5, 100
  %25 = add nsw i32 %24, -10
  %26 = icmp ult i32 %25, -19
  %27 = srem i32 %5, 1000
  %28 = add nsw i32 %27, -100
  %29 = icmp ult i32 %28, -199
  %brmerge = select i1 %26, i1 true, i1 %29
  br i1 %brmerge, label %30, label %.loopexit306

30:                                               ; preds = %6
  br i1 %29, label %31, label %34

31:                                               ; preds = %30
  store i32 0, ptr %4, align 4, !tbaa !5
  %32 = getelementptr inbounds i8, ptr %4, i64 4
  store i32 0, ptr %32, align 4, !tbaa !5
  %33 = getelementptr inbounds i8, ptr %4, i64 8
  store i32 0, ptr %33, align 4, !tbaa !5
  br label %34

34:                                               ; preds = %31, %30
  br i1 %26, label %35, label %36

35:                                               ; preds = %34
  store <2 x float> <float 1.000000e+00, float 0.000000e+00>, ptr %3, align 4, !tbaa !9
  br label %36

36:                                               ; preds = %35, %34
  store float 0.000000e+00, ptr %9, align 4, !tbaa !9
  %invariant.gep = getelementptr i8, ptr %0, i64 -8
  %invariant.gep308 = getelementptr i8, ptr %2, i64 -4
  %.not310 = icmp slt i32 %1, 1
  br i1 %.not310, label %.loopexit306, label %.lr.ph313

.lr.ph313:                                        ; preds = %36
  %37 = getelementptr inbounds i8, ptr %4, i64 8
  %38 = getelementptr inbounds i8, ptr %4, i64 4
  %39 = getelementptr inbounds i8, ptr %3, i64 4
  %40 = add nuw i32 %1, 1
  %wide.trip.count = zext i32 %40 to i64
  br label %41

41:                                               ; preds = %.lr.ph313, %.loopexit304
  %indvars.iv = phi i64 [ 1, %.lr.ph313 ], [ %indvars.iv.next, %.loopexit304 ]
  %.0269312 = phi i32 [ 0, %.lr.ph313 ], [ %43, %.loopexit304 ]
  %42 = trunc nuw nsw i64 %indvars.iv to i32
  %43 = add nuw nsw i32 %.0269312, %42
  %44 = zext i32 %43 to i64
  %gep = getelementptr %"class.std::complex", ptr %invariant.gep, i64 %44
  %45 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %gep)
  store float %45, ptr %8, align 4, !tbaa !9
  %gep309 = getelementptr i32, ptr %invariant.gep308, i64 %indvars.iv
  %46 = load i32, ptr %gep309, align 4, !tbaa !5
  %47 = icmp slt i32 %46, 1
  br i1 %47, label %48, label %63

48:                                               ; preds = %41
  %49 = load float, ptr %9, align 4, !tbaa !9
  %50 = fcmp oeq float %49, 0.000000e+00
  br i1 %50, label %51, label %62

51:                                               ; preds = %48
  %52 = getelementptr %"class.std::complex", ptr %0, i64 %indvars.iv
  %53 = getelementptr %"class.std::complex", ptr %52, i64 %44
  %54 = getelementptr i8, ptr %53, i64 -8
  %55 = call noundef float @_ZSt3absIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %54)
  store float %55, ptr %9, align 4, !tbaa !9
  %56 = load float, ptr %8, align 4, !tbaa !9
  %57 = fdiv float %56, %55
  %58 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %53)
  %59 = load float, ptr %9, align 4, !tbaa !9
  %60 = fneg float %59
  %61 = call float @llvm.fmuladd.f32(float %57, float %58, float %60)
  store float %61, ptr %8, align 4, !tbaa !9
  br label %63

62:                                               ; preds = %48
  store float %49, ptr %8, align 4, !tbaa !9
  store float 0.000000e+00, ptr %9, align 4, !tbaa !9
  br label %63

63:                                               ; preds = %51, %62, %41
  %64 = phi float [ %61, %51 ], [ %49, %62 ], [ %45, %41 ]
  br i1 %29, label %65, label %73

65:                                               ; preds = %63
  %66 = fcmp ogt float %64, 0.000000e+00
  br i1 %66, label %.sink.split, label %67

67:                                               ; preds = %65
  %68 = fcmp olt float %64, 0.000000e+00
  br i1 %68, label %.sink.split, label %69

69:                                               ; preds = %67
  %70 = fcmp oeq float %64, 0.000000e+00
  br i1 %70, label %.sink.split, label %73

.sink.split:                                      ; preds = %69, %67, %65
  %.sink = phi ptr [ %4, %65 ], [ %38, %67 ], [ %37, %69 ]
  %71 = load i32, ptr %.sink, align 4, !tbaa !5
  %72 = add nsw i32 %71, 1
  store i32 %72, ptr %.sink, align 4, !tbaa !5
  br label %73

73:                                               ; preds = %.sink.split, %69, %63
  br i1 %26, label %74, label %.loopexit304

74:                                               ; preds = %73
  %75 = load float, ptr %3, align 4, !tbaa !9
  %76 = fmul float %75, %64
  store float %76, ptr %3, align 4, !tbaa !9
  %77 = fcmp une float %76, 0.000000e+00
  br i1 %77, label %.preheader305, label %.loopexit304

.preheader305:                                    ; preds = %74
  %78 = call noundef float @_ZSt4fabsf(float noundef %76)
  %79 = fcmp olt float %78, 1.000000e+00
  br i1 %79, label %.lr.ph, label %.preheader303

.preheader303:                                    ; preds = %.lr.ph, %.preheader305
  %80 = load float, ptr %3, align 4, !tbaa !9
  %81 = call noundef float @_ZSt4fabsf(float noundef %80)
  %82 = fcmp ult float %81, 1.000000e+01
  br i1 %82, label %.loopexit304, label %.lr.ph307

.lr.ph:                                           ; preds = %.preheader305, %.lr.ph
  %83 = load float, ptr %3, align 4, !tbaa !9
  %84 = fmul float %83, 1.000000e+01
  store float %84, ptr %3, align 4, !tbaa !9
  %85 = load float, ptr %39, align 4, !tbaa !9
  %86 = fadd float %85, -1.000000e+00
  store float %86, ptr %39, align 4, !tbaa !9
  %87 = call noundef float @_ZSt4fabsf(float noundef %84)
  %88 = fcmp olt float %87, 1.000000e+00
  br i1 %88, label %.lr.ph, label %.preheader303, !llvm.loop !11

.lr.ph307:                                        ; preds = %.preheader303, %.lr.ph307
  %89 = load float, ptr %3, align 4, !tbaa !9
  %90 = fdiv float %89, 1.000000e+01
  store float %90, ptr %3, align 4, !tbaa !9
  %91 = load float, ptr %39, align 4, !tbaa !9
  %92 = fadd float %91, 1.000000e+00
  store float %92, ptr %39, align 4, !tbaa !9
  %93 = call noundef float @_ZSt4fabsf(float noundef %90)
  %94 = fcmp ult float %93, 1.000000e+01
  br i1 %94, label %.loopexit304, label %.lr.ph307, !llvm.loop !13

.loopexit304:                                     ; preds = %.lr.ph307, %.preheader303, %74, %73
  %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
  %exitcond.not = icmp eq i64 %indvars.iv.next, %wide.trip.count
  br i1 %exitcond.not, label %.loopexit306, label %41, !llvm.loop !14

.loopexit306:                                     ; preds = %.loopexit304, %36, %6
  br i1 %23, label %248, label %95

95:                                               ; preds = %.loopexit306
  %96 = sext i32 %1 to i64
  %97 = icmp slt i32 %1, 0
  %98 = shl nsw i64 %96, 3
  %99 = select i1 %97, i64 -1, i64 %98
  %100 = call noalias noundef nonnull ptr @_Znam(i64 noundef %99) #13
  %101 = icmp eq i32 %1, 0
  br i1 %101, label %._crit_edge375, label %102

102:                                              ; preds = %95
  %103 = getelementptr inbounds %"class.std::complex", ptr %100, i64 %96
  br label %104

104:                                              ; preds = %104, %102
  %105 = phi ptr [ %100, %102 ], [ %106, %104 ]
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %105, float noundef 0.000000e+00, float noundef 0.000000e+00)
  %106 = getelementptr inbounds i8, ptr %105, i64 8
  %107 = icmp eq ptr %106, %103
  br i1 %107, label %.loopexit, label %104

.loopexit:                                        ; preds = %104
  %invariant.gep362 = getelementptr i8, ptr %0, i64 -8
  %.not286368 = icmp slt i32 %1, 1
  br i1 %.not286368, label %._crit_edge375, label %.lr.ph374

.lr.ph374:                                        ; preds = %.loopexit
  %invariant.gep327 = getelementptr i8, ptr %100, i64 -8
  br label %108

108:                                              ; preds = %.lr.ph374, %245
  %.1270371 = phi i32 [ 0, %.lr.ph374 ], [ %spec.select, %245 ]
  %.1277369 = phi i32 [ 1, %.lr.ph374 ], [ %247, %245 ]
  %109 = add nsw i32 %.1277369, -1
  %110 = add nsw i32 %.1270371, %.1277369
  %111 = add nsw i32 %110, %.1277369
  %112 = sext i32 %109 to i64
  %113 = getelementptr inbounds i32, ptr %2, i64 %112
  %114 = load i32, ptr %113, align 4, !tbaa !5
  %115 = icmp slt i32 %114, 0
  br i1 %115, label %142, label %116

116:                                              ; preds = %108
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #12
  %117 = sext i32 %110 to i64
  %gep363 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %117
  %118 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %gep363)
  %119 = fdiv float 1.000000e+00, %118
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %11, float noundef %119, float noundef 0.000000e+00)
  %120 = load i64, ptr %11, align 8, !tbaa !15
  store i64 %120, ptr %gep363, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #12
  %121 = icmp ugt i32 %.1277369, 1
  br i1 %121, label %.lr.ph324, label %215

.lr.ph324:                                        ; preds = %116
  %122 = add i32 %.1270371, 1
  %123 = sext i32 %122 to i64
  %124 = shl nsw i64 %123, 3
  %scevgep377 = getelementptr i8, ptr %invariant.gep362, i64 %124
  %125 = zext nneg i32 %109 to i64
  %126 = shl nuw nsw i64 %125, 3
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %100, ptr align 4 %scevgep377, i64 %126, i1 false), !tbaa !15
  %127 = sext i32 %.1270371 to i64
  %128 = getelementptr inbounds %"class.std::complex", ptr %0, i64 %127
  %wide.trip.count384 = zext nneg i32 %.1277369 to i64
  %invariant.gep411 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %127
  br label %129

129:                                              ; preds = %.lr.ph324, %129
  %indvars.iv381 = phi i64 [ 1, %.lr.ph324 ], [ %indvars.iv.next382, %129 ]
  %.0323 = phi i32 [ 0, %.lr.ph324 ], [ %137, %129 ]
  %130 = zext nneg i32 %.0323 to i64
  %131 = getelementptr inbounds %"class.std::complex", ptr %0, i64 %130
  %132 = trunc nuw nsw i64 %indvars.iv381 to i32
  %133 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %132, ptr noundef %131, i32 noundef 1, ptr noundef nonnull %100, i32 noundef 1)
  %gep412 = getelementptr %"class.std::complex", ptr %invariant.gep411, i64 %indvars.iv381
  store <2 x float> %133, ptr %gep412, align 4, !tbaa !15
  %134 = add nsw i64 %indvars.iv381, -1
  %135 = getelementptr inbounds %"class.std::complex", ptr %100, i64 %134
  %.sroa.012.0.copyload = load <2 x float>, ptr %135, align 4, !tbaa !15
  %136 = trunc nuw nsw i64 %134 to i32
  call void @_Z5caxpyiSt7complexIfEPS0_iS1_i(i32 noundef %136, <2 x float> %.sroa.012.0.copyload, ptr noundef %131, i32 noundef 1, ptr noundef %128, i32 noundef 1)
  %137 = add nuw nsw i32 %.0323, %132
  %indvars.iv.next382 = add nuw nsw i64 %indvars.iv381, 1
  %exitcond385.not = icmp eq i64 %indvars.iv.next382, %wide.trip.count384
  br i1 %exitcond385.not, label %._crit_edge, label %129, !llvm.loop !16

._crit_edge:                                      ; preds = %129
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #12
  %138 = getelementptr inbounds %"class.std::complex", ptr %0, i64 %127
  %139 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %109, ptr noundef nonnull %100, i32 noundef 1, ptr noundef %138, i32 noundef 1)
  store <2 x float> %139, ptr %13, align 8
  %140 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %13)
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %12, float noundef %140, float noundef 0.000000e+00)
  %141 = call <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8) %gep363, ptr noundef nonnull align 4 dereferenceable(8) %12)
  store <2 x float> %141, ptr %gep363, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #12
  br label %215

142:                                              ; preds = %108
  %143 = sext i32 %111 to i64
  %144 = getelementptr %"class.std::complex", ptr %0, i64 %143
  %145 = getelementptr i8, ptr %144, i64 -8
  %146 = call noundef float @_ZSt3absIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %145)
  store float %146, ptr %9, align 4, !tbaa !9
  %147 = sext i32 %110 to i64
  %148 = getelementptr %"class.std::complex", ptr %0, i64 %147
  %149 = getelementptr i8, ptr %148, i64 -8
  %150 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %149)
  %151 = load float, ptr %9, align 4, !tbaa !9
  %152 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %144)
  %153 = load float, ptr %9, align 4, !tbaa !9
  %154 = insertelement <2 x float> poison, float %150, i64 0
  %155 = insertelement <2 x float> %154, float %152, i64 1
  %156 = insertelement <2 x float> poison, float %151, i64 0
  %157 = insertelement <2 x float> %156, float %153, i64 1
  %158 = fdiv <2 x float> %155, %157
  %159 = call <2 x float> @_ZStdvIfESt7complexIT_ERKS2_RKS1_(ptr noundef nonnull align 4 dereferenceable(8) %145, ptr noundef nonnull align 4 dereferenceable(4) %9)
  store <2 x float> %159, ptr %7, align 8, !tbaa !15
  %160 = load float, ptr %9, align 4, !tbaa !9
  %161 = fpext float %160 to double
  %162 = extractelement <2 x float> %158, i64 0
  %163 = extractelement <2 x float> %158, i64 1
  %164 = fmul float %162, %163
  %165 = fpext float %164 to double
  %166 = fadd double %165, -1.000000e+00
  %167 = fmul double %166, %161
  %168 = fptrunc double %167 to float
  store float %168, ptr %8, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #12
  %169 = fdiv float %163, %168
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %14, float noundef %169, float noundef 0.000000e+00)
  %170 = load i64, ptr %14, align 8, !tbaa !15
  store i64 %170, ptr %149, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #12
  %171 = load float, ptr %8, align 4, !tbaa !9
  %172 = fdiv float %162, %171
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %15, float noundef %172, float noundef 0.000000e+00)
  %173 = load i64, ptr %15, align 8, !tbaa !15
  store i64 %173, ptr %144, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #12
  %174 = call <2 x float> @_ZStngIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8) %7)
  store <2 x float> %174, ptr %16, align 8
  %175 = call <2 x float> @_ZStdvIfESt7complexIT_ERKS2_RKS1_(ptr noundef nonnull align 4 dereferenceable(8) %16, ptr noundef nonnull align 4 dereferenceable(4) %8)
  store <2 x float> %175, ptr %145, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #12
  %176 = icmp ugt i32 %.1277369, 1
  br i1 %176, label %.preheader300.preheader, label %215

.preheader300.preheader:                          ; preds = %142
  %wide.trip.count389 = zext nneg i32 %.1277369 to i64
  %invariant.gep413 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %147
  %min.iters.check = icmp ult i32 %.1277369, 5
  br i1 %min.iters.check, label %.preheader300.preheader422, label %vector.ph

.preheader300.preheader422:                       ; preds = %middle.block, %.preheader300.preheader
  %indvars.iv386.ph = phi i64 [ 1, %.preheader300.preheader ], [ %ind.end, %middle.block ]
  br label %.preheader300

vector.ph:                                        ; preds = %.preheader300.preheader
  %n.vec = and i64 %112, -4
  %ind.end = or disjoint i64 %n.vec, 1
  br label %vector.body

vector.body:                                      ; preds = %vector.body, %vector.ph
  %index = phi i64 [ 0, %vector.ph ], [ %index.next, %vector.body ]
  %offset.idx = or disjoint i64 %index, 1
  %177 = getelementptr %"class.std::complex", ptr %invariant.gep413, i64 %offset.idx
  %178 = getelementptr %"class.std::complex", ptr %100, i64 %index
  %179 = getelementptr i8, ptr %177, i64 16
  %wide.load = load <2 x i64>, ptr %177, align 4, !tbaa !15
  %wide.load421 = load <2 x i64>, ptr %179, align 4, !tbaa !15
  %180 = getelementptr i8, ptr %178, i64 16
  store <2 x i64> %wide.load, ptr %178, align 4, !tbaa !15
  store <2 x i64> %wide.load421, ptr %180, align 4, !tbaa !15
  %index.next = add nuw i64 %index, 4
  %181 = icmp eq i64 %index.next, %n.vec
  br i1 %181, label %middle.block, label %vector.body, !llvm.loop !17

middle.block:                                     ; preds = %vector.body
  %cmp.n = icmp eq i64 %n.vec, %112
  br i1 %cmp.n, label %.lr.ph335.preheader, label %.preheader300.preheader422

.lr.ph335.preheader:                              ; preds = %.preheader300, %middle.block
  %invariant.gep415 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %147
  br label %.lr.ph335

.preheader300:                                    ; preds = %.preheader300.preheader422, %.preheader300
  %indvars.iv386 = phi i64 [ %indvars.iv.next387, %.preheader300 ], [ %indvars.iv386.ph, %.preheader300.preheader422 ]
  %gep414 = getelementptr %"class.std::complex", ptr %invariant.gep413, i64 %indvars.iv386
  %gep328 = getelementptr %"class.std::complex", ptr %invariant.gep327, i64 %indvars.iv386
  %182 = load i64, ptr %gep414, align 4, !tbaa !15
  store i64 %182, ptr %gep328, align 4, !tbaa !15
  %indvars.iv.next387 = add nuw nsw i64 %indvars.iv386, 1
  %exitcond390.not = icmp eq i64 %indvars.iv.next387, %wide.trip.count389
  br i1 %exitcond390.not, label %.lr.ph335.preheader, label %.preheader300, !llvm.loop !20

.lr.ph335:                                        ; preds = %.lr.ph335.preheader, %.lr.ph335
  %indvars.iv391 = phi i64 [ 1, %.lr.ph335.preheader ], [ %indvars.iv.next392, %.lr.ph335 ]
  %.1334 = phi i32 [ 0, %.lr.ph335.preheader ], [ %190, %.lr.ph335 ]
  %183 = zext nneg i32 %.1334 to i64
  %184 = getelementptr inbounds %"class.std::complex", ptr %0, i64 %183
  %185 = trunc nuw nsw i64 %indvars.iv391 to i32
  %186 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %185, ptr noundef %184, i32 noundef 1, ptr noundef nonnull %100, i32 noundef 1)
  %gep416 = getelementptr %"class.std::complex", ptr %invariant.gep415, i64 %indvars.iv391
  store <2 x float> %186, ptr %gep416, align 4, !tbaa !15
  %187 = add nsw i64 %indvars.iv391, -1
  %188 = getelementptr inbounds %"class.std::complex", ptr %100, i64 %187
  %.sroa.07.0.copyload = load <2 x float>, ptr %188, align 4, !tbaa !15
  %189 = trunc nuw nsw i64 %187 to i32
  call void @_Z5caxpyiSt7complexIfEPS0_iS1_i(i32 noundef %189, <2 x float> %.sroa.07.0.copyload, ptr noundef %184, i32 noundef 1, ptr noundef %148, i32 noundef 1)
  %190 = add nuw nsw i32 %.1334, %185
  %indvars.iv.next392 = add nuw nsw i64 %indvars.iv391, 1
  %exitcond395.not = icmp eq i64 %indvars.iv.next392, %wide.trip.count389
  br i1 %exitcond395.not, label %.lr.ph350.preheader, label %.lr.ph335, !llvm.loop !21

.lr.ph350.preheader:                              ; preds = %.lr.ph335
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #12
  %191 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %109, ptr noundef nonnull %100, i32 noundef 1, ptr noundef %148, i32 noundef 1)
  store <2 x float> %191, ptr %18, align 8
  %192 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %18)
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %17, float noundef %192, float noundef 0.000000e+00)
  %193 = call <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8) %144, ptr noundef nonnull align 4 dereferenceable(8) %17)
  store <2 x float> %193, ptr %144, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #12
  %194 = sext i32 %.1270371 to i64
  %195 = getelementptr inbounds %"class.std::complex", ptr %0, i64 %194
  %196 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %109, ptr noundef %195, i32 noundef 1, ptr noundef %148, i32 noundef 1)
  store <2 x float> %196, ptr %19, align 8
  %197 = call <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8) %145, ptr noundef nonnull align 4 dereferenceable(8) %19)
  store <2 x float> %197, ptr %145, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #12
  %198 = add i32 %.1270371, 1
  %199 = sext i32 %198 to i64
  %200 = shl nsw i64 %199, 3
  %scevgep397 = getelementptr i8, ptr %invariant.gep362, i64 %200
  %umax = call i32 @llvm.umax.i32(i32 %.1277369, i32 2)
  %201 = add nsw i32 %umax, -1
  %202 = zext nneg i32 %201 to i64
  %203 = shl nuw nsw i64 %202, 3
  call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %100, ptr align 4 %scevgep397, i64 %203, i1 false), !tbaa !15
  %umax404 = call i32 @llvm.umax.i32(i32 %.1277369, i32 2)
  %wide.trip.count405 = zext nneg i32 %umax404 to i64
  %invariant.gep417 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %194
  br label %.lr.ph350

.lr.ph350:                                        ; preds = %.lr.ph350.preheader, %.lr.ph350
  %indvars.iv401 = phi i64 [ 1, %.lr.ph350.preheader ], [ %indvars.iv.next402, %.lr.ph350 ]
  %.2349 = phi i32 [ 0, %.lr.ph350.preheader ], [ %211, %.lr.ph350 ]
  %204 = zext nneg i32 %.2349 to i64
  %205 = getelementptr inbounds %"class.std::complex", ptr %0, i64 %204
  %206 = trunc nuw nsw i64 %indvars.iv401 to i32
  %207 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %206, ptr noundef %205, i32 noundef 1, ptr noundef nonnull %100, i32 noundef 1)
  %gep418 = getelementptr %"class.std::complex", ptr %invariant.gep417, i64 %indvars.iv401
  store <2 x float> %207, ptr %gep418, align 4, !tbaa !15
  %208 = add nsw i64 %indvars.iv401, -1
  %209 = getelementptr inbounds %"class.std::complex", ptr %100, i64 %208
  %.sroa.03.0.copyload = load <2 x float>, ptr %209, align 4, !tbaa !15
  %210 = trunc nuw nsw i64 %208 to i32
  call void @_Z5caxpyiSt7complexIfEPS0_iS1_i(i32 noundef %210, <2 x float> %.sroa.03.0.copyload, ptr noundef %205, i32 noundef 1, ptr noundef nonnull %195, i32 noundef 1)
  %211 = add nuw nsw i32 %.2349, %206
  %indvars.iv.next402 = add nuw nsw i64 %indvars.iv401, 1
  %exitcond406.not = icmp eq i64 %indvars.iv.next402, %wide.trip.count405
  br i1 %exitcond406.not, label %._crit_edge351, label %.lr.ph350, !llvm.loop !22

._crit_edge351:                                   ; preds = %.lr.ph350
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #12
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #12
  %212 = call <2 x float> @_Z5cdotciPSt7complexIfEiS1_i(i32 noundef %109, ptr noundef nonnull %100, i32 noundef 1, ptr noundef nonnull %195, i32 noundef 1)
  store <2 x float> %212, ptr %21, align 8
  %213 = call noundef float @_ZSt4realIfET_RKSt7complexIS0_E(ptr noundef nonnull align 4 dereferenceable(8) %21)
  call void @_ZNSt7complexIfEC2Eff(ptr noundef nonnull align 4 dereferenceable(8) %20, float noundef %213, float noundef 0.000000e+00)
  %214 = call <2 x float> @_ZStplIfESt7complexIT_ERKS2_S4_(ptr noundef nonnull align 4 dereferenceable(8) %149, ptr noundef nonnull align 4 dereferenceable(8) %20)
  store <2 x float> %214, ptr %149, align 4, !tbaa !15
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #12
  br label %215

215:                                              ; preds = %142, %._crit_edge351, %116, %._crit_edge
  %.0279 = phi i32 [ 1, %._crit_edge ], [ 1, %116 ], [ 2, %._crit_edge351 ], [ 2, %142 ]
  %216 = load i32, ptr %113, align 4, !tbaa !5
  %217 = call i32 @llvm.abs.i32(i32 %216, i1 true)
  %.not293 = icmp eq i32 %217, %.1277369
  br i1 %.not293, label %245, label %218

218:                                              ; preds = %215
  %219 = add nsw i32 %217, -1
  %220 = mul nsw i32 %219, %217
  %221 = sdiv i32 %220, 2
  %222 = sext i32 %221 to i64
  %223 = getelementptr inbounds %"class.std::complex", ptr %0, i64 %222
  %224 = sext i32 %.1270371 to i64
  %225 = getelementptr inbounds %"class.std::complex", ptr %0, i64 %224
  call void @_Z5cswapiPSt7complexIfEiS1_i(i32 noundef %217, ptr noundef %223, i32 noundef 1, ptr noundef %225, i32 noundef 1)
  %.not294356 = icmp ugt i32 %217, %.1277369
  br i1 %.not294356, label %._crit_edge361, label %.lr.ph360

.lr.ph360:                                        ; preds = %218
  %226 = add nsw i32 %217, %.1270371
  %227 = add nuw nsw i32 %217, %.1277369
  %228 = call i32 @llvm.abs.i32(i32 %216, i1 true)
  %smax = zext nneg i32 %228 to i64
  br label %229

229:                                              ; preds = %.lr.ph360, %229
  %indvars.iv407 = phi i64 [ %smax, %.lr.ph360 ], [ %indvars.iv.next408, %229 ]
  %.0278357 = phi i32 [ %226, %.lr.ph360 ], [ %238, %229 ]
  %230 = trunc nsw i64 %indvars.iv407 to i32
  %231 = sub i32 %227, %230
  %232 = add nsw i32 %231, %.1270371
  %233 = sext i32 %232 to i64
  %gep353 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %233
  %234 = call <2 x float> @_ZSt4conjIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8) %gep353)
  store <2 x float> %234, ptr %10, align 8, !tbaa !15
  %235 = sext i32 %.0278357 to i64
  %gep355 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %235
  %236 = call <2 x float> @_ZSt4conjIfESt7complexIT_ERKS2_(ptr noundef nonnull align 4 dereferenceable(8) %gep355)
  store <2 x float> %236, ptr %gep353, align 4, !tbaa !15
  %237 = load i64, ptr %10, align 8, !tbaa !15
  store i64 %237, ptr %gep355, align 4, !tbaa !15
  %.neg298 = add i32 %.0278357, 1
  %238 = sub i32 %.neg298, %231
  %indvars.iv.next408 = add nuw nsw i64 %indvars.iv407, 1
  %.not294.not = icmp ugt i32 %.1277369, %230
  br i1 %.not294.not, label %229, label %._crit_edge361, !llvm.loop !23

._crit_edge361:                                   ; preds = %229, %218
  br i1 %115, label %239, label %245

239:                                              ; preds = %._crit_edge361
  %240 = add nsw i32 %217, %110
  %241 = sext i32 %240 to i64
  %gep365 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %241
  %242 = load i64, ptr %gep365, align 4, !tbaa !15
  store i64 %242, ptr %10, align 8, !tbaa !15
  %243 = sext i32 %111 to i64
  %gep367 = getelementptr %"class.std::complex", ptr %invariant.gep362, i64 %243
  %244 = load i64, ptr %gep367, align 4, !tbaa !15
  store i64 %244, ptr %gep365, align 4, !tbaa !15
  store i64 %242, ptr %gep367, align 4, !tbaa !15
  br label %245

245:                                              ; preds = %._crit_edge361, %239, %215
  %246 = add nsw i32 %111, 1
  %spec.select = select i1 %115, i32 %246, i32 %110
  %247 = add nuw nsw i32 %.0279, %.1277369
  %.not286 = icmp sgt i32 %247, %1
  br i1 %.not286, label %._crit_edge375, label %108, !llvm.loop !24

._crit_edge375:                                   ; preds = %245, %95, %.loopexit
  call void @_ZdaPv(ptr noundef nonnull %100) #14
  br label %248

248:                                              ; preds = %._crit_edge375, %.loopexit306
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %9) #12
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %8) #12
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #12
  ret void
}

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { mustprogress 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 #2 = { nobuiltin allocsize(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 #3 = { "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 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #5 = { inlinehint mustprogress 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 #6 = { mustprogress 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 #7 = { nobuiltin nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { inlinehint mustprogress 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 #10 = { mustprogress 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 #11 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #12 = { nounwind }
attributes #13 = { builtin allocsize(0) }
attributes #14 = { builtin 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++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"float", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = distinct !{!13, !12}
!14 = distinct !{!14, !12}
!15 = !{!7, !7, i64 0}
!16 = distinct !{!16, !12}
!17 = distinct !{!17, !12, !18, !19}
!18 = !{!"llvm.loop.isvectorized", i32 1}
!19 = !{!"llvm.loop.unroll.runtime.disable"}
!20 = distinct !{!20, !12, !19, !18}
!21 = distinct !{!21, !12}
!22 = distinct !{!22, !12}
!23 = distinct !{!23, !12}
!24 = distinct !{!24, !12}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LICMPass,LoopIdiomRecognizePass,LoopLoadEliminationPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,LoopVectorizePass,PostOrderFunctionAttrsPass,ReassociatePass,SCCPPass,SLPVectorizerPass,SROAPass,SimplifyCFGPass