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

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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [8 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @zlaic1_(ptr noundef %0, ptr noundef %1, ptr noundef %2, ptr noundef %3, ptr noundef %4, ptr noundef %5, ptr noundef %6, ptr noundef %7, ptr noundef %8) #0 {
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca double, align 8
  %20 = alloca double, align 8
  %21 = alloca %struct.doublecomplex, align 8
  %22 = alloca %struct.doublecomplex, align 8
  %23 = alloca %struct.doublecomplex, align 8
  %24 = alloca %struct.doublecomplex, align 8
  %25 = alloca %struct.doublecomplex, align 8
  %26 = alloca %struct.doublecomplex, align 8
  %27 = alloca %struct.doublecomplex, align 8
  %28 = alloca double, align 8
  %29 = alloca double, align 8
  %30 = alloca double, align 8
  %31 = alloca double, align 8
  %32 = alloca double, align 8
  %33 = alloca %struct.doublecomplex, align 8
  %34 = alloca double, align 8
  %35 = alloca double, align 8
  %36 = alloca double, align 8
  %37 = alloca double, align 8
  %38 = alloca double, align 8
  %39 = alloca %struct.doublecomplex, align 8
  %40 = alloca double, align 8
  %41 = alloca double, align 8
  %42 = alloca double, align 8
  %43 = alloca double, align 8
  %44 = alloca { double, double }, align 8
  %45 = alloca { double, double }, align 8
  %46 = alloca { double, double }, align 8
  %47 = alloca i32, align 4
  %48 = alloca { double, double }, align 8
  %49 = alloca { double, double }, align 8
  %50 = alloca { double, double }, align 8
  %51 = alloca { double, double }, align 8
  %52 = alloca { double, double }, align 8
  %53 = alloca { double, double }, align 8
  %54 = alloca { double, double }, align 8
  %55 = alloca { double, double }, align 8
  %56 = alloca { double, double }, align 8
  %57 = alloca { double, double }, align 8
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  store ptr %8, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.start.p0(i64 16, ptr %39) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #6
  %58 = load ptr, ptr %14, align 8, !tbaa !5
  %59 = getelementptr inbounds %struct.doublecomplex, ptr %58, i32 -1
  store ptr %59, ptr %14, align 8, !tbaa !5
  %60 = load ptr, ptr %12, align 8, !tbaa !5
  %61 = getelementptr inbounds %struct.doublecomplex, ptr %60, i32 -1
  store ptr %61, ptr %12, align 8, !tbaa !5
  %62 = call double @dlamch_(ptr noundef @.str)
  store double %62, ptr %42, align 8, !tbaa !9
  %63 = load ptr, ptr %11, align 8, !tbaa !5
  %64 = load ptr, ptr %12, align 8, !tbaa !5
  %65 = getelementptr inbounds %struct.doublecomplex, ptr %64, i64 1
  %66 = load ptr, ptr %14, align 8, !tbaa !5
  %67 = getelementptr inbounds %struct.doublecomplex, ptr %66, i64 1
  call void @zdotc_(ptr noundef %21, ptr noundef %63, ptr noundef %65, ptr noundef @c__1, ptr noundef %67, ptr noundef @c__1)
  %68 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %69 = load double, ptr %68, align 8, !tbaa !11
  %70 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  store double %69, ptr %70, align 8, !tbaa !11
  %71 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %72 = load double, ptr %71, align 8, !tbaa !13
  %73 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  store double %72, ptr %73, align 8, !tbaa !13
  %74 = call { double, double } @Cd(ptr noundef %33)
  %75 = extractvalue { double, double } %74, 0
  %76 = extractvalue { double, double } %74, 1
  %77 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %78 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  store double %75, ptr %77, align 8
  store double %76, ptr %78, align 8
  %79 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 0
  %80 = load double, ptr %79, align 8
  %81 = getelementptr inbounds { double, double }, ptr %44, i32 0, i32 1
  %82 = load double, ptr %81, align 8
  %83 = call double @cabs(double noundef %80, double noundef %82) #6
  store double %83, ptr %38, align 8, !tbaa !9
  %84 = load ptr, ptr %15, align 8, !tbaa !5
  %85 = call { double, double } @Cd(ptr noundef %84)
  %86 = extractvalue { double, double } %85, 0
  %87 = extractvalue { double, double } %85, 1
  %88 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %89 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  store double %86, ptr %88, align 8
  store double %87, ptr %89, align 8
  %90 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 0
  %91 = load double, ptr %90, align 8
  %92 = getelementptr inbounds { double, double }, ptr %45, i32 0, i32 1
  %93 = load double, ptr %92, align 8
  %94 = call double @cabs(double noundef %91, double noundef %93) #6
  store double %94, ptr %37, align 8, !tbaa !9
  %95 = load ptr, ptr %13, align 8, !tbaa !5
  %96 = load double, ptr %95, align 8, !tbaa !9
  %97 = fcmp oge double %96, 0.000000e+00
  br i1 %97, label %98, label %101

98:                                               ; preds = %9
  %99 = load ptr, ptr %13, align 8, !tbaa !5
  %100 = load double, ptr %99, align 8, !tbaa !9
  br label %105

101:                                              ; preds = %9
  %102 = load ptr, ptr %13, align 8, !tbaa !5
  %103 = load double, ptr %102, align 8, !tbaa !9
  %104 = fneg double %103
  br label %105

105:                                              ; preds = %101, %98
  %106 = phi double [ %100, %98 ], [ %104, %101 ]
  store double %106, ptr %40, align 8, !tbaa !9
  %107 = load ptr, ptr %10, align 8, !tbaa !5
  %108 = load i32, ptr %107, align 4, !tbaa !14
  %109 = icmp eq i32 %108, 1
  br i1 %109, label %110, label %874

110:                                              ; preds = %105
  %111 = load ptr, ptr %13, align 8, !tbaa !5
  %112 = load double, ptr %111, align 8, !tbaa !9
  %113 = fcmp oeq double %112, 0.000000e+00
  br i1 %113, label %114, label %319

114:                                              ; preds = %110
  %115 = load double, ptr %37, align 8, !tbaa !9
  %116 = load double, ptr %38, align 8, !tbaa !9
  %117 = fcmp oge double %115, %116
  br i1 %117, label %118, label %120

118:                                              ; preds = %114
  %119 = load double, ptr %37, align 8, !tbaa !9
  br label %122

120:                                              ; preds = %114
  %121 = load double, ptr %38, align 8, !tbaa !9
  br label %122

122:                                              ; preds = %120, %118
  %123 = phi double [ %119, %118 ], [ %121, %120 ]
  store double %123, ptr %35, align 8, !tbaa !9
  %124 = load double, ptr %35, align 8, !tbaa !9
  %125 = fcmp oeq double %124, 0.000000e+00
  br i1 %125, label %126, label %136

126:                                              ; preds = %122
  %127 = load ptr, ptr %17, align 8, !tbaa !5
  %128 = getelementptr inbounds %struct.doublecomplex, ptr %127, i32 0, i32 0
  store double 0.000000e+00, ptr %128, align 8, !tbaa !11
  %129 = load ptr, ptr %17, align 8, !tbaa !5
  %130 = getelementptr inbounds %struct.doublecomplex, ptr %129, i32 0, i32 1
  store double 0.000000e+00, ptr %130, align 8, !tbaa !13
  %131 = load ptr, ptr %18, align 8, !tbaa !5
  %132 = getelementptr inbounds %struct.doublecomplex, ptr %131, i32 0, i32 0
  store double 1.000000e+00, ptr %132, align 8, !tbaa !11
  %133 = load ptr, ptr %18, align 8, !tbaa !5
  %134 = getelementptr inbounds %struct.doublecomplex, ptr %133, i32 0, i32 1
  store double 0.000000e+00, ptr %134, align 8, !tbaa !13
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  store double 0.000000e+00, ptr %135, align 8, !tbaa !9
  br label %318

136:                                              ; preds = %122
  %137 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %138 = load double, ptr %137, align 8, !tbaa !11
  %139 = load double, ptr %35, align 8, !tbaa !9
  %140 = fdiv double %138, %139
  %141 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %140, ptr %141, align 8, !tbaa !11
  %142 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %143 = load double, ptr %142, align 8, !tbaa !13
  %144 = load double, ptr %35, align 8, !tbaa !9
  %145 = fdiv double %143, %144
  %146 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %145, ptr %146, align 8, !tbaa !13
  %147 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %148 = load double, ptr %147, align 8, !tbaa !11
  %149 = load ptr, ptr %17, align 8, !tbaa !5
  %150 = getelementptr inbounds %struct.doublecomplex, ptr %149, i32 0, i32 0
  store double %148, ptr %150, align 8, !tbaa !11
  %151 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %152 = load double, ptr %151, align 8, !tbaa !13
  %153 = load ptr, ptr %17, align 8, !tbaa !5
  %154 = getelementptr inbounds %struct.doublecomplex, ptr %153, i32 0, i32 1
  store double %152, ptr %154, align 8, !tbaa !13
  %155 = load ptr, ptr %15, align 8, !tbaa !5
  %156 = getelementptr inbounds %struct.doublecomplex, ptr %155, i32 0, i32 0
  %157 = load double, ptr %156, align 8, !tbaa !11
  %158 = load double, ptr %35, align 8, !tbaa !9
  %159 = fdiv double %157, %158
  %160 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %159, ptr %160, align 8, !tbaa !11
  %161 = load ptr, ptr %15, align 8, !tbaa !5
  %162 = getelementptr inbounds %struct.doublecomplex, ptr %161, i32 0, i32 1
  %163 = load double, ptr %162, align 8, !tbaa !13
  %164 = load double, ptr %35, align 8, !tbaa !9
  %165 = fdiv double %163, %164
  %166 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %165, ptr %166, align 8, !tbaa !13
  %167 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %168 = load double, ptr %167, align 8, !tbaa !11
  %169 = load ptr, ptr %18, align 8, !tbaa !5
  %170 = getelementptr inbounds %struct.doublecomplex, ptr %169, i32 0, i32 0
  store double %168, ptr %170, align 8, !tbaa !11
  %171 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %172 = load double, ptr %171, align 8, !tbaa !13
  %173 = load ptr, ptr %18, align 8, !tbaa !5
  %174 = getelementptr inbounds %struct.doublecomplex, ptr %173, i32 0, i32 1
  store double %172, ptr %174, align 8, !tbaa !13
  %175 = load ptr, ptr %17, align 8, !tbaa !5
  %176 = call { double, double } @Cd(ptr noundef %175)
  %177 = extractvalue { double, double } %176, 0
  %178 = extractvalue { double, double } %176, 1
  %179 = fneg double %178
  %180 = call ptr @_pCd(ptr noundef %24)
  %181 = getelementptr inbounds { double, double }, ptr %180, i32 0, i32 0
  %182 = getelementptr inbounds { double, double }, ptr %180, i32 0, i32 1
  store double %177, ptr %181, align 8
  store double %179, ptr %182, align 8
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = getelementptr inbounds %struct.doublecomplex, ptr %183, i32 0, i32 0
  %185 = load double, ptr %184, align 8, !tbaa !11
  %186 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %187 = load double, ptr %186, align 8, !tbaa !11
  %188 = load ptr, ptr %17, align 8, !tbaa !5
  %189 = getelementptr inbounds %struct.doublecomplex, ptr %188, i32 0, i32 1
  %190 = load double, ptr %189, align 8, !tbaa !13
  %191 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %192 = load double, ptr %191, align 8, !tbaa !13
  %193 = fmul double %190, %192
  %194 = fneg double %193
  %195 = call double @llvm.fmuladd.f64(double %185, double %187, double %194)
  %196 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %195, ptr %196, align 8, !tbaa !11
  %197 = load ptr, ptr %17, align 8, !tbaa !5
  %198 = getelementptr inbounds %struct.doublecomplex, ptr %197, i32 0, i32 0
  %199 = load double, ptr %198, align 8, !tbaa !11
  %200 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %201 = load double, ptr %200, align 8, !tbaa !13
  %202 = load ptr, ptr %17, align 8, !tbaa !5
  %203 = getelementptr inbounds %struct.doublecomplex, ptr %202, i32 0, i32 1
  %204 = load double, ptr %203, align 8, !tbaa !13
  %205 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %206 = load double, ptr %205, align 8, !tbaa !11
  %207 = fmul double %204, %206
  %208 = call double @llvm.fmuladd.f64(double %199, double %201, double %207)
  %209 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %208, ptr %209, align 8, !tbaa !13
  %210 = load ptr, ptr %18, align 8, !tbaa !5
  %211 = call { double, double } @Cd(ptr noundef %210)
  %212 = extractvalue { double, double } %211, 0
  %213 = extractvalue { double, double } %211, 1
  %214 = fneg double %213
  %215 = call ptr @_pCd(ptr noundef %26)
  %216 = getelementptr inbounds { double, double }, ptr %215, i32 0, i32 0
  %217 = getelementptr inbounds { double, double }, ptr %215, i32 0, i32 1
  store double %212, ptr %216, align 8
  store double %214, ptr %217, align 8
  %218 = load ptr, ptr %18, align 8, !tbaa !5
  %219 = getelementptr inbounds %struct.doublecomplex, ptr %218, i32 0, i32 0
  %220 = load double, ptr %219, align 8, !tbaa !11
  %221 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %222 = load double, ptr %221, align 8, !tbaa !11
  %223 = load ptr, ptr %18, align 8, !tbaa !5
  %224 = getelementptr inbounds %struct.doublecomplex, ptr %223, i32 0, i32 1
  %225 = load double, ptr %224, align 8, !tbaa !13
  %226 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %227 = load double, ptr %226, align 8, !tbaa !13
  %228 = fmul double %225, %227
  %229 = fneg double %228
  %230 = call double @llvm.fmuladd.f64(double %220, double %222, double %229)
  %231 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %230, ptr %231, align 8, !tbaa !11
  %232 = load ptr, ptr %18, align 8, !tbaa !5
  %233 = getelementptr inbounds %struct.doublecomplex, ptr %232, i32 0, i32 0
  %234 = load double, ptr %233, align 8, !tbaa !11
  %235 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %236 = load double, ptr %235, align 8, !tbaa !13
  %237 = load ptr, ptr %18, align 8, !tbaa !5
  %238 = getelementptr inbounds %struct.doublecomplex, ptr %237, i32 0, i32 1
  %239 = load double, ptr %238, align 8, !tbaa !13
  %240 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %241 = load double, ptr %240, align 8, !tbaa !11
  %242 = fmul double %239, %241
  %243 = call double @llvm.fmuladd.f64(double %234, double %236, double %242)
  %244 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %243, ptr %244, align 8, !tbaa !13
  %245 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %246 = load double, ptr %245, align 8, !tbaa !11
  %247 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %248 = load double, ptr %247, align 8, !tbaa !11
  %249 = fadd double %246, %248
  %250 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %249, ptr %250, align 8, !tbaa !11
  %251 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %252 = load double, ptr %251, align 8, !tbaa !13
  %253 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %254 = load double, ptr %253, align 8, !tbaa !13
  %255 = fadd double %252, %254
  %256 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %255, ptr %256, align 8, !tbaa !13
  %257 = call { double, double } @Cd(ptr noundef %22)
  %258 = extractvalue { double, double } %257, 0
  %259 = extractvalue { double, double } %257, 1
  %260 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %261 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  store double %258, ptr %260, align 8
  store double %259, ptr %261, align 8
  %262 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 0
  %263 = load double, ptr %262, align 8
  %264 = getelementptr inbounds { double, double }, ptr %46, i32 0, i32 1
  %265 = load double, ptr %264, align 8
  %266 = call { double, double } @csqrt(double noundef %263, double noundef %265) #6
  %267 = extractvalue { double, double } %266, 0
  %268 = extractvalue { double, double } %266, 1
  %269 = call ptr @_pCd(ptr noundef %21)
  %270 = getelementptr inbounds { double, double }, ptr %269, i32 0, i32 0
  %271 = getelementptr inbounds { double, double }, ptr %269, i32 0, i32 1
  store double %267, ptr %270, align 8
  store double %268, ptr %271, align 8
  %272 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %273 = load double, ptr %272, align 8, !tbaa !11
  store double %273, ptr %43, align 8, !tbaa !9
  %274 = load ptr, ptr %17, align 8, !tbaa !5
  %275 = getelementptr inbounds %struct.doublecomplex, ptr %274, i32 0, i32 0
  %276 = load double, ptr %275, align 8, !tbaa !11
  %277 = load double, ptr %43, align 8, !tbaa !9
  %278 = fdiv double %276, %277
  %279 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %278, ptr %279, align 8, !tbaa !11
  %280 = load ptr, ptr %17, align 8, !tbaa !5
  %281 = getelementptr inbounds %struct.doublecomplex, ptr %280, i32 0, i32 1
  %282 = load double, ptr %281, align 8, !tbaa !13
  %283 = load double, ptr %43, align 8, !tbaa !9
  %284 = fdiv double %282, %283
  %285 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %284, ptr %285, align 8, !tbaa !13
  %286 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %287 = load double, ptr %286, align 8, !tbaa !11
  %288 = load ptr, ptr %17, align 8, !tbaa !5
  %289 = getelementptr inbounds %struct.doublecomplex, ptr %288, i32 0, i32 0
  store double %287, ptr %289, align 8, !tbaa !11
  %290 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %291 = load double, ptr %290, align 8, !tbaa !13
  %292 = load ptr, ptr %17, align 8, !tbaa !5
  %293 = getelementptr inbounds %struct.doublecomplex, ptr %292, i32 0, i32 1
  store double %291, ptr %293, align 8, !tbaa !13
  %294 = load ptr, ptr %18, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.doublecomplex, ptr %294, i32 0, i32 0
  %296 = load double, ptr %295, align 8, !tbaa !11
  %297 = load double, ptr %43, align 8, !tbaa !9
  %298 = fdiv double %296, %297
  %299 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %298, ptr %299, align 8, !tbaa !11
  %300 = load ptr, ptr %18, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.doublecomplex, ptr %300, i32 0, i32 1
  %302 = load double, ptr %301, align 8, !tbaa !13
  %303 = load double, ptr %43, align 8, !tbaa !9
  %304 = fdiv double %302, %303
  %305 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %304, ptr %305, align 8, !tbaa !13
  %306 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %307 = load double, ptr %306, align 8, !tbaa !11
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  %309 = getelementptr inbounds %struct.doublecomplex, ptr %308, i32 0, i32 0
  store double %307, ptr %309, align 8, !tbaa !11
  %310 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %311 = load double, ptr %310, align 8, !tbaa !13
  %312 = load ptr, ptr %18, align 8, !tbaa !5
  %313 = getelementptr inbounds %struct.doublecomplex, ptr %312, i32 0, i32 1
  store double %311, ptr %313, align 8, !tbaa !13
  %314 = load double, ptr %35, align 8, !tbaa !9
  %315 = load double, ptr %43, align 8, !tbaa !9
  %316 = fmul double %314, %315
  %317 = load ptr, ptr %16, align 8, !tbaa !5
  store double %316, ptr %317, align 8, !tbaa !9
  br label %318

318:                                              ; preds = %136, %126
  store i32 1, ptr %47, align 4
  br label %1899

319:                                              ; preds = %110
  %320 = load double, ptr %37, align 8, !tbaa !9
  %321 = load double, ptr %42, align 8, !tbaa !9
  %322 = load double, ptr %40, align 8, !tbaa !9
  %323 = fmul double %321, %322
  %324 = fcmp ole double %320, %323
  br i1 %324, label %325, label %359

325:                                              ; preds = %319
  %326 = load ptr, ptr %17, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.doublecomplex, ptr %326, i32 0, i32 0
  store double 1.000000e+00, ptr %327, align 8, !tbaa !11
  %328 = load ptr, ptr %17, align 8, !tbaa !5
  %329 = getelementptr inbounds %struct.doublecomplex, ptr %328, i32 0, i32 1
  store double 0.000000e+00, ptr %329, align 8, !tbaa !13
  %330 = load ptr, ptr %18, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.doublecomplex, ptr %330, i32 0, i32 0
  store double 0.000000e+00, ptr %331, align 8, !tbaa !11
  %332 = load ptr, ptr %18, align 8, !tbaa !5
  %333 = getelementptr inbounds %struct.doublecomplex, ptr %332, i32 0, i32 1
  store double 0.000000e+00, ptr %333, align 8, !tbaa !13
  %334 = load double, ptr %40, align 8, !tbaa !9
  %335 = load double, ptr %38, align 8, !tbaa !9
  %336 = fcmp oge double %334, %335
  br i1 %336, label %337, label %339

337:                                              ; preds = %325
  %338 = load double, ptr %40, align 8, !tbaa !9
  br label %341

339:                                              ; preds = %325
  %340 = load double, ptr %38, align 8, !tbaa !9
  br label %341

341:                                              ; preds = %339, %337
  %342 = phi double [ %338, %337 ], [ %340, %339 ]
  store double %342, ptr %43, align 8, !tbaa !9
  %343 = load double, ptr %40, align 8, !tbaa !9
  %344 = load double, ptr %43, align 8, !tbaa !9
  %345 = fdiv double %343, %344
  store double %345, ptr %35, align 8, !tbaa !9
  %346 = load double, ptr %38, align 8, !tbaa !9
  %347 = load double, ptr %43, align 8, !tbaa !9
  %348 = fdiv double %346, %347
  store double %348, ptr %36, align 8, !tbaa !9
  %349 = load double, ptr %43, align 8, !tbaa !9
  %350 = load double, ptr %35, align 8, !tbaa !9
  %351 = load double, ptr %35, align 8, !tbaa !9
  %352 = load double, ptr %36, align 8, !tbaa !9
  %353 = load double, ptr %36, align 8, !tbaa !9
  %354 = fmul double %352, %353
  %355 = call double @llvm.fmuladd.f64(double %350, double %351, double %354)
  %356 = call double @sqrt(double noundef %355) #6
  %357 = fmul double %349, %356
  %358 = load ptr, ptr %16, align 8, !tbaa !5
  store double %357, ptr %358, align 8, !tbaa !9
  store i32 1, ptr %47, align 4
  br label %1899

359:                                              ; preds = %319
  %360 = load double, ptr %38, align 8, !tbaa !9
  %361 = load double, ptr %42, align 8, !tbaa !9
  %362 = load double, ptr %40, align 8, !tbaa !9
  %363 = fmul double %361, %362
  %364 = fcmp ole double %360, %363
  br i1 %364, label %365, label %394

365:                                              ; preds = %359
  %366 = load double, ptr %37, align 8, !tbaa !9
  store double %366, ptr %35, align 8, !tbaa !9
  %367 = load double, ptr %40, align 8, !tbaa !9
  store double %367, ptr %36, align 8, !tbaa !9
  %368 = load double, ptr %35, align 8, !tbaa !9
  %369 = load double, ptr %36, align 8, !tbaa !9
  %370 = fcmp ole double %368, %369
  br i1 %370, label %371, label %382

371:                                              ; preds = %365
  %372 = load ptr, ptr %17, align 8, !tbaa !5
  %373 = getelementptr inbounds %struct.doublecomplex, ptr %372, i32 0, i32 0
  store double 1.000000e+00, ptr %373, align 8, !tbaa !11
  %374 = load ptr, ptr %17, align 8, !tbaa !5
  %375 = getelementptr inbounds %struct.doublecomplex, ptr %374, i32 0, i32 1
  store double 0.000000e+00, ptr %375, align 8, !tbaa !13
  %376 = load ptr, ptr %18, align 8, !tbaa !5
  %377 = getelementptr inbounds %struct.doublecomplex, ptr %376, i32 0, i32 0
  store double 0.000000e+00, ptr %377, align 8, !tbaa !11
  %378 = load ptr, ptr %18, align 8, !tbaa !5
  %379 = getelementptr inbounds %struct.doublecomplex, ptr %378, i32 0, i32 1
  store double 0.000000e+00, ptr %379, align 8, !tbaa !13
  %380 = load double, ptr %36, align 8, !tbaa !9
  %381 = load ptr, ptr %16, align 8, !tbaa !5
  store double %380, ptr %381, align 8, !tbaa !9
  br label %393

382:                                              ; preds = %365
  %383 = load ptr, ptr %17, align 8, !tbaa !5
  %384 = getelementptr inbounds %struct.doublecomplex, ptr %383, i32 0, i32 0
  store double 0.000000e+00, ptr %384, align 8, !tbaa !11
  %385 = load ptr, ptr %17, align 8, !tbaa !5
  %386 = getelementptr inbounds %struct.doublecomplex, ptr %385, i32 0, i32 1
  store double 0.000000e+00, ptr %386, align 8, !tbaa !13
  %387 = load ptr, ptr %18, align 8, !tbaa !5
  %388 = getelementptr inbounds %struct.doublecomplex, ptr %387, i32 0, i32 0
  store double 1.000000e+00, ptr %388, align 8, !tbaa !11
  %389 = load ptr, ptr %18, align 8, !tbaa !5
  %390 = getelementptr inbounds %struct.doublecomplex, ptr %389, i32 0, i32 1
  store double 0.000000e+00, ptr %390, align 8, !tbaa !13
  %391 = load double, ptr %35, align 8, !tbaa !9
  %392 = load ptr, ptr %16, align 8, !tbaa !5
  store double %391, ptr %392, align 8, !tbaa !9
  br label %393

393:                                              ; preds = %382, %371
  store i32 1, ptr %47, align 4
  br label %1899

394:                                              ; preds = %359
  %395 = load double, ptr %40, align 8, !tbaa !9
  %396 = load double, ptr %42, align 8, !tbaa !9
  %397 = load double, ptr %38, align 8, !tbaa !9
  %398 = fmul double %396, %397
  %399 = fcmp ole double %395, %398
  br i1 %399, label %406, label %400

400:                                              ; preds = %394
  %401 = load double, ptr %40, align 8, !tbaa !9
  %402 = load double, ptr %42, align 8, !tbaa !9
  %403 = load double, ptr %37, align 8, !tbaa !9
  %404 = fmul double %402, %403
  %405 = fcmp ole double %401, %404
  br i1 %405, label %406, label %553

406:                                              ; preds = %400, %394
  %407 = load double, ptr %37, align 8, !tbaa !9
  store double %407, ptr %35, align 8, !tbaa !9
  %408 = load double, ptr %38, align 8, !tbaa !9
  store double %408, ptr %36, align 8, !tbaa !9
  %409 = load double, ptr %35, align 8, !tbaa !9
  %410 = load double, ptr %36, align 8, !tbaa !9
  %411 = fcmp ole double %409, %410
  br i1 %411, label %412, label %482

412:                                              ; preds = %406
  %413 = load double, ptr %35, align 8, !tbaa !9
  %414 = load double, ptr %36, align 8, !tbaa !9
  %415 = fdiv double %413, %414
  store double %415, ptr %43, align 8, !tbaa !9
  %416 = load double, ptr %43, align 8, !tbaa !9
  %417 = load double, ptr %43, align 8, !tbaa !9
  %418 = call double @llvm.fmuladd.f64(double %416, double %417, double 1.000000e+00)
  %419 = call double @sqrt(double noundef %418) #6
  store double %419, ptr %41, align 8, !tbaa !9
  %420 = load double, ptr %36, align 8, !tbaa !9
  %421 = load double, ptr %41, align 8, !tbaa !9
  %422 = fmul double %420, %421
  %423 = load ptr, ptr %16, align 8, !tbaa !5
  store double %422, ptr %423, align 8, !tbaa !9
  %424 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %425 = load double, ptr %424, align 8, !tbaa !11
  %426 = load double, ptr %36, align 8, !tbaa !9
  %427 = fdiv double %425, %426
  %428 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %427, ptr %428, align 8, !tbaa !11
  %429 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %430 = load double, ptr %429, align 8, !tbaa !13
  %431 = load double, ptr %36, align 8, !tbaa !9
  %432 = fdiv double %430, %431
  %433 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %432, ptr %433, align 8, !tbaa !13
  %434 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %435 = load double, ptr %434, align 8, !tbaa !11
  %436 = load double, ptr %41, align 8, !tbaa !9
  %437 = fdiv double %435, %436
  %438 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %437, ptr %438, align 8, !tbaa !11
  %439 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %440 = load double, ptr %439, align 8, !tbaa !13
  %441 = load double, ptr %41, align 8, !tbaa !9
  %442 = fdiv double %440, %441
  %443 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %442, ptr %443, align 8, !tbaa !13
  %444 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %445 = load double, ptr %444, align 8, !tbaa !11
  %446 = load ptr, ptr %17, align 8, !tbaa !5
  %447 = getelementptr inbounds %struct.doublecomplex, ptr %446, i32 0, i32 0
  store double %445, ptr %447, align 8, !tbaa !11
  %448 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %449 = load double, ptr %448, align 8, !tbaa !13
  %450 = load ptr, ptr %17, align 8, !tbaa !5
  %451 = getelementptr inbounds %struct.doublecomplex, ptr %450, i32 0, i32 1
  store double %449, ptr %451, align 8, !tbaa !13
  %452 = load ptr, ptr %15, align 8, !tbaa !5
  %453 = getelementptr inbounds %struct.doublecomplex, ptr %452, i32 0, i32 0
  %454 = load double, ptr %453, align 8, !tbaa !11
  %455 = load double, ptr %36, align 8, !tbaa !9
  %456 = fdiv double %454, %455
  %457 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %456, ptr %457, align 8, !tbaa !11
  %458 = load ptr, ptr %15, align 8, !tbaa !5
  %459 = getelementptr inbounds %struct.doublecomplex, ptr %458, i32 0, i32 1
  %460 = load double, ptr %459, align 8, !tbaa !13
  %461 = load double, ptr %36, align 8, !tbaa !9
  %462 = fdiv double %460, %461
  %463 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %462, ptr %463, align 8, !tbaa !13
  %464 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %465 = load double, ptr %464, align 8, !tbaa !11
  %466 = load double, ptr %41, align 8, !tbaa !9
  %467 = fdiv double %465, %466
  %468 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %467, ptr %468, align 8, !tbaa !11
  %469 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %470 = load double, ptr %469, align 8, !tbaa !13
  %471 = load double, ptr %41, align 8, !tbaa !9
  %472 = fdiv double %470, %471
  %473 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %472, ptr %473, align 8, !tbaa !13
  %474 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %475 = load double, ptr %474, align 8, !tbaa !11
  %476 = load ptr, ptr %18, align 8, !tbaa !5
  %477 = getelementptr inbounds %struct.doublecomplex, ptr %476, i32 0, i32 0
  store double %475, ptr %477, align 8, !tbaa !11
  %478 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %479 = load double, ptr %478, align 8, !tbaa !13
  %480 = load ptr, ptr %18, align 8, !tbaa !5
  %481 = getelementptr inbounds %struct.doublecomplex, ptr %480, i32 0, i32 1
  store double %479, ptr %481, align 8, !tbaa !13
  br label %552

482:                                              ; preds = %406
  %483 = load double, ptr %36, align 8, !tbaa !9
  %484 = load double, ptr %35, align 8, !tbaa !9
  %485 = fdiv double %483, %484
  store double %485, ptr %43, align 8, !tbaa !9
  %486 = load double, ptr %43, align 8, !tbaa !9
  %487 = load double, ptr %43, align 8, !tbaa !9
  %488 = call double @llvm.fmuladd.f64(double %486, double %487, double 1.000000e+00)
  %489 = call double @sqrt(double noundef %488) #6
  store double %489, ptr %41, align 8, !tbaa !9
  %490 = load double, ptr %35, align 8, !tbaa !9
  %491 = load double, ptr %41, align 8, !tbaa !9
  %492 = fmul double %490, %491
  %493 = load ptr, ptr %16, align 8, !tbaa !5
  store double %492, ptr %493, align 8, !tbaa !9
  %494 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %495 = load double, ptr %494, align 8, !tbaa !11
  %496 = load double, ptr %35, align 8, !tbaa !9
  %497 = fdiv double %495, %496
  %498 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %497, ptr %498, align 8, !tbaa !11
  %499 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %500 = load double, ptr %499, align 8, !tbaa !13
  %501 = load double, ptr %35, align 8, !tbaa !9
  %502 = fdiv double %500, %501
  %503 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %502, ptr %503, align 8, !tbaa !13
  %504 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %505 = load double, ptr %504, align 8, !tbaa !11
  %506 = load double, ptr %41, align 8, !tbaa !9
  %507 = fdiv double %505, %506
  %508 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %507, ptr %508, align 8, !tbaa !11
  %509 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %510 = load double, ptr %509, align 8, !tbaa !13
  %511 = load double, ptr %41, align 8, !tbaa !9
  %512 = fdiv double %510, %511
  %513 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %512, ptr %513, align 8, !tbaa !13
  %514 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %515 = load double, ptr %514, align 8, !tbaa !11
  %516 = load ptr, ptr %17, align 8, !tbaa !5
  %517 = getelementptr inbounds %struct.doublecomplex, ptr %516, i32 0, i32 0
  store double %515, ptr %517, align 8, !tbaa !11
  %518 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %519 = load double, ptr %518, align 8, !tbaa !13
  %520 = load ptr, ptr %17, align 8, !tbaa !5
  %521 = getelementptr inbounds %struct.doublecomplex, ptr %520, i32 0, i32 1
  store double %519, ptr %521, align 8, !tbaa !13
  %522 = load ptr, ptr %15, align 8, !tbaa !5
  %523 = getelementptr inbounds %struct.doublecomplex, ptr %522, i32 0, i32 0
  %524 = load double, ptr %523, align 8, !tbaa !11
  %525 = load double, ptr %35, align 8, !tbaa !9
  %526 = fdiv double %524, %525
  %527 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %526, ptr %527, align 8, !tbaa !11
  %528 = load ptr, ptr %15, align 8, !tbaa !5
  %529 = getelementptr inbounds %struct.doublecomplex, ptr %528, i32 0, i32 1
  %530 = load double, ptr %529, align 8, !tbaa !13
  %531 = load double, ptr %35, align 8, !tbaa !9
  %532 = fdiv double %530, %531
  %533 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %532, ptr %533, align 8, !tbaa !13
  %534 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %535 = load double, ptr %534, align 8, !tbaa !11
  %536 = load double, ptr %41, align 8, !tbaa !9
  %537 = fdiv double %535, %536
  %538 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %537, ptr %538, align 8, !tbaa !11
  %539 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %540 = load double, ptr %539, align 8, !tbaa !13
  %541 = load double, ptr %41, align 8, !tbaa !9
  %542 = fdiv double %540, %541
  %543 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %542, ptr %543, align 8, !tbaa !13
  %544 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %545 = load double, ptr %544, align 8, !tbaa !11
  %546 = load ptr, ptr %18, align 8, !tbaa !5
  %547 = getelementptr inbounds %struct.doublecomplex, ptr %546, i32 0, i32 0
  store double %545, ptr %547, align 8, !tbaa !11
  %548 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %549 = load double, ptr %548, align 8, !tbaa !13
  %550 = load ptr, ptr %18, align 8, !tbaa !5
  %551 = getelementptr inbounds %struct.doublecomplex, ptr %550, i32 0, i32 1
  store double %549, ptr %551, align 8, !tbaa !13
  br label %552

552:                                              ; preds = %482, %412
  store i32 1, ptr %47, align 4
  br label %1899

553:                                              ; preds = %400
  %554 = load double, ptr %38, align 8, !tbaa !9
  %555 = load double, ptr %40, align 8, !tbaa !9
  %556 = fdiv double %554, %555
  store double %556, ptr %29, align 8, !tbaa !9
  %557 = load double, ptr %37, align 8, !tbaa !9
  %558 = load double, ptr %40, align 8, !tbaa !9
  %559 = fdiv double %557, %558
  store double %559, ptr %30, align 8, !tbaa !9
  %560 = load double, ptr %29, align 8, !tbaa !9
  %561 = load double, ptr %29, align 8, !tbaa !9
  %562 = fneg double %560
  %563 = call double @llvm.fmuladd.f64(double %562, double %561, double 1.000000e+00)
  %564 = load double, ptr %30, align 8, !tbaa !9
  %565 = load double, ptr %30, align 8, !tbaa !9
  %566 = fneg double %564
  %567 = call double @llvm.fmuladd.f64(double %566, double %565, double %563)
  %568 = fmul double %567, 5.000000e-01
  store double %568, ptr %31, align 8, !tbaa !9
  %569 = load double, ptr %29, align 8, !tbaa !9
  %570 = load double, ptr %29, align 8, !tbaa !9
  %571 = fmul double %569, %570
  store double %571, ptr %19, align 8, !tbaa !9
  %572 = load double, ptr %19, align 8, !tbaa !9
  %573 = load ptr, ptr %18, align 8, !tbaa !5
  %574 = getelementptr inbounds %struct.doublecomplex, ptr %573, i32 0, i32 0
  store double %572, ptr %574, align 8, !tbaa !11
  %575 = load ptr, ptr %18, align 8, !tbaa !5
  %576 = getelementptr inbounds %struct.doublecomplex, ptr %575, i32 0, i32 1
  store double 0.000000e+00, ptr %576, align 8, !tbaa !13
  %577 = load double, ptr %31, align 8, !tbaa !9
  %578 = fcmp ogt double %577, 0.000000e+00
  br i1 %578, label %579, label %631

579:                                              ; preds = %553
  %580 = load double, ptr %31, align 8, !tbaa !9
  %581 = load double, ptr %31, align 8, !tbaa !9
  %582 = fmul double %580, %581
  store double %582, ptr %19, align 8, !tbaa !9
  %583 = load double, ptr %19, align 8, !tbaa !9
  %584 = load ptr, ptr %18, align 8, !tbaa !5
  %585 = getelementptr inbounds %struct.doublecomplex, ptr %584, i32 0, i32 0
  %586 = load double, ptr %585, align 8, !tbaa !11
  %587 = fadd double %583, %586
  %588 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  store double %587, ptr %588, align 8, !tbaa !11
  %589 = load ptr, ptr %18, align 8, !tbaa !5
  %590 = getelementptr inbounds %struct.doublecomplex, ptr %589, i32 0, i32 1
  %591 = load double, ptr %590, align 8, !tbaa !13
  %592 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  store double %591, ptr %592, align 8, !tbaa !13
  %593 = call { double, double } @Cd(ptr noundef %24)
  %594 = extractvalue { double, double } %593, 0
  %595 = extractvalue { double, double } %593, 1
  %596 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %597 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  store double %594, ptr %596, align 8
  store double %595, ptr %597, align 8
  %598 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 0
  %599 = load double, ptr %598, align 8
  %600 = getelementptr inbounds { double, double }, ptr %48, i32 0, i32 1
  %601 = load double, ptr %600, align 8
  %602 = call { double, double } @csqrt(double noundef %599, double noundef %601) #6
  %603 = extractvalue { double, double } %602, 0
  %604 = extractvalue { double, double } %602, 1
  %605 = call ptr @_pCd(ptr noundef %23)
  %606 = getelementptr inbounds { double, double }, ptr %605, i32 0, i32 0
  %607 = getelementptr inbounds { double, double }, ptr %605, i32 0, i32 1
  store double %603, ptr %606, align 8
  store double %604, ptr %607, align 8
  %608 = load double, ptr %31, align 8, !tbaa !9
  %609 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %610 = load double, ptr %609, align 8, !tbaa !11
  %611 = fadd double %608, %610
  %612 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %611, ptr %612, align 8, !tbaa !11
  %613 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %614 = load double, ptr %613, align 8, !tbaa !13
  %615 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %614, ptr %615, align 8, !tbaa !13
  %616 = load ptr, ptr %18, align 8, !tbaa !5
  %617 = call { double, double } @Cd(ptr noundef %616)
  %618 = extractvalue { double, double } %617, 0
  %619 = extractvalue { double, double } %617, 1
  %620 = call { double, double } @Cd(ptr noundef %22)
  %621 = extractvalue { double, double } %620, 0
  %622 = extractvalue { double, double } %620, 1
  %623 = call { double, double } @__divdc3(double noundef %618, double noundef %619, double noundef %621, double noundef %622) #6
  %624 = extractvalue { double, double } %623, 0
  %625 = extractvalue { double, double } %623, 1
  %626 = call ptr @_pCd(ptr noundef %21)
  %627 = getelementptr inbounds { double, double }, ptr %626, i32 0, i32 0
  %628 = getelementptr inbounds { double, double }, ptr %626, i32 0, i32 1
  store double %624, ptr %627, align 8
  store double %625, ptr %628, align 8
  %629 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %630 = load double, ptr %629, align 8, !tbaa !11
  store double %630, ptr %32, align 8, !tbaa !9
  br label %670

631:                                              ; preds = %553
  %632 = load double, ptr %31, align 8, !tbaa !9
  %633 = load double, ptr %31, align 8, !tbaa !9
  %634 = fmul double %632, %633
  store double %634, ptr %19, align 8, !tbaa !9
  %635 = load double, ptr %19, align 8, !tbaa !9
  %636 = load ptr, ptr %18, align 8, !tbaa !5
  %637 = getelementptr inbounds %struct.doublecomplex, ptr %636, i32 0, i32 0
  %638 = load double, ptr %637, align 8, !tbaa !11
  %639 = fadd double %635, %638
  %640 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %639, ptr %640, align 8, !tbaa !11
  %641 = load ptr, ptr %18, align 8, !tbaa !5
  %642 = getelementptr inbounds %struct.doublecomplex, ptr %641, i32 0, i32 1
  %643 = load double, ptr %642, align 8, !tbaa !13
  %644 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %643, ptr %644, align 8, !tbaa !13
  %645 = call { double, double } @Cd(ptr noundef %23)
  %646 = extractvalue { double, double } %645, 0
  %647 = extractvalue { double, double } %645, 1
  %648 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %649 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  store double %646, ptr %648, align 8
  store double %647, ptr %649, align 8
  %650 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 0
  %651 = load double, ptr %650, align 8
  %652 = getelementptr inbounds { double, double }, ptr %49, i32 0, i32 1
  %653 = load double, ptr %652, align 8
  %654 = call { double, double } @csqrt(double noundef %651, double noundef %653) #6
  %655 = extractvalue { double, double } %654, 0
  %656 = extractvalue { double, double } %654, 1
  %657 = call ptr @_pCd(ptr noundef %22)
  %658 = getelementptr inbounds { double, double }, ptr %657, i32 0, i32 0
  %659 = getelementptr inbounds { double, double }, ptr %657, i32 0, i32 1
  store double %655, ptr %658, align 8
  store double %656, ptr %659, align 8
  %660 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %661 = load double, ptr %660, align 8, !tbaa !11
  %662 = load double, ptr %31, align 8, !tbaa !9
  %663 = fsub double %661, %662
  %664 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %663, ptr %664, align 8, !tbaa !11
  %665 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %666 = load double, ptr %665, align 8, !tbaa !13
  %667 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %666, ptr %667, align 8, !tbaa !13
  %668 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %669 = load double, ptr %668, align 8, !tbaa !11
  store double %669, ptr %32, align 8, !tbaa !9
  br label %670

670:                                              ; preds = %631, %579
  %671 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %672 = load double, ptr %671, align 8, !tbaa !11
  %673 = load double, ptr %40, align 8, !tbaa !9
  %674 = fdiv double %672, %673
  %675 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %674, ptr %675, align 8, !tbaa !11
  %676 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %677 = load double, ptr %676, align 8, !tbaa !13
  %678 = load double, ptr %40, align 8, !tbaa !9
  %679 = fdiv double %677, %678
  %680 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %679, ptr %680, align 8, !tbaa !13
  %681 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %682 = load double, ptr %681, align 8, !tbaa !11
  %683 = fneg double %682
  %684 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %683, ptr %684, align 8, !tbaa !11
  %685 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %686 = load double, ptr %685, align 8, !tbaa !13
  %687 = fneg double %686
  %688 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %687, ptr %688, align 8, !tbaa !13
  %689 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %690 = load double, ptr %689, align 8, !tbaa !11
  %691 = load double, ptr %32, align 8, !tbaa !9
  %692 = fdiv double %690, %691
  %693 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %692, ptr %693, align 8, !tbaa !11
  %694 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %695 = load double, ptr %694, align 8, !tbaa !13
  %696 = load double, ptr %32, align 8, !tbaa !9
  %697 = fdiv double %695, %696
  %698 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %697, ptr %698, align 8, !tbaa !13
  %699 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %700 = load double, ptr %699, align 8, !tbaa !11
  %701 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  store double %700, ptr %701, align 8, !tbaa !11
  %702 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %703 = load double, ptr %702, align 8, !tbaa !13
  %704 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  store double %703, ptr %704, align 8, !tbaa !13
  %705 = load ptr, ptr %15, align 8, !tbaa !5
  %706 = getelementptr inbounds %struct.doublecomplex, ptr %705, i32 0, i32 0
  %707 = load double, ptr %706, align 8, !tbaa !11
  %708 = load double, ptr %40, align 8, !tbaa !9
  %709 = fdiv double %707, %708
  %710 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %709, ptr %710, align 8, !tbaa !11
  %711 = load ptr, ptr %15, align 8, !tbaa !5
  %712 = getelementptr inbounds %struct.doublecomplex, ptr %711, i32 0, i32 1
  %713 = load double, ptr %712, align 8, !tbaa !13
  %714 = load double, ptr %40, align 8, !tbaa !9
  %715 = fdiv double %713, %714
  %716 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %715, ptr %716, align 8, !tbaa !13
  %717 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %718 = load double, ptr %717, align 8, !tbaa !11
  %719 = fneg double %718
  %720 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %719, ptr %720, align 8, !tbaa !11
  %721 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %722 = load double, ptr %721, align 8, !tbaa !13
  %723 = fneg double %722
  %724 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %723, ptr %724, align 8, !tbaa !13
  %725 = load double, ptr %32, align 8, !tbaa !9
  %726 = fadd double %725, 1.000000e+00
  store double %726, ptr %19, align 8, !tbaa !9
  %727 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %728 = load double, ptr %727, align 8, !tbaa !11
  %729 = load double, ptr %19, align 8, !tbaa !9
  %730 = fdiv double %728, %729
  %731 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %730, ptr %731, align 8, !tbaa !11
  %732 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %733 = load double, ptr %732, align 8, !tbaa !13
  %734 = load double, ptr %19, align 8, !tbaa !9
  %735 = fdiv double %733, %734
  %736 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %735, ptr %736, align 8, !tbaa !13
  %737 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %738 = load double, ptr %737, align 8, !tbaa !11
  %739 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %738, ptr %739, align 8, !tbaa !11
  %740 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %741 = load double, ptr %740, align 8, !tbaa !13
  %742 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %741, ptr %742, align 8, !tbaa !13
  %743 = call { double, double } @Cd(ptr noundef %27)
  %744 = extractvalue { double, double } %743, 0
  %745 = extractvalue { double, double } %743, 1
  %746 = fneg double %745
  %747 = call ptr @_pCd(ptr noundef %24)
  %748 = getelementptr inbounds { double, double }, ptr %747, i32 0, i32 0
  %749 = getelementptr inbounds { double, double }, ptr %747, i32 0, i32 1
  store double %744, ptr %748, align 8
  store double %746, ptr %749, align 8
  %750 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %751 = load double, ptr %750, align 8, !tbaa !11
  %752 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %753 = load double, ptr %752, align 8, !tbaa !11
  %754 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %755 = load double, ptr %754, align 8, !tbaa !13
  %756 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %757 = load double, ptr %756, align 8, !tbaa !13
  %758 = fmul double %755, %757
  %759 = fneg double %758
  %760 = call double @llvm.fmuladd.f64(double %751, double %753, double %759)
  %761 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %760, ptr %761, align 8, !tbaa !11
  %762 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %763 = load double, ptr %762, align 8, !tbaa !11
  %764 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %765 = load double, ptr %764, align 8, !tbaa !13
  %766 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %767 = load double, ptr %766, align 8, !tbaa !13
  %768 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %769 = load double, ptr %768, align 8, !tbaa !11
  %770 = fmul double %767, %769
  %771 = call double @llvm.fmuladd.f64(double %763, double %765, double %770)
  %772 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %771, ptr %772, align 8, !tbaa !13
  %773 = call { double, double } @Cd(ptr noundef %39)
  %774 = extractvalue { double, double } %773, 0
  %775 = extractvalue { double, double } %773, 1
  %776 = fneg double %775
  %777 = call ptr @_pCd(ptr noundef %26)
  %778 = getelementptr inbounds { double, double }, ptr %777, i32 0, i32 0
  %779 = getelementptr inbounds { double, double }, ptr %777, i32 0, i32 1
  store double %774, ptr %778, align 8
  store double %776, ptr %779, align 8
  %780 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %781 = load double, ptr %780, align 8, !tbaa !11
  %782 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %783 = load double, ptr %782, align 8, !tbaa !11
  %784 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %785 = load double, ptr %784, align 8, !tbaa !13
  %786 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %787 = load double, ptr %786, align 8, !tbaa !13
  %788 = fmul double %785, %787
  %789 = fneg double %788
  %790 = call double @llvm.fmuladd.f64(double %781, double %783, double %789)
  %791 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %790, ptr %791, align 8, !tbaa !11
  %792 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %793 = load double, ptr %792, align 8, !tbaa !11
  %794 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %795 = load double, ptr %794, align 8, !tbaa !13
  %796 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %797 = load double, ptr %796, align 8, !tbaa !13
  %798 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %799 = load double, ptr %798, align 8, !tbaa !11
  %800 = fmul double %797, %799
  %801 = call double @llvm.fmuladd.f64(double %793, double %795, double %800)
  %802 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %801, ptr %802, align 8, !tbaa !13
  %803 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %804 = load double, ptr %803, align 8, !tbaa !11
  %805 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %806 = load double, ptr %805, align 8, !tbaa !11
  %807 = fadd double %804, %806
  %808 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %807, ptr %808, align 8, !tbaa !11
  %809 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %810 = load double, ptr %809, align 8, !tbaa !13
  %811 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %812 = load double, ptr %811, align 8, !tbaa !13
  %813 = fadd double %810, %812
  %814 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %813, ptr %814, align 8, !tbaa !13
  %815 = call { double, double } @Cd(ptr noundef %22)
  %816 = extractvalue { double, double } %815, 0
  %817 = extractvalue { double, double } %815, 1
  %818 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %819 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  store double %816, ptr %818, align 8
  store double %817, ptr %819, align 8
  %820 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 0
  %821 = load double, ptr %820, align 8
  %822 = getelementptr inbounds { double, double }, ptr %50, i32 0, i32 1
  %823 = load double, ptr %822, align 8
  %824 = call { double, double } @csqrt(double noundef %821, double noundef %823) #6
  %825 = extractvalue { double, double } %824, 0
  %826 = extractvalue { double, double } %824, 1
  %827 = call ptr @_pCd(ptr noundef %21)
  %828 = getelementptr inbounds { double, double }, ptr %827, i32 0, i32 0
  %829 = getelementptr inbounds { double, double }, ptr %827, i32 0, i32 1
  store double %825, ptr %828, align 8
  store double %826, ptr %829, align 8
  %830 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %831 = load double, ptr %830, align 8, !tbaa !11
  store double %831, ptr %43, align 8, !tbaa !9
  %832 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %833 = load double, ptr %832, align 8, !tbaa !11
  %834 = load double, ptr %43, align 8, !tbaa !9
  %835 = fdiv double %833, %834
  %836 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %835, ptr %836, align 8, !tbaa !11
  %837 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %838 = load double, ptr %837, align 8, !tbaa !13
  %839 = load double, ptr %43, align 8, !tbaa !9
  %840 = fdiv double %838, %839
  %841 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %840, ptr %841, align 8, !tbaa !13
  %842 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %843 = load double, ptr %842, align 8, !tbaa !11
  %844 = load ptr, ptr %17, align 8, !tbaa !5
  %845 = getelementptr inbounds %struct.doublecomplex, ptr %844, i32 0, i32 0
  store double %843, ptr %845, align 8, !tbaa !11
  %846 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %847 = load double, ptr %846, align 8, !tbaa !13
  %848 = load ptr, ptr %17, align 8, !tbaa !5
  %849 = getelementptr inbounds %struct.doublecomplex, ptr %848, i32 0, i32 1
  store double %847, ptr %849, align 8, !tbaa !13
  %850 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %851 = load double, ptr %850, align 8, !tbaa !11
  %852 = load double, ptr %43, align 8, !tbaa !9
  %853 = fdiv double %851, %852
  %854 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %853, ptr %854, align 8, !tbaa !11
  %855 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %856 = load double, ptr %855, align 8, !tbaa !13
  %857 = load double, ptr %43, align 8, !tbaa !9
  %858 = fdiv double %856, %857
  %859 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %858, ptr %859, align 8, !tbaa !13
  %860 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %861 = load double, ptr %860, align 8, !tbaa !11
  %862 = load ptr, ptr %18, align 8, !tbaa !5
  %863 = getelementptr inbounds %struct.doublecomplex, ptr %862, i32 0, i32 0
  store double %861, ptr %863, align 8, !tbaa !11
  %864 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %865 = load double, ptr %864, align 8, !tbaa !13
  %866 = load ptr, ptr %18, align 8, !tbaa !5
  %867 = getelementptr inbounds %struct.doublecomplex, ptr %866, i32 0, i32 1
  store double %865, ptr %867, align 8, !tbaa !13
  %868 = load double, ptr %32, align 8, !tbaa !9
  %869 = fadd double %868, 1.000000e+00
  %870 = call double @sqrt(double noundef %869) #6
  %871 = load double, ptr %40, align 8, !tbaa !9
  %872 = fmul double %870, %871
  %873 = load ptr, ptr %16, align 8, !tbaa !5
  store double %872, ptr %873, align 8, !tbaa !9
  store i32 1, ptr %47, align 4
  br label %1899

874:                                              ; preds = %105
  %875 = load ptr, ptr %10, align 8, !tbaa !5
  %876 = load i32, ptr %875, align 4, !tbaa !14
  %877 = icmp eq i32 %876, 2
  br i1 %877, label %878, label %1897

878:                                              ; preds = %874
  %879 = load ptr, ptr %13, align 8, !tbaa !5
  %880 = load double, ptr %879, align 8, !tbaa !9
  %881 = fcmp oeq double %880, 0.000000e+00
  br i1 %881, label %882, label %1140

882:                                              ; preds = %878
  %883 = load ptr, ptr %16, align 8, !tbaa !5
  store double 0.000000e+00, ptr %883, align 8, !tbaa !9
  %884 = load double, ptr %37, align 8, !tbaa !9
  %885 = load double, ptr %38, align 8, !tbaa !9
  %886 = fcmp oge double %884, %885
  br i1 %886, label %887, label %889

887:                                              ; preds = %882
  %888 = load double, ptr %37, align 8, !tbaa !9
  br label %891

889:                                              ; preds = %882
  %890 = load double, ptr %38, align 8, !tbaa !9
  br label %891

891:                                              ; preds = %889, %887
  %892 = phi double [ %888, %887 ], [ %890, %889 ]
  %893 = fcmp oeq double %892, 0.000000e+00
  br i1 %893, label %894, label %899

894:                                              ; preds = %891
  %895 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  store double 1.000000e+00, ptr %895, align 8, !tbaa !11
  %896 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  store double 0.000000e+00, ptr %896, align 8, !tbaa !13
  %897 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double 0.000000e+00, ptr %897, align 8, !tbaa !11
  %898 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double 0.000000e+00, ptr %898, align 8, !tbaa !13
  br label %935

899:                                              ; preds = %891
  %900 = load ptr, ptr %15, align 8, !tbaa !5
  %901 = call { double, double } @Cd(ptr noundef %900)
  %902 = extractvalue { double, double } %901, 0
  %903 = extractvalue { double, double } %901, 1
  %904 = fneg double %903
  %905 = call ptr @_pCd(ptr noundef %22)
  %906 = getelementptr inbounds { double, double }, ptr %905, i32 0, i32 0
  %907 = getelementptr inbounds { double, double }, ptr %905, i32 0, i32 1
  store double %902, ptr %906, align 8
  store double %904, ptr %907, align 8
  %908 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %909 = load double, ptr %908, align 8, !tbaa !11
  %910 = fneg double %909
  %911 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %910, ptr %911, align 8, !tbaa !11
  %912 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %913 = load double, ptr %912, align 8, !tbaa !13
  %914 = fneg double %913
  %915 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %914, ptr %915, align 8, !tbaa !13
  %916 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %917 = load double, ptr %916, align 8, !tbaa !11
  %918 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  store double %917, ptr %918, align 8, !tbaa !11
  %919 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %920 = load double, ptr %919, align 8, !tbaa !13
  %921 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  store double %920, ptr %921, align 8, !tbaa !13
  %922 = call { double, double } @Cd(ptr noundef %33)
  %923 = extractvalue { double, double } %922, 0
  %924 = extractvalue { double, double } %922, 1
  %925 = fneg double %924
  %926 = call ptr @_pCd(ptr noundef %21)
  %927 = getelementptr inbounds { double, double }, ptr %926, i32 0, i32 0
  %928 = getelementptr inbounds { double, double }, ptr %926, i32 0, i32 1
  store double %923, ptr %927, align 8
  store double %925, ptr %928, align 8
  %929 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %930 = load double, ptr %929, align 8, !tbaa !11
  %931 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %930, ptr %931, align 8, !tbaa !11
  %932 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %933 = load double, ptr %932, align 8, !tbaa !13
  %934 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %933, ptr %934, align 8, !tbaa !13
  br label %935

935:                                              ; preds = %899, %894
  %936 = call { double, double } @Cd(ptr noundef %27)
  %937 = extractvalue { double, double } %936, 0
  %938 = extractvalue { double, double } %936, 1
  %939 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %940 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  store double %937, ptr %939, align 8
  store double %938, ptr %940, align 8
  %941 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 0
  %942 = load double, ptr %941, align 8
  %943 = getelementptr inbounds { double, double }, ptr %51, i32 0, i32 1
  %944 = load double, ptr %943, align 8
  %945 = call double @cabs(double noundef %942, double noundef %944) #6
  store double %945, ptr %19, align 8, !tbaa !9
  %946 = call { double, double } @Cd(ptr noundef %39)
  %947 = extractvalue { double, double } %946, 0
  %948 = extractvalue { double, double } %946, 1
  %949 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %950 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  store double %947, ptr %949, align 8
  store double %948, ptr %950, align 8
  %951 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 0
  %952 = load double, ptr %951, align 8
  %953 = getelementptr inbounds { double, double }, ptr %52, i32 0, i32 1
  %954 = load double, ptr %953, align 8
  %955 = call double @cabs(double noundef %952, double noundef %954) #6
  store double %955, ptr %20, align 8, !tbaa !9
  %956 = load double, ptr %19, align 8, !tbaa !9
  %957 = load double, ptr %20, align 8, !tbaa !9
  %958 = fcmp oge double %956, %957
  br i1 %958, label %959, label %961

959:                                              ; preds = %935
  %960 = load double, ptr %19, align 8, !tbaa !9
  br label %963

961:                                              ; preds = %935
  %962 = load double, ptr %20, align 8, !tbaa !9
  br label %963

963:                                              ; preds = %961, %959
  %964 = phi double [ %960, %959 ], [ %962, %961 ]
  store double %964, ptr %35, align 8, !tbaa !9
  %965 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %966 = load double, ptr %965, align 8, !tbaa !11
  %967 = load double, ptr %35, align 8, !tbaa !9
  %968 = fdiv double %966, %967
  %969 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %968, ptr %969, align 8, !tbaa !11
  %970 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %971 = load double, ptr %970, align 8, !tbaa !13
  %972 = load double, ptr %35, align 8, !tbaa !9
  %973 = fdiv double %971, %972
  %974 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %973, ptr %974, align 8, !tbaa !13
  %975 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %976 = load double, ptr %975, align 8, !tbaa !11
  %977 = load ptr, ptr %17, align 8, !tbaa !5
  %978 = getelementptr inbounds %struct.doublecomplex, ptr %977, i32 0, i32 0
  store double %976, ptr %978, align 8, !tbaa !11
  %979 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %980 = load double, ptr %979, align 8, !tbaa !13
  %981 = load ptr, ptr %17, align 8, !tbaa !5
  %982 = getelementptr inbounds %struct.doublecomplex, ptr %981, i32 0, i32 1
  store double %980, ptr %982, align 8, !tbaa !13
  %983 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %984 = load double, ptr %983, align 8, !tbaa !11
  %985 = load double, ptr %35, align 8, !tbaa !9
  %986 = fdiv double %984, %985
  %987 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %986, ptr %987, align 8, !tbaa !11
  %988 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %989 = load double, ptr %988, align 8, !tbaa !13
  %990 = load double, ptr %35, align 8, !tbaa !9
  %991 = fdiv double %989, %990
  %992 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %991, ptr %992, align 8, !tbaa !13
  %993 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %994 = load double, ptr %993, align 8, !tbaa !11
  %995 = load ptr, ptr %18, align 8, !tbaa !5
  %996 = getelementptr inbounds %struct.doublecomplex, ptr %995, i32 0, i32 0
  store double %994, ptr %996, align 8, !tbaa !11
  %997 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %998 = load double, ptr %997, align 8, !tbaa !13
  %999 = load ptr, ptr %18, align 8, !tbaa !5
  %1000 = getelementptr inbounds %struct.doublecomplex, ptr %999, i32 0, i32 1
  store double %998, ptr %1000, align 8, !tbaa !13
  %1001 = load ptr, ptr %17, align 8, !tbaa !5
  %1002 = call { double, double } @Cd(ptr noundef %1001)
  %1003 = extractvalue { double, double } %1002, 0
  %1004 = extractvalue { double, double } %1002, 1
  %1005 = fneg double %1004
  %1006 = call ptr @_pCd(ptr noundef %24)
  %1007 = getelementptr inbounds { double, double }, ptr %1006, i32 0, i32 0
  %1008 = getelementptr inbounds { double, double }, ptr %1006, i32 0, i32 1
  store double %1003, ptr %1007, align 8
  store double %1005, ptr %1008, align 8
  %1009 = load ptr, ptr %17, align 8, !tbaa !5
  %1010 = getelementptr inbounds %struct.doublecomplex, ptr %1009, i32 0, i32 0
  %1011 = load double, ptr %1010, align 8, !tbaa !11
  %1012 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1013 = load double, ptr %1012, align 8, !tbaa !11
  %1014 = load ptr, ptr %17, align 8, !tbaa !5
  %1015 = getelementptr inbounds %struct.doublecomplex, ptr %1014, i32 0, i32 1
  %1016 = load double, ptr %1015, align 8, !tbaa !13
  %1017 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1018 = load double, ptr %1017, align 8, !tbaa !13
  %1019 = fmul double %1016, %1018
  %1020 = fneg double %1019
  %1021 = call double @llvm.fmuladd.f64(double %1011, double %1013, double %1020)
  %1022 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1021, ptr %1022, align 8, !tbaa !11
  %1023 = load ptr, ptr %17, align 8, !tbaa !5
  %1024 = getelementptr inbounds %struct.doublecomplex, ptr %1023, i32 0, i32 0
  %1025 = load double, ptr %1024, align 8, !tbaa !11
  %1026 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1027 = load double, ptr %1026, align 8, !tbaa !13
  %1028 = load ptr, ptr %17, align 8, !tbaa !5
  %1029 = getelementptr inbounds %struct.doublecomplex, ptr %1028, i32 0, i32 1
  %1030 = load double, ptr %1029, align 8, !tbaa !13
  %1031 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1032 = load double, ptr %1031, align 8, !tbaa !11
  %1033 = fmul double %1030, %1032
  %1034 = call double @llvm.fmuladd.f64(double %1025, double %1027, double %1033)
  %1035 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1034, ptr %1035, align 8, !tbaa !13
  %1036 = load ptr, ptr %18, align 8, !tbaa !5
  %1037 = call { double, double } @Cd(ptr noundef %1036)
  %1038 = extractvalue { double, double } %1037, 0
  %1039 = extractvalue { double, double } %1037, 1
  %1040 = fneg double %1039
  %1041 = call ptr @_pCd(ptr noundef %26)
  %1042 = getelementptr inbounds { double, double }, ptr %1041, i32 0, i32 0
  %1043 = getelementptr inbounds { double, double }, ptr %1041, i32 0, i32 1
  store double %1038, ptr %1042, align 8
  store double %1040, ptr %1043, align 8
  %1044 = load ptr, ptr %18, align 8, !tbaa !5
  %1045 = getelementptr inbounds %struct.doublecomplex, ptr %1044, i32 0, i32 0
  %1046 = load double, ptr %1045, align 8, !tbaa !11
  %1047 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %1048 = load double, ptr %1047, align 8, !tbaa !11
  %1049 = load ptr, ptr %18, align 8, !tbaa !5
  %1050 = getelementptr inbounds %struct.doublecomplex, ptr %1049, i32 0, i32 1
  %1051 = load double, ptr %1050, align 8, !tbaa !13
  %1052 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %1053 = load double, ptr %1052, align 8, !tbaa !13
  %1054 = fmul double %1051, %1053
  %1055 = fneg double %1054
  %1056 = call double @llvm.fmuladd.f64(double %1046, double %1048, double %1055)
  %1057 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %1056, ptr %1057, align 8, !tbaa !11
  %1058 = load ptr, ptr %18, align 8, !tbaa !5
  %1059 = getelementptr inbounds %struct.doublecomplex, ptr %1058, i32 0, i32 0
  %1060 = load double, ptr %1059, align 8, !tbaa !11
  %1061 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %1062 = load double, ptr %1061, align 8, !tbaa !13
  %1063 = load ptr, ptr %18, align 8, !tbaa !5
  %1064 = getelementptr inbounds %struct.doublecomplex, ptr %1063, i32 0, i32 1
  %1065 = load double, ptr %1064, align 8, !tbaa !13
  %1066 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %1067 = load double, ptr %1066, align 8, !tbaa !11
  %1068 = fmul double %1065, %1067
  %1069 = call double @llvm.fmuladd.f64(double %1060, double %1062, double %1068)
  %1070 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %1069, ptr %1070, align 8, !tbaa !13
  %1071 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1072 = load double, ptr %1071, align 8, !tbaa !11
  %1073 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %1074 = load double, ptr %1073, align 8, !tbaa !11
  %1075 = fadd double %1072, %1074
  %1076 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1075, ptr %1076, align 8, !tbaa !11
  %1077 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1078 = load double, ptr %1077, align 8, !tbaa !13
  %1079 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %1080 = load double, ptr %1079, align 8, !tbaa !13
  %1081 = fadd double %1078, %1080
  %1082 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1081, ptr %1082, align 8, !tbaa !13
  %1083 = call { double, double } @Cd(ptr noundef %22)
  %1084 = extractvalue { double, double } %1083, 0
  %1085 = extractvalue { double, double } %1083, 1
  %1086 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %1087 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  store double %1084, ptr %1086, align 8
  store double %1085, ptr %1087, align 8
  %1088 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 0
  %1089 = load double, ptr %1088, align 8
  %1090 = getelementptr inbounds { double, double }, ptr %53, i32 0, i32 1
  %1091 = load double, ptr %1090, align 8
  %1092 = call { double, double } @csqrt(double noundef %1089, double noundef %1091) #6
  %1093 = extractvalue { double, double } %1092, 0
  %1094 = extractvalue { double, double } %1092, 1
  %1095 = call ptr @_pCd(ptr noundef %21)
  %1096 = getelementptr inbounds { double, double }, ptr %1095, i32 0, i32 0
  %1097 = getelementptr inbounds { double, double }, ptr %1095, i32 0, i32 1
  store double %1093, ptr %1096, align 8
  store double %1094, ptr %1097, align 8
  %1098 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1099 = load double, ptr %1098, align 8, !tbaa !11
  store double %1099, ptr %43, align 8, !tbaa !9
  %1100 = load ptr, ptr %17, align 8, !tbaa !5
  %1101 = getelementptr inbounds %struct.doublecomplex, ptr %1100, i32 0, i32 0
  %1102 = load double, ptr %1101, align 8, !tbaa !11
  %1103 = load double, ptr %43, align 8, !tbaa !9
  %1104 = fdiv double %1102, %1103
  %1105 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1104, ptr %1105, align 8, !tbaa !11
  %1106 = load ptr, ptr %17, align 8, !tbaa !5
  %1107 = getelementptr inbounds %struct.doublecomplex, ptr %1106, i32 0, i32 1
  %1108 = load double, ptr %1107, align 8, !tbaa !13
  %1109 = load double, ptr %43, align 8, !tbaa !9
  %1110 = fdiv double %1108, %1109
  %1111 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1110, ptr %1111, align 8, !tbaa !13
  %1112 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1113 = load double, ptr %1112, align 8, !tbaa !11
  %1114 = load ptr, ptr %17, align 8, !tbaa !5
  %1115 = getelementptr inbounds %struct.doublecomplex, ptr %1114, i32 0, i32 0
  store double %1113, ptr %1115, align 8, !tbaa !11
  %1116 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1117 = load double, ptr %1116, align 8, !tbaa !13
  %1118 = load ptr, ptr %17, align 8, !tbaa !5
  %1119 = getelementptr inbounds %struct.doublecomplex, ptr %1118, i32 0, i32 1
  store double %1117, ptr %1119, align 8, !tbaa !13
  %1120 = load ptr, ptr %18, align 8, !tbaa !5
  %1121 = getelementptr inbounds %struct.doublecomplex, ptr %1120, i32 0, i32 0
  %1122 = load double, ptr %1121, align 8, !tbaa !11
  %1123 = load double, ptr %43, align 8, !tbaa !9
  %1124 = fdiv double %1122, %1123
  %1125 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1124, ptr %1125, align 8, !tbaa !11
  %1126 = load ptr, ptr %18, align 8, !tbaa !5
  %1127 = getelementptr inbounds %struct.doublecomplex, ptr %1126, i32 0, i32 1
  %1128 = load double, ptr %1127, align 8, !tbaa !13
  %1129 = load double, ptr %43, align 8, !tbaa !9
  %1130 = fdiv double %1128, %1129
  %1131 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1130, ptr %1131, align 8, !tbaa !13
  %1132 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1133 = load double, ptr %1132, align 8, !tbaa !11
  %1134 = load ptr, ptr %18, align 8, !tbaa !5
  %1135 = getelementptr inbounds %struct.doublecomplex, ptr %1134, i32 0, i32 0
  store double %1133, ptr %1135, align 8, !tbaa !11
  %1136 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1137 = load double, ptr %1136, align 8, !tbaa !13
  %1138 = load ptr, ptr %18, align 8, !tbaa !5
  %1139 = getelementptr inbounds %struct.doublecomplex, ptr %1138, i32 0, i32 1
  store double %1137, ptr %1139, align 8, !tbaa !13
  store i32 1, ptr %47, align 4
  br label %1899

1140:                                             ; preds = %878
  %1141 = load double, ptr %37, align 8, !tbaa !9
  %1142 = load double, ptr %42, align 8, !tbaa !9
  %1143 = load double, ptr %40, align 8, !tbaa !9
  %1144 = fmul double %1142, %1143
  %1145 = fcmp ole double %1141, %1144
  br i1 %1145, label %1146, label %1157

1146:                                             ; preds = %1140
  %1147 = load ptr, ptr %17, align 8, !tbaa !5
  %1148 = getelementptr inbounds %struct.doublecomplex, ptr %1147, i32 0, i32 0
  store double 0.000000e+00, ptr %1148, align 8, !tbaa !11
  %1149 = load ptr, ptr %17, align 8, !tbaa !5
  %1150 = getelementptr inbounds %struct.doublecomplex, ptr %1149, i32 0, i32 1
  store double 0.000000e+00, ptr %1150, align 8, !tbaa !13
  %1151 = load ptr, ptr %18, align 8, !tbaa !5
  %1152 = getelementptr inbounds %struct.doublecomplex, ptr %1151, i32 0, i32 0
  store double 1.000000e+00, ptr %1152, align 8, !tbaa !11
  %1153 = load ptr, ptr %18, align 8, !tbaa !5
  %1154 = getelementptr inbounds %struct.doublecomplex, ptr %1153, i32 0, i32 1
  store double 0.000000e+00, ptr %1154, align 8, !tbaa !13
  %1155 = load double, ptr %37, align 8, !tbaa !9
  %1156 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1155, ptr %1156, align 8, !tbaa !9
  store i32 1, ptr %47, align 4
  br label %1899

1157:                                             ; preds = %1140
  %1158 = load double, ptr %38, align 8, !tbaa !9
  %1159 = load double, ptr %42, align 8, !tbaa !9
  %1160 = load double, ptr %40, align 8, !tbaa !9
  %1161 = fmul double %1159, %1160
  %1162 = fcmp ole double %1158, %1161
  br i1 %1162, label %1163, label %1192

1163:                                             ; preds = %1157
  %1164 = load double, ptr %37, align 8, !tbaa !9
  store double %1164, ptr %35, align 8, !tbaa !9
  %1165 = load double, ptr %40, align 8, !tbaa !9
  store double %1165, ptr %36, align 8, !tbaa !9
  %1166 = load double, ptr %35, align 8, !tbaa !9
  %1167 = load double, ptr %36, align 8, !tbaa !9
  %1168 = fcmp ole double %1166, %1167
  br i1 %1168, label %1169, label %1180

1169:                                             ; preds = %1163
  %1170 = load ptr, ptr %17, align 8, !tbaa !5
  %1171 = getelementptr inbounds %struct.doublecomplex, ptr %1170, i32 0, i32 0
  store double 0.000000e+00, ptr %1171, align 8, !tbaa !11
  %1172 = load ptr, ptr %17, align 8, !tbaa !5
  %1173 = getelementptr inbounds %struct.doublecomplex, ptr %1172, i32 0, i32 1
  store double 0.000000e+00, ptr %1173, align 8, !tbaa !13
  %1174 = load ptr, ptr %18, align 8, !tbaa !5
  %1175 = getelementptr inbounds %struct.doublecomplex, ptr %1174, i32 0, i32 0
  store double 1.000000e+00, ptr %1175, align 8, !tbaa !11
  %1176 = load ptr, ptr %18, align 8, !tbaa !5
  %1177 = getelementptr inbounds %struct.doublecomplex, ptr %1176, i32 0, i32 1
  store double 0.000000e+00, ptr %1177, align 8, !tbaa !13
  %1178 = load double, ptr %35, align 8, !tbaa !9
  %1179 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1178, ptr %1179, align 8, !tbaa !9
  br label %1191

1180:                                             ; preds = %1163
  %1181 = load ptr, ptr %17, align 8, !tbaa !5
  %1182 = getelementptr inbounds %struct.doublecomplex, ptr %1181, i32 0, i32 0
  store double 1.000000e+00, ptr %1182, align 8, !tbaa !11
  %1183 = load ptr, ptr %17, align 8, !tbaa !5
  %1184 = getelementptr inbounds %struct.doublecomplex, ptr %1183, i32 0, i32 1
  store double 0.000000e+00, ptr %1184, align 8, !tbaa !13
  %1185 = load ptr, ptr %18, align 8, !tbaa !5
  %1186 = getelementptr inbounds %struct.doublecomplex, ptr %1185, i32 0, i32 0
  store double 0.000000e+00, ptr %1186, align 8, !tbaa !11
  %1187 = load ptr, ptr %18, align 8, !tbaa !5
  %1188 = getelementptr inbounds %struct.doublecomplex, ptr %1187, i32 0, i32 1
  store double 0.000000e+00, ptr %1188, align 8, !tbaa !13
  %1189 = load double, ptr %36, align 8, !tbaa !9
  %1190 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1189, ptr %1190, align 8, !tbaa !9
  br label %1191

1191:                                             ; preds = %1180, %1169
  store i32 1, ptr %47, align 4
  br label %1899

1192:                                             ; preds = %1157
  %1193 = load double, ptr %40, align 8, !tbaa !9
  %1194 = load double, ptr %42, align 8, !tbaa !9
  %1195 = load double, ptr %38, align 8, !tbaa !9
  %1196 = fmul double %1194, %1195
  %1197 = fcmp ole double %1193, %1196
  br i1 %1197, label %1204, label %1198

1198:                                             ; preds = %1192
  %1199 = load double, ptr %40, align 8, !tbaa !9
  %1200 = load double, ptr %42, align 8, !tbaa !9
  %1201 = load double, ptr %37, align 8, !tbaa !9
  %1202 = fmul double %1200, %1201
  %1203 = fcmp ole double %1199, %1202
  br i1 %1203, label %1204, label %1395

1204:                                             ; preds = %1198, %1192
  %1205 = load double, ptr %37, align 8, !tbaa !9
  store double %1205, ptr %35, align 8, !tbaa !9
  %1206 = load double, ptr %38, align 8, !tbaa !9
  store double %1206, ptr %36, align 8, !tbaa !9
  %1207 = load double, ptr %35, align 8, !tbaa !9
  %1208 = load double, ptr %36, align 8, !tbaa !9
  %1209 = fcmp ole double %1207, %1208
  br i1 %1209, label %1210, label %1303

1210:                                             ; preds = %1204
  %1211 = load double, ptr %35, align 8, !tbaa !9
  %1212 = load double, ptr %36, align 8, !tbaa !9
  %1213 = fdiv double %1211, %1212
  store double %1213, ptr %43, align 8, !tbaa !9
  %1214 = load double, ptr %43, align 8, !tbaa !9
  %1215 = load double, ptr %43, align 8, !tbaa !9
  %1216 = call double @llvm.fmuladd.f64(double %1214, double %1215, double 1.000000e+00)
  %1217 = call double @sqrt(double noundef %1216) #6
  store double %1217, ptr %41, align 8, !tbaa !9
  %1218 = load double, ptr %40, align 8, !tbaa !9
  %1219 = load double, ptr %43, align 8, !tbaa !9
  %1220 = load double, ptr %41, align 8, !tbaa !9
  %1221 = fdiv double %1219, %1220
  %1222 = fmul double %1218, %1221
  %1223 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1222, ptr %1223, align 8, !tbaa !9
  %1224 = load ptr, ptr %15, align 8, !tbaa !5
  %1225 = call { double, double } @Cd(ptr noundef %1224)
  %1226 = extractvalue { double, double } %1225, 0
  %1227 = extractvalue { double, double } %1225, 1
  %1228 = fneg double %1227
  %1229 = call ptr @_pCd(ptr noundef %24)
  %1230 = getelementptr inbounds { double, double }, ptr %1229, i32 0, i32 0
  %1231 = getelementptr inbounds { double, double }, ptr %1229, i32 0, i32 1
  store double %1226, ptr %1230, align 8
  store double %1228, ptr %1231, align 8
  %1232 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1233 = load double, ptr %1232, align 8, !tbaa !11
  %1234 = load double, ptr %36, align 8, !tbaa !9
  %1235 = fdiv double %1233, %1234
  %1236 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1235, ptr %1236, align 8, !tbaa !11
  %1237 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1238 = load double, ptr %1237, align 8, !tbaa !13
  %1239 = load double, ptr %36, align 8, !tbaa !9
  %1240 = fdiv double %1238, %1239
  %1241 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1240, ptr %1241, align 8, !tbaa !13
  %1242 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1243 = load double, ptr %1242, align 8, !tbaa !11
  %1244 = fneg double %1243
  %1245 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1244, ptr %1245, align 8, !tbaa !11
  %1246 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1247 = load double, ptr %1246, align 8, !tbaa !13
  %1248 = fneg double %1247
  %1249 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1248, ptr %1249, align 8, !tbaa !13
  %1250 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1251 = load double, ptr %1250, align 8, !tbaa !11
  %1252 = load double, ptr %41, align 8, !tbaa !9
  %1253 = fdiv double %1251, %1252
  %1254 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1253, ptr %1254, align 8, !tbaa !11
  %1255 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1256 = load double, ptr %1255, align 8, !tbaa !13
  %1257 = load double, ptr %41, align 8, !tbaa !9
  %1258 = fdiv double %1256, %1257
  %1259 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1258, ptr %1259, align 8, !tbaa !13
  %1260 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1261 = load double, ptr %1260, align 8, !tbaa !11
  %1262 = load ptr, ptr %17, align 8, !tbaa !5
  %1263 = getelementptr inbounds %struct.doublecomplex, ptr %1262, i32 0, i32 0
  store double %1261, ptr %1263, align 8, !tbaa !11
  %1264 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1265 = load double, ptr %1264, align 8, !tbaa !13
  %1266 = load ptr, ptr %17, align 8, !tbaa !5
  %1267 = getelementptr inbounds %struct.doublecomplex, ptr %1266, i32 0, i32 1
  store double %1265, ptr %1267, align 8, !tbaa !13
  %1268 = call { double, double } @Cd(ptr noundef %33)
  %1269 = extractvalue { double, double } %1268, 0
  %1270 = extractvalue { double, double } %1268, 1
  %1271 = fneg double %1270
  %1272 = call ptr @_pCd(ptr noundef %23)
  %1273 = getelementptr inbounds { double, double }, ptr %1272, i32 0, i32 0
  %1274 = getelementptr inbounds { double, double }, ptr %1272, i32 0, i32 1
  store double %1269, ptr %1273, align 8
  store double %1271, ptr %1274, align 8
  %1275 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1276 = load double, ptr %1275, align 8, !tbaa !11
  %1277 = load double, ptr %36, align 8, !tbaa !9
  %1278 = fdiv double %1276, %1277
  %1279 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1278, ptr %1279, align 8, !tbaa !11
  %1280 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1281 = load double, ptr %1280, align 8, !tbaa !13
  %1282 = load double, ptr %36, align 8, !tbaa !9
  %1283 = fdiv double %1281, %1282
  %1284 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1283, ptr %1284, align 8, !tbaa !13
  %1285 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1286 = load double, ptr %1285, align 8, !tbaa !11
  %1287 = load double, ptr %41, align 8, !tbaa !9
  %1288 = fdiv double %1286, %1287
  %1289 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1288, ptr %1289, align 8, !tbaa !11
  %1290 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1291 = load double, ptr %1290, align 8, !tbaa !13
  %1292 = load double, ptr %41, align 8, !tbaa !9
  %1293 = fdiv double %1291, %1292
  %1294 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1293, ptr %1294, align 8, !tbaa !13
  %1295 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1296 = load double, ptr %1295, align 8, !tbaa !11
  %1297 = load ptr, ptr %18, align 8, !tbaa !5
  %1298 = getelementptr inbounds %struct.doublecomplex, ptr %1297, i32 0, i32 0
  store double %1296, ptr %1298, align 8, !tbaa !11
  %1299 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1300 = load double, ptr %1299, align 8, !tbaa !13
  %1301 = load ptr, ptr %18, align 8, !tbaa !5
  %1302 = getelementptr inbounds %struct.doublecomplex, ptr %1301, i32 0, i32 1
  store double %1300, ptr %1302, align 8, !tbaa !13
  br label %1394

1303:                                             ; preds = %1204
  %1304 = load double, ptr %36, align 8, !tbaa !9
  %1305 = load double, ptr %35, align 8, !tbaa !9
  %1306 = fdiv double %1304, %1305
  store double %1306, ptr %43, align 8, !tbaa !9
  %1307 = load double, ptr %43, align 8, !tbaa !9
  %1308 = load double, ptr %43, align 8, !tbaa !9
  %1309 = call double @llvm.fmuladd.f64(double %1307, double %1308, double 1.000000e+00)
  %1310 = call double @sqrt(double noundef %1309) #6
  store double %1310, ptr %41, align 8, !tbaa !9
  %1311 = load double, ptr %40, align 8, !tbaa !9
  %1312 = load double, ptr %41, align 8, !tbaa !9
  %1313 = fdiv double %1311, %1312
  %1314 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1313, ptr %1314, align 8, !tbaa !9
  %1315 = load ptr, ptr %15, align 8, !tbaa !5
  %1316 = call { double, double } @Cd(ptr noundef %1315)
  %1317 = extractvalue { double, double } %1316, 0
  %1318 = extractvalue { double, double } %1316, 1
  %1319 = fneg double %1318
  %1320 = call ptr @_pCd(ptr noundef %24)
  %1321 = getelementptr inbounds { double, double }, ptr %1320, i32 0, i32 0
  %1322 = getelementptr inbounds { double, double }, ptr %1320, i32 0, i32 1
  store double %1317, ptr %1321, align 8
  store double %1319, ptr %1322, align 8
  %1323 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1324 = load double, ptr %1323, align 8, !tbaa !11
  %1325 = load double, ptr %35, align 8, !tbaa !9
  %1326 = fdiv double %1324, %1325
  %1327 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1326, ptr %1327, align 8, !tbaa !11
  %1328 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1329 = load double, ptr %1328, align 8, !tbaa !13
  %1330 = load double, ptr %35, align 8, !tbaa !9
  %1331 = fdiv double %1329, %1330
  %1332 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1331, ptr %1332, align 8, !tbaa !13
  %1333 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1334 = load double, ptr %1333, align 8, !tbaa !11
  %1335 = fneg double %1334
  %1336 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1335, ptr %1336, align 8, !tbaa !11
  %1337 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1338 = load double, ptr %1337, align 8, !tbaa !13
  %1339 = fneg double %1338
  %1340 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1339, ptr %1340, align 8, !tbaa !13
  %1341 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1342 = load double, ptr %1341, align 8, !tbaa !11
  %1343 = load double, ptr %41, align 8, !tbaa !9
  %1344 = fdiv double %1342, %1343
  %1345 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1344, ptr %1345, align 8, !tbaa !11
  %1346 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1347 = load double, ptr %1346, align 8, !tbaa !13
  %1348 = load double, ptr %41, align 8, !tbaa !9
  %1349 = fdiv double %1347, %1348
  %1350 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1349, ptr %1350, align 8, !tbaa !13
  %1351 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1352 = load double, ptr %1351, align 8, !tbaa !11
  %1353 = load ptr, ptr %17, align 8, !tbaa !5
  %1354 = getelementptr inbounds %struct.doublecomplex, ptr %1353, i32 0, i32 0
  store double %1352, ptr %1354, align 8, !tbaa !11
  %1355 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1356 = load double, ptr %1355, align 8, !tbaa !13
  %1357 = load ptr, ptr %17, align 8, !tbaa !5
  %1358 = getelementptr inbounds %struct.doublecomplex, ptr %1357, i32 0, i32 1
  store double %1356, ptr %1358, align 8, !tbaa !13
  %1359 = call { double, double } @Cd(ptr noundef %33)
  %1360 = extractvalue { double, double } %1359, 0
  %1361 = extractvalue { double, double } %1359, 1
  %1362 = fneg double %1361
  %1363 = call ptr @_pCd(ptr noundef %23)
  %1364 = getelementptr inbounds { double, double }, ptr %1363, i32 0, i32 0
  %1365 = getelementptr inbounds { double, double }, ptr %1363, i32 0, i32 1
  store double %1360, ptr %1364, align 8
  store double %1362, ptr %1365, align 8
  %1366 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1367 = load double, ptr %1366, align 8, !tbaa !11
  %1368 = load double, ptr %35, align 8, !tbaa !9
  %1369 = fdiv double %1367, %1368
  %1370 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1369, ptr %1370, align 8, !tbaa !11
  %1371 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1372 = load double, ptr %1371, align 8, !tbaa !13
  %1373 = load double, ptr %35, align 8, !tbaa !9
  %1374 = fdiv double %1372, %1373
  %1375 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1374, ptr %1375, align 8, !tbaa !13
  %1376 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1377 = load double, ptr %1376, align 8, !tbaa !11
  %1378 = load double, ptr %41, align 8, !tbaa !9
  %1379 = fdiv double %1377, %1378
  %1380 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1379, ptr %1380, align 8, !tbaa !11
  %1381 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1382 = load double, ptr %1381, align 8, !tbaa !13
  %1383 = load double, ptr %41, align 8, !tbaa !9
  %1384 = fdiv double %1382, %1383
  %1385 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1384, ptr %1385, align 8, !tbaa !13
  %1386 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1387 = load double, ptr %1386, align 8, !tbaa !11
  %1388 = load ptr, ptr %18, align 8, !tbaa !5
  %1389 = getelementptr inbounds %struct.doublecomplex, ptr %1388, i32 0, i32 0
  store double %1387, ptr %1389, align 8, !tbaa !11
  %1390 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1391 = load double, ptr %1390, align 8, !tbaa !13
  %1392 = load ptr, ptr %18, align 8, !tbaa !5
  %1393 = getelementptr inbounds %struct.doublecomplex, ptr %1392, i32 0, i32 1
  store double %1391, ptr %1393, align 8, !tbaa !13
  br label %1394

1394:                                             ; preds = %1303, %1210
  store i32 1, ptr %47, align 4
  br label %1899

1395:                                             ; preds = %1198
  %1396 = load double, ptr %38, align 8, !tbaa !9
  %1397 = load double, ptr %40, align 8, !tbaa !9
  %1398 = fdiv double %1396, %1397
  store double %1398, ptr %29, align 8, !tbaa !9
  %1399 = load double, ptr %37, align 8, !tbaa !9
  %1400 = load double, ptr %40, align 8, !tbaa !9
  %1401 = fdiv double %1399, %1400
  store double %1401, ptr %30, align 8, !tbaa !9
  %1402 = load double, ptr %29, align 8, !tbaa !9
  %1403 = load double, ptr %29, align 8, !tbaa !9
  %1404 = call double @llvm.fmuladd.f64(double %1402, double %1403, double 1.000000e+00)
  %1405 = load double, ptr %29, align 8, !tbaa !9
  %1406 = load double, ptr %30, align 8, !tbaa !9
  %1407 = call double @llvm.fmuladd.f64(double %1405, double %1406, double %1404)
  store double %1407, ptr %19, align 8, !tbaa !9
  %1408 = load double, ptr %29, align 8, !tbaa !9
  %1409 = load double, ptr %30, align 8, !tbaa !9
  %1410 = load double, ptr %30, align 8, !tbaa !9
  %1411 = load double, ptr %30, align 8, !tbaa !9
  %1412 = fmul double %1410, %1411
  %1413 = call double @llvm.fmuladd.f64(double %1408, double %1409, double %1412)
  store double %1413, ptr %20, align 8, !tbaa !9
  %1414 = load double, ptr %19, align 8, !tbaa !9
  %1415 = load double, ptr %20, align 8, !tbaa !9
  %1416 = fcmp oge double %1414, %1415
  br i1 %1416, label %1417, label %1419

1417:                                             ; preds = %1395
  %1418 = load double, ptr %19, align 8, !tbaa !9
  br label %1421

1419:                                             ; preds = %1395
  %1420 = load double, ptr %20, align 8, !tbaa !9
  br label %1421

1421:                                             ; preds = %1419, %1417
  %1422 = phi double [ %1418, %1417 ], [ %1420, %1419 ]
  store double %1422, ptr %34, align 8, !tbaa !9
  %1423 = load double, ptr %29, align 8, !tbaa !9
  %1424 = load double, ptr %30, align 8, !tbaa !9
  %1425 = fsub double %1423, %1424
  %1426 = fmul double %1425, 2.000000e+00
  %1427 = load double, ptr %29, align 8, !tbaa !9
  %1428 = load double, ptr %30, align 8, !tbaa !9
  %1429 = fadd double %1427, %1428
  %1430 = call double @llvm.fmuladd.f64(double %1426, double %1429, double 1.000000e+00)
  store double %1430, ptr %28, align 8, !tbaa !9
  %1431 = load double, ptr %28, align 8, !tbaa !9
  %1432 = fcmp oge double %1431, 0.000000e+00
  br i1 %1432, label %1433, label %1566

1433:                                             ; preds = %1421
  %1434 = load double, ptr %29, align 8, !tbaa !9
  %1435 = load double, ptr %29, align 8, !tbaa !9
  %1436 = load double, ptr %30, align 8, !tbaa !9
  %1437 = load double, ptr %30, align 8, !tbaa !9
  %1438 = fmul double %1436, %1437
  %1439 = call double @llvm.fmuladd.f64(double %1434, double %1435, double %1438)
  %1440 = fadd double %1439, 1.000000e+00
  %1441 = fmul double %1440, 5.000000e-01
  store double %1441, ptr %31, align 8, !tbaa !9
  %1442 = load double, ptr %30, align 8, !tbaa !9
  %1443 = load double, ptr %30, align 8, !tbaa !9
  %1444 = fmul double %1442, %1443
  store double %1444, ptr %19, align 8, !tbaa !9
  %1445 = load double, ptr %19, align 8, !tbaa !9
  %1446 = load ptr, ptr %18, align 8, !tbaa !5
  %1447 = getelementptr inbounds %struct.doublecomplex, ptr %1446, i32 0, i32 0
  store double %1445, ptr %1447, align 8, !tbaa !11
  %1448 = load ptr, ptr %18, align 8, !tbaa !5
  %1449 = getelementptr inbounds %struct.doublecomplex, ptr %1448, i32 0, i32 1
  store double 0.000000e+00, ptr %1449, align 8, !tbaa !13
  %1450 = load double, ptr %31, align 8, !tbaa !9
  %1451 = load double, ptr %31, align 8, !tbaa !9
  %1452 = fmul double %1450, %1451
  store double %1452, ptr %20, align 8, !tbaa !9
  %1453 = load double, ptr %20, align 8, !tbaa !9
  %1454 = load ptr, ptr %18, align 8, !tbaa !5
  %1455 = getelementptr inbounds %struct.doublecomplex, ptr %1454, i32 0, i32 0
  %1456 = load double, ptr %1455, align 8, !tbaa !11
  %1457 = fsub double %1453, %1456
  %1458 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1457, ptr %1458, align 8, !tbaa !11
  %1459 = load ptr, ptr %18, align 8, !tbaa !5
  %1460 = getelementptr inbounds %struct.doublecomplex, ptr %1459, i32 0, i32 1
  %1461 = load double, ptr %1460, align 8, !tbaa !13
  %1462 = fneg double %1461
  %1463 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1462, ptr %1463, align 8, !tbaa !13
  %1464 = load double, ptr %31, align 8, !tbaa !9
  %1465 = call { double, double } @Cd(ptr noundef %22)
  %1466 = extractvalue { double, double } %1465, 0
  %1467 = extractvalue { double, double } %1465, 1
  %1468 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %1469 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  store double %1466, ptr %1468, align 8
  store double %1467, ptr %1469, align 8
  %1470 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 0
  %1471 = load double, ptr %1470, align 8
  %1472 = getelementptr inbounds { double, double }, ptr %54, i32 0, i32 1
  %1473 = load double, ptr %1472, align 8
  %1474 = call double @cabs(double noundef %1471, double noundef %1473) #6
  %1475 = call double @sqrt(double noundef %1474) #6
  %1476 = fadd double %1464, %1475
  store double %1476, ptr %19, align 8, !tbaa !9
  %1477 = load ptr, ptr %18, align 8, !tbaa !5
  %1478 = getelementptr inbounds %struct.doublecomplex, ptr %1477, i32 0, i32 0
  %1479 = load double, ptr %1478, align 8, !tbaa !11
  %1480 = load double, ptr %19, align 8, !tbaa !9
  %1481 = fdiv double %1479, %1480
  %1482 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1481, ptr %1482, align 8, !tbaa !11
  %1483 = load ptr, ptr %18, align 8, !tbaa !5
  %1484 = getelementptr inbounds %struct.doublecomplex, ptr %1483, i32 0, i32 1
  %1485 = load double, ptr %1484, align 8, !tbaa !13
  %1486 = load double, ptr %19, align 8, !tbaa !9
  %1487 = fdiv double %1485, %1486
  %1488 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1487, ptr %1488, align 8, !tbaa !13
  %1489 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1490 = load double, ptr %1489, align 8, !tbaa !11
  store double %1490, ptr %32, align 8, !tbaa !9
  %1491 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %1492 = load double, ptr %1491, align 8, !tbaa !11
  %1493 = load double, ptr %40, align 8, !tbaa !9
  %1494 = fdiv double %1492, %1493
  %1495 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1494, ptr %1495, align 8, !tbaa !11
  %1496 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %1497 = load double, ptr %1496, align 8, !tbaa !13
  %1498 = load double, ptr %40, align 8, !tbaa !9
  %1499 = fdiv double %1497, %1498
  %1500 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1499, ptr %1500, align 8, !tbaa !13
  %1501 = load double, ptr %32, align 8, !tbaa !9
  %1502 = fsub double 1.000000e+00, %1501
  store double %1502, ptr %19, align 8, !tbaa !9
  %1503 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1504 = load double, ptr %1503, align 8, !tbaa !11
  %1505 = load double, ptr %19, align 8, !tbaa !9
  %1506 = fdiv double %1504, %1505
  %1507 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1506, ptr %1507, align 8, !tbaa !11
  %1508 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1509 = load double, ptr %1508, align 8, !tbaa !13
  %1510 = load double, ptr %19, align 8, !tbaa !9
  %1511 = fdiv double %1509, %1510
  %1512 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1511, ptr %1512, align 8, !tbaa !13
  %1513 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1514 = load double, ptr %1513, align 8, !tbaa !11
  %1515 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  store double %1514, ptr %1515, align 8, !tbaa !11
  %1516 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1517 = load double, ptr %1516, align 8, !tbaa !13
  %1518 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  store double %1517, ptr %1518, align 8, !tbaa !13
  %1519 = load ptr, ptr %15, align 8, !tbaa !5
  %1520 = getelementptr inbounds %struct.doublecomplex, ptr %1519, i32 0, i32 0
  %1521 = load double, ptr %1520, align 8, !tbaa !11
  %1522 = load double, ptr %40, align 8, !tbaa !9
  %1523 = fdiv double %1521, %1522
  %1524 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1523, ptr %1524, align 8, !tbaa !11
  %1525 = load ptr, ptr %15, align 8, !tbaa !5
  %1526 = getelementptr inbounds %struct.doublecomplex, ptr %1525, i32 0, i32 1
  %1527 = load double, ptr %1526, align 8, !tbaa !13
  %1528 = load double, ptr %40, align 8, !tbaa !9
  %1529 = fdiv double %1527, %1528
  %1530 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1529, ptr %1530, align 8, !tbaa !13
  %1531 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1532 = load double, ptr %1531, align 8, !tbaa !11
  %1533 = fneg double %1532
  %1534 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1533, ptr %1534, align 8, !tbaa !11
  %1535 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1536 = load double, ptr %1535, align 8, !tbaa !13
  %1537 = fneg double %1536
  %1538 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1537, ptr %1538, align 8, !tbaa !13
  %1539 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1540 = load double, ptr %1539, align 8, !tbaa !11
  %1541 = load double, ptr %32, align 8, !tbaa !9
  %1542 = fdiv double %1540, %1541
  %1543 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1542, ptr %1543, align 8, !tbaa !11
  %1544 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1545 = load double, ptr %1544, align 8, !tbaa !13
  %1546 = load double, ptr %32, align 8, !tbaa !9
  %1547 = fdiv double %1545, %1546
  %1548 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1547, ptr %1548, align 8, !tbaa !13
  %1549 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1550 = load double, ptr %1549, align 8, !tbaa !11
  %1551 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1550, ptr %1551, align 8, !tbaa !11
  %1552 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1553 = load double, ptr %1552, align 8, !tbaa !13
  %1554 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %1553, ptr %1554, align 8, !tbaa !13
  %1555 = load double, ptr %32, align 8, !tbaa !9
  %1556 = load double, ptr %42, align 8, !tbaa !9
  %1557 = fmul double %1556, 4.000000e+00
  %1558 = load double, ptr %42, align 8, !tbaa !9
  %1559 = fmul double %1557, %1558
  %1560 = load double, ptr %34, align 8, !tbaa !9
  %1561 = call double @llvm.fmuladd.f64(double %1559, double %1560, double %1555)
  %1562 = call double @sqrt(double noundef %1561) #6
  %1563 = load double, ptr %40, align 8, !tbaa !9
  %1564 = fmul double %1562, %1563
  %1565 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1564, ptr %1565, align 8, !tbaa !9
  br label %1771

1566:                                             ; preds = %1421
  %1567 = load double, ptr %30, align 8, !tbaa !9
  %1568 = load double, ptr %30, align 8, !tbaa !9
  %1569 = load double, ptr %29, align 8, !tbaa !9
  %1570 = load double, ptr %29, align 8, !tbaa !9
  %1571 = fmul double %1569, %1570
  %1572 = call double @llvm.fmuladd.f64(double %1567, double %1568, double %1571)
  %1573 = fsub double %1572, 1.000000e+00
  %1574 = fmul double %1573, 5.000000e-01
  store double %1574, ptr %31, align 8, !tbaa !9
  %1575 = load double, ptr %29, align 8, !tbaa !9
  %1576 = load double, ptr %29, align 8, !tbaa !9
  %1577 = fmul double %1575, %1576
  store double %1577, ptr %19, align 8, !tbaa !9
  %1578 = load double, ptr %19, align 8, !tbaa !9
  %1579 = load ptr, ptr %18, align 8, !tbaa !5
  %1580 = getelementptr inbounds %struct.doublecomplex, ptr %1579, i32 0, i32 0
  store double %1578, ptr %1580, align 8, !tbaa !11
  %1581 = load ptr, ptr %18, align 8, !tbaa !5
  %1582 = getelementptr inbounds %struct.doublecomplex, ptr %1581, i32 0, i32 1
  store double 0.000000e+00, ptr %1582, align 8, !tbaa !13
  %1583 = load double, ptr %31, align 8, !tbaa !9
  %1584 = fcmp oge double %1583, 0.000000e+00
  br i1 %1584, label %1585, label %1646

1585:                                             ; preds = %1566
  %1586 = load ptr, ptr %18, align 8, !tbaa !5
  %1587 = getelementptr inbounds %struct.doublecomplex, ptr %1586, i32 0, i32 0
  %1588 = load double, ptr %1587, align 8, !tbaa !11
  %1589 = fneg double %1588
  %1590 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1589, ptr %1590, align 8, !tbaa !11
  %1591 = load ptr, ptr %18, align 8, !tbaa !5
  %1592 = getelementptr inbounds %struct.doublecomplex, ptr %1591, i32 0, i32 1
  %1593 = load double, ptr %1592, align 8, !tbaa !13
  %1594 = fneg double %1593
  %1595 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1594, ptr %1595, align 8, !tbaa !13
  %1596 = load double, ptr %31, align 8, !tbaa !9
  %1597 = load double, ptr %31, align 8, !tbaa !9
  %1598 = fmul double %1596, %1597
  store double %1598, ptr %19, align 8, !tbaa !9
  %1599 = load double, ptr %19, align 8, !tbaa !9
  %1600 = load ptr, ptr %18, align 8, !tbaa !5
  %1601 = getelementptr inbounds %struct.doublecomplex, ptr %1600, i32 0, i32 0
  %1602 = load double, ptr %1601, align 8, !tbaa !11
  %1603 = fadd double %1599, %1602
  %1604 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %1603, ptr %1604, align 8, !tbaa !11
  %1605 = load ptr, ptr %18, align 8, !tbaa !5
  %1606 = getelementptr inbounds %struct.doublecomplex, ptr %1605, i32 0, i32 1
  %1607 = load double, ptr %1606, align 8, !tbaa !13
  %1608 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %1607, ptr %1608, align 8, !tbaa !13
  %1609 = call { double, double } @Cd(ptr noundef %25)
  %1610 = extractvalue { double, double } %1609, 0
  %1611 = extractvalue { double, double } %1609, 1
  %1612 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %1613 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  store double %1610, ptr %1612, align 8
  store double %1611, ptr %1613, align 8
  %1614 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 0
  %1615 = load double, ptr %1614, align 8
  %1616 = getelementptr inbounds { double, double }, ptr %55, i32 0, i32 1
  %1617 = load double, ptr %1616, align 8
  %1618 = call { double, double } @csqrt(double noundef %1615, double noundef %1617) #6
  %1619 = extractvalue { double, double } %1618, 0
  %1620 = extractvalue { double, double } %1618, 1
  %1621 = call ptr @_pCd(ptr noundef %24)
  %1622 = getelementptr inbounds { double, double }, ptr %1621, i32 0, i32 0
  %1623 = getelementptr inbounds { double, double }, ptr %1621, i32 0, i32 1
  store double %1619, ptr %1622, align 8
  store double %1620, ptr %1623, align 8
  %1624 = load double, ptr %31, align 8, !tbaa !9
  %1625 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1626 = load double, ptr %1625, align 8, !tbaa !11
  %1627 = fadd double %1624, %1626
  %1628 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1627, ptr %1628, align 8, !tbaa !11
  %1629 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1630 = load double, ptr %1629, align 8, !tbaa !13
  %1631 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1630, ptr %1631, align 8, !tbaa !13
  %1632 = call { double, double } @Cd(ptr noundef %22)
  %1633 = extractvalue { double, double } %1632, 0
  %1634 = extractvalue { double, double } %1632, 1
  %1635 = call { double, double } @Cd(ptr noundef %23)
  %1636 = extractvalue { double, double } %1635, 0
  %1637 = extractvalue { double, double } %1635, 1
  %1638 = call { double, double } @__divdc3(double noundef %1633, double noundef %1634, double noundef %1636, double noundef %1637) #6
  %1639 = extractvalue { double, double } %1638, 0
  %1640 = extractvalue { double, double } %1638, 1
  %1641 = call ptr @_pCd(ptr noundef %21)
  %1642 = getelementptr inbounds { double, double }, ptr %1641, i32 0, i32 0
  %1643 = getelementptr inbounds { double, double }, ptr %1641, i32 0, i32 1
  store double %1639, ptr %1642, align 8
  store double %1640, ptr %1643, align 8
  %1644 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1645 = load double, ptr %1644, align 8, !tbaa !11
  store double %1645, ptr %32, align 8, !tbaa !9
  br label %1686

1646:                                             ; preds = %1566
  %1647 = load double, ptr %31, align 8, !tbaa !9
  %1648 = load double, ptr %31, align 8, !tbaa !9
  %1649 = fmul double %1647, %1648
  store double %1649, ptr %19, align 8, !tbaa !9
  %1650 = load double, ptr %19, align 8, !tbaa !9
  %1651 = load ptr, ptr %18, align 8, !tbaa !5
  %1652 = getelementptr inbounds %struct.doublecomplex, ptr %1651, i32 0, i32 0
  %1653 = load double, ptr %1652, align 8, !tbaa !11
  %1654 = fadd double %1650, %1653
  %1655 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1654, ptr %1655, align 8, !tbaa !11
  %1656 = load ptr, ptr %18, align 8, !tbaa !5
  %1657 = getelementptr inbounds %struct.doublecomplex, ptr %1656, i32 0, i32 1
  %1658 = load double, ptr %1657, align 8, !tbaa !13
  %1659 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1658, ptr %1659, align 8, !tbaa !13
  %1660 = call { double, double } @Cd(ptr noundef %23)
  %1661 = extractvalue { double, double } %1660, 0
  %1662 = extractvalue { double, double } %1660, 1
  %1663 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %1664 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  store double %1661, ptr %1663, align 8
  store double %1662, ptr %1664, align 8
  %1665 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 0
  %1666 = load double, ptr %1665, align 8
  %1667 = getelementptr inbounds { double, double }, ptr %56, i32 0, i32 1
  %1668 = load double, ptr %1667, align 8
  %1669 = call { double, double } @csqrt(double noundef %1666, double noundef %1668) #6
  %1670 = extractvalue { double, double } %1669, 0
  %1671 = extractvalue { double, double } %1669, 1
  %1672 = call ptr @_pCd(ptr noundef %22)
  %1673 = getelementptr inbounds { double, double }, ptr %1672, i32 0, i32 0
  %1674 = getelementptr inbounds { double, double }, ptr %1672, i32 0, i32 1
  store double %1670, ptr %1673, align 8
  store double %1671, ptr %1674, align 8
  %1675 = load double, ptr %31, align 8, !tbaa !9
  %1676 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1677 = load double, ptr %1676, align 8, !tbaa !11
  %1678 = fsub double %1675, %1677
  %1679 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1678, ptr %1679, align 8, !tbaa !11
  %1680 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1681 = load double, ptr %1680, align 8, !tbaa !13
  %1682 = fneg double %1681
  %1683 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1682, ptr %1683, align 8, !tbaa !13
  %1684 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1685 = load double, ptr %1684, align 8, !tbaa !11
  store double %1685, ptr %32, align 8, !tbaa !9
  br label %1686

1686:                                             ; preds = %1646, %1585
  %1687 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 0
  %1688 = load double, ptr %1687, align 8, !tbaa !11
  %1689 = load double, ptr %40, align 8, !tbaa !9
  %1690 = fdiv double %1688, %1689
  %1691 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1690, ptr %1691, align 8, !tbaa !11
  %1692 = getelementptr inbounds %struct.doublecomplex, ptr %33, i32 0, i32 1
  %1693 = load double, ptr %1692, align 8, !tbaa !13
  %1694 = load double, ptr %40, align 8, !tbaa !9
  %1695 = fdiv double %1693, %1694
  %1696 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1695, ptr %1696, align 8, !tbaa !13
  %1697 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1698 = load double, ptr %1697, align 8, !tbaa !11
  %1699 = fneg double %1698
  %1700 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1699, ptr %1700, align 8, !tbaa !11
  %1701 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1702 = load double, ptr %1701, align 8, !tbaa !13
  %1703 = fneg double %1702
  %1704 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1703, ptr %1704, align 8, !tbaa !13
  %1705 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1706 = load double, ptr %1705, align 8, !tbaa !11
  %1707 = load double, ptr %32, align 8, !tbaa !9
  %1708 = fdiv double %1706, %1707
  %1709 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1708, ptr %1709, align 8, !tbaa !11
  %1710 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1711 = load double, ptr %1710, align 8, !tbaa !13
  %1712 = load double, ptr %32, align 8, !tbaa !9
  %1713 = fdiv double %1711, %1712
  %1714 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1713, ptr %1714, align 8, !tbaa !13
  %1715 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1716 = load double, ptr %1715, align 8, !tbaa !11
  %1717 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  store double %1716, ptr %1717, align 8, !tbaa !11
  %1718 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1719 = load double, ptr %1718, align 8, !tbaa !13
  %1720 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  store double %1719, ptr %1720, align 8, !tbaa !13
  %1721 = load ptr, ptr %15, align 8, !tbaa !5
  %1722 = getelementptr inbounds %struct.doublecomplex, ptr %1721, i32 0, i32 0
  %1723 = load double, ptr %1722, align 8, !tbaa !11
  %1724 = load double, ptr %40, align 8, !tbaa !9
  %1725 = fdiv double %1723, %1724
  %1726 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1725, ptr %1726, align 8, !tbaa !11
  %1727 = load ptr, ptr %15, align 8, !tbaa !5
  %1728 = getelementptr inbounds %struct.doublecomplex, ptr %1727, i32 0, i32 1
  %1729 = load double, ptr %1728, align 8, !tbaa !13
  %1730 = load double, ptr %40, align 8, !tbaa !9
  %1731 = fdiv double %1729, %1730
  %1732 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1731, ptr %1732, align 8, !tbaa !13
  %1733 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1734 = load double, ptr %1733, align 8, !tbaa !11
  %1735 = fneg double %1734
  %1736 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1735, ptr %1736, align 8, !tbaa !11
  %1737 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1738 = load double, ptr %1737, align 8, !tbaa !13
  %1739 = fneg double %1738
  %1740 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1739, ptr %1740, align 8, !tbaa !13
  %1741 = load double, ptr %32, align 8, !tbaa !9
  %1742 = fadd double %1741, 1.000000e+00
  store double %1742, ptr %19, align 8, !tbaa !9
  %1743 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  %1744 = load double, ptr %1743, align 8, !tbaa !11
  %1745 = load double, ptr %19, align 8, !tbaa !9
  %1746 = fdiv double %1744, %1745
  %1747 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1746, ptr %1747, align 8, !tbaa !11
  %1748 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  %1749 = load double, ptr %1748, align 8, !tbaa !13
  %1750 = load double, ptr %19, align 8, !tbaa !9
  %1751 = fdiv double %1749, %1750
  %1752 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1751, ptr %1752, align 8, !tbaa !13
  %1753 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1754 = load double, ptr %1753, align 8, !tbaa !11
  %1755 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  store double %1754, ptr %1755, align 8, !tbaa !11
  %1756 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1757 = load double, ptr %1756, align 8, !tbaa !13
  %1758 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  store double %1757, ptr %1758, align 8, !tbaa !13
  %1759 = load double, ptr %32, align 8, !tbaa !9
  %1760 = fadd double %1759, 1.000000e+00
  %1761 = load double, ptr %42, align 8, !tbaa !9
  %1762 = fmul double %1761, 4.000000e+00
  %1763 = load double, ptr %42, align 8, !tbaa !9
  %1764 = fmul double %1762, %1763
  %1765 = load double, ptr %34, align 8, !tbaa !9
  %1766 = call double @llvm.fmuladd.f64(double %1764, double %1765, double %1760)
  %1767 = call double @sqrt(double noundef %1766) #6
  %1768 = load double, ptr %40, align 8, !tbaa !9
  %1769 = fmul double %1767, %1768
  %1770 = load ptr, ptr %16, align 8, !tbaa !5
  store double %1769, ptr %1770, align 8, !tbaa !9
  br label %1771

1771:                                             ; preds = %1686, %1433
  %1772 = call { double, double } @Cd(ptr noundef %27)
  %1773 = extractvalue { double, double } %1772, 0
  %1774 = extractvalue { double, double } %1772, 1
  %1775 = fneg double %1774
  %1776 = call ptr @_pCd(ptr noundef %24)
  %1777 = getelementptr inbounds { double, double }, ptr %1776, i32 0, i32 0
  %1778 = getelementptr inbounds { double, double }, ptr %1776, i32 0, i32 1
  store double %1773, ptr %1777, align 8
  store double %1775, ptr %1778, align 8
  %1779 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %1780 = load double, ptr %1779, align 8, !tbaa !11
  %1781 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1782 = load double, ptr %1781, align 8, !tbaa !11
  %1783 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %1784 = load double, ptr %1783, align 8, !tbaa !13
  %1785 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1786 = load double, ptr %1785, align 8, !tbaa !13
  %1787 = fmul double %1784, %1786
  %1788 = fneg double %1787
  %1789 = call double @llvm.fmuladd.f64(double %1780, double %1782, double %1788)
  %1790 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  store double %1789, ptr %1790, align 8, !tbaa !11
  %1791 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %1792 = load double, ptr %1791, align 8, !tbaa !11
  %1793 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 1
  %1794 = load double, ptr %1793, align 8, !tbaa !13
  %1795 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %1796 = load double, ptr %1795, align 8, !tbaa !13
  %1797 = getelementptr inbounds %struct.doublecomplex, ptr %24, i32 0, i32 0
  %1798 = load double, ptr %1797, align 8, !tbaa !11
  %1799 = fmul double %1796, %1798
  %1800 = call double @llvm.fmuladd.f64(double %1792, double %1794, double %1799)
  %1801 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  store double %1800, ptr %1801, align 8, !tbaa !13
  %1802 = call { double, double } @Cd(ptr noundef %39)
  %1803 = extractvalue { double, double } %1802, 0
  %1804 = extractvalue { double, double } %1802, 1
  %1805 = fneg double %1804
  %1806 = call ptr @_pCd(ptr noundef %26)
  %1807 = getelementptr inbounds { double, double }, ptr %1806, i32 0, i32 0
  %1808 = getelementptr inbounds { double, double }, ptr %1806, i32 0, i32 1
  store double %1803, ptr %1807, align 8
  store double %1805, ptr %1808, align 8
  %1809 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1810 = load double, ptr %1809, align 8, !tbaa !11
  %1811 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %1812 = load double, ptr %1811, align 8, !tbaa !11
  %1813 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1814 = load double, ptr %1813, align 8, !tbaa !13
  %1815 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %1816 = load double, ptr %1815, align 8, !tbaa !13
  %1817 = fmul double %1814, %1816
  %1818 = fneg double %1817
  %1819 = call double @llvm.fmuladd.f64(double %1810, double %1812, double %1818)
  %1820 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  store double %1819, ptr %1820, align 8, !tbaa !11
  %1821 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1822 = load double, ptr %1821, align 8, !tbaa !11
  %1823 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 1
  %1824 = load double, ptr %1823, align 8, !tbaa !13
  %1825 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1826 = load double, ptr %1825, align 8, !tbaa !13
  %1827 = getelementptr inbounds %struct.doublecomplex, ptr %26, i32 0, i32 0
  %1828 = load double, ptr %1827, align 8, !tbaa !11
  %1829 = fmul double %1826, %1828
  %1830 = call double @llvm.fmuladd.f64(double %1822, double %1824, double %1829)
  %1831 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  store double %1830, ptr %1831, align 8, !tbaa !13
  %1832 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 0
  %1833 = load double, ptr %1832, align 8, !tbaa !11
  %1834 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 0
  %1835 = load double, ptr %1834, align 8, !tbaa !11
  %1836 = fadd double %1833, %1835
  %1837 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 0
  store double %1836, ptr %1837, align 8, !tbaa !11
  %1838 = getelementptr inbounds %struct.doublecomplex, ptr %23, i32 0, i32 1
  %1839 = load double, ptr %1838, align 8, !tbaa !13
  %1840 = getelementptr inbounds %struct.doublecomplex, ptr %25, i32 0, i32 1
  %1841 = load double, ptr %1840, align 8, !tbaa !13
  %1842 = fadd double %1839, %1841
  %1843 = getelementptr inbounds %struct.doublecomplex, ptr %22, i32 0, i32 1
  store double %1842, ptr %1843, align 8, !tbaa !13
  %1844 = call { double, double } @Cd(ptr noundef %22)
  %1845 = extractvalue { double, double } %1844, 0
  %1846 = extractvalue { double, double } %1844, 1
  %1847 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %1848 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  store double %1845, ptr %1847, align 8
  store double %1846, ptr %1848, align 8
  %1849 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 0
  %1850 = load double, ptr %1849, align 8
  %1851 = getelementptr inbounds { double, double }, ptr %57, i32 0, i32 1
  %1852 = load double, ptr %1851, align 8
  %1853 = call { double, double } @csqrt(double noundef %1850, double noundef %1852) #6
  %1854 = extractvalue { double, double } %1853, 0
  %1855 = extractvalue { double, double } %1853, 1
  %1856 = call ptr @_pCd(ptr noundef %21)
  %1857 = getelementptr inbounds { double, double }, ptr %1856, i32 0, i32 0
  %1858 = getelementptr inbounds { double, double }, ptr %1856, i32 0, i32 1
  store double %1854, ptr %1857, align 8
  store double %1855, ptr %1858, align 8
  %1859 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1860 = load double, ptr %1859, align 8, !tbaa !11
  store double %1860, ptr %43, align 8, !tbaa !9
  %1861 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 0
  %1862 = load double, ptr %1861, align 8, !tbaa !11
  %1863 = load double, ptr %43, align 8, !tbaa !9
  %1864 = fdiv double %1862, %1863
  %1865 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1864, ptr %1865, align 8, !tbaa !11
  %1866 = getelementptr inbounds %struct.doublecomplex, ptr %27, i32 0, i32 1
  %1867 = load double, ptr %1866, align 8, !tbaa !13
  %1868 = load double, ptr %43, align 8, !tbaa !9
  %1869 = fdiv double %1867, %1868
  %1870 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1869, ptr %1870, align 8, !tbaa !13
  %1871 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1872 = load double, ptr %1871, align 8, !tbaa !11
  %1873 = load ptr, ptr %17, align 8, !tbaa !5
  %1874 = getelementptr inbounds %struct.doublecomplex, ptr %1873, i32 0, i32 0
  store double %1872, ptr %1874, align 8, !tbaa !11
  %1875 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1876 = load double, ptr %1875, align 8, !tbaa !13
  %1877 = load ptr, ptr %17, align 8, !tbaa !5
  %1878 = getelementptr inbounds %struct.doublecomplex, ptr %1877, i32 0, i32 1
  store double %1876, ptr %1878, align 8, !tbaa !13
  %1879 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 0
  %1880 = load double, ptr %1879, align 8, !tbaa !11
  %1881 = load double, ptr %43, align 8, !tbaa !9
  %1882 = fdiv double %1880, %1881
  %1883 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  store double %1882, ptr %1883, align 8, !tbaa !11
  %1884 = getelementptr inbounds %struct.doublecomplex, ptr %39, i32 0, i32 1
  %1885 = load double, ptr %1884, align 8, !tbaa !13
  %1886 = load double, ptr %43, align 8, !tbaa !9
  %1887 = fdiv double %1885, %1886
  %1888 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  store double %1887, ptr %1888, align 8, !tbaa !13
  %1889 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 0
  %1890 = load double, ptr %1889, align 8, !tbaa !11
  %1891 = load ptr, ptr %18, align 8, !tbaa !5
  %1892 = getelementptr inbounds %struct.doublecomplex, ptr %1891, i32 0, i32 0
  store double %1890, ptr %1892, align 8, !tbaa !11
  %1893 = getelementptr inbounds %struct.doublecomplex, ptr %21, i32 0, i32 1
  %1894 = load double, ptr %1893, align 8, !tbaa !13
  %1895 = load ptr, ptr %18, align 8, !tbaa !5
  %1896 = getelementptr inbounds %struct.doublecomplex, ptr %1895, i32 0, i32 1
  store double %1894, ptr %1896, align 8, !tbaa !13
  store i32 1, ptr %47, align 4
  br label %1899

1897:                                             ; preds = %874
  br label %1898

1898:                                             ; preds = %1897
  store i32 1, ptr %47, align 4
  br label %1899

1899:                                             ; preds = %1898, %1771, %1394, %1191, %1146, %963, %670, %552, %393, %341, %318
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %39) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #6
  call void @llvm.lifetime.end.p0(i64 16, ptr %21) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #6
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #6
  ret void
}

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

declare double @dlamch_(ptr noundef) #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @zdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) #3

; Function Attrs: nounwind
declare double @cabs(double noundef, double noundef) #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) #3

; Function Attrs: inlinehint nounwind uwtable
declare hidden ptr @_pCd(ptr noundef) #3

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

; Function Attrs: nounwind
declare { double, double } @csqrt(double noundef, double noundef) #4

; Function Attrs: nounwind
declare double @sqrt(double noundef) #4

declare { double, double } @__divdc3(double, double, double, double)

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

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

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

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


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

%struct.doublecomplex = type { double, double }

@.str = external hidden unnamed_addr constant [8 x i8], align 1
@c__1 = external hidden global i32, align 4

; Function Attrs: nounwind uwtable
define dso_local void @zlaic1_(ptr nocapture noundef readonly %0, ptr noundef %1, ptr noundef %2, ptr nocapture noundef readonly %3, ptr noundef %4, ptr noundef %5, ptr nocapture noundef writeonly %6, ptr noundef %7, ptr noundef %8) local_unnamed_addr #0 {
  %10 = alloca %struct.doublecomplex, align 16
  %11 = alloca %struct.doublecomplex, align 16
  %12 = alloca %struct.doublecomplex, align 16
  %13 = alloca %struct.doublecomplex, align 16
  %14 = alloca %struct.doublecomplex, align 16
  %15 = alloca %struct.doublecomplex, align 16
  %16 = alloca %struct.doublecomplex, align 16
  %17 = alloca %struct.doublecomplex, align 16
  %18 = alloca %struct.doublecomplex, align 16
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #10
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #10
  %19 = tail call double @dlamch_(ptr noundef nonnull @.str) #10
  call void @zdotc_(ptr noundef nonnull %10, ptr noundef %1, ptr noundef %2, ptr noundef nonnull @c__1, ptr noundef %4, ptr noundef nonnull @c__1)
  %20 = getelementptr inbounds i8, ptr %10, i64 8
  %21 = load <2 x double>, ptr %10, align 16, !tbaa !5
  store <2 x double> %21, ptr %17, align 16, !tbaa !5
  %22 = call { double, double } @Cd(ptr noundef nonnull %17)
  %23 = extractvalue { double, double } %22, 0
  %24 = extractvalue { double, double } %22, 1
  %25 = call double @cabs(double noundef %23, double noundef %24) #10
  %26 = call { double, double } @Cd(ptr noundef %5)
  %27 = extractvalue { double, double } %26, 0
  %28 = extractvalue { double, double } %26, 1
  %29 = call double @cabs(double noundef %27, double noundef %28) #10
  %30 = load double, ptr %3, align 8, !tbaa !5
  %31 = fcmp ult double %30, 0.000000e+00
  %32 = fneg double %30
  %33 = select i1 %31, double %32, double %30
  %34 = load i32, ptr %0, align 4, !tbaa !9
  switch i32 %34, label %614 [
    i32 1, label %35
    i32 2, label %276
  ]

35:                                               ; preds = %9
  %36 = fcmp oeq double %30, 0.000000e+00
  br i1 %36, label %37, label %104

37:                                               ; preds = %35
  %38 = fcmp oge double %29, %25
  %39 = select i1 %38, double %29, double %25
  %40 = fcmp oeq double %39, 0.000000e+00
  br i1 %40, label %41, label %42

41:                                               ; preds = %37
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %7, i8 0, i64 16, i1 false)
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %8, align 8, !tbaa !5
  br label %103

42:                                               ; preds = %37
  %43 = getelementptr inbounds i8, ptr %7, i64 8
  %44 = load <2 x double>, ptr %17, align 16, !tbaa !5
  %45 = insertelement <2 x double> poison, double %39, i64 0
  %46 = shufflevector <2 x double> %45, <2 x double> poison, <2 x i32> zeroinitializer
  %47 = fdiv <2 x double> %44, %46
  store <2 x double> %47, ptr %7, align 8, !tbaa !5
  %48 = load <2 x double>, ptr %5, align 8, !tbaa !5
  %49 = fdiv <2 x double> %48, %46
  store <2 x double> %49, ptr %10, align 16, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %8, i64 8
  store <2 x double> %49, ptr %8, align 8, !tbaa !5
  %51 = call { double, double } @Cd(ptr noundef nonnull %7)
  %52 = extractvalue { double, double } %51, 0
  %53 = extractvalue { double, double } %51, 1
  %54 = fneg double %53
  %55 = call ptr @_pCd(ptr noundef nonnull %13)
  %56 = getelementptr inbounds i8, ptr %55, i64 8
  store double %52, ptr %55, align 8
  store double %54, ptr %56, align 8
  %57 = load double, ptr %7, align 8, !tbaa !11
  %58 = load double, ptr %43, align 8, !tbaa !13
  %59 = fneg double %58
  %60 = load <2 x double>, ptr %13, align 16, !tbaa !5
  %61 = insertelement <2 x double> poison, double %58, i64 0
  %62 = insertelement <2 x double> %61, double %59, i64 1
  %63 = fmul <2 x double> %60, %62
  %64 = shufflevector <2 x double> %63, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %65 = insertelement <2 x double> poison, double %57, i64 0
  %66 = shufflevector <2 x double> %65, <2 x double> poison, <2 x i32> zeroinitializer
  %67 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %66, <2 x double> %60, <2 x double> %64)
  store <2 x double> %67, ptr %12, align 16, !tbaa !5
  %68 = call { double, double } @Cd(ptr noundef nonnull %8)
  %69 = extractvalue { double, double } %68, 0
  %70 = extractvalue { double, double } %68, 1
  %71 = fneg double %70
  %72 = call ptr @_pCd(ptr noundef nonnull %15)
  %73 = getelementptr inbounds i8, ptr %72, i64 8
  store double %69, ptr %72, align 8
  store double %71, ptr %73, align 8
  %74 = load double, ptr %8, align 8, !tbaa !11
  %75 = load double, ptr %50, align 8, !tbaa !13
  %76 = fneg double %75
  %77 = load <2 x double>, ptr %15, align 16, !tbaa !5
  %78 = insertelement <2 x double> poison, double %75, i64 0
  %79 = insertelement <2 x double> %78, double %76, i64 1
  %80 = fmul <2 x double> %77, %79
  %81 = shufflevector <2 x double> %80, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %82 = insertelement <2 x double> poison, double %74, i64 0
  %83 = shufflevector <2 x double> %82, <2 x double> poison, <2 x i32> zeroinitializer
  %84 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %83, <2 x double> %77, <2 x double> %81)
  %85 = load <2 x double>, ptr %12, align 16, !tbaa !5
  %86 = fadd <2 x double> %84, %85
  store <2 x double> %86, ptr %11, align 16, !tbaa !5
  %87 = call { double, double } @Cd(ptr noundef nonnull %11)
  %88 = extractvalue { double, double } %87, 0
  %89 = extractvalue { double, double } %87, 1
  %90 = call { double, double } @csqrt(double noundef %88, double noundef %89) #10
  %91 = extractvalue { double, double } %90, 0
  %92 = extractvalue { double, double } %90, 1
  %93 = call ptr @_pCd(ptr noundef nonnull %10)
  %94 = getelementptr inbounds i8, ptr %93, i64 8
  store double %91, ptr %93, align 8
  store double %92, ptr %94, align 8
  %95 = load double, ptr %10, align 16, !tbaa !11
  %96 = load <2 x double>, ptr %7, align 8, !tbaa !5
  %97 = insertelement <2 x double> poison, double %95, i64 0
  %98 = shufflevector <2 x double> %97, <2 x double> poison, <2 x i32> zeroinitializer
  %99 = fdiv <2 x double> %96, %98
  store <2 x double> %99, ptr %7, align 8, !tbaa !5
  %100 = load <2 x double>, ptr %8, align 8, !tbaa !5
  %101 = fdiv <2 x double> %100, %98
  store <2 x double> %101, ptr %8, align 8, !tbaa !5
  %102 = fmul double %39, %95
  br label %103

103:                                              ; preds = %42, %41
  %storemerge466 = phi double [ %102, %42 ], [ 0.000000e+00, %41 ]
  store double %storemerge466, ptr %6, align 8, !tbaa !5
  br label %614

104:                                              ; preds = %35
  %105 = fmul double %19, %33
  %106 = fcmp ugt double %29, %105
  br i1 %106, label %115, label %107

107:                                              ; preds = %104
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %7, align 8, !tbaa !5
  %108 = fcmp oge double %33, %25
  %109 = select i1 %108, double %33, double %25
  %110 = fdiv double %33, %109
  %111 = fdiv double %25, %109
  %112 = fmul double %111, %111
  %113 = call double @llvm.fmuladd.f64(double %110, double %110, double %112)
  %sqrt = call double @llvm.sqrt.f64(double %113)
  %114 = fmul double %109, %sqrt
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %8, i8 0, i64 16, i1 false)
  store double %114, ptr %6, align 8, !tbaa !5
  br label %614

115:                                              ; preds = %104
  %116 = fcmp ugt double %25, %105
  br i1 %116, label %121, label %117

117:                                              ; preds = %115
  %118 = fcmp ugt double %29, %33
  %.sink474 = select i1 %118, double 0.000000e+00, double 1.000000e+00
  %.sink = select i1 %118, double 1.000000e+00, double 0.000000e+00
  %storemerge465 = select i1 %118, double %29, double %33
  store double %.sink474, ptr %7, align 8
  %119 = getelementptr inbounds i8, ptr %7, i64 8
  store double 0.000000e+00, ptr %119, align 8
  store double %.sink, ptr %8, align 8
  %120 = getelementptr inbounds i8, ptr %8, i64 8
  store double 0.000000e+00, ptr %120, align 8
  store double %storemerge465, ptr %6, align 8, !tbaa !5
  br label %614

121:                                              ; preds = %115
  %122 = fmul double %19, %25
  %123 = fcmp ugt double %33, %122
  %124 = fmul double %19, %29
  %125 = fcmp ugt double %33, %124
  %or.cond = select i1 %123, i1 %125, i1 false
  br i1 %or.cond, label %156, label %126

126:                                              ; preds = %121
  %127 = fcmp ugt double %29, %25
  br i1 %127, label %142, label %128

128:                                              ; preds = %126
  %129 = fdiv double %29, %25
  %130 = call double @llvm.fmuladd.f64(double %129, double %129, double 1.000000e+00)
  %sqrt470 = call double @llvm.sqrt.f64(double %130)
  %131 = fmul double %25, %sqrt470
  store double %131, ptr %6, align 8, !tbaa !5
  %132 = load <2 x double>, ptr %17, align 16, !tbaa !5
  %133 = insertelement <2 x double> poison, double %25, i64 0
  %134 = shufflevector <2 x double> %133, <2 x double> poison, <2 x i32> zeroinitializer
  %135 = fdiv <2 x double> %132, %134
  %136 = insertelement <2 x double> poison, double %sqrt470, i64 0
  %137 = shufflevector <2 x double> %136, <2 x double> poison, <2 x i32> zeroinitializer
  %138 = fdiv <2 x double> %135, %137
  store <2 x double> %138, ptr %7, align 8, !tbaa !5
  %139 = load <2 x double>, ptr %5, align 8, !tbaa !5
  %140 = fdiv <2 x double> %139, %134
  %141 = fdiv <2 x double> %140, %137
  store <2 x double> %141, ptr %8, align 8, !tbaa !5
  br label %614

142:                                              ; preds = %126
  %143 = fdiv double %25, %29
  %144 = call double @llvm.fmuladd.f64(double %143, double %143, double 1.000000e+00)
  %sqrt471 = call double @llvm.sqrt.f64(double %144)
  %145 = fmul double %29, %sqrt471
  store double %145, ptr %6, align 8, !tbaa !5
  %146 = load <2 x double>, ptr %17, align 16, !tbaa !5
  %147 = insertelement <2 x double> poison, double %29, i64 0
  %148 = shufflevector <2 x double> %147, <2 x double> poison, <2 x i32> zeroinitializer
  %149 = fdiv <2 x double> %146, %148
  %150 = insertelement <2 x double> poison, double %sqrt471, i64 0
  %151 = shufflevector <2 x double> %150, <2 x double> poison, <2 x i32> zeroinitializer
  %152 = fdiv <2 x double> %149, %151
  store <2 x double> %152, ptr %7, align 8, !tbaa !5
  %153 = load <2 x double>, ptr %5, align 8, !tbaa !5
  %154 = fdiv <2 x double> %153, %148
  %155 = fdiv <2 x double> %154, %151
  store <2 x double> %155, ptr %8, align 8, !tbaa !5
  br label %614

156:                                              ; preds = %121
  %157 = fdiv double %25, %33
  %158 = fdiv double %29, %33
  %159 = fneg double %157
  %160 = call double @llvm.fmuladd.f64(double %159, double %157, double 1.000000e+00)
  %161 = fneg double %158
  %162 = call double @llvm.fmuladd.f64(double %161, double %158, double %160)
  %163 = fmul double %162, 5.000000e-01
  %164 = fmul double %157, %157
  store double %164, ptr %8, align 8, !tbaa !11
  %165 = getelementptr inbounds i8, ptr %8, i64 8
  store double 0.000000e+00, ptr %165, align 8, !tbaa !13
  %166 = fcmp ogt double %163, 0.000000e+00
  %167 = fmul double %163, %163
  %168 = fadd double %164, %167
  br i1 %166, label %169, label %196

169:                                              ; preds = %156
  store double %168, ptr %13, align 16, !tbaa !11
  %170 = getelementptr inbounds i8, ptr %13, i64 8
  store double 0.000000e+00, ptr %170, align 8, !tbaa !13
  %171 = call { double, double } @Cd(ptr noundef nonnull %13)
  %172 = extractvalue { double, double } %171, 0
  %173 = extractvalue { double, double } %171, 1
  %174 = call { double, double } @csqrt(double noundef %172, double noundef %173) #10
  %175 = extractvalue { double, double } %174, 0
  %176 = extractvalue { double, double } %174, 1
  %177 = call ptr @_pCd(ptr noundef nonnull %12)
  %178 = getelementptr inbounds i8, ptr %177, i64 8
  store double %175, ptr %177, align 8
  store double %176, ptr %178, align 8
  %179 = load double, ptr %12, align 16, !tbaa !11
  %180 = fadd double %163, %179
  store double %180, ptr %11, align 16, !tbaa !11
  %181 = getelementptr inbounds i8, ptr %12, i64 8
  %182 = load double, ptr %181, align 8, !tbaa !13
  %183 = getelementptr inbounds i8, ptr %11, i64 8
  store double %182, ptr %183, align 8, !tbaa !13
  %184 = call { double, double } @Cd(ptr noundef nonnull %8)
  %185 = extractvalue { double, double } %184, 0
  %186 = extractvalue { double, double } %184, 1
  %187 = call { double, double } @Cd(ptr noundef nonnull %11)
  %188 = extractvalue { double, double } %187, 0
  %189 = extractvalue { double, double } %187, 1
  %190 = call { double, double } @__divdc3(double noundef %185, double noundef %186, double noundef %188, double noundef %189) #10
  %191 = extractvalue { double, double } %190, 0
  %192 = extractvalue { double, double } %190, 1
  %193 = call ptr @_pCd(ptr noundef nonnull %10)
  %194 = getelementptr inbounds i8, ptr %193, i64 8
  store double %191, ptr %193, align 8
  store double %192, ptr %194, align 8
  %195 = load double, ptr %10, align 16, !tbaa !11
  br label %208

196:                                              ; preds = %156
  store double %168, ptr %12, align 16, !tbaa !11
  %197 = getelementptr inbounds i8, ptr %12, i64 8
  store double 0.000000e+00, ptr %197, align 8, !tbaa !13
  %198 = call { double, double } @Cd(ptr noundef nonnull %12)
  %199 = extractvalue { double, double } %198, 0
  %200 = extractvalue { double, double } %198, 1
  %201 = call { double, double } @csqrt(double noundef %199, double noundef %200) #10
  %202 = extractvalue { double, double } %201, 0
  %203 = extractvalue { double, double } %201, 1
  %204 = call ptr @_pCd(ptr noundef nonnull %11)
  %205 = getelementptr inbounds i8, ptr %204, i64 8
  store double %202, ptr %204, align 8
  store double %203, ptr %205, align 8
  %206 = load double, ptr %11, align 16, !tbaa !11
  %207 = fsub double %206, %163
  br label %208

208:                                              ; preds = %196, %169
  %.0 = phi double [ %195, %169 ], [ %207, %196 ]
  %209 = getelementptr inbounds i8, ptr %16, i64 8
  %210 = load <2 x double>, ptr %17, align 16, !tbaa !5
  %211 = fneg <2 x double> %210
  %212 = insertelement <2 x double> poison, double %33, i64 0
  %213 = shufflevector <2 x double> %212, <2 x double> poison, <2 x i32> zeroinitializer
  %214 = fdiv <2 x double> %211, %213
  %215 = insertelement <2 x double> poison, double %.0, i64 0
  %216 = shufflevector <2 x double> %215, <2 x double> poison, <2 x i32> zeroinitializer
  %217 = fdiv <2 x double> %214, %216
  store <2 x double> %217, ptr %16, align 16, !tbaa !5
  %218 = load <2 x double>, ptr %5, align 8, !tbaa !5
  %219 = fdiv <2 x double> %218, %213
  store <2 x double> %219, ptr %12, align 16, !tbaa !5
  %220 = fneg <2 x double> %219
  store <2 x double> %220, ptr %11, align 16, !tbaa !5
  %221 = fadd double %.0, 1.000000e+00
  %222 = insertelement <2 x double> poison, double %221, i64 0
  %223 = shufflevector <2 x double> %222, <2 x double> poison, <2 x i32> zeroinitializer
  %224 = fdiv <2 x double> %220, %223
  store <2 x double> %224, ptr %10, align 16, !tbaa !5
  %225 = getelementptr inbounds i8, ptr %18, i64 8
  store <2 x double> %224, ptr %18, align 16, !tbaa !5
  %226 = call { double, double } @Cd(ptr noundef nonnull %16)
  %227 = extractvalue { double, double } %226, 0
  %228 = extractvalue { double, double } %226, 1
  %229 = fneg double %228
  %230 = call ptr @_pCd(ptr noundef nonnull %13)
  %231 = getelementptr inbounds i8, ptr %230, i64 8
  store double %227, ptr %230, align 8
  store double %229, ptr %231, align 8
  %232 = load <2 x double>, ptr %16, align 16
  %233 = load double, ptr %209, align 8, !tbaa !13
  %234 = fneg double %233
  %235 = load <2 x double>, ptr %13, align 16, !tbaa !5
  %236 = insertelement <2 x double> poison, double %233, i64 0
  %237 = insertelement <2 x double> %236, double %234, i64 1
  %238 = fmul <2 x double> %235, %237
  %239 = shufflevector <2 x double> %238, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %240 = shufflevector <2 x double> %232, <2 x double> poison, <2 x i32> zeroinitializer
  %241 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %240, <2 x double> %235, <2 x double> %239)
  store <2 x double> %241, ptr %12, align 16, !tbaa !5
  %242 = call { double, double } @Cd(ptr noundef nonnull %18)
  %243 = extractvalue { double, double } %242, 0
  %244 = extractvalue { double, double } %242, 1
  %245 = fneg double %244
  %246 = call ptr @_pCd(ptr noundef nonnull %15)
  %247 = getelementptr inbounds i8, ptr %246, i64 8
  store double %243, ptr %246, align 8
  store double %245, ptr %247, align 8
  %248 = load <2 x double>, ptr %18, align 16
  %249 = load double, ptr %225, align 8, !tbaa !13
  %250 = fneg double %249
  %251 = load <2 x double>, ptr %15, align 16, !tbaa !5
  %252 = insertelement <2 x double> poison, double %249, i64 0
  %253 = insertelement <2 x double> %252, double %250, i64 1
  %254 = fmul <2 x double> %251, %253
  %255 = shufflevector <2 x double> %254, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %256 = shufflevector <2 x double> %248, <2 x double> poison, <2 x i32> zeroinitializer
  %257 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %256, <2 x double> %251, <2 x double> %255)
  %258 = load <2 x double>, ptr %12, align 16, !tbaa !5
  %259 = fadd <2 x double> %257, %258
  store <2 x double> %259, ptr %11, align 16, !tbaa !5
  %260 = call { double, double } @Cd(ptr noundef nonnull %11)
  %261 = extractvalue { double, double } %260, 0
  %262 = extractvalue { double, double } %260, 1
  %263 = call { double, double } @csqrt(double noundef %261, double noundef %262) #10
  %264 = extractvalue { double, double } %263, 0
  %265 = extractvalue { double, double } %263, 1
  %266 = call ptr @_pCd(ptr noundef nonnull %10)
  %267 = getelementptr inbounds i8, ptr %266, i64 8
  store double %264, ptr %266, align 8
  store double %265, ptr %267, align 8
  %268 = load <2 x double>, ptr %10, align 16
  %269 = load <2 x double>, ptr %16, align 16, !tbaa !5
  %270 = shufflevector <2 x double> %268, <2 x double> poison, <2 x i32> zeroinitializer
  %271 = fdiv <2 x double> %269, %270
  store <2 x double> %271, ptr %7, align 8, !tbaa !5
  %272 = load <2 x double>, ptr %18, align 16, !tbaa !5
  %273 = fdiv <2 x double> %272, %270
  store <2 x double> %273, ptr %8, align 8, !tbaa !5
  %274 = call double @sqrt(double noundef %221) #10
  %275 = fmul double %33, %274
  store double %275, ptr %6, align 8, !tbaa !5
  br label %614

276:                                              ; preds = %9
  %277 = fcmp oeq double %30, 0.000000e+00
  br i1 %277, label %278, label %369

278:                                              ; preds = %276
  store double 0.000000e+00, ptr %6, align 8, !tbaa !5
  %279 = fcmp oge double %29, %25
  %280 = select i1 %279, double %29, double %25
  %281 = fcmp oeq double %280, 0.000000e+00
  br i1 %281, label %282, label %283

282:                                              ; preds = %278
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %16, align 16, !tbaa !5
  br label %299

283:                                              ; preds = %278
  %284 = call { double, double } @Cd(ptr noundef %5)
  %285 = extractvalue { double, double } %284, 0
  %286 = extractvalue { double, double } %284, 1
  %287 = fneg double %286
  %288 = call ptr @_pCd(ptr noundef nonnull %11)
  %289 = getelementptr inbounds i8, ptr %288, i64 8
  store double %285, ptr %288, align 8
  store double %287, ptr %289, align 8
  %290 = load <2 x double>, ptr %11, align 16, !tbaa !5
  %291 = fneg <2 x double> %290
  store <2 x double> %291, ptr %10, align 16, !tbaa !5
  store <2 x double> %291, ptr %16, align 16, !tbaa !5
  %292 = call { double, double } @Cd(ptr noundef nonnull %17)
  %293 = extractvalue { double, double } %292, 0
  %294 = extractvalue { double, double } %292, 1
  %295 = fneg double %294
  %296 = call ptr @_pCd(ptr noundef nonnull %10)
  %297 = getelementptr inbounds i8, ptr %296, i64 8
  store double %293, ptr %296, align 8
  store double %295, ptr %297, align 8
  %298 = load <2 x double>, ptr %10, align 16, !tbaa !5
  br label %299

299:                                              ; preds = %283, %282
  %300 = phi <2 x double> [ zeroinitializer, %282 ], [ %298, %283 ]
  store <2 x double> %300, ptr %18, align 16
  %301 = call { double, double } @Cd(ptr noundef nonnull %16)
  %302 = extractvalue { double, double } %301, 0
  %303 = extractvalue { double, double } %301, 1
  %304 = call double @cabs(double noundef %302, double noundef %303) #10
  %305 = call { double, double } @Cd(ptr noundef nonnull %18)
  %306 = extractvalue { double, double } %305, 0
  %307 = extractvalue { double, double } %305, 1
  %308 = call double @cabs(double noundef %306, double noundef %307) #10
  %309 = fcmp oge double %304, %308
  %310 = select i1 %309, double %304, double %308
  %311 = getelementptr inbounds i8, ptr %7, i64 8
  %312 = load <2 x double>, ptr %16, align 16, !tbaa !5
  %313 = insertelement <2 x double> poison, double %310, i64 0
  %314 = shufflevector <2 x double> %313, <2 x double> poison, <2 x i32> zeroinitializer
  %315 = fdiv <2 x double> %312, %314
  store <2 x double> %315, ptr %7, align 8, !tbaa !5
  %316 = load <2 x double>, ptr %18, align 16, !tbaa !5
  %317 = fdiv <2 x double> %316, %314
  store <2 x double> %317, ptr %10, align 16, !tbaa !5
  %318 = getelementptr inbounds i8, ptr %8, i64 8
  store <2 x double> %317, ptr %8, align 8, !tbaa !5
  %319 = call { double, double } @Cd(ptr noundef nonnull %7)
  %320 = extractvalue { double, double } %319, 0
  %321 = extractvalue { double, double } %319, 1
  %322 = fneg double %321
  %323 = call ptr @_pCd(ptr noundef nonnull %13)
  %324 = getelementptr inbounds i8, ptr %323, i64 8
  store double %320, ptr %323, align 8
  store double %322, ptr %324, align 8
  %325 = load double, ptr %7, align 8, !tbaa !11
  %326 = load double, ptr %311, align 8, !tbaa !13
  %327 = fneg double %326
  %328 = load <2 x double>, ptr %13, align 16, !tbaa !5
  %329 = insertelement <2 x double> poison, double %326, i64 0
  %330 = insertelement <2 x double> %329, double %327, i64 1
  %331 = fmul <2 x double> %328, %330
  %332 = shufflevector <2 x double> %331, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %333 = insertelement <2 x double> poison, double %325, i64 0
  %334 = shufflevector <2 x double> %333, <2 x double> poison, <2 x i32> zeroinitializer
  %335 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %334, <2 x double> %328, <2 x double> %332)
  store <2 x double> %335, ptr %12, align 16, !tbaa !5
  %336 = call { double, double } @Cd(ptr noundef nonnull %8)
  %337 = extractvalue { double, double } %336, 0
  %338 = extractvalue { double, double } %336, 1
  %339 = fneg double %338
  %340 = call ptr @_pCd(ptr noundef nonnull %15)
  %341 = getelementptr inbounds i8, ptr %340, i64 8
  store double %337, ptr %340, align 8
  store double %339, ptr %341, align 8
  %342 = load double, ptr %8, align 8, !tbaa !11
  %343 = load double, ptr %318, align 8, !tbaa !13
  %344 = fneg double %343
  %345 = load <2 x double>, ptr %15, align 16, !tbaa !5
  %346 = insertelement <2 x double> poison, double %343, i64 0
  %347 = insertelement <2 x double> %346, double %344, i64 1
  %348 = fmul <2 x double> %345, %347
  %349 = shufflevector <2 x double> %348, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %350 = insertelement <2 x double> poison, double %342, i64 0
  %351 = shufflevector <2 x double> %350, <2 x double> poison, <2 x i32> zeroinitializer
  %352 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %351, <2 x double> %345, <2 x double> %349)
  %353 = load <2 x double>, ptr %12, align 16, !tbaa !5
  %354 = fadd <2 x double> %352, %353
  store <2 x double> %354, ptr %11, align 16, !tbaa !5
  %355 = call { double, double } @Cd(ptr noundef nonnull %11)
  %356 = extractvalue { double, double } %355, 0
  %357 = extractvalue { double, double } %355, 1
  %358 = call { double, double } @csqrt(double noundef %356, double noundef %357) #10
  %359 = extractvalue { double, double } %358, 0
  %360 = extractvalue { double, double } %358, 1
  %361 = call ptr @_pCd(ptr noundef nonnull %10)
  %362 = getelementptr inbounds i8, ptr %361, i64 8
  store double %359, ptr %361, align 8
  store double %360, ptr %362, align 8
  %363 = load <2 x double>, ptr %10, align 16
  %364 = load <2 x double>, ptr %7, align 8, !tbaa !5
  %365 = shufflevector <2 x double> %363, <2 x double> poison, <2 x i32> zeroinitializer
  %366 = fdiv <2 x double> %364, %365
  store <2 x double> %366, ptr %7, align 8, !tbaa !5
  %367 = load <2 x double>, ptr %8, align 8, !tbaa !5
  %368 = fdiv <2 x double> %367, %365
  store <2 x double> %368, ptr %8, align 8, !tbaa !5
  br label %614

369:                                              ; preds = %276
  %370 = fmul double %19, %33
  %371 = fcmp ugt double %29, %370
  br i1 %371, label %373, label %372

372:                                              ; preds = %369
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) %7, i8 0, i64 16, i1 false)
  store <2 x double> <double 1.000000e+00, double 0.000000e+00>, ptr %8, align 8, !tbaa !5
  store double %29, ptr %6, align 8, !tbaa !5
  br label %614

373:                                              ; preds = %369
  %374 = fcmp ugt double %25, %370
  br i1 %374, label %379, label %375

375:                                              ; preds = %373
  %376 = fcmp ugt double %29, %33
  %.sink478 = select i1 %376, double 1.000000e+00, double 0.000000e+00
  %.sink477 = select i1 %376, double 0.000000e+00, double 1.000000e+00
  %storemerge464 = select i1 %376, double %33, double %29
  store double %.sink478, ptr %7, align 8
  %377 = getelementptr inbounds i8, ptr %7, i64 8
  store double 0.000000e+00, ptr %377, align 8
  store double %.sink477, ptr %8, align 8
  %378 = getelementptr inbounds i8, ptr %8, i64 8
  store double 0.000000e+00, ptr %378, align 8
  store double %storemerge464, ptr %6, align 8, !tbaa !5
  br label %614

379:                                              ; preds = %373
  %380 = fmul double %19, %25
  %381 = fcmp ugt double %33, %380
  %382 = fmul double %19, %29
  %383 = fcmp ugt double %33, %382
  %or.cond469 = select i1 %381, i1 %383, i1 false
  br i1 %or.cond469, label %441, label %384

384:                                              ; preds = %379
  %385 = fcmp ugt double %29, %25
  br i1 %385, label %414, label %386

386:                                              ; preds = %384
  %387 = fdiv double %29, %25
  %388 = call double @llvm.fmuladd.f64(double %387, double %387, double 1.000000e+00)
  %sqrt472 = call double @llvm.sqrt.f64(double %388)
  %389 = fdiv double %387, %sqrt472
  %390 = fmul double %33, %389
  store double %390, ptr %6, align 8, !tbaa !5
  %391 = call { double, double } @Cd(ptr noundef %5)
  %392 = extractvalue { double, double } %391, 0
  %393 = extractvalue { double, double } %391, 1
  %394 = fneg double %393
  %395 = call ptr @_pCd(ptr noundef nonnull %13)
  %396 = getelementptr inbounds i8, ptr %395, i64 8
  store double %392, ptr %395, align 8
  store double %394, ptr %396, align 8
  %397 = load <2 x double>, ptr %13, align 16, !tbaa !5
  %398 = insertelement <2 x double> poison, double %25, i64 0
  %399 = shufflevector <2 x double> %398, <2 x double> poison, <2 x i32> zeroinitializer
  %400 = fdiv <2 x double> %397, %399
  store <2 x double> %400, ptr %12, align 16, !tbaa !5
  %401 = fneg <2 x double> %400
  store <2 x double> %401, ptr %11, align 16, !tbaa !5
  %402 = insertelement <2 x double> poison, double %sqrt472, i64 0
  %403 = shufflevector <2 x double> %402, <2 x double> poison, <2 x i32> zeroinitializer
  %404 = fdiv <2 x double> %401, %403
  store <2 x double> %404, ptr %10, align 16, !tbaa !5
  store <2 x double> %404, ptr %7, align 8, !tbaa !5
  %405 = call { double, double } @Cd(ptr noundef nonnull %17)
  %406 = extractvalue { double, double } %405, 0
  %407 = extractvalue { double, double } %405, 1
  %408 = fneg double %407
  %409 = call ptr @_pCd(ptr noundef nonnull %12)
  %410 = getelementptr inbounds i8, ptr %409, i64 8
  store double %406, ptr %409, align 8
  store double %408, ptr %410, align 8
  %411 = load <2 x double>, ptr %12, align 16, !tbaa !5
  %412 = fdiv <2 x double> %411, %399
  %413 = fdiv <2 x double> %412, %403
  store <2 x double> %413, ptr %8, align 8, !tbaa !5
  br label %614

414:                                              ; preds = %384
  %415 = fdiv double %25, %29
  %416 = call double @llvm.fmuladd.f64(double %415, double %415, double 1.000000e+00)
  %sqrt473 = call double @llvm.sqrt.f64(double %416)
  %417 = fdiv double %33, %sqrt473
  store double %417, ptr %6, align 8, !tbaa !5
  %418 = call { double, double } @Cd(ptr noundef %5)
  %419 = extractvalue { double, double } %418, 0
  %420 = extractvalue { double, double } %418, 1
  %421 = fneg double %420
  %422 = call ptr @_pCd(ptr noundef nonnull %13)
  %423 = getelementptr inbounds i8, ptr %422, i64 8
  store double %419, ptr %422, align 8
  store double %421, ptr %423, align 8
  %424 = load <2 x double>, ptr %13, align 16, !tbaa !5
  %425 = insertelement <2 x double> poison, double %29, i64 0
  %426 = shufflevector <2 x double> %425, <2 x double> poison, <2 x i32> zeroinitializer
  %427 = fdiv <2 x double> %424, %426
  store <2 x double> %427, ptr %12, align 16, !tbaa !5
  %428 = fneg <2 x double> %427
  store <2 x double> %428, ptr %11, align 16, !tbaa !5
  %429 = insertelement <2 x double> poison, double %sqrt473, i64 0
  %430 = shufflevector <2 x double> %429, <2 x double> poison, <2 x i32> zeroinitializer
  %431 = fdiv <2 x double> %428, %430
  store <2 x double> %431, ptr %10, align 16, !tbaa !5
  store <2 x double> %431, ptr %7, align 8, !tbaa !5
  %432 = call { double, double } @Cd(ptr noundef nonnull %17)
  %433 = extractvalue { double, double } %432, 0
  %434 = extractvalue { double, double } %432, 1
  %435 = fneg double %434
  %436 = call ptr @_pCd(ptr noundef nonnull %12)
  %437 = getelementptr inbounds i8, ptr %436, i64 8
  store double %433, ptr %436, align 8
  store double %435, ptr %437, align 8
  %438 = load <2 x double>, ptr %12, align 16, !tbaa !5
  %439 = fdiv <2 x double> %438, %426
  %440 = fdiv <2 x double> %439, %430
  store <2 x double> %440, ptr %8, align 8, !tbaa !5
  br label %614

441:                                              ; preds = %379
  %442 = insertelement <2 x double> poison, double %25, i64 0
  %443 = insertelement <2 x double> %442, double %29, i64 1
  %444 = insertelement <2 x double> poison, double %33, i64 0
  %445 = shufflevector <2 x double> %444, <2 x double> poison, <2 x i32> zeroinitializer
  %446 = fdiv <2 x double> %443, %445
  %447 = extractelement <2 x double> %446, i64 0
  %448 = call double @llvm.fmuladd.f64(double %447, double %447, double 1.000000e+00)
  %449 = extractelement <2 x double> %446, i64 1
  %450 = call double @llvm.fmuladd.f64(double %447, double %449, double %448)
  %451 = fmul double %449, %449
  %452 = call double @llvm.fmuladd.f64(double %447, double %449, double %451)
  %453 = fcmp oge double %450, %452
  %454 = select i1 %453, double %450, double %452
  %455 = fsub double %447, %449
  %456 = fmul double %455, 2.000000e+00
  %457 = fadd double %447, %449
  %458 = call double @llvm.fmuladd.f64(double %456, double %457, double 1.000000e+00)
  %459 = fcmp ult double %458, 0.000000e+00
  br i1 %459, label %489, label %460

460:                                              ; preds = %441
  %461 = call double @llvm.fmuladd.f64(double %447, double %447, double %451)
  %462 = fadd double %461, 1.000000e+00
  %463 = fmul double %462, 5.000000e-01
  store double %451, ptr %8, align 8, !tbaa !11
  %464 = getelementptr inbounds i8, ptr %8, i64 8
  store double 0.000000e+00, ptr %464, align 8, !tbaa !13
  %465 = fmul double %463, %463
  %466 = fsub double %465, %451
  store double %466, ptr %11, align 16, !tbaa !11
  %467 = getelementptr inbounds i8, ptr %11, i64 8
  store double -0.000000e+00, ptr %467, align 8, !tbaa !13
  %468 = call { double, double } @Cd(ptr noundef nonnull %11)
  %469 = extractvalue { double, double } %468, 0
  %470 = extractvalue { double, double } %468, 1
  %471 = call double @cabs(double noundef %469, double noundef %470) #10
  %472 = call double @sqrt(double noundef %471) #10
  %473 = fadd double %463, %472
  %474 = load double, ptr %8, align 8, !tbaa !11
  %475 = fdiv double %474, %473
  %476 = fsub double 1.000000e+00, %475
  %477 = load <2 x double>, ptr %17, align 16, !tbaa !5
  %478 = fdiv <2 x double> %477, %445
  %479 = insertelement <2 x double> poison, double %476, i64 0
  %480 = shufflevector <2 x double> %479, <2 x double> poison, <2 x i32> zeroinitializer
  %481 = fdiv <2 x double> %478, %480
  store <2 x double> %481, ptr %16, align 16, !tbaa !5
  %482 = load <2 x double>, ptr %5, align 8, !tbaa !5
  %483 = fdiv <2 x double> %482, %445
  store <2 x double> %483, ptr %12, align 16, !tbaa !5
  %484 = fneg <2 x double> %483
  store <2 x double> %484, ptr %11, align 16, !tbaa !5
  %485 = insertelement <2 x double> poison, double %475, i64 0
  %486 = shufflevector <2 x double> %485, <2 x double> poison, <2 x i32> zeroinitializer
  %487 = fdiv <2 x double> %484, %486
  %488 = extractelement <2 x double> %487, i64 0
  br label %557

489:                                              ; preds = %441
  %490 = fmul <2 x double> %446, %446
  %491 = extractelement <2 x double> %490, i64 0
  %492 = call double @llvm.fmuladd.f64(double %449, double %449, double %491)
  %493 = fadd double %492, -1.000000e+00
  %494 = fmul double %493, 5.000000e-01
  store double %491, ptr %8, align 8, !tbaa !11
  %495 = getelementptr inbounds i8, ptr %8, i64 8
  store double 0.000000e+00, ptr %495, align 8, !tbaa !13
  %496 = fcmp ult double %494, 0.000000e+00
  br i1 %496, label %528, label %497

497:                                              ; preds = %489
  %498 = fneg double %491
  store double %498, ptr %11, align 16, !tbaa !11
  %499 = getelementptr inbounds i8, ptr %11, i64 8
  store double -0.000000e+00, ptr %499, align 8, !tbaa !13
  %500 = fmul double %494, %494
  %501 = fadd double %491, %500
  store double %501, ptr %14, align 16, !tbaa !11
  %502 = getelementptr inbounds i8, ptr %14, i64 8
  store double 0.000000e+00, ptr %502, align 8, !tbaa !13
  %503 = call { double, double } @Cd(ptr noundef nonnull %14)
  %504 = extractvalue { double, double } %503, 0
  %505 = extractvalue { double, double } %503, 1
  %506 = call { double, double } @csqrt(double noundef %504, double noundef %505) #10
  %507 = extractvalue { double, double } %506, 0
  %508 = extractvalue { double, double } %506, 1
  %509 = call ptr @_pCd(ptr noundef nonnull %13)
  %510 = getelementptr inbounds i8, ptr %509, i64 8
  store double %507, ptr %509, align 8
  store double %508, ptr %510, align 8
  %511 = load double, ptr %13, align 16, !tbaa !11
  %512 = fadd double %494, %511
  store double %512, ptr %12, align 16, !tbaa !11
  %513 = getelementptr inbounds i8, ptr %13, i64 8
  %514 = load double, ptr %513, align 8, !tbaa !13
  %515 = getelementptr inbounds i8, ptr %12, i64 8
  store double %514, ptr %515, align 8, !tbaa !13
  %516 = call { double, double } @Cd(ptr noundef nonnull %11)
  %517 = extractvalue { double, double } %516, 0
  %518 = extractvalue { double, double } %516, 1
  %519 = call { double, double } @Cd(ptr noundef nonnull %12)
  %520 = extractvalue { double, double } %519, 0
  %521 = extractvalue { double, double } %519, 1
  %522 = call { double, double } @__divdc3(double noundef %517, double noundef %518, double noundef %520, double noundef %521) #10
  %523 = extractvalue { double, double } %522, 0
  %524 = extractvalue { double, double } %522, 1
  %525 = call ptr @_pCd(ptr noundef nonnull %10)
  %526 = getelementptr inbounds i8, ptr %525, i64 8
  store double %523, ptr %525, align 8
  store double %524, ptr %526, align 8
  %527 = load double, ptr %10, align 16, !tbaa !11
  br label %542

528:                                              ; preds = %489
  %529 = fmul double %494, %494
  %530 = fadd double %491, %529
  store double %530, ptr %12, align 16, !tbaa !11
  %531 = getelementptr inbounds i8, ptr %12, i64 8
  store double 0.000000e+00, ptr %531, align 8, !tbaa !13
  %532 = call { double, double } @Cd(ptr noundef nonnull %12)
  %533 = extractvalue { double, double } %532, 0
  %534 = extractvalue { double, double } %532, 1
  %535 = call { double, double } @csqrt(double noundef %533, double noundef %534) #10
  %536 = extractvalue { double, double } %535, 0
  %537 = extractvalue { double, double } %535, 1
  %538 = call ptr @_pCd(ptr noundef nonnull %11)
  %539 = getelementptr inbounds i8, ptr %538, i64 8
  store double %536, ptr %538, align 8
  store double %537, ptr %539, align 8
  %540 = load double, ptr %11, align 16, !tbaa !11
  %541 = fsub double %494, %540
  br label %542

542:                                              ; preds = %528, %497
  %.1 = phi double [ %527, %497 ], [ %541, %528 ]
  %543 = load <2 x double>, ptr %17, align 16, !tbaa !5
  %544 = fneg <2 x double> %543
  %545 = fdiv <2 x double> %544, %445
  %546 = insertelement <2 x double> poison, double %.1, i64 0
  %547 = shufflevector <2 x double> %546, <2 x double> poison, <2 x i32> zeroinitializer
  %548 = fdiv <2 x double> %545, %547
  store <2 x double> %548, ptr %16, align 16, !tbaa !5
  %549 = fadd double %.1, 1.000000e+00
  %550 = load <2 x double>, ptr %5, align 8, !tbaa !5
  %551 = fdiv <2 x double> %550, %445
  store <2 x double> %551, ptr %12, align 16, !tbaa !5
  %552 = fneg <2 x double> %551
  store <2 x double> %552, ptr %11, align 16, !tbaa !5
  %553 = insertelement <2 x double> poison, double %549, i64 0
  %554 = shufflevector <2 x double> %553, <2 x double> poison, <2 x i32> zeroinitializer
  %555 = fdiv <2 x double> %552, %554
  %556 = extractelement <2 x double> %555, i64 0
  br label %557

557:                                              ; preds = %542, %460
  %storemerge487 = phi double [ %488, %460 ], [ %556, %542 ]
  %.sink481 = phi double [ %475, %460 ], [ %549, %542 ]
  %558 = phi <2 x double> [ %487, %460 ], [ %555, %542 ]
  store double %storemerge487, ptr %10, align 16, !tbaa !11
  %559 = extractelement <2 x double> %558, i64 1
  store double %559, ptr %20, align 8, !tbaa !13
  store <2 x double> %558, ptr %18, align 16, !tbaa !5
  %560 = fmul double %19, 4.000000e+00
  %561 = fmul double %19, %560
  %562 = call double @llvm.fmuladd.f64(double %561, double %454, double %.sink481)
  %563 = call double @sqrt(double noundef %562) #10
  %storemerge = fmul double %33, %563
  store double %storemerge, ptr %6, align 8, !tbaa !5
  %564 = call { double, double } @Cd(ptr noundef nonnull %16)
  %565 = extractvalue { double, double } %564, 0
  %566 = extractvalue { double, double } %564, 1
  %567 = fneg double %566
  %568 = call ptr @_pCd(ptr noundef nonnull %13)
  %569 = getelementptr inbounds i8, ptr %568, i64 8
  store double %565, ptr %568, align 8
  store double %567, ptr %569, align 8
  %570 = load <2 x double>, ptr %16, align 16
  %571 = getelementptr inbounds i8, ptr %16, i64 8
  %572 = load double, ptr %571, align 8, !tbaa !13
  %573 = fneg double %572
  %574 = load <2 x double>, ptr %13, align 16, !tbaa !5
  %575 = insertelement <2 x double> poison, double %572, i64 0
  %576 = insertelement <2 x double> %575, double %573, i64 1
  %577 = fmul <2 x double> %574, %576
  %578 = shufflevector <2 x double> %577, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %579 = shufflevector <2 x double> %570, <2 x double> poison, <2 x i32> zeroinitializer
  %580 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %579, <2 x double> %574, <2 x double> %578)
  store <2 x double> %580, ptr %12, align 16, !tbaa !5
  %581 = call { double, double } @Cd(ptr noundef nonnull %18)
  %582 = extractvalue { double, double } %581, 0
  %583 = extractvalue { double, double } %581, 1
  %584 = fneg double %583
  %585 = call ptr @_pCd(ptr noundef nonnull %15)
  %586 = getelementptr inbounds i8, ptr %585, i64 8
  store double %582, ptr %585, align 8
  store double %584, ptr %586, align 8
  %587 = load <2 x double>, ptr %18, align 16
  %588 = getelementptr inbounds i8, ptr %18, i64 8
  %589 = load double, ptr %588, align 8, !tbaa !13
  %590 = fneg double %589
  %591 = load <2 x double>, ptr %15, align 16, !tbaa !5
  %592 = insertelement <2 x double> poison, double %589, i64 0
  %593 = insertelement <2 x double> %592, double %590, i64 1
  %594 = fmul <2 x double> %591, %593
  %595 = shufflevector <2 x double> %594, <2 x double> poison, <2 x i32> <i32 1, i32 0>
  %596 = shufflevector <2 x double> %587, <2 x double> poison, <2 x i32> zeroinitializer
  %597 = call <2 x double> @llvm.fmuladd.v2f64(<2 x double> %596, <2 x double> %591, <2 x double> %595)
  store <2 x double> %597, ptr %14, align 16, !tbaa !5
  %598 = load <2 x double>, ptr %12, align 16, !tbaa !5
  %599 = fadd <2 x double> %597, %598
  store <2 x double> %599, ptr %11, align 16, !tbaa !5
  %600 = call { double, double } @Cd(ptr noundef nonnull %11)
  %601 = extractvalue { double, double } %600, 0
  %602 = extractvalue { double, double } %600, 1
  %603 = call { double, double } @csqrt(double noundef %601, double noundef %602) #10
  %604 = extractvalue { double, double } %603, 0
  %605 = extractvalue { double, double } %603, 1
  %606 = call ptr @_pCd(ptr noundef nonnull %10)
  %607 = getelementptr inbounds i8, ptr %606, i64 8
  store double %604, ptr %606, align 8
  store double %605, ptr %607, align 8
  %608 = load <2 x double>, ptr %10, align 16
  %609 = load <2 x double>, ptr %16, align 16, !tbaa !5
  %610 = shufflevector <2 x double> %608, <2 x double> poison, <2 x i32> zeroinitializer
  %611 = fdiv <2 x double> %609, %610
  store <2 x double> %611, ptr %7, align 8, !tbaa !5
  %612 = load <2 x double>, ptr %18, align 16, !tbaa !5
  %613 = fdiv <2 x double> %612, %610
  store <2 x double> %613, ptr %8, align 8, !tbaa !5
  br label %614

614:                                              ; preds = %9, %386, %414, %128, %142, %557, %375, %372, %299, %208, %117, %107, %103
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #10
  ret void
}

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

declare double @dlamch_(ptr noundef) local_unnamed_addr #2

; Function Attrs: inlinehint nounwind uwtable
declare hidden void @zdotc_(ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef, ptr noundef) local_unnamed_addr #3

; Function Attrs: nofree nounwind
declare double @cabs(double noundef, double noundef) local_unnamed_addr #4

; Function Attrs: inlinehint nounwind uwtable
declare hidden { double, double } @Cd(ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.fmuladd.f64(double, double, double) #5

; Function Attrs: nounwind
declare { double, double } @csqrt(double noundef, double noundef) local_unnamed_addr #6

; Function Attrs: mustprogress nofree nounwind willreturn memory(write)
declare double @sqrt(double noundef) local_unnamed_addr #7

declare { double, double } @__divdc3(double, double, double, double) local_unnamed_addr

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

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare double @llvm.sqrt.f64(double) #8

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #9

; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none)
declare <2 x double> @llvm.fmuladd.v2f64(<2 x double>, <2 x double>, <2 x double>) #8

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint nounwind uwtable "min-legal-vector-width"="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 = { nofree 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 = { mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #6 = { 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 #7 = { mustprogress nofree nounwind willreturn memory(write) "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 = { nocallback nofree nosync nounwind speculatable willreturn memory(none) }
attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { 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 = !{!"double", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C/C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !6, i64 0}
!12 = !{!"", !6, i64 0, !6, i64 8}
!13 = !{!12, !6, i64 8}


; Effective O3 passes: AggressiveInstCombinePass,CorrelatedValuePropagationPass,DSEPass,EarlyCSEPass,GVNPass,GlobalOptPass,InferAlignmentPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,MemCpyOptPass,MergedLoadStoreMotionPass,PostOrderFunctionAttrsPass,ReassociatePass,SLPVectorizerPass,SROAPass,SimplifyCFGPass,TailCallElimPass,VectorCombinePass